From 9f72b31060c61cf4898c657e21585dfd94c1be05 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 3 Feb 2021 00:27:04 +0000 Subject: [PATCH 0001/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index d6c050d57a..150557a8bc 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b13b221254..b9054b8baf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 31 Performance From b964e81248d4bbdb865db1e8477556c2e0eca82f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 3 Feb 2021 01:36:29 +0000 Subject: [PATCH 0002/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1bbf0e0ff6..bd74ca64ed 100644 --- a/README.md +++ b/README.md @@ -223,16 +223,16 @@ Like ### _InfoWorld posts_ From 4e3d8634db59a0782c761a56a9ab2654753f23c9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 3 Feb 2021 01:36:41 +0000 Subject: [PATCH 0003/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index bd74ca64ed..d4097506cf 100644 --- a/README.md +++ b/README.md @@ -293,15 +293,16 @@ Like +- [Google's Making Its Search Results a Bit Easier to Understand](https://gizmodo.com/googles-making-its-search-results-a-bit-easier-to-under-1846180565) - [Ford Will Put Android in Millions of Cars Starting in 2023](https://gizmodo.com/ford-will-put-android-in-millions-of-cars-starting-in-2-1846174165) - [Google Suspended Federated Chat App Element for Allegedly Hosting Abusive Content](https://gizmodo.com/google-suspended-federated-chat-app-element-for-alleged-1846167702) - [See Which Apps Are Using Your Camera, Microphone, and Location](https://gizmodo.com/see-which-apps-are-using-your-camera-microphone-and-l-1846044433) @@ -317,7 +318,6 @@ Like - - 56 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b9054b8baf..2ddd393704 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 27 Performance From 0a5b5975472b1d4131ae3cdf3f2579a074be09e8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 4 Feb 2021 01:28:25 +0000 Subject: [PATCH 0006/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5e26678a38..cfa3e3f20f 100644 --- a/README.md +++ b/README.md @@ -223,16 +223,16 @@ Like -- [Android FromHtml Defrecated](https://medium.com/@bcpda1/android-fromhtml-defrecated-626a9417a83f?source=rss------android-5) -- [Desinstalar Bloatwares para Android via ADB Shell](https://medium.com/@gustavoconte/desinstalar-bloatwares-para-android-via-adb-shell-15566ca9317a?source=rss------android-5) -- [AWS Notification Open Event](https://medium.com/@bcpda1/aws-notification-open-event-616389a1bfb1?source=rss------android-5) -- [Zoomable Image with Jetpack Compose](https://proandroiddev.com/zoomable-image-with-jetpack-compose-13b050675da5?source=rss------android-5) -- [Store data securely — EncryptedSharedPreferences](https://medium.com/android-club/store-data-securely-encryptedsharedpreferences-bff71ac39a55?source=rss------android-5) -- [Case study: Waterfall — an interactive Android home screen](https://medium.com/@mhcharlee/case-study-waterfall-an-interactive-android-home-screen-606ddf8325cb?source=rss------android-5) -- [Hal can help you to break the language barrier](https://medium.com/hal-blog/hal-can-help-you-to-break-the-language-barrier-46e73c150343?source=rss------android-5) -- [Coding on a Chromebook](https://medium.com/@the-coding-hub/coding-on-a-chromebook-6bcb7cc06f6?source=rss------android-5) -- [4 Ways To Know If You Are Blocked On Whatsapp](https://medium.com/@patankar-prathamesh-16et5015/4-ways-to-know-if-you-are-blocked-on-whatsapp-de9e054ec71c?source=rss------android-5) -- [My February Recommendations for Flutter Packages](https://medium.com/@jelenajjovanoski/my-february-recommendations-for-flutter-packages-7cd6b597113?source=rss------android-5) +- [Implement MVI pattern with just few step](https://medium.com/@randy-arba/implement-mvi-pattern-with-just-few-step-c5cc5e059886?source=rss------android-5) +- [Modularization of Android Applications with explicit initialization](https://proandroiddev.com/modularization-of-android-applications-with-explicit-initialization-90efdb79db4a?source=rss------android-5) +- [Modularization of Android Applications in 2021](https://proandroiddev.com/modularization-of-android-applications-in-2021-a79a590d5e5b?source=rss------android-5) +- [A Holistic Approach to Handling User Input in Android](https://proandroiddev.com/a-holistic-approach-to-handling-user-input-in-android-38f51ca5592?source=rss------android-5) +- [Binder: Android Interface Definition Language](https://medium.com/@baiqin-droid1001/binder-android-interface-definition-language-43b6f12f04f8?source=rss------android-5) +- [Binder architecture and core components](https://medium.com/@baiqin-droid1001/binder-architecture-and-core-components-38089933bba?source=rss------android-5) +- [F*** Slow Phones](https://medium.com/cycle-phones/f-slow-phones-3bc07267b507?source=rss------android-5) +- [Binder introduction](https://medium.com/@baiqin-droid1001/binder-introduction-54fb90feeecb?source=rss------android-5) +- [Create a simple Samsung Galaxy Watch companion .NET app — Part 2](https://medium.com/@kennay-kermani/create-a-simple-samsung-galaxy-watch-companion-net-app-part-2-74413f1387c?source=rss------android-5) +- [Kotlinx.serialization part4](https://medium.com/@petnagy/kotlinx-serialization-part4-1f93d196617e?source=rss------android-5) ### _Gizmodo posts_ From ccda6dbd37fd35cbf02ec5aa6c324d566ebe5359 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 4 Feb 2021 01:28:36 +0000 Subject: [PATCH 0008/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2a305c005c..ee1bd69b13 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,8 @@ Like ### _Mobile Dev Memo posts_ From e413d568b8d24b2fc25ecad488e08326f27a0712 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Thu, 4 Feb 2021 14:17:30 +0300 Subject: [PATCH 0009/2080] docs: updates on workflows Added information on documentation --- .github/workflows/action-devto.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/action-devto.yml diff --git a/.github/workflows/action-devto.yml b/.github/workflows/action-devto.yml new file mode 100644 index 0000000000..ab860a9c43 --- /dev/null +++ b/.github/workflows/action-devto.yml @@ -0,0 +1,20 @@ +name: TheActionDev Sync + +on: + workflow_dispatch: + schedule: + - cron: '0 23 * * *' + +jobs: + operations: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + + - name: Syncing Article to dev.to + uses: ful1e5/TheActionDev@v2 + with: + api-key: ${{ secrets.DEVTO_API_KEY }} + directory: ./docs/articles + ignore: default.md.tpl \ No newline at end of file From 0debc252b35664193eefdf2e4147808635a12b46 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Thu, 4 Feb 2021 14:17:38 +0300 Subject: [PATCH 0010/2080] docs: updates on workflows Added information on documentation --- docs/articles/default.md.tpl | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/articles/default.md.tpl diff --git a/docs/articles/default.md.tpl b/docs/articles/default.md.tpl new file mode 100644 index 0000000000..9671b77766 --- /dev/null +++ b/docs/articles/default.md.tpl @@ -0,0 +1,13 @@ +--- +title: string # `Required` +published: true/false # `Required` but 'false' by default +description: string # `Optional` +tags: string # `Optional` multiple tags separated by comma (typescript, javascript, github) +series: string # `Optional` +cover_image: string # `Optional` url to image +canonical_url: string # `Optional` url +--- + +First Post with **TheActionDev** 🤩 + +{% github ful1e5/TheActionDev %} \ No newline at end of file From dc5b7ef02aa9ddef3a01701243d613a0686cd9f9 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 5 Feb 2021 00:24:54 +0000 Subject: [PATCH 0011/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 7c62595340..cb0136b01c 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2ddd393704..4f244c0620 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 25 Performance From 18a00ad4624ce81d0c8f6b3cfcdb1f538b25be53 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 5 Feb 2021 01:28:39 +0000 Subject: [PATCH 0012/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ee1bd69b13..e93ffcb21a 100644 --- a/README.md +++ b/README.md @@ -223,16 +223,16 @@ Like - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) +- [How to update Python and how to know if you should](https://www.androidauthority.com/how-to-update-python-1138078/) - [How to create Oculus Quest experiences in Unity](https://www.androidauthority.com/oculus-quest-development-1196351/) - [Upwork vs Fiverr: Which is the best place to sell your services?](https://www.androidauthority.com/upwork-vs-fiverr-1190439/) - [How to install Android on PC: These are your best options](https://www.androidauthority.com/install-android-pc-668643/) @@ -272,7 +273,6 @@ Like -- [Implement MVI pattern with just few step](https://medium.com/@randy-arba/implement-mvi-pattern-with-just-few-step-c5cc5e059886?source=rss------android-5) -- [Modularization of Android Applications with explicit initialization](https://proandroiddev.com/modularization-of-android-applications-with-explicit-initialization-90efdb79db4a?source=rss------android-5) -- [Modularization of Android Applications in 2021](https://proandroiddev.com/modularization-of-android-applications-in-2021-a79a590d5e5b?source=rss------android-5) -- [A Holistic Approach to Handling User Input in Android](https://proandroiddev.com/a-holistic-approach-to-handling-user-input-in-android-38f51ca5592?source=rss------android-5) -- [Binder: Android Interface Definition Language](https://medium.com/@baiqin-droid1001/binder-android-interface-definition-language-43b6f12f04f8?source=rss------android-5) -- [Binder architecture and core components](https://medium.com/@baiqin-droid1001/binder-architecture-and-core-components-38089933bba?source=rss------android-5) -- [F*** Slow Phones](https://medium.com/cycle-phones/f-slow-phones-3bc07267b507?source=rss------android-5) -- [Binder introduction](https://medium.com/@baiqin-droid1001/binder-introduction-54fb90feeecb?source=rss------android-5) -- [Create a simple Samsung Galaxy Watch companion .NET app — Part 2](https://medium.com/@kennay-kermani/create-a-simple-samsung-galaxy-watch-companion-net-app-part-2-74413f1387c?source=rss------android-5) -- [Kotlinx.serialization part4](https://medium.com/@petnagy/kotlinx-serialization-part4-1f93d196617e?source=rss------android-5) +- [Android lists — An effective and simple approach](https://medium.com/codex/android-lists-an-effective-and-simple-approach-3160f87ed20b?source=rss------android-5) +- [An Expert Flutter Install](https://medium.com/@fredgrott/an-expert-flutter-install-a2a502e9da1?source=rss------android-5) +- [How Dagger, Hilt and Koin differ under the hood?](https://proandroiddev.com/how-dagger-hilt-and-koin-differ-under-the-hood-c3be1a2959d7?source=rss------android-5) +- [Getting ready for Declarative UIs — Part 1 — Unidirectional Data Flow](https://proandroiddev.com/getting-ready-for-declarative-uis-8eedb5f8ed0d?source=rss------android-5) +- [Privacy & Data Protection on Desktop and Android](https://medium.com/tech-notes-and-geek-stuff/privacy-data-protection-on-desktop-and-android-8cde3b787e75?source=rss------android-5) +- [Android 3.63 (hotfix)](https://medium.com/wire-news/android-3-63-hotfix-589983d499b6?source=rss------android-5) +- [A persistent bottom sheet-like Instagram Insights | How to create a Persistent bottom sheet in…](https://medium.com/@androidapps-development-blogs/a-persistent-bottom-sheet-like-instagram-insights-how-to-create-a-persistent-bottom-sheet-in-e896d20df6c4?source=rss------android-5) +- [Declarative UI & Kotlin MultiPlatform](https://medium.com/mobilepeople/declarative-ui-kotlin-multiplatform-6125cf52d5cb?source=rss------android-5) +- [Binder file descriptor usages](https://medium.com/@baiqin-droid1001/binder-file-descriptor-usages-b2b8a672873f?source=rss------android-5) +- [Binder security](https://medium.com/@baiqin-droid1001/binder-security-f93265d2ec1b?source=rss------android-5) ### _Gizmodo posts_ From 75da42d667f7d148835bedfab167782a3984f51e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 5 Feb 2021 01:29:02 +0000 Subject: [PATCH 0015/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ef3211a38f..dc519cd87f 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,8 @@ Like ### _Mobile Dev Memo posts_ From b29d51fbdacbabd1f82059ccbd6495de2e6d04a9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 5 Feb 2021 01:29:08 +0000 Subject: [PATCH 0016/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc519cd87f..f1fc80f11e 100644 --- a/README.md +++ b/README.md @@ -323,6 +323,7 @@ Like ### _Infinum posts_ From 4bfa03442ff04f345311fdabf2d863c102b94d0b Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Fri, 5 Feb 2021 22:07:04 +0300 Subject: [PATCH 0017/2080] docs: updates on workflows Added information on documentation --- images/awesome.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 images/awesome.svg diff --git a/images/awesome.svg b/images/awesome.svg new file mode 100644 index 0000000000..8bc8ddc22c --- /dev/null +++ b/images/awesome.svg @@ -0,0 +1 @@ + From 398091540f0c9c0832e8364900946629385ed3f5 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 6 Feb 2021 00:24:36 +0000 Subject: [PATCH 0018/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index cb0136b01c..7c62595340 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 4f244c0620..135960722f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 32 Performance From fbdafd62997bf02432b6965ae72ebe2ce8977214 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 6 Feb 2021 01:28:41 +0000 Subject: [PATCH 0019/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f1fc80f11e..37be288e35 100644 --- a/README.md +++ b/README.md @@ -223,16 +223,16 @@ Like +- [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [How to update Python and how to know if you should](https://www.androidauthority.com/how-to-update-python-1138078/) - [How to create Oculus Quest experiences in Unity](https://www.androidauthority.com/oculus-quest-development-1196351/) @@ -272,7 +273,6 @@ Like -- [Android lists — An effective and simple approach](https://medium.com/codex/android-lists-an-effective-and-simple-approach-3160f87ed20b?source=rss------android-5) -- [An Expert Flutter Install](https://medium.com/@fredgrott/an-expert-flutter-install-a2a502e9da1?source=rss------android-5) -- [How Dagger, Hilt and Koin differ under the hood?](https://proandroiddev.com/how-dagger-hilt-and-koin-differ-under-the-hood-c3be1a2959d7?source=rss------android-5) -- [Getting ready for Declarative UIs — Part 1 — Unidirectional Data Flow](https://proandroiddev.com/getting-ready-for-declarative-uis-8eedb5f8ed0d?source=rss------android-5) -- [Privacy & Data Protection on Desktop and Android](https://medium.com/tech-notes-and-geek-stuff/privacy-data-protection-on-desktop-and-android-8cde3b787e75?source=rss------android-5) -- [Android 3.63 (hotfix)](https://medium.com/wire-news/android-3-63-hotfix-589983d499b6?source=rss------android-5) -- [A persistent bottom sheet-like Instagram Insights | How to create a Persistent bottom sheet in…](https://medium.com/@androidapps-development-blogs/a-persistent-bottom-sheet-like-instagram-insights-how-to-create-a-persistent-bottom-sheet-in-e896d20df6c4?source=rss------android-5) -- [Declarative UI & Kotlin MultiPlatform](https://medium.com/mobilepeople/declarative-ui-kotlin-multiplatform-6125cf52d5cb?source=rss------android-5) -- [Binder file descriptor usages](https://medium.com/@baiqin-droid1001/binder-file-descriptor-usages-b2b8a672873f?source=rss------android-5) -- [Binder security](https://medium.com/@baiqin-droid1001/binder-security-f93265d2ec1b?source=rss------android-5) +- [Android: Repository pattern using Room, Retrofit and Coroutines](https://medium.com/@rodrigo-silva96/android-repository-pattern-using-room-retrofit-and-coroutines-901a199c9f3f?source=rss------android-5) +- [Mengembangkan Aplikasi Mobile di Bawah Paksaan Tugas #devDiary](https://medium.com/@rizkiadigunowibowo/mengembangkan-aplikasi-mobile-di-bawah-paksaan-tugas-devdiary-e22880243df1?source=rss------android-5) +- [Improving CI/CD pipeline for Android via Fastlane and GitHub Actions](https://proandroiddev.com/improving-ci-cd-pipeline-for-android-via-fastlane-and-github-actions-a635162d2c53?source=rss------android-5) +- [Membuat QR Code Generator [PYTHON]](https://medium.com/@fiqsky/membuat-qr-code-generator-python-9b451592331d?source=rss------android-5) +- [Do you need to pay for antivirus in 2021?](https://medium.com/@hfitconsulting/do-you-need-to-pay-for-antivirus-in-2021-4aeeeee00387?source=rss------android-5) +- [New way to upload images using Retrofit in Android](https://medium.com/@snowmaze/new-way-to-upload-images-using-retrofit-in-android-64cf71d5e678?source=rss------android-5) +- [Android Kotlin resolve Custom Views attributes with style](https://medium.com/@kennay-kermani/android-kotlin-resolve-custom-views-attributes-with-style-f29d5084e9fb?source=rss------android-5) +- [Android Nesting Intents](https://medium.com/androiddevelopers/android-nesting-intents-e472fafc1933?source=rss------android-5) +- [Android Developer](https://medium.com/@agungfir10/android-developer-e7c51c3acb33?source=rss------android-5) +- [Lock LTE Band Frequency on Samsung Galaxy No Root Required](https://medium.com/@teknokia/lock-lte-band-frequency-on-samsung-galaxy-no-root-required-e5cbe4cf6225?source=rss------android-5) ### _Gizmodo posts_ From 915138ba4278233e02341778efad53f5bfee3535 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 6 Feb 2021 01:28:53 +0000 Subject: [PATCH 0022/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 66cce7efd4..2eba76ee74 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,8 @@ Like ### _Mobile Dev Memo posts_ From a9261f66e4c36129ae2aa27f79aa75334d29642f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 6 Feb 2021 01:29:00 +0000 Subject: [PATCH 0023/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2eba76ee74..e6fd3fd84e 100644 --- a/README.md +++ b/README.md @@ -338,11 +338,11 @@ Like Date: Sat, 6 Feb 2021 15:11:13 +0300 Subject: [PATCH 0024/2080] docs: updates on workflows Added information on documentation --- .github/workflows/remove-labels.yml | 53 +++++++++++++++++++++++++++++ README.md | 5 ++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/remove-labels.yml diff --git a/.github/workflows/remove-labels.yml b/.github/workflows/remove-labels.yml new file mode 100644 index 0000000000..ba74dcce8a --- /dev/null +++ b/.github/workflows/remove-labels.yml @@ -0,0 +1,53 @@ +name: Remove outdated labels + +on: + pull_request_target: + types: + - closed + issues: + types: + - closed + +jobs: + remove-merged-pr-labels: + name: Remove merged pull request labels + if: github.event.pull_request.merged + runs-on: ubuntu-latest + steps: + - uses: mondeja/remove-labels-gh-action@v1.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + labels: | + awaiting reply + changes requested + duplicate + in discussion + invalid + out of scope + pending + won't add + + remove-closed-pr-labels: + name: Remove closed pull request labels + if: github.event_name == 'pull_request_target' && (! github.event.pull_request.merged) + runs-on: ubuntu-latest + steps: + - uses: mondeja/remove-labels-gh-action@v1.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + labels: | + in discussion + pending + + remove-closed-issue-labels: + name: Remove closed issue labels + if: github.event.issue.state == 'closed' + runs-on: ubuntu-latest + steps: + - uses: mondeja/remove-labels-gh-action@v1.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + labels: | + in discussion + pending + tracking diff --git a/README.md b/README.md index f1fc80f11e..b584c77541 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,10 @@ Nullable labs - Android Design patterns + Android patterns + + + Android patterns

From 1ecff352c3317f065216e3e54f32e8c567c2ffdb Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Sat, 6 Feb 2021 15:23:30 +0300 Subject: [PATCH 0025/2080] docs: updates on workflows Added information on documentation --- .github/workflows/add-labels.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/add-labels.yml diff --git a/.github/workflows/add-labels.yml b/.github/workflows/add-labels.yml new file mode 100644 index 0000000000..da4328f80b --- /dev/null +++ b/.github/workflows/add-labels.yml @@ -0,0 +1,13 @@ +name: Pull Request Labeler + +on: + pull_request_target: + types: [ opened ] + +jobs: + triage: + runs-on: ubuntu-latest + steps: + - uses: ericcornelissen/labeler@label-based-on-status + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} From c42d0cbe9844b56646e116cc1b518d03e9f9f52d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 7 Feb 2021 00:25:41 +0000 Subject: [PATCH 0026/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 7c62595340..7b1256d9d3 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 135960722f..b9054b8baf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 31 Performance From 62bdf7db4d6bf72a363eab58201348a7da9e378c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 7 Feb 2021 01:30:08 +0000 Subject: [PATCH 0027/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3f6f6e3285..ca3715d548 100644 --- a/README.md +++ b/README.md @@ -226,16 +226,16 @@ Like -- [Android: Repository pattern using Room, Retrofit and Coroutines](https://medium.com/@rodrigo-silva96/android-repository-pattern-using-room-retrofit-and-coroutines-901a199c9f3f?source=rss------android-5) -- [Mengembangkan Aplikasi Mobile di Bawah Paksaan Tugas #devDiary](https://medium.com/@rizkiadigunowibowo/mengembangkan-aplikasi-mobile-di-bawah-paksaan-tugas-devdiary-e22880243df1?source=rss------android-5) -- [Improving CI/CD pipeline for Android via Fastlane and GitHub Actions](https://proandroiddev.com/improving-ci-cd-pipeline-for-android-via-fastlane-and-github-actions-a635162d2c53?source=rss------android-5) -- [Membuat QR Code Generator [PYTHON]](https://medium.com/@fiqsky/membuat-qr-code-generator-python-9b451592331d?source=rss------android-5) -- [Do you need to pay for antivirus in 2021?](https://medium.com/@hfitconsulting/do-you-need-to-pay-for-antivirus-in-2021-4aeeeee00387?source=rss------android-5) -- [New way to upload images using Retrofit in Android](https://medium.com/@snowmaze/new-way-to-upload-images-using-retrofit-in-android-64cf71d5e678?source=rss------android-5) -- [Android Kotlin resolve Custom Views attributes with style](https://medium.com/@kennay-kermani/android-kotlin-resolve-custom-views-attributes-with-style-f29d5084e9fb?source=rss------android-5) -- [Android Nesting Intents](https://medium.com/androiddevelopers/android-nesting-intents-e472fafc1933?source=rss------android-5) -- [Android Developer](https://medium.com/@agungfir10/android-developer-e7c51c3acb33?source=rss------android-5) -- [Lock LTE Band Frequency on Samsung Galaxy No Root Required](https://medium.com/@teknokia/lock-lte-band-frequency-on-samsung-galaxy-no-root-required-e5cbe4cf6225?source=rss------android-5) +- [Jetpack Compose Image Content ScaleType Fully Illustrated](https://medium.com/mobile-app-development-publication/jetpack-compose-image-content-scaletype-fully-illustrated-bfdf2de7ef5?source=rss------android-5) +- [How To Download Videos From Social Media Networks](https://medium.com/@mahmoudel2902/how-to-download-videos-from-social-media-networks-f71b98c71f1f?source=rss------android-5) +- [Top Requirements For You To Know About Android APK](https://medium.com/@harry123jack/top-requirements-for-you-to-know-about-android-apk-2f155a8357ad?source=rss------android-5) +- [ShapeableView in Jetpack Compose. Part 1](https://proandroiddev.com/shapeableview-in-jetpack-compose-part-1-8b1b312b2fa4?source=rss------android-5) +- [Why I don’t Use a Xiaomi Phone? Bad Aspects of Xiaomi Phones.](https://medium.com/@byegcn/why-i-dont-use-a-xiaomi-phone-bad-aspects-of-xiaomi-phones-d23a771573b9?source=rss------android-5) +- [Android Application Basics](https://medium.com/mobis3c/android-application-basics-b4da5aaa3e68?source=rss------android-5) +- [How to use ClubHouse on Android](https://medium.com/@Connessioni/how-to-use-clubhouse-on-android-db96dbeb97d6?source=rss------android-5) +- [Come usare ClubHouse su Android](https://medium.com/@Connessioni/come-usare-clubhouse-su-android-848d7445774e?source=rss------android-5) +- [Tech Solutions by applex.in](https://medium.com/@applex-in/tech-solutions-by-applex-in-100926fc5c52?source=rss------android-5) +- [FacePhone, the Facebook Phone](https://medium.com/@sokullu/facephone-the-facebook-phone-ce8cb5145d58?source=rss------android-5) ### _Gizmodo posts_ From 767508b9830575db07218bb32cce20a25a2a0c91 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Sun, 7 Feb 2021 17:40:21 +0300 Subject: [PATCH 0029/2080] docs: updates on workflows Added information on documentation --- README.md | 6 ++++++ images/opengraph-card.png | Bin 0 -> 72886 bytes 2 files changed, 6 insertions(+) create mode 100644 images/opengraph-card.png diff --git a/README.md b/README.md index 3f6f6e3285..8367ae4005 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,12 @@ Like + OpenGraph card +

+ ## 🔥 _Feeds and Podcasts_ ### _Reddit posts_ diff --git a/images/opengraph-card.png b/images/opengraph-card.png new file mode 100644 index 0000000000000000000000000000000000000000..a13d5c72fac562b7b9906015295aef1e8173c7ff GIT binary patch literal 72886 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%0DVI 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 literal 0 HcmV?d00001 From eafba65b3158b05febc49b5bc2fd9e1ddd610645 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Sun, 7 Feb 2021 14:40:59 +0000 Subject: [PATCH 0030/2080] Auto update markdown TOC --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f610b96e3f..9f33709b64 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ * [Licensing](#-licensing) * [Development Support](#-development-support) * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) * [Feeds and Podcasts](#-feeds-and-podcasts) * [Reddit posts](#reddit-posts) * [InfoWorld posts](#infoworld-posts) From 55dd71d4d9d611f8264046a66cc810b2d7f5e30b Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Sun, 7 Feb 2021 20:58:38 +0300 Subject: [PATCH 0031/2080] docs: updates on workflows Added information on documentation --- .github/workflows/opengraph-card.yml | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/opengraph-card.yml diff --git a/.github/workflows/opengraph-card.yml b/.github/workflows/opengraph-card.yml new file mode 100644 index 0000000000..c5b438a732 --- /dev/null +++ b/.github/workflows/opengraph-card.yml @@ -0,0 +1,57 @@ +name: Generate OpenGraph Card + +on: + workflow_dispatch: + +jobs: + generate-opengraph-card: + env: + BASE_PATH: https://og-image.now.sh + QUERY_PATH: _**Android%20Design%20patterns**_%3Cbr%3E_@AlexRogalskiy/android4you_ + THEME: light + MARKDOWN_ENABLED: 1 + FONT_SIZE: 75px + IMAGES_HEIGHT: "200, 200" + IMAGES: "https://assets.vercel.com/image/upload/front/assets/design/vercel-triangle-black.svg, https://simpleicons.org/icons/github.svg" + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Create OpenGraph card + run: | + IFS=', ' + + full_path="${BASE_PATH}/${QUERY_PATH}" + full_path="${full_path}?theme=${THEME}" + full_path="${full_path}&md=${MARKDOWN_ENABLED}" + full_path="${full_path}&fontSize=${FONT_SIZE}" + + read -r -a array <<< "$IMAGES" + for i in "${array[@]}" + do + full_path="${full_path}&images=$i" + done + + read -r -a array <<< "$IMAGES_HEIGHT" + for i in "${array[@]}" + do + full_path="${full_path}&heights=$i" + done + + echo "$full_path" + curl "$full_path" > ./images/opengraph-card.png + shell: bash + + - name: Commit update + uses: stefanzweifel/git-auto-commit-action@v4 + with: + branch: master + skip_dirty_check: true + commit_message: "docs: updates on OpenGraph card\n\n Added OpenGraph card" + commit_options: '--no-verify --signoff' + commit_user_name: GitHub Bot + commit_user_email: github-actions@nullables.io + commit_author: GitHub Bot From 85723f33fb973c638b2130a69587dfbbd8387c15 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Feb 2021 18:00:06 +0000 Subject: [PATCH 0032/2080] Optimised images with calibre/image-actions --- images/opengraph-card.png | Bin 72886 -> 56642 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/opengraph-card.png b/images/opengraph-card.png index a13d5c72fac562b7b9906015295aef1e8173c7ff..99796b230f38784287d63787fc12fc5bf75a278f 100644 GIT binary patch literal 56642 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

z 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

s}K+g1qE>2K00 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 literal 72886 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%0DVI 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 From 23ea2450572d7ddf665d29a08bee7b579e1d7709 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 8 Feb 2021 00:24:48 +0000 Subject: [PATCH 0033/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 7b1256d9d3..d6c050d57a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 60 Performance From ddad7526d553918e4775547dce5af43f5a2fc5d1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 8 Feb 2021 01:31:06 +0000 Subject: [PATCH 0034/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9f33709b64..e444cac378 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [Jetpack Compose Image Content ScaleType Fully Illustrated](https://medium.com/mobile-app-development-publication/jetpack-compose-image-content-scaletype-fully-illustrated-bfdf2de7ef5?source=rss------android-5) -- [How To Download Videos From Social Media Networks](https://medium.com/@mahmoudel2902/how-to-download-videos-from-social-media-networks-f71b98c71f1f?source=rss------android-5) -- [Top Requirements For You To Know About Android APK](https://medium.com/@harry123jack/top-requirements-for-you-to-know-about-android-apk-2f155a8357ad?source=rss------android-5) -- [ShapeableView in Jetpack Compose. Part 1](https://proandroiddev.com/shapeableview-in-jetpack-compose-part-1-8b1b312b2fa4?source=rss------android-5) -- [Why I don’t Use a Xiaomi Phone? Bad Aspects of Xiaomi Phones.](https://medium.com/@byegcn/why-i-dont-use-a-xiaomi-phone-bad-aspects-of-xiaomi-phones-d23a771573b9?source=rss------android-5) -- [Android Application Basics](https://medium.com/mobis3c/android-application-basics-b4da5aaa3e68?source=rss------android-5) -- [How to use ClubHouse on Android](https://medium.com/@Connessioni/how-to-use-clubhouse-on-android-db96dbeb97d6?source=rss------android-5) -- [Come usare ClubHouse su Android](https://medium.com/@Connessioni/come-usare-clubhouse-su-android-848d7445774e?source=rss------android-5) -- [Tech Solutions by applex.in](https://medium.com/@applex-in/tech-solutions-by-applex-in-100926fc5c52?source=rss------android-5) -- [FacePhone, the Facebook Phone](https://medium.com/@sokullu/facephone-the-facebook-phone-ce8cb5145d58?source=rss------android-5) +- [Conversation about Integration of Ads Kit in Flutter for Intermediate developers.](https://medium.com/@basavarajnavi/conversation-about-integration-of-ads-kit-in-flutter-for-intermediate-developers-949ac8c4c3d4?source=rss------android-5) +- [Menggunakan MVVM pada Android Sederhana](https://medium.com/@ara.bakhara12/menggunakan-mvvm-pada-android-sederhana-c34122a5cabc?source=rss------android-5) +- [The android clean architecture [POV]](https://medium.com/@budioktaviyans/the-android-clean-architecture-pov-d9d5ec888534?source=rss------android-5) +- [How to Debug the app](https://medium.com/@sudishkumar.edugaon/how-to-debug-the-app-bdfb5f808c79?source=rss------android-5) +- [Migrating Signal history between Android devices](https://medium.com/@aidanfeldman/migrating-signal-history-between-android-devices-fc2d5a40769a?source=rss------android-5) +- [The attitude of doing the last-minute change in production code kills the developer](https://medium.com/workindia-in/the-attitude-of-doing-the-last-minute-change-in-production-code-kills-the-developer-2182fb2a4b0d?source=rss------android-5) +- [Tutorial Navigation dan Binding Layout Pada Fragment Android](https://medium.com/@ara.bakhara12/tutorial-navigation-dan-binding-layout-pada-fragment-android-6692089a5fc?source=rss------android-5) +- [The rise and fall of Cyanogen-Mod](https://medium.com/@kishorekmg3/the-rise-and-fall-of-cyanogen-mod-73ad5f7185e?source=rss------android-5) +- [Running strings translation check before Git Push](https://medium.com/@serhii.k/running-strings-translation-check-before-git-push-a0df267cef55?source=rss------android-5) +- [Naruto Shippuden Ultimate Ninja Strom 5 psp download](https://medium.com/@gampeche/naruto-shippuden-ultimate-ninja-strom-5-psp-download-8eb0ef5d44c6?source=rss------android-5) ### _Gizmodo posts_ From 1baa90515d45c8a430e3a3321e2d997a3d11d8a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Feb 2021 13:07:03 +0000 Subject: [PATCH 0036/2080] github-actions: bump actions/cache from v2 to v2.1.4 Bumps [actions/cache](https://github.com/actions/cache) from v2 to v2.1.4. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2...26968a09c0ea4f3e233fdddbafd1166051a095f6) Signed-off-by: dependabot[bot] --- .github/workflows/changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 89b58d0f26..bf85704812 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -20,7 +20,7 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: 3.0 - - uses: actions/cache@v2 + - uses: actions/cache@v2.1.4 with: path: vendor/bundle key: ${{ runner.os }}-changelog-gem From df5f906c898715a60b5c5ba5b24c912920e03120 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Feb 2021 13:07:05 +0000 Subject: [PATCH 0037/2080] github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 Bumps [mondeja/remove-labels-gh-action](https://github.com/mondeja/remove-labels-gh-action) from v1.0.0 to v1. - [Release notes](https://github.com/mondeja/remove-labels-gh-action/releases) - [Commits](https://github.com/mondeja/remove-labels-gh-action/compare/v1.0.0...5708d0f365a12a585c84e248cf4346be733b6053) Signed-off-by: dependabot[bot] --- .github/workflows/remove-labels.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/remove-labels.yml b/.github/workflows/remove-labels.yml index ba74dcce8a..93b6f4f5d8 100644 --- a/.github/workflows/remove-labels.yml +++ b/.github/workflows/remove-labels.yml @@ -14,7 +14,7 @@ jobs: if: github.event.pull_request.merged runs-on: ubuntu-latest steps: - - uses: mondeja/remove-labels-gh-action@v1.0.0 + - uses: mondeja/remove-labels-gh-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} labels: | @@ -32,7 +32,7 @@ jobs: if: github.event_name == 'pull_request_target' && (! github.event.pull_request.merged) runs-on: ubuntu-latest steps: - - uses: mondeja/remove-labels-gh-action@v1.0.0 + - uses: mondeja/remove-labels-gh-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} labels: | @@ -44,7 +44,7 @@ jobs: if: github.event.issue.state == 'closed' runs-on: ubuntu-latest steps: - - uses: mondeja/remove-labels-gh-action@v1.0.0 + - uses: mondeja/remove-labels-gh-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} labels: | From ef71f9caafbfbf10775933df47e6398e3a5c516b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 9 Feb 2021 00:25:13 +0000 Subject: [PATCH 0038/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index d6c050d57a..aa3dc835ef 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b9054b8baf..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 31 - Performance - - - - - 65 - Accessibility - - - - - 79 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From f182e468dfacc50b4b11eb89df3394fcc981a5a3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 9 Feb 2021 01:28:30 +0000 Subject: [PATCH 0039/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1d3cb94341..a01f78d29b 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [Conversation about Integration of Ads Kit in Flutter for Intermediate developers.](https://medium.com/@basavarajnavi/conversation-about-integration-of-ads-kit-in-flutter-for-intermediate-developers-949ac8c4c3d4?source=rss------android-5) -- [Menggunakan MVVM pada Android Sederhana](https://medium.com/@ara.bakhara12/menggunakan-mvvm-pada-android-sederhana-c34122a5cabc?source=rss------android-5) -- [The android clean architecture [POV]](https://medium.com/@budioktaviyans/the-android-clean-architecture-pov-d9d5ec888534?source=rss------android-5) -- [How to Debug the app](https://medium.com/@sudishkumar.edugaon/how-to-debug-the-app-bdfb5f808c79?source=rss------android-5) -- [Migrating Signal history between Android devices](https://medium.com/@aidanfeldman/migrating-signal-history-between-android-devices-fc2d5a40769a?source=rss------android-5) -- [The attitude of doing the last-minute change in production code kills the developer](https://medium.com/workindia-in/the-attitude-of-doing-the-last-minute-change-in-production-code-kills-the-developer-2182fb2a4b0d?source=rss------android-5) -- [Tutorial Navigation dan Binding Layout Pada Fragment Android](https://medium.com/@ara.bakhara12/tutorial-navigation-dan-binding-layout-pada-fragment-android-6692089a5fc?source=rss------android-5) -- [The rise and fall of Cyanogen-Mod](https://medium.com/@kishorekmg3/the-rise-and-fall-of-cyanogen-mod-73ad5f7185e?source=rss------android-5) -- [Running strings translation check before Git Push](https://medium.com/@serhii.k/running-strings-translation-check-before-git-push-a0df267cef55?source=rss------android-5) -- [Naruto Shippuden Ultimate Ninja Strom 5 psp download](https://medium.com/@gampeche/naruto-shippuden-ultimate-ninja-strom-5-psp-download-8eb0ef5d44c6?source=rss------android-5) +- [Threads, Handler, Looper e Message Queue: Parte 1 — Thread](https://medium.com/@jeziellago/threads-handler-looper-e-message-queue-parte-1-thread-635364a0697d?source=rss------android-5) +- [Flutter Failed To Solve the Biggest Challenge for Our Cross-Platform App](https://medium.com/better-programming/flutter-failed-to-solve-the-biggest-challenge-for-our-cross-platform-app-c551afa0ef18?source=rss------android-5) +- [當 RecyclerView 當作 聊天訊息時,要怎麼處理 KeyBoard 彈出 被擋住的問題?](https://medium.com/liy-elaine/%E7%95%B6-recyclerview-%E7%95%B6%E4%BD%9C-%E8%81%8A%E5%A4%A9%E8%A8%8A%E6%81%AF%E6%99%82-%E8%A6%81%E6%80%8E%E9%BA%BC%E8%99%95%E7%90%86-keyboard-%E5%BD%88%E5%87%BA-%E8%A2%AB%E6%93%8B%E4%BD%8F%E7%9A%84%E5%95%8F%E9%A1%8C-d8e691f58d3d?source=rss------android-5) +- [Poor women’s home notification system](https://medium.com/@linda0511ny/poor-womens-home-notification-system-2d6a41e275dc?source=rss------android-5) +- [Android Development VS iOS Development, Which Platform is Better in 2021?](https://medium.com/@spacester/android-development-vs-ios-development-which-platform-is-better-in-2021-c3eafa8264d3?source=rss------android-5) +- [PES 2021 PSP download ISO Android Offline PS5 Camera New Menu PPSSPP](https://medium.com/@gampeche/pes-2021-psp-download-iso-android-offline-ps5-camera-new-menu-ppsspp-48ee9e32bde7?source=rss------android-5) +- [Email and Password authentication using Firebase in Android Studio | Java](https://medium.com/@androidapps-development-blogs/email-and-password-authentication-using-firebase-in-android-studio-java-9a57156f04fc?source=rss------android-5) +- [Completely fixing RxJava stacktrace](https://medium.com/@alexshafir/completely-fixing-rxjava-stacktrace-65336265b750?source=rss------android-5) +- [What are Interceptors and Authenticators](https://medium.com/@r24insa/what-are-interceptors-and-authenticators-325e5dea7cc7?source=rss------android-5) +- [Reanimated 2 Events (part II) — Scroll Events](https://blog.swmansion.com/reanimated-2-events-part-ii-scroll-events-a319fd9f1e62?source=rss------android-5) ### _Gizmodo posts_ From a94c08de073b602adc71fd844dce83b97d330e54 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 9 Feb 2021 01:28:41 +0000 Subject: [PATCH 0041/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index abaf827a41..92ff9145e4 100644 --- a/README.md +++ b/README.md @@ -318,6 +318,7 @@ Like ### _Mobile Dev Memo posts_ From dfadd1380d0b4e45557bea1bc4c92107138ff3c0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 9 Feb 2021 01:28:45 +0000 Subject: [PATCH 0042/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 92ff9145e4..f8e001ebd8 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,8 @@ Like ### _Infinum posts_ From f2069a9124dffb7e426e5a04052204b1e38831df Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Tue, 9 Feb 2021 19:11:33 +0300 Subject: [PATCH 0043/2080] docs: updates on workflows Added information on documentation --- .github/labels.json | 42 +++++++++++++++++++++++++++++++++++ .github/workflows/labels.yml | 23 +++++++++++++++++++ .github/workflows/labels2.yml | 25 +++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 .github/labels.json create mode 100644 .github/workflows/labels.yml create mode 100644 .github/workflows/labels2.yml diff --git a/.github/labels.json b/.github/labels.json new file mode 100644 index 0000000000..3575f3d9f8 --- /dev/null +++ b/.github/labels.json @@ -0,0 +1,42 @@ +[ + { + "name": "kind/bug", + "color": "c7def8", + "description": "Categorizes issue or PR as related to a bug" + }, + { + "name": "kind/cleanup", + "color": "c7def8", + "description": "Categorizes issue or PR as related to cleaning up code, process, or technical debt" + }, + { + "name": "kind/documentation", + "color": "c7def8", + "description": "Categorizes issue or PR as related to documentation" + }, + { + "name": "kind/feature", + "color": "c7def8", + "description": "Categorizes issue or PR as related to a new feature" + }, + { + "name": "bump:major", + "color": "ef6bb4", + "description": "Attach to PR to automatically bump major version on merge" + }, + { + "name": "bump:minor", + "color": "ef6bb4", + "description": "Attach to PR to automatically bump minor version on merge" + }, + { + "name": "bump:patch", + "color": "ef6bb4", + "description": "Attach to PR to automatically bump patch version on merge" + }, + { + "name": "do-not-merge/hold", + "color": "e11d21", + "description": "Indicated that a PR is not to be merged" + } +] diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml new file mode 100644 index 0000000000..cd7a18214b --- /dev/null +++ b/.github/workflows/labels.yml @@ -0,0 +1,23 @@ +name: Labels + +on: + push: + paths: + - .github/labels.json + - .github/workflows/labels.yml + branches: + - master + +jobs: + Manage: + name: Manage GitHub labels + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@master + + - name: Manage labels + uses: lannonbr/issue-label-manager-action@2.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/labels2.yml b/.github/workflows/labels2.yml new file mode 100644 index 0000000000..6447c1277a --- /dev/null +++ b/.github/workflows/labels2.yml @@ -0,0 +1,25 @@ +name: GitHub labels + +on: + push: + branches: + - master + +jobs: + labeler: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Run Labeler + if: success() + uses: crazy-max/ghaction-github-labeler@v3 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + yaml-file: .github/labels.yml + skip-delete: false + dry-run: false + exclude: | + help* + *issue From 4869c7cb1ffec02ef28c556b31a3fd8e3f5abe78 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Tue, 9 Feb 2021 20:59:44 +0300 Subject: [PATCH 0044/2080] docs: updates on workflows Added information on documentation --- .github/workflows/gh-pages.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/gh-pages.yml diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000000..b4112a895c --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,29 @@ +name: GitHub Pages + +on: + workflow_dispatch: + push: + paths: + - docs + branches: + - master + +jobs: + Manage: + name: Manage GitHub labels + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@master + + - name: Display structure of files + run: ls -R + working-directory: docs/ + + - name: Deploy Github Pages + uses: JamesIves/github-pages-deploy-action@3.7.1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: docs/ \ No newline at end of file From bbcc7804172b39726d8c0fbb4460ab9ef99a685f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 9 Feb 2021 19:41:46 +0000 Subject: [PATCH 0045/2080] :arrow_up: Updates JamesIves/github-pages-deploy-action action to v4 Signed-off-by: Renovate Bot --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index b4112a895c..83947e1e94 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -22,7 +22,7 @@ jobs: working-directory: docs/ - name: Deploy Github Pages - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: JamesIves/github-pages-deploy-action@4.0.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages From 34067920a6f5ecf9e80b5ccb8cdc9b1c70ad9dca Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 10 Feb 2021 00:24:58 +0000 Subject: [PATCH 0046/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 233 insertions(+), 28 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index aa3dc835ef..791161c332 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 61 + + 49 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..b9054b8baf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 31 + Performance + + + + + 65 + Accessibility + + + + + 79 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 1eb9899bee72e557c419f172e802a081773bdf3d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 10 Feb 2021 01:28:07 +0000 Subject: [PATCH 0047/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f8e001ebd8..949d0bb0b5 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [Threads, Handler, Looper e Message Queue: Parte 1 — Thread](https://medium.com/@jeziellago/threads-handler-looper-e-message-queue-parte-1-thread-635364a0697d?source=rss------android-5) -- [Flutter Failed To Solve the Biggest Challenge for Our Cross-Platform App](https://medium.com/better-programming/flutter-failed-to-solve-the-biggest-challenge-for-our-cross-platform-app-c551afa0ef18?source=rss------android-5) -- [當 RecyclerView 當作 聊天訊息時,要怎麼處理 KeyBoard 彈出 被擋住的問題?](https://medium.com/liy-elaine/%E7%95%B6-recyclerview-%E7%95%B6%E4%BD%9C-%E8%81%8A%E5%A4%A9%E8%A8%8A%E6%81%AF%E6%99%82-%E8%A6%81%E6%80%8E%E9%BA%BC%E8%99%95%E7%90%86-keyboard-%E5%BD%88%E5%87%BA-%E8%A2%AB%E6%93%8B%E4%BD%8F%E7%9A%84%E5%95%8F%E9%A1%8C-d8e691f58d3d?source=rss------android-5) -- [Poor women’s home notification system](https://medium.com/@linda0511ny/poor-womens-home-notification-system-2d6a41e275dc?source=rss------android-5) -- [Android Development VS iOS Development, Which Platform is Better in 2021?](https://medium.com/@spacester/android-development-vs-ios-development-which-platform-is-better-in-2021-c3eafa8264d3?source=rss------android-5) -- [PES 2021 PSP download ISO Android Offline PS5 Camera New Menu PPSSPP](https://medium.com/@gampeche/pes-2021-psp-download-iso-android-offline-ps5-camera-new-menu-ppsspp-48ee9e32bde7?source=rss------android-5) -- [Email and Password authentication using Firebase in Android Studio | Java](https://medium.com/@androidapps-development-blogs/email-and-password-authentication-using-firebase-in-android-studio-java-9a57156f04fc?source=rss------android-5) -- [Completely fixing RxJava stacktrace](https://medium.com/@alexshafir/completely-fixing-rxjava-stacktrace-65336265b750?source=rss------android-5) -- [What are Interceptors and Authenticators](https://medium.com/@r24insa/what-are-interceptors-and-authenticators-325e5dea7cc7?source=rss------android-5) -- [Reanimated 2 Events (part II) — Scroll Events](https://blog.swmansion.com/reanimated-2-events-part-ii-scroll-events-a319fd9f1e62?source=rss------android-5) +- [The Google Pixel and the Curse of Brand Reputation](https://medium.com/@omarzahran/the-google-pixel-and-the-curse-of-brand-reputation-4d55134afa1d?source=rss------android-5) +- [Android Generic RecyclerView Adapter](https://medium.com/@zarraf-ahmed/android-generic-recyclerview-adapter-67eb8f826cad?source=rss------android-5) +- [Merhaba! ben EfeCikNapiyon.](https://medium.com/@wefecinar/merhaba-ben-efeciknapiyon-dc63e3d952b3?source=rss------android-5) +- [Android TabLayout style customization](https://medium.com/@sshex/android-tablayout-style-customization-29ad0657d49c?source=rss------android-5) +- [File and Code Templates — მეტი პროდუქტიულობისთვის](https://medium.com/@iona-bartishvili/file-and-code-templates-5a7d438f567b?source=rss------android-5) +- [Threads, Handler, Looper e Message Queue: Parte 2](https://medium.com/@jeziellago/threads-handler-looper-e-message-queue-parte-2-3711ee9d1b4?source=rss------android-5) +- [The perfect clone .](https://medium.com/@praneeth-t96/the-perfect-clone-52d68d851bce?source=rss------android-5) +- [10 Flutter Tips I Learned After 3 Years of Flutter Development](https://medium.com/better-programming/10-flutter-tips-i-learned-after-3-years-of-flutter-development-7a7dbb697fe2?source=rss------android-5) +- [How I and my team cloned the App called RentoMojo.](https://medium.com/@kumarishwar623/how-i-and-my-team-cloned-the-app-called-rentomojo-915873802931?source=rss------android-5) +- [মোবাইল চার্জে লাগিয়ে ব্যবহার করলে কি কোনো ক্ষতি হয়?](https://medium.com/@technieland/%E0%A6%AE%E0%A7%8B%E0%A6%AC%E0%A6%BE%E0%A6%87%E0%A6%B2-%E0%A6%9A%E0%A6%BE%E0%A6%B0%E0%A7%8D%E0%A6%9C%E0%A7%87-%E0%A6%B2%E0%A6%BE%E0%A6%97%E0%A6%BF%E0%A7%9F%E0%A7%87-%E0%A6%AC%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%B9%E0%A6%BE%E0%A6%B0-%E0%A6%95%E0%A6%B0%E0%A6%B2%E0%A7%87-%E0%A6%95%E0%A6%BF-%E0%A6%95%E0%A7%8B%E0%A6%A8%E0%A7%8B-%E0%A6%95%E0%A7%8D%E0%A6%B7%E0%A6%A4%E0%A6%BF-%E0%A6%B9%E0%A7%9F-cae628e3b981?source=rss------android-5) ### _Gizmodo posts_ From 430c37e75238d1398ba85a4673329e1511d0cbf6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 10 Feb 2021 01:28:19 +0000 Subject: [PATCH 0049/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cede7d755..cc02d5224c 100644 --- a/README.md +++ b/README.md @@ -318,6 +318,7 @@ Like ### _Mobile Dev Memo posts_ From a0823a1a89fd4229d3b7969a098b494df968f39b Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Wed, 10 Feb 2021 14:51:40 +0300 Subject: [PATCH 0050/2080] docs: updates on workflows Added information on documentation --- .github/workflows/pr-helper.yml | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/pr-helper.yml diff --git a/.github/workflows/pr-helper.yml b/.github/workflows/pr-helper.yml new file mode 100644 index 0000000000..4cb08eb46e --- /dev/null +++ b/.github/workflows/pr-helper.yml @@ -0,0 +1,35 @@ +name: PR Merge on Schedule + +on: + schedule: + - cron: '* 5 * * *' + +jobs: + prhelper_schedule: + runs-on: ubuntu-latest + steps: + - name: Run PR Helper on Schedule + id: runprhelperonschedule + uses: Matticusau/pr-helper@v1.2.4 + with: + repo-token: ${{ secrets.GHACTION_PAT }} + enable-prmerge-automation: true + enable-prcomment-automation: false + enable-prlabel-automation: true + enable-prreviewer-frontmatter: true + enable-welcomemessage: false + prmerge-requireallchecks: true + prmerge-requirereviewcount: 1 + prmerge-method: 'merge' + prmerge-deletebranch: 'true' + prmerge-deletebranch-config: '' + prmerge-pathcheck: true + prmerge-allowpaths: '{"any":["articles/**"]}' + prreviewer-authorkey: 'author' + prreviewer-githubuserfromauthorfile: true + prreviewer-authorfilepath: '_data/authors.yaml' + prlabel-default: 'pr-onhold' + prlabel-ready: 'pr-ready' + prlabel-onhold: 'pr-onhold' + prlabel-reviewrequired: 'review-required' + prlabel-automerge: 'auto-merge' \ No newline at end of file From 7cf6e0334c395763dd2b3acf652f8a2e35b27b60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Feb 2021 13:09:15 +0000 Subject: [PATCH 0051/2080] github-actions: bump JamesIves/github-pages-deploy-action Bumps [JamesIves/github-pages-deploy-action](https://github.com/JamesIves/github-pages-deploy-action) from 3.7.1 to 4.0.0. - [Release notes](https://github.com/JamesIves/github-pages-deploy-action/releases) - [Commits](https://github.com/JamesIves/github-pages-deploy-action/compare/3.7.1...049a95c516cd5723d8cfde79dc7a79fcdcbd6c97) Signed-off-by: dependabot[bot] --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index b4112a895c..83947e1e94 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -22,7 +22,7 @@ jobs: working-directory: docs/ - name: Deploy Github Pages - uses: JamesIves/github-pages-deploy-action@3.7.1 + uses: JamesIves/github-pages-deploy-action@4.0.0 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages From a809672fc83bb1d029a5aa2f320d11366da7ba17 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 11 Feb 2021 00:24:53 +0000 Subject: [PATCH 0052/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 791161c332..8bf31f9e89 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 49 + + 59 Performance From e53c319cd317194b384c87371a2d84bc6f944b5b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 11 Feb 2021 01:28:28 +0000 Subject: [PATCH 0053/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cc02d5224c..819144eb92 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like +- [How to use dictionaries in Python](https://www.androidauthority.com/how-to-add-to-a-dictionary-python-1136937/) +- [How to enable Developer mode on a Chromebook in just a few minutes?](https://www.androidauthority.com/how-to-enable-developer-mode-on-a-chromebook-906688/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) +- [How to add Python to Path (Windows)](https://www.androidauthority.com/how-to-add-python-to-path-1140374/) +- [How to reverse a list in Python](https://www.androidauthority.com/how-to-reverse-a-list-in-python-1138880/) - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [How to update Python and how to know if you should](https://www.androidauthority.com/how-to-update-python-1138078/) - [How to create Oculus Quest experiences in Unity](https://www.androidauthority.com/oculus-quest-development-1196351/) - [Upwork vs Fiverr: Which is the best place to sell your services?](https://www.androidauthority.com/upwork-vs-fiverr-1190439/) - [How to install Android on PC: These are your best options](https://www.androidauthority.com/install-android-pc-668643/) -- [A guide to Android app development for complete beginners in 5 easy steps](https://www.androidauthority.com/android-app-development-1128595/) -- [How to reverse a string in Python](https://www.androidauthority.com/how-to-reverse-a-string-in-python-1140847/) -- [What is Microsoft Azure? Azure certification for professionals](https://www.androidauthority.com/what-is-azure-1159879/) -- [How to call a method in Java](https://www.androidauthority.com/how-to-call-a-method-in-java-1149853/) ### _Android Arsenal posts_ From 73d35e2cdd2ed8312001b72df744155cf73ec248 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 11 Feb 2021 01:28:38 +0000 Subject: [PATCH 0055/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 908865efda..d976a56158 100644 --- a/README.md +++ b/README.md @@ -303,16 +303,16 @@ Like Date: Thu, 11 Feb 2021 13:10:20 +0000 Subject: [PATCH 0056/2080] github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 Bumps [Matticusau/pr-helper](https://github.com/Matticusau/pr-helper) from v1.2.4 to v1.2.5. - [Release notes](https://github.com/Matticusau/pr-helper/releases) - [Changelog](https://github.com/Matticusau/pr-helper/blob/main/CHANGELOG.md) - [Commits](https://github.com/Matticusau/pr-helper/compare/v1.2.4...bf49eea1468710cad687fcaab0c6be6717112662) Signed-off-by: dependabot[bot] --- .github/workflows/pr-helper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-helper.yml b/.github/workflows/pr-helper.yml index 4cb08eb46e..ec0e175edb 100644 --- a/.github/workflows/pr-helper.yml +++ b/.github/workflows/pr-helper.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Run PR Helper on Schedule id: runprhelperonschedule - uses: Matticusau/pr-helper@v1.2.4 + uses: Matticusau/pr-helper@v1.2.5 with: repo-token: ${{ secrets.GHACTION_PAT }} enable-prmerge-automation: true From 2bb162a8f5dcdf1fa41bed187229d9d537b89f3b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 12 Feb 2021 00:25:09 +0000 Subject: [PATCH 0057/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8bf31f9e89..7b1256d9d3 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b9054b8baf..135960722f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 32 Performance From e46e122a2f38c9595602b9f9ade959037c734475 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 12 Feb 2021 01:29:05 +0000 Subject: [PATCH 0058/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d976a56158..2fa0eda0f6 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like +- [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) - [How to use dictionaries in Python](https://www.androidauthority.com/how-to-add-to-a-dictionary-python-1136937/) - [How to enable Developer mode on a Chromebook in just a few minutes?](https://www.androidauthority.com/how-to-enable-developer-mode-on-a-chromebook-906688/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) @@ -282,7 +283,6 @@ Like - - 63 + + 61 Performance From 4a9d62d1bd28213429e89af4e2355ba374434b4b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 13 Feb 2021 01:28:16 +0000 Subject: [PATCH 0061/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e44a221b94..3dcc31bb99 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like ### _InfoWorld posts_ From 7628bddf6ce23e2f54adc906ff1d8ab2db91ae4d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 13 Feb 2021 01:28:24 +0000 Subject: [PATCH 0062/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3dcc31bb99..8b4aa41949 100644 --- a/README.md +++ b/README.md @@ -303,16 +303,16 @@ Like +- [What’s the standard for ATT 6-bit conversion values?](https://mobiledevmemo.com/whats-the-standard-for-att-6-bit-conversion-values/) - [Workshop: Understanding and preparing for AppTrackingTransparency in iOS 14](https://mobiledevmemo.com/workshop-understanding-and-preparing-for-apptrackingtransparency-in-ios-14/) - [“Allow this app to personalize advertising for you?”](https://mobiledevmemo.com/allow-this-app-to-personalize-advertising-for-you/) - [Why did Applovin buy Adjust?](https://mobiledevmemo.com/why-did-applovin-buy-adjust/) @@ -342,7 +343,6 @@ Like +- [Announcing Kotlin Symbol Processing (KSP) Alpha](https://androidsweets.ongoodbits.com/announcing-kotlin-symbol-processing-ksp-alpha) - [Coroutines and the JVM](https://androidsweets.ongoodbits.com/coroutines-and-the-jvm) - [RxJava vs. Coroutines](https://androidsweets.ongoodbits.com/2021/01/29/rxjava-vs-coroutines) - [Make your own device lab!](https://androidsweets.ongoodbits.com/2021/01/22/make-your-own-device-lab) - [How much debuggable option slows down your app?](https://androidsweets.ongoodbits.com/2021/01/15/how-much-debuggable-option-slows-down-your-app) -- [Do you know how to keep secrets?](https://androidsweets.ongoodbits.com/2021/01/08/do-you-know-how-to-keep-secrets) [repo]: https://github.com/AlexRogalskiy/android-patterns From fd5fb49f1b75e5444f7027ae03148b1ab6bb4f75 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 14 Feb 2021 00:26:03 +0000 Subject: [PATCH 0065/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index aa3dc835ef..8bf31f9e89 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 135960722f..1a0edc92c5 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -133,8 +133,8 @@ - - 79 + + 86 Best Practices From 2ad0cc4f923041a4f4eb869d83c7c69f9f80e599 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 14 Feb 2021 01:30:28 +0000 Subject: [PATCH 0066/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0f5c6e573f..80dfc20f41 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like ### _InfoWorld posts_ From 216a2a9c14b4398d640bda12d811cd23518c6aac Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 14 Feb 2021 01:30:36 +0000 Subject: [PATCH 0067/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 80dfc20f41..91b3a8c222 100644 --- a/README.md +++ b/README.md @@ -303,16 +303,16 @@ Like - - 59 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 1a0edc92c5..b9054b8baf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 31 Performance @@ -133,8 +133,8 @@ - - 86 + + 79 Best Practices From 5848ca1c07376295e6811a25cd8b81a46f9ec29f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 15 Feb 2021 01:29:41 +0000 Subject: [PATCH 0069/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 91b3a8c222..ea3de3a71d 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [Download Traffic Rider MOD (Money/Gold) APK](https://medium.com/@Asiofficial/download-traffic-rider-mod-money-gold-apk-205ce3dde88f?source=rss------android-5) -- [How to know IMEI Number of any mobile 2021 easily](https://medium.com/@vy282377/how-to-know-imei-number-of-any-mobile-2021-easily-2a9090006827?source=rss------android-5) -- [EyeAttend — Facial Recognition based Attendance System from scratch.](https://medium.com/@zukayu/eyeattend-facial-recognition-based-attendance-system-from-scratch-16e3ece22089?source=rss------android-5) -- [WhatsApp New Feature 2021](https://medium.com/@smarttecksolutions/whatsapp-new-feature-2021-b81a6812a897?source=rss------android-5) -- [Cool Goldens](https://medium.com/@fredgrott/cool-goldens-787c293b2c97?source=rss------android-5) -- [Switching to the Galaxy S21](https://medium.com/@katagaki/switching-to-the-galaxy-s21-6486359c7ff8?source=rss------android-5) -- [Android Material Progress Indicator](https://medium.com/@kennay-kermani/android-material-progress-indicator-2ff44b7296cb?source=rss------android-5) -- [Cómo Desplegar tu App para Pruebas con Firebase Distribution](https://medium.com/@jggomezt/c%C3%B3mo-desplegar-tu-app-para-pruebas-con-firebase-distribution-34fc6192b0b6?source=rss------android-5) -- [IOS or Android](https://medium.com/@cerencoban/ios-or-android-3dd5c5b3b069?source=rss------android-5) -- [Starting with HILT](https://medium.com/@tanyaanand0211/starting-with-hilt-91d66ff1e1f?source=rss------android-5) +- [How to Become Freelance Android Developer in 2021 | Android Development With Donn Felker](https://medium.com/@rickypatel8324/how-to-become-freelance-android-developer-in-2021-android-development-with-donn-felker-c6e45c860e35?source=rss------android-5) +- [Why I’m building Android Studio for Cloud?](https://medium.com/androidstudio-cloud/why-im-building-android-studio-for-cloud-78b5fd4f33e8?source=rss------android-5) +- [Walkthrough/OnBoarding/First-Time users screen in android studio using ViewPager and ViewPager 2](https://medium.com/@androidapps-development-blogs/walkthrough-onboarding-first-time-users-screen-in-android-studio-using-viewpager-and-viewpager-2-c77d0542970f?source=rss------android-5) +- [Flutter: Falling in Love Again with Mobile and Web Dev](https://medium.com/@codemotion/flutter-falling-in-love-again-with-mobile-and-web-dev-843bd2d9a848?source=rss------android-5) +- [Sandesh App Launched by Govt of India Best Alternative WhatsApp](https://medium.com/@smarttecksolutions/sandesh-app-launched-by-govt-of-india-best-alternative-whatsapp-f49c1a9cc99?source=rss------android-5) +- [Monkeyrunner Test steps](https://medium.com/@ala_shakko/monkeyrunner-test-steps-fd5f8db978db?source=rss------android-5) +- [React Native Firebase Admob Kurulumu (Android)](https://medium.com/@korayaggul/react-native-firebase-admob-kurulumu-android-4d230dedf2e0?source=rss------android-5) +- [Say hi to the bounce effect in RecyclerView without headaches](https://medium.com/androidxx/say-hi-to-the-bounce-effect-in-recyclerview-without-headaches-589c157d0a92?source=rss------android-5) +- [Monkey test](https://medium.com/@ala_shakko/monkey-test-9e6f7f4e3f02?source=rss------android-5) ### _Gizmodo posts_ From 261964fe201c5930de12b0212755d2f9c178f55a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Feb 2021 13:04:22 +0000 Subject: [PATCH 0071/2080] github-actions: bump wagoid/commitlint-github-action Bumps [wagoid/commitlint-github-action](https://github.com/wagoid/commitlint-github-action) from v2.1.7 to v2.2.3. - [Release notes](https://github.com/wagoid/commitlint-github-action/releases) - [Changelog](https://github.com/wagoid/commitlint-github-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/wagoid/commitlint-github-action/compare/v2.1.7...f0f333025c2baa89fa7f5d55ffd1b5a5722f1a48) Signed-off-by: dependabot[bot] --- .github/workflows/commitlint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml index 98b55588f4..634dc2aaf1 100644 --- a/.github/workflows/commitlint.yml +++ b/.github/workflows/commitlint.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: wagoid/commitlint-github-action@v2.1.7 + - uses: wagoid/commitlint-github-action@v2.2.3 with: configFile: './.github/workflows/lint/.commitlintrc.json' helpURL: https://rook.io/docs/rook/master/development-flow.html#commit-structure From 0a36d1a9816bb0f6f5d14b78bf177f0054c0d290 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 16 Feb 2021 00:25:22 +0000 Subject: [PATCH 0072/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index d6c050d57a..25ea3c7d5a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 65 Performance From e3c04bad97d70d67b1598f2e8a837d9d52dc70d6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 16 Feb 2021 01:29:25 +0000 Subject: [PATCH 0073/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b46d6640e3..2b9ab5e60b 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [How to Become Freelance Android Developer in 2021 | Android Development With Donn Felker](https://medium.com/@rickypatel8324/how-to-become-freelance-android-developer-in-2021-android-development-with-donn-felker-c6e45c860e35?source=rss------android-5) -- [Why I’m building Android Studio for Cloud?](https://medium.com/androidstudio-cloud/why-im-building-android-studio-for-cloud-78b5fd4f33e8?source=rss------android-5) -- [Walkthrough/OnBoarding/First-Time users screen in android studio using ViewPager and ViewPager 2](https://medium.com/@androidapps-development-blogs/walkthrough-onboarding-first-time-users-screen-in-android-studio-using-viewpager-and-viewpager-2-c77d0542970f?source=rss------android-5) -- [Flutter: Falling in Love Again with Mobile and Web Dev](https://medium.com/@codemotion/flutter-falling-in-love-again-with-mobile-and-web-dev-843bd2d9a848?source=rss------android-5) -- [Sandesh App Launched by Govt of India Best Alternative WhatsApp](https://medium.com/@smarttecksolutions/sandesh-app-launched-by-govt-of-india-best-alternative-whatsapp-f49c1a9cc99?source=rss------android-5) -- [Monkeyrunner Test steps](https://medium.com/@ala_shakko/monkeyrunner-test-steps-fd5f8db978db?source=rss------android-5) -- [React Native Firebase Admob Kurulumu (Android)](https://medium.com/@korayaggul/react-native-firebase-admob-kurulumu-android-4d230dedf2e0?source=rss------android-5) -- [Say hi to the bounce effect in RecyclerView without headaches](https://medium.com/androidxx/say-hi-to-the-bounce-effect-in-recyclerview-without-headaches-589c157d0a92?source=rss------android-5) -- [Monkey test](https://medium.com/@ala_shakko/monkey-test-9e6f7f4e3f02?source=rss------android-5) +- [How Hackers Hack Phone Using SMS  +Contact: CREATIVEHACKERS2@GMAIL.COM](https://medium.com/@daminpeter716/how-hackers-hack-phone-using-sms-contact-creativehackers2-gmail-com-4c5b6144473e?source=rss------android-5) +- [Membuat QR Code Scanner di Android [KOTLIN]](https://medium.com/@fiqsky/membuat-qr-code-scanner-di-android-kotlin-7181b27db2ec?source=rss------android-5) +- [How to use Firebase on Android without the google-services plugin](https://medium.com/@sunitroy/how-to-use-firebase-on-android-without-the-google-services-plugin-d02c8b9854b7?source=rss------android-5) +- [How RxJava chain actually works](https://proandroiddev.com/how-rxjava-chain-actually-works-2800692f7e13?source=rss------android-5) +- [Архитектура в Android приложении (MVVM)](https://medium.com/@daniil-pavenko/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0-%D0%B2-android-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B8-mvvm-3486e9e21f9a?source=rss------android-5) +- [Battle of the Smartphones — iPhone versus Android](https://medium.com/@jasonsherman/battle-of-the-smartphones-iphone-versus-android-9d41b246a7f6?source=rss------android-5) +- [พัฒนาแอพแบบ Cross Platform (iOS/Android) ด้วย Google Flutter เรียนฟรี!!! (2021)](https://medium.com/@kongruksiamza/%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2%E0%B9%81%E0%B8%AD%E0%B8%9E%E0%B9%81%E0%B8%9A%E0%B8%9A-cross-platform-ios-android-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-google-flutter-%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%9F%E0%B8%A3%E0%B8%B5-2021-a58f28328db4?source=rss------android-5) +- [The simplest guide to understanding Gradle!](https://medium.com/gradeup/the-simplest-guide-to-understanding-gradle-758d9924e6ca?source=rss------android-5) +- [How to detect Internet Connectivity Change in Android?](https://medium.com/swlh/how-to-detect-internet-connectivity-change-in-android-bdfff33e6a8b?source=rss------android-5) +- [Progressive Rollout Strategy on Trendyol Android App](https://medium.com/trendyol-tech/progressive-rollout-strategy-on-trendyol-android-app-3828d28ee27a?source=rss------android-5) ### _Gizmodo posts_ From 00bac65568b46f9f073894e66b1d74652cd8de13 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 16 Feb 2021 01:29:37 +0000 Subject: [PATCH 0075/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0901f53b5d..c180fc3d81 100644 --- a/README.md +++ b/README.md @@ -334,6 +334,7 @@ Contact: CREATIVEHACKERS2@GMAIL.COM](https://medium.com/@daminpeter716/how-hacke ### _Mobile Dev Memo posts_ +- [The profound, unintended consequence of ATT: content fortresses](https://mobiledevmemo.com/the-profound-unintended-consequence-of-att-content-fortresses/) - [What’s the standard for ATT 6-bit conversion values?](https://mobiledevmemo.com/whats-the-standard-for-att-6-bit-conversion-values/) - [Workshop: Understanding and preparing for AppTrackingTransparency in iOS 14](https://mobiledevmemo.com/workshop-understanding-and-preparing-for-apptrackingtransparency-in-ios-14/) - [“Allow this app to personalize advertising for you?”](https://mobiledevmemo.com/allow-this-app-to-personalize-advertising-for-you/) @@ -343,7 +344,6 @@ Contact: CREATIVEHACKERS2@GMAIL.COM](https://medium.com/@daminpeter716/how-hacke - [Podcast: IDFA, TURTLEDOVE, and the Future of Online Privacy](https://mobiledevmemo.com/idfa-turtledove-and-the-future-of-privacy/) - [Ad tech companies will become gaming companies in 2021](https://mobiledevmemo.com/mobile-ad-tech-companies-should-become-gaming-companies-in-2021/) - [Facebook may take 7% revenue hit from Apple privacy changes](https://mobiledevmemo.com/facebook-may-take-revenue-hit-from-apple-privacy-changes/) -- [Fingerprinting with iOS 14: Reality or delusion?](https://mobiledevmemo.com/fingerprinting-with-att-reality-or-delusion/) ### _Infinum posts_ From 2fa967c6669ce1f4a74da0b31035d7f2da25b7ae Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 17 Feb 2021 00:25:18 +0000 Subject: [PATCH 0076/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 25ea3c7d5a..7b1256d9d3 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 65 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b9054b8baf..135960722f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 32 Performance From 69114e0deb8d9482b62a34f82fb784261b05be73 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 17 Feb 2021 01:29:08 +0000 Subject: [PATCH 0077/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c180fc3d81..0607662e78 100644 --- a/README.md +++ b/README.md @@ -233,16 +233,16 @@ Like -- [How Hackers Hack Phone Using SMS  -Contact: CREATIVEHACKERS2@GMAIL.COM](https://medium.com/@daminpeter716/how-hackers-hack-phone-using-sms-contact-creativehackers2-gmail-com-4c5b6144473e?source=rss------android-5) -- [Membuat QR Code Scanner di Android [KOTLIN]](https://medium.com/@fiqsky/membuat-qr-code-scanner-di-android-kotlin-7181b27db2ec?source=rss------android-5) -- [How to use Firebase on Android without the google-services plugin](https://medium.com/@sunitroy/how-to-use-firebase-on-android-without-the-google-services-plugin-d02c8b9854b7?source=rss------android-5) -- [How RxJava chain actually works](https://proandroiddev.com/how-rxjava-chain-actually-works-2800692f7e13?source=rss------android-5) -- [Архитектура в Android приложении (MVVM)](https://medium.com/@daniil-pavenko/%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0-%D0%B2-android-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B8-mvvm-3486e9e21f9a?source=rss------android-5) -- [Battle of the Smartphones — iPhone versus Android](https://medium.com/@jasonsherman/battle-of-the-smartphones-iphone-versus-android-9d41b246a7f6?source=rss------android-5) -- [พัฒนาแอพแบบ Cross Platform (iOS/Android) ด้วย Google Flutter เรียนฟรี!!! (2021)](https://medium.com/@kongruksiamza/%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2%E0%B9%81%E0%B8%AD%E0%B8%9E%E0%B9%81%E0%B8%9A%E0%B8%9A-cross-platform-ios-android-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-google-flutter-%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%9F%E0%B8%A3%E0%B8%B5-2021-a58f28328db4?source=rss------android-5) -- [The simplest guide to understanding Gradle!](https://medium.com/gradeup/the-simplest-guide-to-understanding-gradle-758d9924e6ca?source=rss------android-5) -- [How to detect Internet Connectivity Change in Android?](https://medium.com/swlh/how-to-detect-internet-connectivity-change-in-android-bdfff33e6a8b?source=rss------android-5) -- [Progressive Rollout Strategy on Trendyol Android App](https://medium.com/trendyol-tech/progressive-rollout-strategy-on-trendyol-android-app-3828d28ee27a?source=rss------android-5) +- [GCLOUD_PROJECT Environment Variable Missing, or my Brief Introduction to Google Cloud Functions](https://medium.com/@szalma/gcloud-project-environment-variable-missing-or-my-brief-introduction-to-google-cloud-functions-bd9ee5135d92?source=rss------android-5) +- [Constraint Layout](https://medium.com/@yemrearslan-3673/constraint-layout-8b13ace936df?source=rss------android-5) +- [Flutter In App Purchase](https://medium.com/@gizemgizgg/flutter-in-app-purchase-2d9b1bb02743?source=rss------android-5) +- [Goodbye LiveData, Hello SharedFlow](https://medium.com/@aksoymelih/goodbye-livedata-hello-sharedflow-fbbfa9c00d5f?source=rss------android-5) +- [Top Mobile Games For 2021](https://medium.com/@tamaraibrahim146/top-mobile-games-for-2021-7d0f7c1f2946?source=rss------android-5) +- [Kotlin Delegates](https://medium.com/swlh/kotlin-delegates-9a82fbed32ca?source=rss------android-5) +- [Cool Flutter Docs](https://medium.com/@fredgrott/cool-flutter-docs-383b951d7feb?source=rss------android-5) +- [Android 12 could be S-Shaped snow cone and more detail](https://medium.com/@techienesshub/android-12-could-be-s-shaped-snow-cone-and-more-detail-966298e61152?source=rss------android-5) +- [Sembra che il 2021 sarà particolarmente interessante per BlackBerry](https://medium.com/@whatstechblog/sembra-che-il-2021-sar%C3%A0-particolarmente-interessante-per-blackberry-4b6076b63736?source=rss------android-5) +- [Flutter Local Databases](https://medium.com/@insatandroidclub/flutter-local-databases-a12827448e6?source=rss------android-5) ### _Gizmodo posts_ From 5d54cb7b938157f6884ae60969898e2866402303 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 17 Feb 2021 03:06:07 +0000 Subject: [PATCH 0079/2080] :arrow_up: Updates Matticusau/pr-helper action to v1.2.5 Signed-off-by: Renovate Bot --- .github/workflows/pr-helper.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-helper.yml b/.github/workflows/pr-helper.yml index 4cb08eb46e..ec0e175edb 100644 --- a/.github/workflows/pr-helper.yml +++ b/.github/workflows/pr-helper.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Run PR Helper on Schedule id: runprhelperonschedule - uses: Matticusau/pr-helper@v1.2.4 + uses: Matticusau/pr-helper@v1.2.5 with: repo-token: ${{ secrets.GHACTION_PAT }} enable-prmerge-automation: true From cf8707b02ddfb0517e0fb1d53f8297e5441e8a13 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Wed, 17 Feb 2021 14:48:14 +0300 Subject: [PATCH 0080/2080] docs: updates on workflows Added information on documentation --- .all-contributorsrc | 9 ++++- .editorconfig | 31 ++++++++++++++ .github/lock.yml | 28 +++++-------- .github/no-response.yml | 15 +++++++ .github/stale.yml | 90 +++++++++++++---------------------------- .unibeautifyrc.json | 9 +++++ .vimrc | 7 ++++ README.md | 10 ++++- 8 files changed, 114 insertions(+), 85 deletions(-) create mode 100644 .editorconfig create mode 100644 .github/no-response.yml create mode 100644 .unibeautifyrc.json create mode 100644 .vimrc diff --git a/.all-contributorsrc b/.all-contributorsrc index 3c6ea27bb3..0b9246febf 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -6,8 +6,15 @@ "files": [ "README.md" ], + "types": { + "marketing": { + "symbol": "💌", + "description": "Marketing - People who help in marketing the repo/project" + } + }, "imageSize": 100, - "commit": false, + "commit": true, + "contributorsPerLine": 5, "contributors": [ { "login": "AlexRogalskiy", diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..98cbf42fa4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,31 @@ +# http://editorconfig.org +root = true + +[*] +indent_size = 2 +# Possible values - tab, space +indent_style = space +# Possible values - lf, crlf, cr +end_of_line = lf +# Possible values - latin1, utf-8, utf-16be, utf-16le +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = 120 + +[*.js] +indent_size = 2 +max_line_length = 100 + +[*.{yml, yaml}] +indent_size = 2 + +[*.{html, xml}] +indent_size = 4 + +[*.{css, scss, json}] +indent_size = 2 + +[*.{md, markdown}] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.github/lock.yml b/.github/lock.yml index cd809780a1..ded304589c 100644 --- a/.github/lock.yml +++ b/.github/lock.yml @@ -1,36 +1,26 @@ # Configuration for lock-threads - https://github.com/dessant/lock-threads # Number of days of inactivity before a closed issue or pull request is locked -daysUntilLock: 60 +daysUntilLock: 180 # Skip issues and pull requests created before a given timestamp. Timestamp must # follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable skipCreatedBefore: false -# Issues and pull requests with these labels will not be locked. Set to `[]` to disable -exemptLabels: - - backlog +# Assign `resolved` as the reason for locking. Set to `false` to disable +setLockReason: true # Label to add before locking, such as `outdated`. Set to `false` to disable lockLabel: 🔒 Locked # Comment to post before locking. Set to `false` to disable lockComment: > - This thread has been automatically locked because it has not had recent - activity. Please open a new issue for related bugs and link to relevant - comments in this thread. - -# Assign `resolved` as the reason for locking. Set to `false` to disable -setLockReason: true + ⚠️This issue has been automatically locked 🔒since there has not been + any recent activity after it was closed. Please open a new 🆕issue for related bugs + and mention this issue. Thanks! 👍 +# Issues or pull requests with these labels will not be locked +exemptLabels: + - help-wanted # Limit to only `issues` or `pulls` only: issues - -# Optionally, specify configuration settings just for `issues` or `pulls` -# issues: -# exemptLabels: -# - help-wanted -# lockLabel: outdated - -# pulls: -# daysUntilLock: 30 diff --git a/.github/no-response.yml b/.github/no-response.yml new file mode 100644 index 0000000000..1c8799d135 --- /dev/null +++ b/.github/no-response.yml @@ -0,0 +1,15 @@ +# Configuration for probot-no-response - https://github.com/probot/no-response + +# Number of days of inactivity before an issue is closed for lack of response +daysUntilClose: 28 + +# Label requiring a response +responseRequiredLabel: more-information-needed + +# Comment to post when closing an issue for lack of response. Set to `false` to disable. +closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. diff --git a/.github/stale.yml b/.github/stale.yml index b3160652bc..c64ff435ed 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,70 +1,34 @@ # Configuration for probot-stale - https://github.com/probot/stale -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 60 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security -# Label to use when marking an issue as stale -staleLabel: wontfix -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false - -# Comment to be posted to on first time issues -newIssueWelcomeComment: | - 👋 Thanks for opening your first issue! If you're reporting a 🐞 bug, please make sure - you include steps to reproduce it. If you're requesting a feature 🎁, please provide real - use cases that would benefit. 👪 +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 365 - To help make this a smooth process, please be sure you have first read the - [contributing guidelines](https://github.com/AlexRogalskiy/android-patters/blob/master/.github/CONTRIBUTING.md). +# Number of days of inactivity before a stale Issue or Pull Request is closed +daysUntilClose: 14 -# Comment to be posted to on PRs from first time contributors in your repository -newPRWelcomeComment: | - 💖 Thanks for opening this pull request! 💖 +# Issues or Pull Requests with these labels will never be considered stale +# exemptLabels: - To help make this a smooth process, please be sure you have first read the - [contributing guidelines](https://github.com/AlexRogalskiy/android-patters/blob/master/.github/CONTRIBUTING.md). +# Label to use when marking as stale +staleLabel: Stale +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + 👏 Thanks for your contribution! + ⚠️This issue has been automatically marked as stale because it has not had + recent activity. Because the Legesher team treats their issues + [as their backlog](https://en.wikipedia.org/wiki/Scrum_(software_development)#Product_backlog), stale issues + are closed. 📕 If you would like this issue to remain open: + 1. Verify that you can still reproduce the issue in the latest version of Atom + 1. Comment that the issue is still reproducible and include: + * What version of Atom you reproduced the issue on + * What OS and version you reproduced the issue on + * What steps you followed to reproduce the issue + Thank you! 👍 +# Comment to post when removing the stale label. Set to `false` to disable +unmarkComment: true -# Comment to be posted to on pull requests merged by a first time user -firstPRMergeComment: > - Congrats on merging your first pull request! 🎉🎉🎉 You're helping make Insomnia awesome! 🙌 +# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable +closeComment: true -# Comment to post when marking as stale. Set to `false` to disable. -issues: - daysUntilStale: 90 - daysUntilClose: 7 - exemptLabels: - - confirmed - markComment: > - Thank you for taking the time to raise this issue. However, it has - not had any activity on it in the past 180 days and will be closed in - 90 days if no updates occur. - Please check if the master branch has already resolved the issue - since it was raised. If you believe the issue is still valid and you - would like input from the maintainers then please comment to ask for - it to be reviewed. - closeComment: > - This issue has been automatically closed due to inactivity. Please re-open - if this still requires investigation. -pulls: - daysUntilStale: 90 - daysUntilClose: 30 - markComment: > - Thank you for your contribution! However, this pull request has not - had any activity in the past 180 days and will be closed in 90 days if - no updates occur. - If you believe the changes are still valid then please verify your - branch has no conflicts with master and rebase if needed. If you - are awaiting a (re-)review then please let us know. - closeComment: > - This pull request has been automatically closed due to inactivity. Please re-open - if these changes are still required. +# Limit to only `issues` or `pulls` +only: issues diff --git a/.unibeautifyrc.json b/.unibeautifyrc.json new file mode 100644 index 0000000000..c00b1cd8c4 --- /dev/null +++ b/.unibeautifyrc.json @@ -0,0 +1,9 @@ +{ + "Markdown": { + "beautifiers": [ + "Prettier" + ], + "__pragma_insert__": true, + "wrap_line_length": 0 + } +} \ No newline at end of file diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000000..bb4f902589 --- /dev/null +++ b/.vimrc @@ -0,0 +1,7 @@ +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 +set expandtab +set nosmarttab + +set textwidth=80 diff --git a/README.md b/README.md index f2db58b2b2..dac3f29601 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,13 @@ with community support please contact with us if you have some question or propo [![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/android-patterns?size=50&padding=5&bots=true)](https://badges.pufler.dev) -Please read [CONTRIBUTING.md](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. +Please read +[CONTRIBUTING.md](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CONTRIBUTING.md) +for details on our code of conduct, and the process for submitting pull requests to us +([emoji key](https://allcontributors.org/docs/en/emoji-key)). + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) +specification. Contributions of any kind are welcome! [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ![Github contributors](https://img.shields.io/github/all-contributors/AlexRogalskiy/android-patterns) @@ -362,4 +368,4 @@ Like - - 63 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 135960722f..778f490a3d 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From 62b9bf29c9b663f7e63f50118a6f7f4b36e5afc1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 18 Feb 2021 01:29:35 +0000 Subject: [PATCH 0082/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dac3f29601..4083cda314 100644 --- a/README.md +++ b/README.md @@ -239,16 +239,16 @@ Like +- [The best Google Cloud courses to future-proof your resume](https://www.androidauthority.com/best-google-cloud-courses-1165111/) - [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) - [How to use dictionaries in Python](https://www.androidauthority.com/how-to-add-to-a-dictionary-python-1136937/) - [How to enable Developer mode on a Chromebook in just a few minutes?](https://www.androidauthority.com/how-to-enable-developer-mode-on-a-chromebook-906688/) @@ -288,7 +289,6 @@ Like -- [GCLOUD_PROJECT Environment Variable Missing, or my Brief Introduction to Google Cloud Functions](https://medium.com/@szalma/gcloud-project-environment-variable-missing-or-my-brief-introduction-to-google-cloud-functions-bd9ee5135d92?source=rss------android-5) -- [Constraint Layout](https://medium.com/@yemrearslan-3673/constraint-layout-8b13ace936df?source=rss------android-5) -- [Flutter In App Purchase](https://medium.com/@gizemgizgg/flutter-in-app-purchase-2d9b1bb02743?source=rss------android-5) -- [Goodbye LiveData, Hello SharedFlow](https://medium.com/@aksoymelih/goodbye-livedata-hello-sharedflow-fbbfa9c00d5f?source=rss------android-5) -- [Top Mobile Games For 2021](https://medium.com/@tamaraibrahim146/top-mobile-games-for-2021-7d0f7c1f2946?source=rss------android-5) -- [Kotlin Delegates](https://medium.com/swlh/kotlin-delegates-9a82fbed32ca?source=rss------android-5) -- [Cool Flutter Docs](https://medium.com/@fredgrott/cool-flutter-docs-383b951d7feb?source=rss------android-5) -- [Android 12 could be S-Shaped snow cone and more detail](https://medium.com/@techienesshub/android-12-could-be-s-shaped-snow-cone-and-more-detail-966298e61152?source=rss------android-5) -- [Sembra che il 2021 sarà particolarmente interessante per BlackBerry](https://medium.com/@whatstechblog/sembra-che-il-2021-sar%C3%A0-particolarmente-interessante-per-blackberry-4b6076b63736?source=rss------android-5) -- [Flutter Local Databases](https://medium.com/@insatandroidclub/flutter-local-databases-a12827448e6?source=rss------android-5) +- [Phone Clone: Memindahkan Seluruh Data HP Android ke Lain Device](https://medium.com/@tutorialike/phone-clone-memindahkan-seluruh-data-hp-android-ke-lain-device-159923db2ee9?source=rss------android-5) +- [Android: LiveData without repeatable for N > 1 observers](https://medium.com/@darktugrenok/android-livedata-without-repeatable-for-n-1-observers-23b01f78af3?source=rss------android-5) +- [Afinal, meu app deve ser híbrido ou nativo?](https://medium.com/trilogo/afinal-meu-app-deve-ser-h%C3%ADbrido-ou-nativo-53308fd43733?source=rss------android-5) +- [Apple Vs Android: Who is the Winner?](https://medium.com/@elysia-12terrance/apple-vs-android-who-is-the-winner-222a6a2ec7ff?source=rss------android-5) +- [Understanding Android OS!](https://medium.com/the-missing-android-developers-guide/understanding-android-os-ec79aad6822?source=rss------android-5) +- [Best English Learning App on Android To Improve Grammar Easily](https://medium.com/@dhyanchand/best-english-learning-app-on-android-to-improve-grammar-easily-fa292ac92?source=rss------android-5) +- [RxJava and Kotlin #2](https://medium.com/@bruno-hensel/rxjava-and-kotlin-2-e7549f3de4ad?source=rss------android-5) +- [Why always Java be the first choice for Android Developers?](https://medium.com/dev-genius/why-always-java-be-the-first-choice-for-android-developers-9e6c15154c34?source=rss------android-5) +- [Automate That Shit](https://medium.com/@fredgrott/automate-that-shit-236dcae8c049?source=rss------android-5) +- [What is DEPENDENCY INJECTION and why we need it, in simple words](https://medium.com/@mohammad0sman/what-is-dependency-injection-and-why-we-need-it-in-simple-words-8def404ae7d6?source=rss------android-5) ### _Gizmodo posts_ From c612830218fdb37abf014aec44f0bf1109bec405 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 18 Feb 2021 01:29:46 +0000 Subject: [PATCH 0085/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38c5e5eae3..44c938be7b 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,8 @@ Like ### _Mobile Dev Memo posts_ From b0ddbbe017648a633954d7278c422c15635fbd67 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 18 Feb 2021 01:29:50 +0000 Subject: [PATCH 0086/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 44c938be7b..31bb41c8fb 100644 --- a/README.md +++ b/README.md @@ -339,6 +339,7 @@ Like ### _Infinum posts_ From 5b4641f0bad8e3e8b3419162a752653056acc26f Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Thu, 18 Feb 2021 05:25:44 +0300 Subject: [PATCH 0087/2080] docs: updates on workflows Added information on documentation --- .github/auto-comment.yml | 12 ++++++++++++ README.md | 1 + 2 files changed, 13 insertions(+) create mode 100644 .github/auto-comment.yml diff --git a/.github/auto-comment.yml b/.github/auto-comment.yml new file mode 100644 index 0000000000..767b748474 --- /dev/null +++ b/.github/auto-comment.yml @@ -0,0 +1,12 @@ +issuesOpened: > + Thank you for raising this issue! We will try and get back to you as soon as possible. + Please make sure you format it properly, followed our [code of conduct](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CODE_OF_CONDUCT.md) and have given us as much context as possible. + + /cc @AlexRogalskiy + +pullRequestOpened: > + Thank you for raising your pull request. + Please make sure again that you have followed our [contributing guidelines](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CONTRIBUTING.md) and the [code of conduct](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CODE_OF_CONDUCT.md). + We will review it as soon as possible. + + /cc @AlexRogalskiy diff --git a/README.md b/README.md index dac3f29601..e3c49e34bb 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ ![GitHub Repository branches](https://badgen.net/github/branches/AlexRogalskiy/android-patterns) ![GitHub Repository dependents](https://badgen.net/github/dependents-repo/AlexRogalskiy/android-patterns) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fandroid-patterns.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fandroid-patterns?ref=badge_shield) +[![Renovatebot](https://badgen.net/badge/renovate/enabled/green?cache=300)](https://renovatebot.com/) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-1f8ceb.svg?style=flat-square)](https://dependabot.com/) [![NewReleases](https://newreleases.io/badge.svg)](https://newreleases.io/github/AlexRogalskiy/android-patterns) [![Hits-of-Code](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master)](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master/view?branch=master) From d521e8553c389b96f2583ff3e4efaa16f88b2109 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Thu, 18 Feb 2021 05:29:13 +0300 Subject: [PATCH 0088/2080] docs: updates on workflows Added information on documentation --- .github/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/stale.yml b/.github/stale.yml index c64ff435ed..9cbd2eb867 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -15,7 +15,7 @@ staleLabel: Stale markComment: > 👏 Thanks for your contribution! ⚠️This issue has been automatically marked as stale because it has not had - recent activity. Because the Legesher team treats their issues + recent activity. Because the team treats their issues [as their backlog](https://en.wikipedia.org/wiki/Scrum_(software_development)#Product_backlog), stale issues are closed. 📕 If you would like this issue to remain open: 1. Verify that you can still reproduce the issue in the latest version of Atom From 1fb00aaa521b2701c09d6052685152756d5ea99a Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Thu, 18 Feb 2021 14:57:26 +0300 Subject: [PATCH 0089/2080] docs: updates on workflows Added information on documentation --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 90172da7d6..ddb3a67930 100644 --- a/README.md +++ b/README.md @@ -362,6 +362,13 @@ Like Date: Thu, 18 Feb 2021 16:57:05 +0300 Subject: [PATCH 0090/2080] docs: updates on workflows Added information on documentation --- .github/workflows/linter.yml | 2 +- README.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index ced9bb1698..188737f53e 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -16,7 +16,7 @@ on: branches: [ master ] env: - FILTER_REGEX_EXCLUDE: .gh-md-toc + FILTER_REGEX_INCLUDE: .*docs/.* ############### # Set the Job # ############### diff --git a/README.md b/README.md index ddb3a67930..b6a870b22a 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ [![NewReleases](https://newreleases.io/badge.svg)](https://newreleases.io/github/AlexRogalskiy/android-patterns) [![Hits-of-Code](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master)](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master/view?branch=master) [![ComVer](https://img.shields.io/badge/ComVer-compliant-brightgreen.svg)][repo] +[![GitHub Super-Linter](https://github.com/alexrogalskiy/android-patterns/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) ## 🎹 _Table of contents_ From 7f0d30526e7a61c246637163b9b3582b7fa69913 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 18 Feb 2021 14:36:48 +0000 Subject: [PATCH 0091/2080] docs: updates on VERSION Added information on VERSION to repository Signed-off-by: GitHub Bot --- version.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 version.txt diff --git a/version.txt b/version.txt new file mode 100644 index 0000000000..7698b02ddc --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +VERSION = "v1.0.1" From 121ef5889bf1359316d8700f34a0be8a5af35c04 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 19 Feb 2021 00:25:20 +0000 Subject: [PATCH 0092/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8bf31f9e89..d6c050d57a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 778f490a3d..21eb6257c9 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 15 Performance From 38911004d07a0a2114b281d1cadffc56b70df305 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 19 Feb 2021 01:29:49 +0000 Subject: [PATCH 0093/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b6a870b22a..d1d1ff3b0f 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - [Google’s UI toolkit for Android moves to alpha release](https://www.infoworld.com/article/3572565/googles-ui-toolkit-for-android-moves-to-alpha-release.html#tk.rss_android) @@ -265,7 +266,6 @@ Like +- [Kivy Python tutorial: Build attractive mobile apps in Python!](https://www.androidauthority.com/kivy-python-tutorial-build-attractive-mobile-apps-in-python-1142003/) - [The best Google Cloud courses to future-proof your resume](https://www.androidauthority.com/best-google-cloud-courses-1165111/) - [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) - [How to use dictionaries in Python](https://www.androidauthority.com/how-to-add-to-a-dictionary-python-1136937/) @@ -290,7 +291,6 @@ Like +- [Bindables](http://android-arsenal.com/details/1/8226) - [RxDisposableWatcher](http://android-arsenal.com/details/1/8225) - [android-uniDevId](http://android-arsenal.com/details/1/8224) - [BottomSheet Menu](http://android-arsenal.com/details/1/8223) @@ -305,7 +306,6 @@ Like -- [Phone Clone: Memindahkan Seluruh Data HP Android ke Lain Device](https://medium.com/@tutorialike/phone-clone-memindahkan-seluruh-data-hp-android-ke-lain-device-159923db2ee9?source=rss------android-5) -- [Android: LiveData without repeatable for N > 1 observers](https://medium.com/@darktugrenok/android-livedata-without-repeatable-for-n-1-observers-23b01f78af3?source=rss------android-5) -- [Afinal, meu app deve ser híbrido ou nativo?](https://medium.com/trilogo/afinal-meu-app-deve-ser-h%C3%ADbrido-ou-nativo-53308fd43733?source=rss------android-5) -- [Apple Vs Android: Who is the Winner?](https://medium.com/@elysia-12terrance/apple-vs-android-who-is-the-winner-222a6a2ec7ff?source=rss------android-5) -- [Understanding Android OS!](https://medium.com/the-missing-android-developers-guide/understanding-android-os-ec79aad6822?source=rss------android-5) -- [Best English Learning App on Android To Improve Grammar Easily](https://medium.com/@dhyanchand/best-english-learning-app-on-android-to-improve-grammar-easily-fa292ac92?source=rss------android-5) -- [RxJava and Kotlin #2](https://medium.com/@bruno-hensel/rxjava-and-kotlin-2-e7549f3de4ad?source=rss------android-5) -- [Why always Java be the first choice for Android Developers?](https://medium.com/dev-genius/why-always-java-be-the-first-choice-for-android-developers-9e6c15154c34?source=rss------android-5) -- [Automate That Shit](https://medium.com/@fredgrott/automate-that-shit-236dcae8c049?source=rss------android-5) -- [What is DEPENDENCY INJECTION and why we need it, in simple words](https://medium.com/@mohammad0sman/what-is-dependency-injection-and-why-we-need-it-in-simple-words-8def404ae7d6?source=rss------android-5) +- [Download Stick War Legacy Mod Apk, Unlimited Money Gems Skills Gold](https://medium.com/@situspalingtop21xxi/download-stick-war-legacy-mod-apk-unlimited-money-gems-skills-gold-a3eb93a48a04?source=rss------android-5) +- [Crie sua própria biblioteca/componente react-native e publicar no npm](https://medium.com/@afa7789/crie-sua-pr%C3%B3pria-biblioteca-componente-react-native-e-publicar-no-npm-6e4e468c877f?source=rss------android-5) +- [Let’s be explicit about our intent(-filters)](https://medium.com/androiddevelopers/lets-be-explicit-about-our-intent-filters-c5dbe2dbdce0?source=rss------android-5) +- [Java vs Kotlin: Which One Is Better To Learn In 2021?](https://medium.com/@ditamihai/java-vs-kotlin-which-one-is-better-to-learn-in-2021-fb75eb279033?source=rss------android-5) +- [Android CI/CD with Github Actions and Bintray](https://medium.com/android-ci-cd-with-github-actions-and-bintray/android-ci-cd-with-github-actions-and-bintray-7c2ce2fa56f?source=rss------android-5) +- [Measure and optimize bitmap size using Glide or Picasso](https://proandroiddev.com/measure-and-optimize-bitmap-size-using-glide-or-picasso-3273b4a569cd?source=rss------android-5) +- [Create Android Apps without code](https://medium.com/@trwkc/create-android-apps-without-code-de373223eca2?source=rss------android-5) +- [Kotlin Coroutines: The Suspend Function](https://medium.com/microsoft-mobile-engineering/kotlin-coroutines-the-suspend-function-571ee8237a7b?source=rss------android-5) +- [Android 2-Way Data Binding With MVVM](https://medium.com/better-programming/android-2-way-data-binding-with-mvvm-c13022a2f04a?source=rss------android-5) +- [Experience: Being an Android facilitator!](https://medium.com/@theanton/experience-being-an-android-facilitator-c7b6d2d7c72e?source=rss------android-5) ### _Gizmodo posts_ From a455908107abbaa1f5406f64b2af593ba9a172a4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 19 Feb 2021 01:30:08 +0000 Subject: [PATCH 0098/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8ad67bd91a..45712d5e1a 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ Like ### _Mobile Dev Memo posts_ From 15840d5d0008de62e31e7757d841829e91af01fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Feb 2021 13:10:37 +0000 Subject: [PATCH 0099/2080] github-actions: bump wagoid/commitlint-github-action Bumps [wagoid/commitlint-github-action](https://github.com/wagoid/commitlint-github-action) from v2.2.3 to v2.2.5. - [Release notes](https://github.com/wagoid/commitlint-github-action/releases) - [Changelog](https://github.com/wagoid/commitlint-github-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/wagoid/commitlint-github-action/compare/v2.2.3...4b1bcb1c72f99fbd6aa6b34cc3fb59200f01f993) Signed-off-by: dependabot[bot] --- .github/workflows/commitlint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml index 634dc2aaf1..252e75a55e 100644 --- a/.github/workflows/commitlint.yml +++ b/.github/workflows/commitlint.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: wagoid/commitlint-github-action@v2.2.3 + - uses: wagoid/commitlint-github-action@v2.2.5 with: configFile: './.github/workflows/lint/.commitlintrc.json' helpURL: https://rook.io/docs/rook/master/development-flow.html#commit-structure From 36b19ad96913c0bd2707e680a5d9249cc1c08113 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 20 Feb 2021 00:25:26 +0000 Subject: [PATCH 0100/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 18 +++++++++--------- reports/pagespeedresultmobile.svg | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index d6c050d57a..026d1f85fb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,22 +119,22 @@ stroke: #f5f5f566 } - + - - 60 + + 42 Performance - - 64 + + 72 Accessibility - - 79 + + 80 Best Practices @@ -177,9 +177,9 @@ - + - + diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 21eb6257c9..60d9263181 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,20 +121,20 @@ - - 15 + + 28 Performance - - 65 + + 71 Accessibility - - 79 + + 80 Best Practices @@ -177,9 +177,9 @@ - + - + From ade1e4c106d190e3c752d64ba45da31c531fdc58 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 20 Feb 2021 00:44:04 +0000 Subject: [PATCH 0101/2080] :arrow_up: Updates wagoid/commitlint-github-action action to v2.2.5 Signed-off-by: Renovate Bot --- .github/workflows/commitlint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml index 634dc2aaf1..252e75a55e 100644 --- a/.github/workflows/commitlint.yml +++ b/.github/workflows/commitlint.yml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: wagoid/commitlint-github-action@v2.2.3 + - uses: wagoid/commitlint-github-action@v2.2.5 with: configFile: './.github/workflows/lint/.commitlintrc.json' helpURL: https://rook.io/docs/rook/master/development-flow.html#commit-structure From b16879672e5c918854a1e2711b4b8ad8fee543b3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Feb 2021 01:29:25 +0000 Subject: [PATCH 0102/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 45712d5e1a..6cc1788362 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Download Stick War Legacy Mod Apk, Unlimited Money Gems Skills Gold](https://medium.com/@situspalingtop21xxi/download-stick-war-legacy-mod-apk-unlimited-money-gems-skills-gold-a3eb93a48a04?source=rss------android-5) -- [Crie sua própria biblioteca/componente react-native e publicar no npm](https://medium.com/@afa7789/crie-sua-pr%C3%B3pria-biblioteca-componente-react-native-e-publicar-no-npm-6e4e468c877f?source=rss------android-5) -- [Let’s be explicit about our intent(-filters)](https://medium.com/androiddevelopers/lets-be-explicit-about-our-intent-filters-c5dbe2dbdce0?source=rss------android-5) -- [Java vs Kotlin: Which One Is Better To Learn In 2021?](https://medium.com/@ditamihai/java-vs-kotlin-which-one-is-better-to-learn-in-2021-fb75eb279033?source=rss------android-5) -- [Android CI/CD with Github Actions and Bintray](https://medium.com/android-ci-cd-with-github-actions-and-bintray/android-ci-cd-with-github-actions-and-bintray-7c2ce2fa56f?source=rss------android-5) -- [Measure and optimize bitmap size using Glide or Picasso](https://proandroiddev.com/measure-and-optimize-bitmap-size-using-glide-or-picasso-3273b4a569cd?source=rss------android-5) -- [Create Android Apps without code](https://medium.com/@trwkc/create-android-apps-without-code-de373223eca2?source=rss------android-5) -- [Kotlin Coroutines: The Suspend Function](https://medium.com/microsoft-mobile-engineering/kotlin-coroutines-the-suspend-function-571ee8237a7b?source=rss------android-5) -- [Android 2-Way Data Binding With MVVM](https://medium.com/better-programming/android-2-way-data-binding-with-mvvm-c13022a2f04a?source=rss------android-5) -- [Experience: Being an Android facilitator!](https://medium.com/@theanton/experience-being-an-android-facilitator-c7b6d2d7c72e?source=rss------android-5) +- [Android - Kotlin’de RecyclerView Kullanımı](https://medium.com/@cevlikalprn/android-kotlinde-recyclerview-kullan%C4%B1m%C4%B1-2a4ecf233741?source=rss------android-5) +- [Android process death](https://medium.com/perry-street-software-engineering/android-process-death-66f56029e405?source=rss------android-5) +- [Android Project Template based on Kotlin](https://medium.com/@vishal1337/android-project-template-based-on-kotlin-bb37235465a5?source=rss------android-5) +- [Testando sua aplicação](https://medium.com/android-dev-br/testando-sua-aplica%C3%A7%C3%A3o-80bc80e543ce?source=rss------android-5) +- [I Refuse To Date Anyone Who Has An Android Phone](https://medium.com/@shamarm/i-refuse-to-date-anyone-who-has-an-android-phone-7fc209e93ea8?source=rss------android-5) +- [Set up your First React-Native(Android) project on Windows](https://medium.com/@reshmiagarwal/set-up-your-first-react-native-android-project-on-windows-32f54492c5fd?source=rss------android-5) +- [Swipe to reveal in Jetpack Compose](https://medium.com/@skyyo/swipe-to-reveal-in-jetpack-compose-6ffa8928a4c2?source=rss------android-5) +- [Google has already begun development on Android 12, with the vast majority of Android phone makers…](https://medium.com/@cio-jrajitha/google-has-already-begun-development-on-android-12-with-the-vast-majority-of-android-phone-makers-9ddaca137718?source=rss------android-5) +- [How to create custom AppBar/ActionBar/ToolBar in Android Studio | Java](https://medium.com/@androidapps-development-blogs/how-to-create-custom-appbar-actionbar-toolbar-in-android-studio-java-61907fa1e44?source=rss------android-5) ### _Gizmodo posts_ From d22a19c0f8b78bd0f00d2aa223ca9072fdf91867 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Feb 2021 01:29:38 +0000 Subject: [PATCH 0104/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f6242e5b0..841e219fbd 100644 --- a/README.md +++ b/README.md @@ -355,11 +355,11 @@ Like Date: Sun, 21 Feb 2021 00:27:03 +0000 Subject: [PATCH 0107/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 026d1f85fb..4ea1063e12 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 42 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 60d9263181..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 30 Performance From 7fb94c0373958d0b2d53774f35706e75ac9be492 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 21 Feb 2021 01:32:04 +0000 Subject: [PATCH 0108/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 841e219fbd..fd0ced3930 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 737a9e2428733880e62497e15f5110fc7d0c9e66 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 21 Feb 2021 01:32:11 +0000 Subject: [PATCH 0109/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index fd0ced3930..29f465ad1d 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like - - 51 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 32 Performance From ab9de36ce6ecba1b0db719c4276430fcb06f4750 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 22 Feb 2021 01:32:36 +0000 Subject: [PATCH 0111/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 29f465ad1d..49785370a4 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like 100+ -> 1000+ etc).](https://www.reddit.com/r/androiddev/comments/lpanls/does_anyone_keep_track_of_the_google_play_install/) +- [Temporary solution for sdk30. Target sdk29/xplore file app. For anyone who cant get to their data after the update](https://www.reddit.com/r/androiddev/comments/lpa6gi/temporary_solution_for_sdk30_target_sdk29xplore/) +- [Showing overlay as a custom close button on top of an interstitial ad?](https://www.reddit.com/r/androiddev/comments/lp848b/showing_overlay_as_a_custom_close_button_on_top/) +- [Just released my first game on Google Play. Any feedback on my game is appreciated.](https://www.reddit.com/r/androiddev/comments/lp6nug/just_released_my_first_game_on_google_play_any/) +- [Persistent bottom sheet pushed up by keyboard](https://www.reddit.com/r/androiddev/comments/lp6iyg/persistent_bottom_sheet_pushed_up_by_keyboard/) +- [MVVM vs Jetpack ViewModel - what am i doing wrong ?](https://www.reddit.com/r/androiddev/comments/lp4nac/mvvm_vs_jetpack_viewmodel_what_am_i_doing_wrong/) +- [Call recorders](https://www.reddit.com/r/androiddev/comments/lp3tug/call_recorders/) +- [I'm not a dev. Take my app idea and make it!](https://www.reddit.com/r/androiddev/comments/lp2kxj/im_not_a_dev_take_my_app_idea_and_make_it/) +- [Compile AndroidManifest from .xml to compiled .xml (axml)](https://www.reddit.com/r/androiddev/comments/lp1lvb/compile_androidmanifest_from_xml_to_compiled_xml/) +- [Where do you write the test class in your classes that need context?](https://www.reddit.com/r/androiddev/comments/lp02df/where_do_you_write_the_test_class_in_your_classes/) ### _InfoWorld posts_ From 68d4854b9510abef60c66b2f72053c4195aac5a5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 22 Feb 2021 01:32:43 +0000 Subject: [PATCH 0112/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 49785370a4..b5cfb68316 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,15 @@ Like - - 57 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From 3bf1cca8f69216717558e9a15038a0b266351b1c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 23 Feb 2021 01:31:06 +0000 Subject: [PATCH 0114/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b5cfb68316..e8c5667af9 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) +- [How to create a file in Python and more](https://www.androidauthority.com/how-to-create-a-file-in-python-1136935/) +- [How to create an array in Java](https://www.androidauthority.com/how-to-create-an-array-in-java-1151277/) +- [How to use Python modules](https://www.androidauthority.com/python-module-1149431/) +- [How to use arrays in Python](https://www.androidauthority.com/arrays-in-python-1149422/) - [Kivy Python tutorial: Build attractive mobile apps in Python!](https://www.androidauthority.com/kivy-python-tutorial-build-attractive-mobile-apps-in-python-1142003/) - [The best Google Cloud courses to future-proof your resume](https://www.androidauthority.com/best-google-cloud-courses-1165111/) -- [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) - [How to use dictionaries in Python](https://www.androidauthority.com/how-to-add-to-a-dictionary-python-1136937/) - [How to enable Developer mode on a Chromebook in just a few minutes?](https://www.androidauthority.com/how-to-enable-developer-mode-on-a-chromebook-906688/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) -- [How to add Python to Path (Windows)](https://www.androidauthority.com/how-to-add-python-to-path-1140374/) -- [How to reverse a list in Python](https://www.androidauthority.com/how-to-reverse-a-list-in-python-1138880/) -- [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) -- [How to update Python and how to know if you should](https://www.androidauthority.com/how-to-update-python-1138078/) ### _Android Arsenal posts_ From 8deee4e6974db206a327de6c4480176672840371 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 23 Feb 2021 01:31:14 +0000 Subject: [PATCH 0116/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 87039eb1e6..b70ed878d0 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like +- [The CPM math doesn’t work](https://mobiledevmemo.com/the-cpm-math-doesnt-work/) - [Why doesn’t Google have to show the ATT prompt?](https://mobiledevmemo.com/why-doesnt-google-have-to-show-the-att-prompt/) - [The profound, unintended consequence of ATT: content fortresses](https://mobiledevmemo.com/the-profound-unintended-consequence-of-att-content-fortresses/) - [What’s the standard for ATT 6-bit conversion values?](https://mobiledevmemo.com/whats-the-standard-for-att-6-bit-conversion-values/) @@ -350,7 +351,6 @@ Like - - 53 + + 50 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..4033c9005f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 36 Performance From 11096aebb4d69bf09133c79760dcbf2c1d898e57 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 24 Feb 2021 01:32:12 +0000 Subject: [PATCH 0119/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5f7eeab3e5..7e10357d9b 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [[Android] WorkManager 2.5.0 스테이블 릴리즈 변경 사항](https://medium.com/kenneth-android/jetpack-workmanager-2-5-0-%EC%8A%A4%ED%85%8C%EC%9D%B4%EB%B8%94-%EB%A6%B4%EB%A6%AC%EC%A6%88-%EB%B3%80%EA%B2%BD-%EC%82%AC%ED%95%AD-70d238d43bd3?source=rss------android-5) -- [Rotation examples with Flutter Transform widget (Part I)](https://medium.com/killer-flutter/rotation-examples-with-flutter-transform-widget-part-i-bb65b43d5b82?source=rss------android-5) -- [Android Firmware vulnerabilities: Exposing the threats](https://medium.com/@nsnyori/android-firmware-vulnerabilities-exposing-the-threats-9899283497e7?source=rss------android-5) -- [The Path to Associate Kotlin/Android Developer](https://medium.com/@albarqawi/the-path-to-associate-kotlin-android-developer-b775f121ebaa?source=rss------android-5) -- [Radio Buttons, A New Appearance](https://medium.com/@hussien-fahmy98/radio-buttons-a-new-appearance-3e94c4fb0a53?source=rss------android-5) -- [Construindo uma Bottom Navigation com Kotlin e Android JetPack](https://medium.com/@lbeurmann/construindo-uma-bottom-navigation-com-kotlin-e-android-jetpack-12e947a887cb?source=rss------android-5) -- [AOSP](https://medium.com/@divyaparashar/aosp-84764fa89e87?source=rss------android-5) -- [SOLID: Um assunto necessário | Parte 2](https://medium.com/@souzaaline/solid-um-assunto-necess%C3%A1rio-parte-2-4b74394d02af?source=rss------android-5) -- [Android TV Voice Search](https://medium.com/@ayushigupta-2225/android-tv-voice-search-4c040b8f043d?source=rss------android-5) -- [App básica de traducción con Huawei ML Kit](https://medium.com/@huawei-latinoamerica/app-b%C3%A1sica-de-traducci%C3%B3n-con-huawei-ml-kit-33e2d38fb3b6?source=rss------android-5) +- [3 Flutter Tips To Be More Productive](https://medium.com/@jelenajjovanoski/3-flutter-tips-to-be-more-productive-d10d8efb146e?source=rss------android-5) +- [Rewriting Firebase RemoteConfig](https://medium.com/@giuseppegiacoppo/rewriting-firebase-remoteconfig-b831e86247c8?source=rss------android-5) +- [Hello!](https://medium.com/@javi.sfh/hello-def15e58665e?source=rss------android-5) +- [Constraint Layout 2.0](https://medium.com/@emre-arslan/constraint-layout-2-0-98df8c74856b?source=rss------android-5) +- [Stop refactoring. Kotlin. Android.](https://medium.com/@pavlovskiiilia/stop-refactoring-kotlin-android-581bb05f005?source=rss------android-5) +- [Creating Memory-Constrained Bitmaps with Glide](https://medium.com/@rohan-saigaonkar97/creating-memory-constrained-bitmaps-with-glide-61af9a2737e1?source=rss------android-5) +- [JvmSuppressWildcards: The secret sauce to your sandwich-style generics](https://medium.com/@chao2zhang/jvmsuppresswildcards-the-secret-sauce-to-your-sandwich-style-generics-b0093aa5979d?source=rss------android-5) +- [App Signature helper class (Kotlin)](https://medium.com/@appcaesars/app-signature-helper-class-kotlin-8a6e90f2371?source=rss------android-5) +- [Why I Love Flutter as a React Developer](https://betterprogramming.pub/why-i-love-flutter-as-a-react-developer-b0f86773b01f?source=rss------android-5) +- [Android modularization](https://medium.com/makingtuenti/android-modularization-783231543748?source=rss------android-5) ### _Gizmodo posts_ From 81a05fb126cf767241efb819ff15783545898142 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 24 Feb 2021 01:32:22 +0000 Subject: [PATCH 0121/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b7095fa1b..0dba786f53 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From 46f6479f08e33ce02d058eef1f4e090ba33d7e7e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 25 Feb 2021 00:25:47 +0000 Subject: [PATCH 0122/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index fff0e2b1b6..ba3a7e6339 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 50 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 4033c9005f..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 26 Performance From bf9521f22aefa39b0bd47ea1f1b01a2152c25257 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 25 Feb 2021 01:31:57 +0000 Subject: [PATCH 0123/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0dba786f53..f25b21cc8b 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) @@ -265,7 +266,6 @@ Like -- [3 Flutter Tips To Be More Productive](https://medium.com/@jelenajjovanoski/3-flutter-tips-to-be-more-productive-d10d8efb146e?source=rss------android-5) -- [Rewriting Firebase RemoteConfig](https://medium.com/@giuseppegiacoppo/rewriting-firebase-remoteconfig-b831e86247c8?source=rss------android-5) -- [Hello!](https://medium.com/@javi.sfh/hello-def15e58665e?source=rss------android-5) -- [Constraint Layout 2.0](https://medium.com/@emre-arslan/constraint-layout-2-0-98df8c74856b?source=rss------android-5) -- [Stop refactoring. Kotlin. Android.](https://medium.com/@pavlovskiiilia/stop-refactoring-kotlin-android-581bb05f005?source=rss------android-5) -- [Creating Memory-Constrained Bitmaps with Glide](https://medium.com/@rohan-saigaonkar97/creating-memory-constrained-bitmaps-with-glide-61af9a2737e1?source=rss------android-5) -- [JvmSuppressWildcards: The secret sauce to your sandwich-style generics](https://medium.com/@chao2zhang/jvmsuppresswildcards-the-secret-sauce-to-your-sandwich-style-generics-b0093aa5979d?source=rss------android-5) -- [App Signature helper class (Kotlin)](https://medium.com/@appcaesars/app-signature-helper-class-kotlin-8a6e90f2371?source=rss------android-5) -- [Why I Love Flutter as a React Developer](https://betterprogramming.pub/why-i-love-flutter-as-a-react-developer-b0f86773b01f?source=rss------android-5) -- [Android modularization](https://medium.com/makingtuenti/android-modularization-783231543748?source=rss------android-5) +- [Easy way to use Custom Fonts in Android WebViews](https://medium.com/@tiagoreul/easy-way-to-use-custom-fonts-in-android-webviews-6c727af9f2f8?source=rss------android-5) +- [Android app quality standards according to Google](https://medium.com/@badrkouki/android-app-quality-standards-according-to-google-5144137735b7?source=rss------android-5) +- [YouTube Rolls Out 4K Video Support for All Android Devices](https://medium.com/@johnjack1211/youtube-rolls-out-4k-video-support-for-all-android-devices-2c23de2842c6?source=rss------android-5) +- [What is Flat Droid](https://medium.com/@flatdroid/what-is-flat-droid-141251314bb4?source=rss------android-5) +- [Swipe To Dismiss Android RecyclerView Items Using Kotlin](https://betterprogramming.pub/swipe-to-dismiss-android-recyclerview-items-using-kotlin-95ca20cfb812?source=rss------android-5) +- [The starting point on writing secure mobile apps](https://medium.com/@kmpnz/the-starting-point-on-writing-secure-mobile-apps-91992b703387?source=rss------android-5) +- [Android的依賴注入-Hilt函式庫](https://medium.com/@jimmy4302001/android%E7%9A%84%E4%BE%9D%E8%B3%B4%E6%B3%A8%E5%85%A5-hilt%E5%87%BD%E5%BC%8F%E5%BA%AB-2514c1f2fa65?source=rss------android-5) +- [MVVM x MVP](https://medium.com/@souzaaline/mvvm-x-mvp-269b43a2c5e7?source=rss------android-5) ### _Gizmodo posts_ From 6e653e3eee2c14c11c03164e7281a375849f87e8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 25 Feb 2021 01:32:09 +0000 Subject: [PATCH 0126/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c103a4ee61..bb36bfc139 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,7 @@ Like ### _Mobile Dev Memo posts_ From 2609994be3f6015cd2e62016739b69873b48d50a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 26 Feb 2021 00:26:30 +0000 Subject: [PATCH 0127/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ba3a7e6339..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 30 Performance From 06495240a99e2f0014b0f6360dd88739d5bd9b1c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 26 Feb 2021 01:32:38 +0000 Subject: [PATCH 0128/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index bb36bfc139..549a6fac46 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Android 12 developer preview: Everything developers need to know](https://www.androidauthority.com/android-12-preview-for-devs-1203675/) +- [How to use if statements in Python](https://www.androidauthority.com/how-to-use-if-statements-in-python-1148498/) - [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) - [How to create a file in Python and more](https://www.androidauthority.com/how-to-create-a-file-in-python-1136935/) - [How to create an array in Java](https://www.androidauthority.com/how-to-create-an-array-in-java-1151277/) @@ -289,8 +291,6 @@ Like -- [Easy way to use Custom Fonts in Android WebViews](https://medium.com/@tiagoreul/easy-way-to-use-custom-fonts-in-android-webviews-6c727af9f2f8?source=rss------android-5) -- [Android app quality standards according to Google](https://medium.com/@badrkouki/android-app-quality-standards-according-to-google-5144137735b7?source=rss------android-5) -- [YouTube Rolls Out 4K Video Support for All Android Devices](https://medium.com/@johnjack1211/youtube-rolls-out-4k-video-support-for-all-android-devices-2c23de2842c6?source=rss------android-5) -- [What is Flat Droid](https://medium.com/@flatdroid/what-is-flat-droid-141251314bb4?source=rss------android-5) -- [Swipe To Dismiss Android RecyclerView Items Using Kotlin](https://betterprogramming.pub/swipe-to-dismiss-android-recyclerview-items-using-kotlin-95ca20cfb812?source=rss------android-5) -- [The starting point on writing secure mobile apps](https://medium.com/@kmpnz/the-starting-point-on-writing-secure-mobile-apps-91992b703387?source=rss------android-5) -- [Android的依賴注入-Hilt函式庫](https://medium.com/@jimmy4302001/android%E7%9A%84%E4%BE%9D%E8%B3%B4%E6%B3%A8%E5%85%A5-hilt%E5%87%BD%E5%BC%8F%E5%BA%AB-2514c1f2fa65?source=rss------android-5) -- [MVVM x MVP](https://medium.com/@souzaaline/mvvm-x-mvp-269b43a2c5e7?source=rss------android-5) +- [Managing threads in RxJava](https://medium.com/@wiacekdawid/managing-threads-in-rxjava-7952e1673628?source=rss------android-5) +- [Exsent-Project: Create your own functions](https://medium.com/@valentinahrend123/exsent-project-create-your-own-functions-cf718e65aae9?source=rss------android-5) +- [Android Inter-Process Communication (IPC) — it’s biggest limitation?](https://medium.com/@chathura-sarathchandra/android-inter-process-communication-ipc-its-biggest-limitation-1c2d43189454?source=rss------android-5) +- [PUBG Mobile New State Launched | Pre-Registration Started](https://medium.com/@smarttecksolutions/pubg-mobile-new-state-launched-pre-registration-started-5d1c2f59fca4?source=rss------android-5) +- [EyeAttend – Facial Recognition based Attendance System from scratch.](https://medium.com/analytics-vidhya/eyeattend-facial-recognition-based-attendance-system-from-scratch-c93dbab8c17?source=rss------android-5) +- [Холодный запуск Android приложения](https://medium.com/maddevs-io/holodnyj-zapusk-android-prilozheniya-8e6e8d1823f5?source=rss------android-5) +- [How can everyone benefit in a new economy with paid jobs for only a few?](https://medium.com/@helena-tangden/how-can-everyone-benefit-in-a-new-economy-with-paid-jobs-for-only-a-few-ae69d95b5265?source=rss------android-5) +- [Storybook for Mobile Applications](https://medium.com/@adil-malik/storybook-for-mobile-applications-97e3a229fb3c?source=rss------android-5) +- [Unit Testing with Kotlin Coroutines: The Android Way](https://medium.com/swlh/unit-testing-with-kotlin-coroutines-the-android-way-19289838d257?source=rss------android-5) +- [How to use Genymotion Image (Android Virtual Devices) on Cloud providers for Demo or Training use…](https://medium.com/genymobile/provide-demo-and-training-on-android-virtual-devices-using-genymotion-device-image-paas-ac46edc7f83d?source=rss------android-5) ### _Gizmodo posts_ From 05cc2fa1bbe71334faed0db222d901424ef817e2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 26 Feb 2021 01:32:50 +0000 Subject: [PATCH 0131/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 53e9471f2b..f141b01ff3 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ Like ### _Mobile Dev Memo posts_ From c8d735529cdeda843fb900877376efb20fb3cc1b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 27 Feb 2021 00:26:07 +0000 Subject: [PATCH 0132/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 32 Performance From b50f1c6dbc6b0b999c621705374f12c60517270f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 27 Feb 2021 01:32:00 +0000 Subject: [PATCH 0133/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f141b01ff3..c6d5e27a16 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 80c58288c7d4328c37d39b0c41f6bfe928ab2b3c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 27 Feb 2021 01:32:03 +0000 Subject: [PATCH 0134/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6d5e27a16..08278e6d00 100644 --- a/README.md +++ b/README.md @@ -256,6 +256,7 @@ Like ### _RedHat posts_ From c74c3bb3b949da403bf1666df8f17e16d972ffa9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 27 Feb 2021 01:32:07 +0000 Subject: [PATCH 0135/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 08278e6d00..0971f36a2d 100644 --- a/README.md +++ b/README.md @@ -282,6 +282,7 @@ Like ### _Android Arsenal posts_ From ad7c9290707cee55a34c2fd846e37271ebeefca9 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 28 Feb 2021 00:27:46 +0000 Subject: [PATCH 0136/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From b9f6b013c64e4d20bf77d88ad92dcfb451ba80f7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 28 Feb 2021 01:35:00 +0000 Subject: [PATCH 0137/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0971f36a2d..30b1799c8f 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 609384131d62e88d251d15b8908388bac5fca41a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 28 Feb 2021 01:35:07 +0000 Subject: [PATCH 0138/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 30b1799c8f..ccf7da0b89 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,15 @@ Like +- [The Flatcat Can't Even Walk, but It's Instantly the Creepiest Robot I've Ever Seen](https://gizmodo.com/the-flatcat-cant-even-walk-but-its-instantly-the-creep-1846366550) - [Don't Do It, Samsung](https://gizmodo.com/dont-do-it-samsung-1846355099) - [Google's Live Caption Tool Is Now Available as a Hidden Feature in Chrome](https://gizmodo.com/googles-live-caption-tool-is-now-available-as-a-hidden-1846353693) - [How Android's Nearby Share Compares to Apple's AirDrop](https://gizmodo.com/how-androids-nearby-share-compares-to-apples-airdrop-1846315959) @@ -334,7 +335,6 @@ Like +- [Announcing Jetpack Compose Beta!](https://androidsweets.ongoodbits.com/announcing-jetpack-compose-beta) - [First preview of Android 12](https://androidsweets.ongoodbits.com/first-preview-of-android-12) - [Announcing Kotlin Symbol Processing (KSP) Alpha](https://androidsweets.ongoodbits.com/announcing-kotlin-symbol-processing-ksp-alpha) - [Coroutines and the JVM](https://androidsweets.ongoodbits.com/coroutines-and-the-jvm) - [RxJava vs. Coroutines](https://androidsweets.ongoodbits.com/2021/01/29/rxjava-vs-coroutines) -- [Make your own device lab!](https://androidsweets.ongoodbits.com/2021/01/22/make-your-own-device-lab) --- From 2c16c1e5552e9cf971d4ad77747f0603c74d473e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 1 Mar 2021 00:27:54 +0000 Subject: [PATCH 0141/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..1c67d311f4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 32 Performance From 8900066532fdc23379cb8cc9cc16494df86e048a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 1 Mar 2021 01:37:42 +0000 Subject: [PATCH 0142/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 70cde080e1..400f61a170 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 785ca56c7f283738ef783efd138a9e0b8813757f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 1 Mar 2021 01:37:48 +0000 Subject: [PATCH 0143/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 400f61a170..36b06455b0 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like - - 58 + + 62 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 26 Performance From 2d33d96de1dacbe2466d0bc18a6a0b8c6f4ad5af Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 2 Mar 2021 01:19:47 +0000 Subject: [PATCH 0145/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 36b06455b0..1074a56b83 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [An introduction to Kotlin for Android development](https://www.androidauthority.com/kotlin-for-android-development-1132127/) - [Android 12 developer preview: Everything developers need to know](https://www.androidauthority.com/android-12-preview-for-devs-1203675/) - [Scoped storage tutorial for Android Studio](https://www.androidauthority.com/scoped-storage-tutorial-1204124/) - [How to use if statements in Python](https://www.androidauthority.com/how-to-use-if-statements-in-python-1148498/) @@ -290,7 +291,6 @@ Like -- [Intermediate: Integration of Huawei Push kit in Flutter](https://medium.com/@basavarajnavi/intermediate-integration-of-huawei-push-kit-in-flutter-689c1de50c2b?source=rss------android-5) -- [Jetpack Compose: Testei, apanhei e aprendi!](https://medium.com/fretebras-tech/jetpack-compose-testei-apanhei-e-aprendi-9a26b370e61a?source=rss------android-5) -- [Chat bubble widget for flutter](https://medium.com/@arkapp/chat-bubble-widget-for-flutter-95d3bb82ddd8?source=rss------android-5) -- [La storia di un blog di tecnologia italiano: GExperience.it](https://medium.com/@zanettinandrea/la-storia-di-un-blog-di-tecnologia-italiano-gexperience-it-311fee0ca443?source=rss------android-5) -- [10 Best Apps to Remote Control Windows PC With Android](https://medium.com/@webs360/10-best-apps-to-remote-control-windows-pc-with-android-868ff6b9971c?source=rss------android-5) -- [iPhone vs Android — A Personal Perspective](https://medium.com/@ksmgjg/iphone-vs-android-a-personal-perspective-7c9f0052f9eb?source=rss------android-5) -- [Ini 6 Fitur Baru Android Yang Dirilis Google](https://medium.com/@kutiper/ini-6-fitur-baru-android-yang-dirilis-google-c24542e2f169?source=rss------android-5) -- [How to call Android functions from JavaScript](https://medium.com/@beniaminpantiru/how-to-call-android-functions-from-javascript-3f7628340374?source=rss------android-5) -- [[Exclusive] American Gods Series 3, (Episode 7) American Gods S3-E7 On Starz!](https://medium.com/american-gods-starz-series-3-episode-7/exclusive-american-gods-series-3-episode-7-american-gods-s3-e7-on-starz-b1428c665f22?source=rss------android-5) -- [How to make an Music Player App using Android Studio](https://medium.com/@kourloskostas/how-to-make-an-music-player-app-using-android-studio-2fbdb47980f3?source=rss------android-5) +- [Niagara Launcher is a minimalist launcher for Android users](https://medium.com/@thegadgeteer/niagara-launcher-is-a-minimalist-launcher-for-android-users-a3dc3e77809f?source=rss------android-5) +- [Android 12 changelog: Google finally restricts the power of “adb backup”](https://medium.com/swlh/android-12-changelog-google-finally-restricts-the-power-of-adb-backup-44f2216c219?source=rss------android-5) +- [A journey from callback hell to Kotlin coroutines, Episode 1](https://medium.com/@ahmednmahran/a-journey-from-callback-hell-to-kotlin-coroutines-episode-1-98b52821b323?source=rss------android-5) +- [Meet the Speaker — Sweety Bertilla](https://medium.com/@womentechsummit/meet-the-speaker-sweety-bertilla-5a690863ca26?source=rss------android-5) +- [Animar Imagen con vista Master-Detail y Glide (Shared Element + Navigation Component) — Parte #2](https://medium.com/@ppantaleon/animar-imagen-con-vista-master-detail-y-glide-shared-element-navigation-component-parte-2-7f8aacd7597f?source=rss------android-5) +- [What is React Native and Why Might You Use it?](https://medium.com/@mhmcwatters/what-is-react-native-and-why-might-you-use-it-cde3c599cc72?source=rss------android-5) +- [Creating Onboarding Screens with Koin](https://blog.berkberber.com/creating-onboarding-screens-with-koin-eff057055e4a?source=rss------android-5) +- [Jetpack Compose — Getting Started](https://medium.com/@jeffreyrajan/jetpack-compose-getting-started-983f89d79823?source=rss------android-5) +- [Bill Gates reveals why he prefers Android over iOS](https://medium.com/@dailymag24/bill-gates-reveals-why-he-prefers-android-over-ios-ff9bd22b5b40?source=rss------android-5) +- [10 BEST Android Emulators For Windows And MAC](https://medium.com/@nerdmaniac1594/10-best-android-emulators-for-windows-and-mac-5729b393a30d?source=rss------android-5) ### _Gizmodo posts_ From 0ea111e828dcba18be5f83c27e1f1af6e282400d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 2 Mar 2021 01:20:01 +0000 Subject: [PATCH 0148/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf82bb30c4..5b14ff2e04 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From b95692a5fe7684e777c1585b8ecbbd11d26f05c1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 2 Mar 2021 01:20:06 +0000 Subject: [PATCH 0149/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5b14ff2e04..3c65050ee8 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,8 @@ Like ### _Infinum posts_ From fa895cd3a9984f265509e944d9ff98ace6bbe3ab Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 3 Mar 2021 00:26:07 +0000 Subject: [PATCH 0150/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..f12ea38eb6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 29 Performance From 63309c51031089f08ab4c80232b8be37480b0029 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 3 Mar 2021 01:33:37 +0000 Subject: [PATCH 0151/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3c65050ee8..303e4f772a 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [An introduction to Kotlin for Android development](https://www.androidauthority.com/kotlin-for-android-development-1132127/) - [Android 12 developer preview: Everything developers need to know](https://www.androidauthority.com/android-12-preview-for-devs-1203675/) - [Scoped storage tutorial for Android Studio](https://www.androidauthority.com/scoped-storage-tutorial-1204124/) @@ -290,7 +291,6 @@ Like -- [Niagara Launcher is a minimalist launcher for Android users](https://medium.com/@thegadgeteer/niagara-launcher-is-a-minimalist-launcher-for-android-users-a3dc3e77809f?source=rss------android-5) -- [Android 12 changelog: Google finally restricts the power of “adb backup”](https://medium.com/swlh/android-12-changelog-google-finally-restricts-the-power-of-adb-backup-44f2216c219?source=rss------android-5) -- [A journey from callback hell to Kotlin coroutines, Episode 1](https://medium.com/@ahmednmahran/a-journey-from-callback-hell-to-kotlin-coroutines-episode-1-98b52821b323?source=rss------android-5) -- [Meet the Speaker — Sweety Bertilla](https://medium.com/@womentechsummit/meet-the-speaker-sweety-bertilla-5a690863ca26?source=rss------android-5) -- [Animar Imagen con vista Master-Detail y Glide (Shared Element + Navigation Component) — Parte #2](https://medium.com/@ppantaleon/animar-imagen-con-vista-master-detail-y-glide-shared-element-navigation-component-parte-2-7f8aacd7597f?source=rss------android-5) -- [What is React Native and Why Might You Use it?](https://medium.com/@mhmcwatters/what-is-react-native-and-why-might-you-use-it-cde3c599cc72?source=rss------android-5) -- [Creating Onboarding Screens with Koin](https://blog.berkberber.com/creating-onboarding-screens-with-koin-eff057055e4a?source=rss------android-5) -- [Jetpack Compose — Getting Started](https://medium.com/@jeffreyrajan/jetpack-compose-getting-started-983f89d79823?source=rss------android-5) -- [Bill Gates reveals why he prefers Android over iOS](https://medium.com/@dailymag24/bill-gates-reveals-why-he-prefers-android-over-ios-ff9bd22b5b40?source=rss------android-5) -- [10 BEST Android Emulators For Windows And MAC](https://medium.com/@nerdmaniac1594/10-best-android-emulators-for-windows-and-mac-5729b393a30d?source=rss------android-5) +- [Mavericks, Meet Jetpack Compose](https://medium.com/@gpeal/mavericks-meet-jetpack-compose-cf6721f2ea88?source=rss------android-5) +- [Android 3.65](https://medium.com/wire-news/android-3-65-5ecd8a258ac2?source=rss------android-5) +- [Bottom Sheet in Jetpack Compose](https://medium.com/@agarasul/bottom-sheet-in-jetpack-compose-c8ab7a297aac?source=rss------android-5) +- [Getting ready for Declarative UIs — Part 2 — Implementing Unidirectional Data Flow](https://proandroiddev.com/getting-ready-for-declarative-uis-part-2-implementing-unidirectional-data-flow-2e829e9f6f50?source=rss------android-5) +- [My March Recommendations for Flutter Packages](https://medium.com/@jelenajjovanoski/my-march-recommendations-for-flutter-packages-fd23bfd6a97?source=rss------android-5) +- [RxJava and Kotlin #3](https://medium.com/@bruno-hensel/rxjava-and-kotlin-3-17fc46151d35?source=rss------android-5) +- [Android Data Binding With MVVM: Using LiveData and ViewModel](https://betterprogramming.pub/android-data-binding-with-mvvm-using-livedata-and-viewmodel-71028901e3bb?source=rss------android-5) +- [Build Your Own — AsyncTask](https://blog.usejournal.com/build-your-own-asynctask-fcfc4aaf0225?source=rss------android-5) +- [OnePlus, the New Samsung?](https://medium.com/@drchocolate5050/oneplus-the-new-samsung-38c2f1e5d0eb?source=rss------android-5) +- [Compose (UI) beyond the UI (Part III): No AAC-ViewModel and a sample app](https://proandroiddev.com/compose-ui-beyond-the-ui-part-iii-no-aac-viewmodel-and-a-sample-app-8e76dbdd1529?source=rss------android-5) ### _Gizmodo posts_ From 49b2038f5a5094737d55b8fff8bbf526ea7e6c7f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 4 Mar 2021 00:26:26 +0000 Subject: [PATCH 0154/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f12ea38eb6..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 5beb3b484b5edf7991ad08ed3920c94d5855a548 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 4 Mar 2021 01:34:08 +0000 Subject: [PATCH 0155/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 589add4100..6e07384baf 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Mavericks, Meet Jetpack Compose](https://medium.com/@gpeal/mavericks-meet-jetpack-compose-cf6721f2ea88?source=rss------android-5) -- [Android 3.65](https://medium.com/wire-news/android-3-65-5ecd8a258ac2?source=rss------android-5) -- [Bottom Sheet in Jetpack Compose](https://medium.com/@agarasul/bottom-sheet-in-jetpack-compose-c8ab7a297aac?source=rss------android-5) -- [Getting ready for Declarative UIs — Part 2 — Implementing Unidirectional Data Flow](https://proandroiddev.com/getting-ready-for-declarative-uis-part-2-implementing-unidirectional-data-flow-2e829e9f6f50?source=rss------android-5) -- [My March Recommendations for Flutter Packages](https://medium.com/@jelenajjovanoski/my-march-recommendations-for-flutter-packages-fd23bfd6a97?source=rss------android-5) -- [RxJava and Kotlin #3](https://medium.com/@bruno-hensel/rxjava-and-kotlin-3-17fc46151d35?source=rss------android-5) -- [Android Data Binding With MVVM: Using LiveData and ViewModel](https://betterprogramming.pub/android-data-binding-with-mvvm-using-livedata-and-viewmodel-71028901e3bb?source=rss------android-5) -- [Build Your Own — AsyncTask](https://blog.usejournal.com/build-your-own-asynctask-fcfc4aaf0225?source=rss------android-5) -- [OnePlus, the New Samsung?](https://medium.com/@drchocolate5050/oneplus-the-new-samsung-38c2f1e5d0eb?source=rss------android-5) -- [Compose (UI) beyond the UI (Part III): No AAC-ViewModel and a sample app](https://proandroiddev.com/compose-ui-beyond-the-ui-part-iii-no-aac-viewmodel-and-a-sample-app-8e76dbdd1529?source=rss------android-5) +- [Leveling out callbacks with coroutines — SMS Retriever case](https://medium.com/@circusmagnus/leveling-out-callbacks-with-coroutines-sms-retriever-case-7cedc555671b?source=rss------android-5) +- [GraphQL with Apollo Android , why it’s worth taking a look.](https://medium.com/@hamdiboumaiza/graphql-with-apollo-android-why-its-worth-taking-a-look-f30ceb4a23ae?source=rss------android-5) +- [Move from JCenter to Maven in Android](https://medium.com/@Cool.Mind/move-from-jcenter-to-maven-in-android-619d62e98bc3?source=rss------android-5) +- [Willful Smart Watch for Men Women](https://medium.com/@abdouhacker86/willful-smart-watch-for-men-women-c0c412a19eab?source=rss------android-5) +- [The cost of paranoia in the 21st century](https://medium.com/predict/the-cost-of-paranoia-in-the-21st-century-4db763601a77?source=rss------android-5) +- [How TO Download BlueStacks Android Emulator 4.2/5 for Windows](https://medium.com/@nerdmaniac1594/how-to-download-bluestacks-android-emulator-4-2-5-for-windows-6728f9ab34fb?source=rss------android-5) +- [React Native : Quittez l’application lorsque vous appuyez sur le Bouton Retour.](https://medium.com/@codivoire/react-native-quittez-lapplication-lorsque-vous-appuyez-sur-le-bouton-retour-691e322a03dc?source=rss------android-5) +- [How To Understand Composables & Recomposition: A Beginners Guide To Jetpack Compose](https://medium.com/@rkay301/how-to-understand-composables-recomposition-a-beginners-guide-to-jetpack-compose-5c339b2d53ac?source=rss------android-5) +- [the UIThe Very Best Mobile App Agencies in 2021:](https://medium.com/@pabloblume/the-uithe-very-best-mobile-app-agencies-in-2021-1c9a18801afb?source=rss------android-5) +- [Integrar Unity & Location Kit](https://medium.com/@huawei-latinoamerica/integrar-unity-location-kit-38d1cd1990f?source=rss------android-5) ### _Gizmodo posts_ From bb98208189b3ba4c976575b4c9d002b81383e5fd Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 5 Mar 2021 00:27:00 +0000 Subject: [PATCH 0157/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 30 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From fab725e334ef6fe6518d20cb399b6e2a320a5cdf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 5 Mar 2021 01:35:22 +0000 Subject: [PATCH 0158/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e687f05f29..c6aa1b0535 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) +- [How to use AWS – a simple guide for beginners](https://www.androidauthority.com/how-to-use-aws-1168883/) +- [Java beginner course – A free and comprehensive guide to the basics of Java](https://www.androidauthority.com/java-beginners-course-1146854/) +- [How to use classes in Python](https://www.androidauthority.com/how-to-use-classes-in-python-1148982/) +- [How to install Java, and everything else you need to know](https://www.androidauthority.com/how-to-install-java-1151165/) +- [When to use lists vs dictionaries in Python](https://www.androidauthority.com/how-to-create-a-list-in-python-1140101/) - [An introduction to Kotlin for Android development](https://www.androidauthority.com/kotlin-for-android-development-1132127/) - [Android 12 developer preview: Everything developers need to know](https://www.androidauthority.com/android-12-preview-for-devs-1203675/) - [Scoped storage tutorial for Android Studio](https://www.androidauthority.com/scoped-storage-tutorial-1204124/) - [How to use if statements in Python](https://www.androidauthority.com/how-to-use-if-statements-in-python-1148498/) -- [What is Google Cloud certification and should I get it?](https://www.androidauthority.com/google-cloud-certification-1164349/) -- [How to create a file in Python and more](https://www.androidauthority.com/how-to-create-a-file-in-python-1136935/) -- [How to create an array in Java](https://www.androidauthority.com/how-to-create-an-array-in-java-1151277/) -- [How to use Python modules](https://www.androidauthority.com/python-module-1149431/) -- [How to use arrays in Python](https://www.androidauthority.com/arrays-in-python-1149422/) ### _Android Arsenal posts_ From 28f1c81e5548ad1d0423c792ae7a24551f7c0a90 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 5 Mar 2021 01:35:30 +0000 Subject: [PATCH 0160/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 02c918d434..3645387fb0 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like - - 57 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..e1585f7644 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 34 Performance From 5121005db30ae05711776fc196bf23bb4eb70d3f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 6 Mar 2021 01:34:18 +0000 Subject: [PATCH 0162/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3645387fb0..d538e0765e 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) +- [Upwork vs Fiverr: Which is the best place to sell your services?](https://www.androidauthority.com/upwork-vs-fiverr-1190439/) - [How to use AWS – a simple guide for beginners](https://www.androidauthority.com/how-to-use-aws-1168883/) - [Java beginner course – A free and comprehensive guide to the basics of Java](https://www.androidauthority.com/java-beginners-course-1146854/) - [How to use classes in Python](https://www.androidauthority.com/how-to-use-classes-in-python-1148982/) @@ -290,7 +291,6 @@ Like -- [Android — Clean architecture with Dynamic-features and Hilt/Dagger2 (Pt.3)](https://medium.com/@pedrookawa/android-clean-architecture-with-dynamic-features-and-hilt-dagger2-pt-3-ca40d2316fc8?source=rss------android-5) -- [Clean architecture with Dynamic-features and Hilt/Dagger2 (Pt.2)](https://medium.com/@pedrookawa/clean-architecture-with-dynamic-features-and-hilt-dagger2-pt-2-af801f162b0d?source=rss------android-5) -- [Clean architecture with Dynamic-features and Hilt/Dagger2 (Pt.1)](https://medium.com/@pedrookawa/clean-architecture-with-dynamic-features-and-hilt-dagger2-pt-1-d1be41a44b12?source=rss------android-5) -- [It’s Time For Google To Revive Google Play Edition Phones](https://medium.com/the-shadow/its-time-for-google-to-revive-google-play-edition-phones-a4b2a01f29ef?source=rss------android-5) -- [Android Studio Kotlin Live Templates](https://medium.com/codestory/android-studio-kotlin-live-templates-fb7397f36c39?source=rss------android-5) -- [Top 3 Ways to Install Android on PC](https://medium.com/@jackturner808/top-3-ways-to-install-android-on-pc-67e235f416ac?source=rss------android-5) -- [Top Free & Paid Sources to Learn Android](https://medium.com/@gondhalesatyam-28082/top-free-paid-sources-to-learn-android-c194af9bfc3b?source=rss------android-5) -- [Hacking tools for your cell phone](https://medium.com/nerd-for-tech/hacking-tools-for-your-cell-phone-a259eeb29660?source=rss------android-5) -- [Herramientas de Hacking para tu android](https://medium.com/@y000o/herramientas-de-hacking-para-tu-android-842f815205e1?source=rss------android-5) -- [Android: Membuat Project Berlanjut.](https://medium.com/@bndrsnvtch/android-membuat-project-berlanjut-f222f5af190a?source=rss------android-5) +- [Easier Android Shared Preferences in Kotlin](https://medium.com/@tiagoreul/easier-android-shared-preferences-in-kotlin-f9653a5a833f?source=rss------android-5) +- [Super Ball Jump: Bounce Adventures](https://medium.com/vuxia/super-ball-jump-bounce-adventures-a7aa563cccf3?source=rss------android-5) +- [Super Ball Jump: Bounce Adventures](https://medium.com/@vuxia/super-ball-jump-bounce-adventures-6352f78ac902?source=rss------android-5) +- [GET YOUR NEW PASSPORT,DRIVING LISENCE,ID CARDS,SSN, IELTS/TOEFL AND OTHER DOCUMENTS.for](https://medium.com/@morgandaruis8/get-your-new-passport-driving-lisence-id-cards-ssn-ielts-toefl-and-other-documents-for-41b98dec688e?source=rss------android-5) +- [OneStream Live News Update: New Version 6.0.3](https://medium.com/onestream/onestream-live-news-update-new-version-6-0-3-f1466214eb13?source=rss------android-5) +- [Free Instagram Followers Get Free 50k Follower sin 60 Minutes](https://medium.com/@bhorwiz/free-instagram-followers-get-free-50k-follower-sin-60-minutes-e38402e158b6?source=rss------android-5) +- [Expert Flutter IDE SetUp](https://medium.com/@fredgrott/expert-flutter-ide-setup-57b3768ee351?source=rss------android-5) +- [Wild Storage | Part 1 — Performance for queries](https://medium.com/knowing-android/wild-storage-part-1-performance-for-queries-661f11be9066?source=rss------android-5) +- [Data Binding Adapters And Dependency Injection- A Short Love Story](https://proandroiddev.com/data-binding-adapters-and-dependency-injection-a-short-love-story-1cbee20fa8ff?source=rss------android-5) +- [Kontrol GPIO Raspberry Pi dengan Android Native](https://medium.com/@nmauludina/kontrol-gpio-raspberry-pi-dengan-android-native-bca386b5f2fb?source=rss------android-5) ### _Gizmodo posts_ From eae88b74007c3b21ddaadb6babc114b0f683a77e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 6 Mar 2021 01:34:32 +0000 Subject: [PATCH 0165/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f1e0998784..d1b08ea108 100644 --- a/README.md +++ b/README.md @@ -356,11 +356,11 @@ Like - - 63 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e1585f7644..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 30 Performance From 632331cbf483178852bd6b21be2faa0e149354ac Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 7 Mar 2021 01:37:46 +0000 Subject: [PATCH 0167/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d1b08ea108..a19554cc6d 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Easier Android Shared Preferences in Kotlin](https://medium.com/@tiagoreul/easier-android-shared-preferences-in-kotlin-f9653a5a833f?source=rss------android-5) -- [Super Ball Jump: Bounce Adventures](https://medium.com/vuxia/super-ball-jump-bounce-adventures-a7aa563cccf3?source=rss------android-5) -- [Super Ball Jump: Bounce Adventures](https://medium.com/@vuxia/super-ball-jump-bounce-adventures-6352f78ac902?source=rss------android-5) -- [GET YOUR NEW PASSPORT,DRIVING LISENCE,ID CARDS,SSN, IELTS/TOEFL AND OTHER DOCUMENTS.for](https://medium.com/@morgandaruis8/get-your-new-passport-driving-lisence-id-cards-ssn-ielts-toefl-and-other-documents-for-41b98dec688e?source=rss------android-5) -- [OneStream Live News Update: New Version 6.0.3](https://medium.com/onestream/onestream-live-news-update-new-version-6-0-3-f1466214eb13?source=rss------android-5) -- [Free Instagram Followers Get Free 50k Follower sin 60 Minutes](https://medium.com/@bhorwiz/free-instagram-followers-get-free-50k-follower-sin-60-minutes-e38402e158b6?source=rss------android-5) -- [Expert Flutter IDE SetUp](https://medium.com/@fredgrott/expert-flutter-ide-setup-57b3768ee351?source=rss------android-5) -- [Wild Storage | Part 1 — Performance for queries](https://medium.com/knowing-android/wild-storage-part-1-performance-for-queries-661f11be9066?source=rss------android-5) -- [Data Binding Adapters And Dependency Injection- A Short Love Story](https://proandroiddev.com/data-binding-adapters-and-dependency-injection-a-short-love-story-1cbee20fa8ff?source=rss------android-5) -- [Kontrol GPIO Raspberry Pi dengan Android Native](https://medium.com/@nmauludina/kontrol-gpio-raspberry-pi-dengan-android-native-bca386b5f2fb?source=rss------android-5) +- [Convert SVG and PSD images to VectorDrawable (XML) using Android Studio Vector Asset](https://medium.com/@fawadjawaid/convert-svg-and-psd-images-to-vectordrawable-xml-using-android-studio-vector-asset-82c141ead7d?source=rss------android-5) +- [Implementing a “Master-Detail” user interface using Android Navigation Component](https://medium.com/@francois-jouvelot/implementing-a-master-detail-user-interface-using-android-navigation-component-d9bd0aa3fcaf?source=rss------android-5) +- [Simplificando Analytics com Kotlin no Android! — Part 2 Reportando Crashes da Aplicação](https://medium.com/@williamgouvea/simplificando-analytics-com-kotlin-no-android-part-2-reportando-crashes-da-aplica%C3%A7%C3%A3o-c35b823e88c8?source=rss------android-5) +- [Hidizs S9 Review](https://medium.com/bedrock-reviews/hidizs-s9-review-617eaeb2af6?source=rss------android-5) +- [Free Movie Download Apps For Android](https://medium.com/@bktechpro2.0/free-movie-download-apps-for-android-fdeb46b1780b?source=rss------android-5) +- [Benefits of Single Activity Architecture](https://medium.com/@avinash-renukaradhya/benefits-of-single-activity-architecture-a8449737f996?source=rss------android-5) +- [تحميل لعبة بيس PES 2022 بدون انترنت للاندرويد](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D9%84%D8%B9%D8%A8%D8%A9-%D8%A8%D9%8A%D8%B3-pes-2022-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D9%84%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF-718a59612199?source=rss------android-5) +- [تحميل دريم ليج DLS 2022 الجديدة مهكرة](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D8%AF%D8%B1%D9%8A%D9%85-%D9%84%D9%8A%D8%AC-dls-2022-%D8%A7%D9%84%D8%AC%D8%AF%D9%8A%D8%AF%D8%A9-%D9%85%D9%87%D9%83%D8%B1%D8%A9-2eb32ac165c8?source=rss------android-5) +- [تحميل لعبة فيفا 2022 بدون انترنت](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D9%84%D8%B9%D8%A8%D8%A9-%D9%81%D9%8A%D9%81%D8%A7-2022-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D9%86%D8%AA%D8%B1%D9%86%D8%AA-1e4f7395c57b?source=rss------android-5) +- [The state of translation in the mobile world.](https://medium.com/@tiagoreul/the-state-of-translation-in-the-mobile-world-14170639181b?source=rss------android-5) ### _Gizmodo posts_ From d47c71d145360fa20da4c5330dc64fb48aa317c9 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 8 Mar 2021 00:27:16 +0000 Subject: [PATCH 0169/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 32 Performance From 12bb1fff3a0ce65ede6ab018ef8b21033cb3d095 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 8 Mar 2021 01:36:36 +0000 Subject: [PATCH 0170/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8d8c20778c..a2d614246b 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Convert SVG and PSD images to VectorDrawable (XML) using Android Studio Vector Asset](https://medium.com/@fawadjawaid/convert-svg-and-psd-images-to-vectordrawable-xml-using-android-studio-vector-asset-82c141ead7d?source=rss------android-5) -- [Implementing a “Master-Detail” user interface using Android Navigation Component](https://medium.com/@francois-jouvelot/implementing-a-master-detail-user-interface-using-android-navigation-component-d9bd0aa3fcaf?source=rss------android-5) -- [Simplificando Analytics com Kotlin no Android! — Part 2 Reportando Crashes da Aplicação](https://medium.com/@williamgouvea/simplificando-analytics-com-kotlin-no-android-part-2-reportando-crashes-da-aplica%C3%A7%C3%A3o-c35b823e88c8?source=rss------android-5) -- [Hidizs S9 Review](https://medium.com/bedrock-reviews/hidizs-s9-review-617eaeb2af6?source=rss------android-5) -- [Free Movie Download Apps For Android](https://medium.com/@bktechpro2.0/free-movie-download-apps-for-android-fdeb46b1780b?source=rss------android-5) -- [Benefits of Single Activity Architecture](https://medium.com/@avinash-renukaradhya/benefits-of-single-activity-architecture-a8449737f996?source=rss------android-5) -- [تحميل لعبة بيس PES 2022 بدون انترنت للاندرويد](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D9%84%D8%B9%D8%A8%D8%A9-%D8%A8%D9%8A%D8%B3-pes-2022-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D9%84%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF-718a59612199?source=rss------android-5) -- [تحميل دريم ليج DLS 2022 الجديدة مهكرة](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D8%AF%D8%B1%D9%8A%D9%85-%D9%84%D9%8A%D8%AC-dls-2022-%D8%A7%D9%84%D8%AC%D8%AF%D9%8A%D8%AF%D8%A9-%D9%85%D9%87%D9%83%D8%B1%D8%A9-2eb32ac165c8?source=rss------android-5) -- [تحميل لعبة فيفا 2022 بدون انترنت](https://medium.com/@mariamahadik/%D8%AA%D8%AD%D9%85%D9%8A%D9%84-%D9%84%D8%B9%D8%A8%D8%A9-%D9%81%D9%8A%D9%81%D8%A7-2022-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D9%86%D8%AA%D8%B1%D9%86%D8%AA-1e4f7395c57b?source=rss------android-5) -- [The state of translation in the mobile world.](https://medium.com/@tiagoreul/the-state-of-translation-in-the-mobile-world-14170639181b?source=rss------android-5) +- [初探 Jetpack Compose — 渲染機制(Rendering)](https://tech.pic-collage.com/%E5%88%9D%E6%8E%A2-jetpack-compose-%E6%B8%B2%E6%9F%93%E6%A9%9F%E5%88%B6-rendering-8915f95c41f3?source=rss------android-5) +- [Android Jetpack Compose Logbook— Day 1](https://medium.com/@efebu/android-jetpack-compose-logbook-day-1-534b3e173f3b?source=rss------android-5) +- [Kinda oversimplified question, but, this use-case for concat, is basically to have some non…](https://medium.com/@arjunachatz/kinda-oversimplified-question-but-this-use-case-for-concat-is-basically-to-have-some-non-afbf54c5fe23?source=rss------android-5) +- [Situs Perang Dadu Online Terhoki Di Indonesia](https://medium.com/@kasqqpkv/situs-perang-dadu-online-terhoki-di-indonesia-d7d4a47e7d0c?source=rss------android-5) +- [App Store Optimization (ASO) Nedir ve Nasıl Yapılır?](https://medium.com/@ayselaydin/app-store-optimization-aso-nedir-ve-nas%C4%B1l-yap%C4%B1l%C4%B1r-758f4aa73bfe?source=rss------android-5) +- [How to start Android programming](https://medium.com/@ayodyabanukafernando/how-to-start-android-programming-9ed8347c47f8?source=rss------android-5) +- [Noobs approach to Android Pentesting- Nullcon Xtreme Android Hacking Training Experience](https://medium.com/@prateekthakare/noobs-approach-to-android-pentesting-nullcon-xtreme-android-hacking-training-experience-839f17bf15d4?source=rss------android-5) +- [Instagram and my lack of money.](https://medium.com/@eduardo.alvesdacosta/instagram-and-my-lack-of-money-7eb03c993c0?source=rss------android-5) ### _Gizmodo posts_ From 8e0d5866c32189da1eb423fa995a2b3069c4342a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 9 Mar 2021 00:26:51 +0000 Subject: [PATCH 0172/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index b4ea1a4f39..32c5f0458a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..4033c9005f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 36 Performance From d430fcd42e5513b9fd16e4fa46286b4d71b2d441 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 9 Mar 2021 01:35:43 +0000 Subject: [PATCH 0173/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6bb11c7017..e605d74c72 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Shuttle](http://android-arsenal.com/details/1/8231) +- [ResOf](http://android-arsenal.com/details/1/8230) +- [SegmentedProgressBar](http://android-arsenal.com/details/1/8229) +- [StackExpandableView](http://android-arsenal.com/details/1/8228) +- [Multiple Progress Bar](http://android-arsenal.com/details/1/8227) - [Bindables](http://android-arsenal.com/details/1/8226) - [RxDisposableWatcher](http://android-arsenal.com/details/1/8225) - [android-uniDevId](http://android-arsenal.com/details/1/8224) - [BottomSheet Menu](http://android-arsenal.com/details/1/8223) - [Boot Laces](http://android-arsenal.com/details/1/8222) -- [Pixl](http://android-arsenal.com/details/1/8221) -- [TagLabelText](http://android-arsenal.com/details/1/8220) -- [StoryViewer](http://android-arsenal.com/details/3/8219) -- [Bouncy](http://android-arsenal.com/details/1/8218) -- [Routes](http://android-arsenal.com/details/1/8217) ### _Medium posts_ From a4354294ae9cbf6efca6677c2b5b5984bdd89f04 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 9 Mar 2021 01:35:52 +0000 Subject: [PATCH 0175/2080] Updated with the latest blog posts --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 03bcf67ba0..4a302df1d9 100644 --- a/README.md +++ b/README.md @@ -311,14 +311,15 @@ Like +- [The Privacy Problem With Android's 'Choice' Screen](https://gizmodo.com/the-privacy-problem-with-androids-choice-screen-1846433406) - [How to Switch From Old Google Pay to New Google Pay—and Why You Need To](https://gizmodo.com/how-to-switch-from-old-google-pay-to-new-google-pay-and-1846364688) - [The Flatcat Can't Even Walk, but It's Instantly the Creepiest Robot I've Ever Seen](https://gizmodo.com/the-flatcat-cant-even-walk-but-its-instantly-the-creep-1846366550) - [Don't Do It, Samsung](https://gizmodo.com/dont-do-it-samsung-1846355099) @@ -334,7 +335,6 @@ Like +- [The privacy mirage](https://mobiledevmemo.com/the-privacy-mirage/) - [iOS 14, Privacy, and the Future of Digital Advertising](https://mobiledevmemo.com/ios-14-att-and-the-future-of-digital-advertising/) - [Podcast: The future of mobile attribution with Maor Sadra and Peter Hamilton](https://mobiledevmemo.com/podcast-the-future-of-mobile-attribution-with-maor-sadra-and-peter-hamilton/) - [The CPM math doesn’t work](https://mobiledevmemo.com/the-cpm-math-doesnt-work/) @@ -349,7 +350,6 @@ Like - - 55 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 4033c9005f..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 29 Performance From cdb3c55c74b80f122ac06b94643e6605e2c02105 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 10 Mar 2021 01:36:08 +0000 Subject: [PATCH 0179/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 42caf11091..f43c1cfd6d 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Trabajar con la muestra de Core Map y Location](https://medium.com/@huawei-latinoamerica/trabajar-con-la-muestra-de-core-map-y-location-7080620f58cb?source=rss------android-5) -- [Con che cosa si ascoltano i Podcast](https://medium.com/@flashennio/con-che-cosa-si-ascoltano-i-podcast-5b289ccc84b7?source=rss------android-5) -- [Constraint Layout com Compose](https://medium.com/android-dev-br/constraint-layout-com-compose-8928d4dbdf?source=rss------android-5) -- [Storage Roadmap: Targeting Android 30](https://levelup.gitconnected.com/storage-roadmap-targeting-android-30-73927be58804?source=rss------android-5) -- [Can a single one replace all image neural classifier apps? A fun with CLIP](https://medium.com/@alexankhar/can-a-single-one-replace-all-image-neural-classifier-apps-a-fun-with-clip-cdaa4c4edd84?source=rss------android-5) -- [Using viewModels with jetpack Compose and navigation-compose](https://proandroiddev.com/using-viewmodels-with-jetpack-compose-and-navigation-compose-b7fe675245a9?source=rss------android-5) -- [How 2FAS Backup Works](https://medium.com/@2fas/how-2fas-backup-works-f6e27ad0c444?source=rss------android-5) -- [How to Backup the Android Launcher](https://medium.com/@devinsmith02020/how-to-backup-the-android-launcher-260c1435cb7e?source=rss------android-5) -- [33 Viewpager2 Transformers for Your Android ui’s](https://medium.com/@moforemmanuel/33-viewpager2-transformers-for-your-android-uis-bbdab801eb2b?source=rss------android-5) +- [USING LAMDEN WALLET EXTENSION ON ANDROID](https://medium.com/@hiketabo/using-lamden-wallet-extension-on-android-in-case-you-dont-know-what-lamden-is-lamden-is-a-highly-72017a92f70b?source=rss------android-5) +- [I tried this out this morning as I have the exact same use-case, I am using the new material…](https://medium.com/@arjunachatz/i-tried-this-out-this-morning-as-i-have-the-exact-same-use-case-i-am-using-the-new-material-46a883f22bb6?source=rss------android-5) +- [Flutter 2 In 2 minutes](https://medium.com/@jelenajjovanoski/flutter-2-in-2-minutes-bcc0312731e8?source=rss------android-5) +- [How to communicate service and UI using LiveData](https://medium.com/@kamilabrito/how-to-communicate-service-and-ui-using-livedata-8718fbb5b4a8?source=rss------android-5) +- [Samsung’s Galaxy S21 is the no-brainer upgrade phone!](https://medium.com/@outputinfos/samsungs-galaxy-s21-is-the-no-brainer-upgrade-phone-7c565f95c30d?source=rss------android-5) +- [Integrating Truecaller SDK in React Native](https://medium.com/@aaleenmirza110/integrating-truecaller-sdk-in-react-native-dbed49b601d4?source=rss------android-5) +- [RecyclerView with nested scrolling inside items](https://medium.com/@yusufabd/recyclerview-with-nested-scrolling-inside-items-f9c3a566f6f2?source=rss------android-5) +- [Theming in Jetpack Compose for Android](https://betterprogramming.pub/theming-in-jetpack-compose-for-android-667d42b8279c?source=rss------android-5) +- [Knives Out-No rules, just fight! v1.257.479099 (Mod Apk Money working)](https://medium.com/@amongusapkmod/knives-out-no-rules-just-fight-v1-257-479099-mod-apk-money-working-ca3057cbb919?source=rss------android-5) +- [BIG BANG Evolution 1.3.4 (Mod Apk Money Working Game)](https://medium.com/@amongusapkmod/big-bang-evolution-1-3-4-mod-apk-money-working-game-3dc3a60201ef?source=rss------android-5) ### _Gizmodo posts_ From f0e0ccd4431b18f2a2918f4b48bb71d4566ff5cb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 10 Mar 2021 01:36:16 +0000 Subject: [PATCH 0181/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a6e2f8c72..e1efc0af7a 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From 8e4119fb92466902517b3e553eab500e280cc8bf Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 11 Mar 2021 00:26:58 +0000 Subject: [PATCH 0182/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 32 Performance From c4770d23ef4878c0859c413d6a72fb5b1f250540 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 11 Mar 2021 01:37:05 +0000 Subject: [PATCH 0183/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e1efc0af7a..aa14dee5eb 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) @@ -265,7 +266,6 @@ Like +- [TCharts](http://android-arsenal.com/details/1/8232) - [Shuttle](http://android-arsenal.com/details/1/8231) - [ResOf](http://android-arsenal.com/details/1/8230) - [SegmentedProgressBar](http://android-arsenal.com/details/1/8229) @@ -305,7 +306,6 @@ Like -- [USING LAMDEN WALLET EXTENSION ON ANDROID](https://medium.com/@hiketabo/using-lamden-wallet-extension-on-android-in-case-you-dont-know-what-lamden-is-lamden-is-a-highly-72017a92f70b?source=rss------android-5) -- [I tried this out this morning as I have the exact same use-case, I am using the new material…](https://medium.com/@arjunachatz/i-tried-this-out-this-morning-as-i-have-the-exact-same-use-case-i-am-using-the-new-material-46a883f22bb6?source=rss------android-5) -- [Flutter 2 In 2 minutes](https://medium.com/@jelenajjovanoski/flutter-2-in-2-minutes-bcc0312731e8?source=rss------android-5) -- [How to communicate service and UI using LiveData](https://medium.com/@kamilabrito/how-to-communicate-service-and-ui-using-livedata-8718fbb5b4a8?source=rss------android-5) -- [Samsung’s Galaxy S21 is the no-brainer upgrade phone!](https://medium.com/@outputinfos/samsungs-galaxy-s21-is-the-no-brainer-upgrade-phone-7c565f95c30d?source=rss------android-5) -- [Integrating Truecaller SDK in React Native](https://medium.com/@aaleenmirza110/integrating-truecaller-sdk-in-react-native-dbed49b601d4?source=rss------android-5) -- [RecyclerView with nested scrolling inside items](https://medium.com/@yusufabd/recyclerview-with-nested-scrolling-inside-items-f9c3a566f6f2?source=rss------android-5) -- [Theming in Jetpack Compose for Android](https://betterprogramming.pub/theming-in-jetpack-compose-for-android-667d42b8279c?source=rss------android-5) -- [Knives Out-No rules, just fight! v1.257.479099 (Mod Apk Money working)](https://medium.com/@amongusapkmod/knives-out-no-rules-just-fight-v1-257-479099-mod-apk-money-working-ca3057cbb919?source=rss------android-5) -- [BIG BANG Evolution 1.3.4 (Mod Apk Money Working Game)](https://medium.com/@amongusapkmod/big-bang-evolution-1-3-4-mod-apk-money-working-game-3dc3a60201ef?source=rss------android-5) +- [Add Voice Recognition to React Native Without Adding the Cloud](https://medium.com/picovoice/add-voice-recognition-to-react-native-without-adding-the-cloud-af9e299336e4?source=rss------android-5) +- [Website / AGEN Perang Dadu Online Terhoki Di Indonesia](https://medium.com/@kasqqpkv/website-agen-perang-dadu-online-terhoki-di-indonesia-b15a38c24fef?source=rss------android-5) +- [So I have been visiting my psychotherapist for 3 years and can finally say I am fixed!](https://medium.com/@inferion2010/so-i-have-been-visiting-my-psychotherapist-for-3-years-and-can-finally-say-i-am-fixed-d94ae09e026d?source=rss------android-5) +- [How much cost to build an Android App?](https://medium.com/@androiddevlearn/how-much-cost-to-build-an-android-app-40bf526857?source=rss------android-5) +- [What is the best Antivirus for Android?](https://medium.com/@androiddevlearn/what-is-the-best-antivirus-for-android-ce52fd106b1f?source=rss------android-5) +- [MyHeritage Deep Nostalgia Apk Free Download For Android](https://medium.com/@alizaib345-az1/myheritage-deep-nostalgia-apk-free-download-for-android-1c7c26e991f?source=rss------android-5) +- [Throttle Debounce 차이](https://medium.com/@lanicc/throttle-debounce-%EC%B0%A8%EC%9D%B4-7b59089f6be5?source=rss------android-5) +- [Flutter is no longer a cross-platform framework](https://itnext.io/flutter-is-no-longer-a-cross-platform-framework-b53c87b14c39?source=rss------android-5) +- [Choosing The Best Framework for Your Next Mobile App](https://medium.com/swlh/choosing-the-best-framework-for-your-next-mobile-app-1d2245e2406b?source=rss------android-5) +- [View Binding Nedir?](https://medium.com/@yagmurerdgn/view-binding-nedir-c6e66f3c9ea3?source=rss------android-5) ### _Gizmodo posts_ From af1b76ea5638995d509c867080e7649887e24f28 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 11 Mar 2021 01:37:17 +0000 Subject: [PATCH 0187/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fdd12b783d..eae6c8634b 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From f967e2b754d0908ea73021e2cbbc6b6c52f02665 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 12 Mar 2021 00:27:10 +0000 Subject: [PATCH 0188/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 57 Performance From 4ff95af71f9b987ec574464cf3b7f9320bbea023 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 12 Mar 2021 01:37:37 +0000 Subject: [PATCH 0189/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index eae6c8634b..cefb954463 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Add Voice Recognition to React Native Without Adding the Cloud](https://medium.com/picovoice/add-voice-recognition-to-react-native-without-adding-the-cloud-af9e299336e4?source=rss------android-5) -- [Website / AGEN Perang Dadu Online Terhoki Di Indonesia](https://medium.com/@kasqqpkv/website-agen-perang-dadu-online-terhoki-di-indonesia-b15a38c24fef?source=rss------android-5) -- [So I have been visiting my psychotherapist for 3 years and can finally say I am fixed!](https://medium.com/@inferion2010/so-i-have-been-visiting-my-psychotherapist-for-3-years-and-can-finally-say-i-am-fixed-d94ae09e026d?source=rss------android-5) -- [How much cost to build an Android App?](https://medium.com/@androiddevlearn/how-much-cost-to-build-an-android-app-40bf526857?source=rss------android-5) -- [What is the best Antivirus for Android?](https://medium.com/@androiddevlearn/what-is-the-best-antivirus-for-android-ce52fd106b1f?source=rss------android-5) -- [MyHeritage Deep Nostalgia Apk Free Download For Android](https://medium.com/@alizaib345-az1/myheritage-deep-nostalgia-apk-free-download-for-android-1c7c26e991f?source=rss------android-5) -- [Throttle Debounce 차이](https://medium.com/@lanicc/throttle-debounce-%EC%B0%A8%EC%9D%B4-7b59089f6be5?source=rss------android-5) -- [Flutter is no longer a cross-platform framework](https://itnext.io/flutter-is-no-longer-a-cross-platform-framework-b53c87b14c39?source=rss------android-5) -- [Choosing The Best Framework for Your Next Mobile App](https://medium.com/swlh/choosing-the-best-framework-for-your-next-mobile-app-1d2245e2406b?source=rss------android-5) -- [View Binding Nedir?](https://medium.com/@yagmurerdgn/view-binding-nedir-c6e66f3c9ea3?source=rss------android-5) +- [lifecycle scope는 수명을 잘 알고 써야 한다](https://medium.com/@hkkim1984/lifecycle-scope%EB%8A%94-%EC%88%98%EB%AA%85%EC%9D%84-%EC%9E%98-%EC%95%8C%EA%B3%A0-%EC%8D%A8%EC%95%BC-%ED%95%9C%EB%8B%A4-33a01df5f804?source=rss------android-5) +- [Bu Android uygulamaları banka hesaplarını çalıyor](https://medium.com/@ibrahimsansar/bu-android-uygulamalar%C4%B1-banka-hesaplar%C4%B1n%C4%B1-%C3%A7al%C4%B1yor-8751565c84cd?source=rss------android-5) +- [Android Jetpack Compose Logbook — Day 2](https://medium.com/@efebu/android-jetpack-compose-logbook-day-2-4d5019d3381b?source=rss------android-5) +- [Samsung Galaxy Buds Pro review: A little bit of everything](https://medium.com/news-about-tech/samsung-galaxy-buds-pro-review-a-little-bit-of-everything-2c4a58caec17?source=rss------android-5) +- [Ordering an iFood from your car](https://medium.com/ifood-engineering/ordering-ifood-from-your-car-f0e3ae8e9af0?source=rss------android-5) +- [Kotlin. Lambda vs Method Reference](https://medium.com/@gevondov/kotlin-lambda-vs-method-reference-fdbd175f6845?source=rss------android-5) +- [GYST : Get Your Screenshots Together](https://medium.com/@founder01/gyst-get-your-screenshots-together-64e2654e04a1?source=rss------android-5) +- [ARCHER KANGLIM — One touch action game v1.0.14 (Mod Apk)](https://medium.com/@clarice-2021/archer-kanglim-one-touch-action-game-v1-0-14-mod-apk-f528ead01d8d?source=rss------android-5) +- [Firebase with Jetpack Compose — Cloud Firestore](https://medium.com/google-developer-experts/firebase-with-jetpack-compose-cloud-firestore-39d8d139536a?source=rss------android-5) ### _Gizmodo posts_ From 78f23a7c7835ba9d994c0c597e4c4337e6f5b653 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 12 Mar 2021 01:37:45 +0000 Subject: [PATCH 0191/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e5fe07b3e..5fb8b388d3 100644 --- a/README.md +++ b/README.md @@ -325,6 +325,7 @@ Like ### _Mobile Dev Memo posts_ From a362086a77d0523c551ff6c56de96ec335546a3b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 13 Mar 2021 00:27:05 +0000 Subject: [PATCH 0192/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From bb6d138d2f9ec3627bf1fe95f02751976dfb5536 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 13 Mar 2021 01:36:07 +0000 Subject: [PATCH 0193/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5fb8b388d3..835fdd5e70 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Composer](http://android-arsenal.com/details/1/8234) +- [Synth](http://android-arsenal.com/details/1/8233) - [TCharts](http://android-arsenal.com/details/1/8232) - [Shuttle](http://android-arsenal.com/details/1/8231) - [ResOf](http://android-arsenal.com/details/1/8230) @@ -304,8 +306,6 @@ Like -- [lifecycle scope는 수명을 잘 알고 써야 한다](https://medium.com/@hkkim1984/lifecycle-scope%EB%8A%94-%EC%88%98%EB%AA%85%EC%9D%84-%EC%9E%98-%EC%95%8C%EA%B3%A0-%EC%8D%A8%EC%95%BC-%ED%95%9C%EB%8B%A4-33a01df5f804?source=rss------android-5) -- [Bu Android uygulamaları banka hesaplarını çalıyor](https://medium.com/@ibrahimsansar/bu-android-uygulamalar%C4%B1-banka-hesaplar%C4%B1n%C4%B1-%C3%A7al%C4%B1yor-8751565c84cd?source=rss------android-5) -- [Android Jetpack Compose Logbook — Day 2](https://medium.com/@efebu/android-jetpack-compose-logbook-day-2-4d5019d3381b?source=rss------android-5) -- [Samsung Galaxy Buds Pro review: A little bit of everything](https://medium.com/news-about-tech/samsung-galaxy-buds-pro-review-a-little-bit-of-everything-2c4a58caec17?source=rss------android-5) -- [Ordering an iFood from your car](https://medium.com/ifood-engineering/ordering-ifood-from-your-car-f0e3ae8e9af0?source=rss------android-5) -- [Kotlin. Lambda vs Method Reference](https://medium.com/@gevondov/kotlin-lambda-vs-method-reference-fdbd175f6845?source=rss------android-5) -- [GYST : Get Your Screenshots Together](https://medium.com/@founder01/gyst-get-your-screenshots-together-64e2654e04a1?source=rss------android-5) -- [ARCHER KANGLIM — One touch action game v1.0.14 (Mod Apk)](https://medium.com/@clarice-2021/archer-kanglim-one-touch-action-game-v1-0-14-mod-apk-f528ead01d8d?source=rss------android-5) -- [Firebase with Jetpack Compose — Cloud Firestore](https://medium.com/google-developer-experts/firebase-with-jetpack-compose-cloud-firestore-39d8d139536a?source=rss------android-5) +- [Tipos De Aplicaciones Móviles](https://medium.com/@pmedina61920/tipos-de-aplicaciones-m%C3%B3viles-cf4d54656e49?source=rss------android-5) +- [How useful is a degree of Liberal Arts or Social Sciences for a Job in Technology](https://medium.com/@ammarjamshed123/how-useful-is-a-degree-of-liberal-arts-or-social-sciences-for-a-job-in-technology-or-finance-560a9a14846c?source=rss------android-5) +- [Design system com Jetpack Compose: Criando componentes](https://medium.com/warren-tech/design-system-com-jetpack-compose-criando-componentes-ea82884957f9?source=rss------android-5) +- [Açılmayan Android Telefona Format Atma](https://medium.com/@radikalhaber42/a%C3%A7%C4%B1lmayan-android-telefona-format-atma-42ab9decdfe2?source=rss------android-5) +- [Şirketinize Mobil Uygulama Desteği Vermenin Önemi.](https://medium.com/workclick/%C5%9Firketinize-mobil-uygulama-deste%C4%9Fi-vermenin-%C3%B6nemi-872753338de9?source=rss------android-5) +- [Jetpack Navigation For Multi Module Android Apps with DI](https://medium.com/@simtop/jetpack-navigation-for-multi-module-android-apps-with-di-cc9a8af6586a?source=rss------android-5) +- [Playing Widevine (DRM) enabled DASH Streams with Exoplayer on Android](https://medium.com/udemy-engineering/playing-widevine-drm-enabled-dash-streams-with-exoplayer-on-android-5541d7199ef0?source=rss------android-5) +- [Build OpenSSL 1.1.1j for Android on macOS](https://medium.com/@brandonteng/build-openssl-1-1-1j-for-android-on-macos-7c5d8b4de828?source=rss------android-5) +- [POKEMON UNITE Available For Android | Install Now | 5vs5 Open World High Graphics 2021 Pokemon Game](https://medium.com/@himanshurai114/pokemon-unite-available-for-android-install-now-5vs5-open-world-high-graphics-2021-pokemon-game-113f5ad184d5?source=rss------android-5) +- [New Indian Battle Royale Mobile Game Announced @SICO MOBILE](https://medium.com/@himanshurai114/new-indian-battle-royale-mobile-game-announced-sico-mobile-cab7fbec136a?source=rss------android-5) ### _Gizmodo posts_ From ead88ffd2746008893c7c4f02edf31f21dfac8c1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 13 Mar 2021 01:36:21 +0000 Subject: [PATCH 0196/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 575323efa0..e89bedddf1 100644 --- a/README.md +++ b/README.md @@ -356,11 +356,11 @@ Like - - 60 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 27 Performance From ce474f2b12d2229a86b5c681da03dfa91c3ddaac Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 14 Mar 2021 01:39:50 +0000 Subject: [PATCH 0198/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e89bedddf1..1e31870b52 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) - [Composer](http://android-arsenal.com/details/1/8234) - [Synth](http://android-arsenal.com/details/1/8233) - [TCharts](http://android-arsenal.com/details/1/8232) @@ -305,7 +306,6 @@ Like -- [Tipos De Aplicaciones Móviles](https://medium.com/@pmedina61920/tipos-de-aplicaciones-m%C3%B3viles-cf4d54656e49?source=rss------android-5) -- [How useful is a degree of Liberal Arts or Social Sciences for a Job in Technology](https://medium.com/@ammarjamshed123/how-useful-is-a-degree-of-liberal-arts-or-social-sciences-for-a-job-in-technology-or-finance-560a9a14846c?source=rss------android-5) -- [Design system com Jetpack Compose: Criando componentes](https://medium.com/warren-tech/design-system-com-jetpack-compose-criando-componentes-ea82884957f9?source=rss------android-5) -- [Açılmayan Android Telefona Format Atma](https://medium.com/@radikalhaber42/a%C3%A7%C4%B1lmayan-android-telefona-format-atma-42ab9decdfe2?source=rss------android-5) -- [Şirketinize Mobil Uygulama Desteği Vermenin Önemi.](https://medium.com/workclick/%C5%9Firketinize-mobil-uygulama-deste%C4%9Fi-vermenin-%C3%B6nemi-872753338de9?source=rss------android-5) -- [Jetpack Navigation For Multi Module Android Apps with DI](https://medium.com/@simtop/jetpack-navigation-for-multi-module-android-apps-with-di-cc9a8af6586a?source=rss------android-5) -- [Playing Widevine (DRM) enabled DASH Streams with Exoplayer on Android](https://medium.com/udemy-engineering/playing-widevine-drm-enabled-dash-streams-with-exoplayer-on-android-5541d7199ef0?source=rss------android-5) -- [Build OpenSSL 1.1.1j for Android on macOS](https://medium.com/@brandonteng/build-openssl-1-1-1j-for-android-on-macos-7c5d8b4de828?source=rss------android-5) -- [POKEMON UNITE Available For Android | Install Now | 5vs5 Open World High Graphics 2021 Pokemon Game](https://medium.com/@himanshurai114/pokemon-unite-available-for-android-install-now-5vs5-open-world-high-graphics-2021-pokemon-game-113f5ad184d5?source=rss------android-5) -- [New Indian Battle Royale Mobile Game Announced @SICO MOBILE](https://medium.com/@himanshurai114/new-indian-battle-royale-mobile-game-announced-sico-mobile-cab7fbec136a?source=rss------android-5) +- [Database Inspector — Android studio most powerful tool](https://medium.com/@nandishswarup/database-inspector-android-studio-most-powerful-tool-b036faddf82?source=rss------android-5) +- [A journey from callback hell to Kotlin coroutines, episode 2](https://medium.com/@ahmednmahran/a-journey-from-callback-hell-to-kotlin-coroutines-episode-2-c048f9898f?source=rss------android-5) +- [What happens after upgrading to Flutter 2.0 or beyond?](https://medium.com/@engineerdanny/what-happens-after-upgrading-to-flutter-2-0-or-beyond-876bcd6c964e?source=rss------android-5) +- [Jetpack Compose — Pulsating Effect](https://medium.com/@pauloaapereira/jetpack-compose-pulsating-effect-4b9f2928d31a?source=rss------android-5) +- [Oh My Precious Medium Android App](https://medium.com/muddyum/oh-my-precious-medium-android-app-cfe52079dd6?source=rss------android-5) +- [Android Automation: Fastlane and Jenkins](https://blog.usejournal.com/android-automation-fastlane-and-jenkins-d879a7ce2a84?source=rss------android-5) +- [Custom back press handling in Dialog Fragments](https://medium.com/@yaxarat/custom-back-press-handling-in-dialog-fragments-2566a9ed3ce7?source=rss------android-5) +- [Git Hooks for Beginners](https://medium.com/android-dev-corner/git-hooks-for-beginners-4eb17e25bcc2?source=rss------android-5) +- [Mezjer poropast i beskonbeshmost 13 03 2021](https://medium.com/@glggqveq/mezjer-poropast-i-beskonbeshmost-13-03-2021-3ca222261a2c?source=rss------android-5) +- [Jetpack Compose — Drawer that pushes the content instead of overlaying it](https://medium.com/@pauloaapereira/jetpack-compose-drawer-that-pushes-the-content-instead-of-overlaying-it-5ee71d4a04d0?source=rss------android-5) ### _Gizmodo posts_ From 6b3e513db6daadf78fb5cc5160eaff4affe1d547 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 15 Mar 2021 00:27:36 +0000 Subject: [PATCH 0201/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From 2d1b49ddd8d296ed470c2d26cf84d63bd8b2d9b2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 15 Mar 2021 01:37:42 +0000 Subject: [PATCH 0202/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b058b7331d..9a8927cf11 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Database Inspector — Android studio most powerful tool](https://medium.com/@nandishswarup/database-inspector-android-studio-most-powerful-tool-b036faddf82?source=rss------android-5) -- [A journey from callback hell to Kotlin coroutines, episode 2](https://medium.com/@ahmednmahran/a-journey-from-callback-hell-to-kotlin-coroutines-episode-2-c048f9898f?source=rss------android-5) -- [What happens after upgrading to Flutter 2.0 or beyond?](https://medium.com/@engineerdanny/what-happens-after-upgrading-to-flutter-2-0-or-beyond-876bcd6c964e?source=rss------android-5) -- [Jetpack Compose — Pulsating Effect](https://medium.com/@pauloaapereira/jetpack-compose-pulsating-effect-4b9f2928d31a?source=rss------android-5) -- [Oh My Precious Medium Android App](https://medium.com/muddyum/oh-my-precious-medium-android-app-cfe52079dd6?source=rss------android-5) -- [Android Automation: Fastlane and Jenkins](https://blog.usejournal.com/android-automation-fastlane-and-jenkins-d879a7ce2a84?source=rss------android-5) -- [Custom back press handling in Dialog Fragments](https://medium.com/@yaxarat/custom-back-press-handling-in-dialog-fragments-2566a9ed3ce7?source=rss------android-5) -- [Git Hooks for Beginners](https://medium.com/android-dev-corner/git-hooks-for-beginners-4eb17e25bcc2?source=rss------android-5) -- [Mezjer poropast i beskonbeshmost 13 03 2021](https://medium.com/@glggqveq/mezjer-poropast-i-beskonbeshmost-13-03-2021-3ca222261a2c?source=rss------android-5) -- [Jetpack Compose — Drawer that pushes the content instead of overlaying it](https://medium.com/@pauloaapereira/jetpack-compose-drawer-that-pushes-the-content-instead-of-overlaying-it-5ee71d4a04d0?source=rss------android-5) +- [Co-Authoring The Book How to Build Android Apps with Kotlin](https://medium.com/@jomartigcal/co-authoring-the-book-how-to-build-android-apps-with-kotlin-4645c20ade77?source=rss------android-5) +- [How To Deploy To Firebase App Distribution With GitHub Actions](https://levelup.gitconnected.com/how-to-deploy-to-firebase-app-distribution-with-github-actions-ef2061725cd5?source=rss------android-5) +- [Java Spliterator Explained](https://levelup.gitconnected.com/java-spliterator-explained-81e501b37b3d?source=rss------android-5) +- [Açılmayan Açılmayan Telefona Nasıl Format Atılır ?](https://medium.com/@radikalhaber42/a%C3%A7%C4%B1lmayan-a%C3%A7%C4%B1lmayan-telefona-nas%C4%B1l-format-at%C4%B1l%C4%B1r-60c89a115e73?source=rss------android-5) +- [Wild Storage | Part 2 — Threading and Concurrency](https://medium.com/knowing-android/wild-storage-part-2-threading-and-concurrency-40f38992ca2d?source=rss------android-5) +- [Projecting the Future: Remote IDEs](https://medium.com/@sp4ghetticode/projecting-the-future-remote-ides-beb29814a174?source=rss------android-5) +- [Cyclomatic Complexity on Android](https://proandroiddev.com/cyclomatic-complexity-on-android-d52577d3e638?source=rss------android-5) +- [How to Delete & Reset M1 (2021) or Apple Silicon Mac to factory defaults.](https://medium.com/@rohit1221giri/how-to-delete-reset-m1-2021-or-apple-silicon-mac-to-factory-defaults-ce7dee86d2da?source=rss------android-5) +- [When Android is Universe, then Coroutine is SpaceShip (Coroutine Vs RxJava)](https://medium.com/@atulsakhala/when-android-is-universe-then-coroutine-is-spaceship-coroutine-vs-rxjava-23b0f3449410?source=rss------android-5) +- [WhatsApp Karşı Tarafın Sildiği Mesajları Okuma](https://medium.com/@radikalhaber42/whatsapp-kar%C5%9F%C4%B1-taraf%C4%B1n-sildi%C4%9Fi-mesajlar%C4%B1-okuma-f5bb618a4213?source=rss------android-5) ### _Gizmodo posts_ From 8e79914375df9bb0895dec7c7624e9f17e9b2127 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 16 Mar 2021 00:27:05 +0000 Subject: [PATCH 0204/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..4ea1063e12 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 26 Performance From d3b6ede7138f19091265b3ae5c05683d05659262 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 16 Mar 2021 01:36:13 +0000 Subject: [PATCH 0205/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 18dacfab28..7f941889a9 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From f1ce14b36d26410e59329ec6454a7ea79e6272b4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 16 Mar 2021 01:36:20 +0000 Subject: [PATCH 0206/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7f941889a9..8d580c5009 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like +- [Maybe There's Hope for Wear OS Yet](https://gizmodo.com/maybe-theres-hope-for-wear-os-yet-1846476548) +- [The Best Customizable Controller Can Now Be Programmed on Your Phone](https://gizmodo.com/the-best-customizable-controller-can-now-be-programmed-1846416067) +- [How to Use Your Android Phone Seamlessly With Your Chromebook](https://gizmodo.com/how-to-use-your-android-phone-seamlessly-with-your-chro-1846474450) - [Someone Totally Ruined the Memory of PalmOS By Putting Twitter on It](https://gizmodo.com/someone-totally-ruined-the-memory-of-palmos-by-putting-1846457707) - [Epic Is Taking Google to Court (Again)](https://gizmodo.com/epic-is-taking-google-to-court-again-1846446966) - [Google Is Bringing an Apple-Like Handoff Feature to Android Phones and Chromebooks](https://gizmodo.com/google-is-bringing-an-apple-like-handoff-feature-to-and-1846441190) @@ -333,9 +336,6 @@ Like +- [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) - [The privacy mirage](https://mobiledevmemo.com/the-privacy-mirage/) - [iOS 14, Privacy, and the Future of Digital Advertising](https://mobiledevmemo.com/ios-14-att-and-the-future-of-digital-advertising/) - [Podcast: The future of mobile attribution with Maor Sadra and Peter Hamilton](https://mobiledevmemo.com/podcast-the-future-of-mobile-attribution-with-maor-sadra-and-peter-hamilton/) @@ -350,7 +351,6 @@ Like - - 51 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 32 Performance From 583cf469e9d6294fc455b4034d95a6fc5b402cf6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 17 Mar 2021 01:38:13 +0000 Subject: [PATCH 0210/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dc56c0e368..395dfad21e 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 34968bdc9a02330acf020c50c54563bea1e0b680 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 17 Mar 2021 01:38:18 +0000 Subject: [PATCH 0211/2080] Updated with the latest blog posts --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 395dfad21e..79fe72cbde 100644 --- a/README.md +++ b/README.md @@ -281,6 +281,9 @@ Like ### _Android Arsenal posts_ From 2747f12d6df70395af5d17d937b1cd8525cd796d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 18 Mar 2021 00:27:31 +0000 Subject: [PATCH 0212/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..f12ea38eb6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From 8476613c9005f8dd706a7d45d1d370299868a1c9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 18 Mar 2021 01:38:23 +0000 Subject: [PATCH 0213/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 79fe72cbde..1af9023df3 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [What is Azure certification?](https://www.androidauthority.com/azure-certification-1162875/) - [Python vs Java: Which language should you learn and what are the differences?](https://www.androidauthority.com/python-vs-java-1145042/) - [What is Python and how do you get started?](https://www.androidauthority.com/what-is-python-1120588/) - [How to use a web API from your Android app](https://www.androidauthority.com/use-web-api-android-1152645/) @@ -290,7 +291,6 @@ Like -- [Features of a smartwatch: what to analyze before buying one? — Part 1](https://medium.com/@bitwings/features-of-a-smartwatch-what-to-analyze-before-buying-one-part-1-e9dfb53c0a6e?source=rss------android-5) -- [5 of the Wackiest and Most Ridiculous Smartphone Apps on the Planet](https://medium.com/@jasondickson-14791/5-of-the-wackiest-and-most-ridiculous-smartphone-apps-on-the-planet-5e2a99ae699b?source=rss------android-5) -- [Mirror your Android screen to MacOS](https://medium.com/@mandostam/mirror-your-android-screen-to-macos-b72804d652bd?source=rss------android-5) -- [Asymmetric Encryption](https://medium.com/@mk4raoz/asymmetric-encryption-f588959d4e00?source=rss------android-5) -- [Wild Storage | Part 3— DataStore and SharedPreferences](https://medium.com/knowing-android/wild-storage-part-3-datastore-and-sharedpreferences-b32e8686f22b?source=rss------android-5) -- [Save logs in a file with Timber](https://medium.com/@oliverbozhinovski/save-logs-in-a-file-with-timber-2272f1d63367?source=rss------android-5) -- [Creating a custom login application in android studio.](https://medium.com/@codebaron/creating-a-custom-login-application-in-android-studio-a1e10050ad85?source=rss------android-5) -- [Incorporando tecnología multiplataforma en el desarrollo de RappiPay — Flutter in-depth](https://medium.com/rappitech/incorporando-tecnolog%C3%ADa-multiplataforma-en-el-desarrollo-de-rappipay-flutter-in-depth-dc0c485acfe5?source=rss------android-5) -- [Android Floating Action Button with Bottom App Bar | Android Studio | Java](https://medium.com/@androidapps-development-blogs/android-floating-action-button-with-bottom-app-bar-android-studio-java-4f8ab718a858?source=rss------android-5) -- [Set Up The e2e Project For A Hybrid Android App](https://medium.com/@viacheslav-borysovskyi/set-up-the-e2e-project-for-a-hybrid-android-app-c3734ee2b9ad?source=rss------android-5) +- [TikTok for Android 1-Click RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105?source=rss------android-5) +- [Situs Agen Perang Dadu Online Terbaik Di Indonesia](https://medium.com/@kasqqpkv/situs-agen-perang-dadu-online-terbaik-di-indonesia-cb85d39190dc?source=rss------android-5) +- [MotionLayout](https://medium.com/@emre-arslan/motionlayout-bba34ce7fa69?source=rss------android-5) +- [Blog: Differentiating Entertainment Hardware with MLKit on Android](https://medium.com/cisco-fpie/blog-differentiating-entertainment-hardware-with-mlkit-on-android-d9d8fc58837?source=rss------android-5) +- [This printable key tag helps people return your keys when you lose them](https://medium.com/pingtag/this-printable-key-tag-helps-people-return-your-keys-when-you-lose-them-37f16c2c4e4b?source=rss------android-5) +- [Starting Career With Android was a Bad Idea](https://medium.com/dev-genius/starting-career-with-android-was-a-bad-idea-37877472a796?source=rss------android-5) +- [Estructura de directorios | Parte 1](https://medium.com/@wolvesmobile/estructura-de-directorios-parte-1-196ddc765bb8?source=rss------android-5) +- [How to Install Frida in Android Device](https://medium.com/@vishvesh71/how-to-install-frida-in-android-device-49583edecb64?source=rss------android-5) +- [Best 6 Voice Changer Apps for Android](https://medium.com/@startus413/best-6-voice-changer-apps-for-android-897d9b57ba5f?source=rss------android-5) +- [MOST IMPORTANT NOTE](https://medium.com/@uchhabra3/am-i-the-only-one-who-think-singletask-is-broken-fb411728a4f6?source=rss------android-5) ### _Gizmodo posts_ From 51eea8ca7235a323698f7bfb3ac5cbe24788ab62 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 18 Mar 2021 01:38:53 +0000 Subject: [PATCH 0216/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c9629effab..207a03fc36 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From 7c6a160be64591e1f92b03ab7aed88835dfb6636 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 19 Mar 2021 00:28:15 +0000 Subject: [PATCH 0217/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f12ea38eb6..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 54 Performance From 9e596ef053f1c013c47e5ea143e409d9bcc6c76b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 19 Mar 2021 01:39:38 +0000 Subject: [PATCH 0218/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 207a03fc36..d29754156d 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like - - 54 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..74736c5aa1 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 25 Performance From 51bb5802243386fa5e2e9ff963607edeed8d89ef Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Mar 2021 01:38:25 +0000 Subject: [PATCH 0220/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d29754156d..8171b99bb0 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like - [What is Azure certification?](https://www.androidauthority.com/azure-certification-1162875/) +- [What is Google Cloud? Here’s what you need to know](https://www.androidauthority.com/what-is-google-cloud-1163777/) - [Python vs Java: Which language should you learn and what are the differences?](https://www.androidauthority.com/python-vs-java-1145042/) - [What is Python and how do you get started?](https://www.androidauthority.com/what-is-python-1120588/) - [How to use a web API from your Android app](https://www.androidauthority.com/use-web-api-android-1152645/) @@ -290,7 +291,6 @@ Like -- [TikTok for Android 1-Click RCE](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105?source=rss------android-5) -- [Situs Agen Perang Dadu Online Terbaik Di Indonesia](https://medium.com/@kasqqpkv/situs-agen-perang-dadu-online-terbaik-di-indonesia-cb85d39190dc?source=rss------android-5) -- [MotionLayout](https://medium.com/@emre-arslan/motionlayout-bba34ce7fa69?source=rss------android-5) -- [Blog: Differentiating Entertainment Hardware with MLKit on Android](https://medium.com/cisco-fpie/blog-differentiating-entertainment-hardware-with-mlkit-on-android-d9d8fc58837?source=rss------android-5) -- [This printable key tag helps people return your keys when you lose them](https://medium.com/pingtag/this-printable-key-tag-helps-people-return-your-keys-when-you-lose-them-37f16c2c4e4b?source=rss------android-5) -- [Starting Career With Android was a Bad Idea](https://medium.com/dev-genius/starting-career-with-android-was-a-bad-idea-37877472a796?source=rss------android-5) -- [Estructura de directorios | Parte 1](https://medium.com/@wolvesmobile/estructura-de-directorios-parte-1-196ddc765bb8?source=rss------android-5) -- [How to Install Frida in Android Device](https://medium.com/@vishvesh71/how-to-install-frida-in-android-device-49583edecb64?source=rss------android-5) -- [Best 6 Voice Changer Apps for Android](https://medium.com/@startus413/best-6-voice-changer-apps-for-android-897d9b57ba5f?source=rss------android-5) -- [MOST IMPORTANT NOTE](https://medium.com/@uchhabra3/am-i-the-only-one-who-think-singletask-is-broken-fb411728a4f6?source=rss------android-5) +- [Counting threads — An Rx guide](https://medium.com/life360-engineering/counting-threads-an-rx-guide-635fdd318560?source=rss------android-5) +- [Agen Situs Poker / Perang Dadu Online Terbaik Di Indonesia](https://kasqqpkv.medium.com/agen-situs-poker-perang-dadu-online-terbaik-di-indonesia-9876a82d37de?source=rss------android-5) +- [Dealing with flaky tests in Jetpack Compose](https://proandroiddev.com/managing-flaky-tests-in-jetpack-compose-89c598590068?source=rss------android-5) +- [Hilt: Apps with lite architecture and full scalability](https://badrkouki.medium.com/hilt-apps-with-lite-architecture-and-full-scalability-f813b0a581fb?source=rss------android-5) +- [Estructura de directorios | Parte 2](https://wolvesmobile.medium.com/estructura-de-directorios-parte-2-e07ab93adeca?source=rss------android-5) +- [Launching Splash Screen in Android Different Ways](https://bhanupro.medium.com/launching-splash-screen-in-android-different-ways-6e5728f4f288?source=rss------android-5) +- [Exploring Jetpack Compose Canvas: the power of drawing](https://juliensalvi.medium.com/exploring-jetpack-compose-canvas-the-power-of-drawing-8cc60815babe?source=rss------android-5) +- [Setup Charles Proxy to Intercept HTTPS traffic of Android Emulator](https://dogcomp.medium.com/setup-charles-proxy-to-intercept-https-traffic-of-android-emulator-591baba5d7ec?source=rss------android-5) +- [Did Telegram Just Kill Clubhouse?](https://clubbers.blog/did-telegram-just-kill-clubhouse-b36d7eb4bc0f?source=rss------android-5) +- [Understanding the Android Activity Launch Modes](https://betterprogramming.pub/understanding-the-android-activity-launch-modes-49ec89ef79d2?source=rss------android-5) ### _Gizmodo posts_ From 8a22b13eb640019a6c605495e6cede60a060b329 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Mar 2021 01:38:39 +0000 Subject: [PATCH 0223/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2f29d52780..b80336f41e 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ Like ### _Mobile Dev Memo posts_ From 4e1ced6cc158ae279a25493ea2c01f9a0f6306b6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Mar 2021 01:38:42 +0000 Subject: [PATCH 0224/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b80336f41e..9b015a97af 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,7 @@ Like ### _Infinum posts_ From 09986c4bc2949ac81011b9f980f5a7f3c3a754c9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 20 Mar 2021 01:38:45 +0000 Subject: [PATCH 0225/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b015a97af..f2b85d271b 100644 --- a/README.md +++ b/README.md @@ -356,11 +356,11 @@ Like - - 60 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 74736c5aa1..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 32 Performance From d9d964581cd45e0dccbd3713c09c4c7da76943b4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 21 Mar 2021 01:42:22 +0000 Subject: [PATCH 0227/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f2b85d271b..cf21c2a9e2 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 87c05ad4f4c6bcfd941eb11972316a848bdf9a5f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 21 Mar 2021 01:42:27 +0000 Subject: [PATCH 0228/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf21c2a9e2..1addde5ab1 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ Like ### _Medium posts_ From bc91c338d46d06331a1116061d321c9d1c45b782 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 21 Mar 2021 01:42:29 +0000 Subject: [PATCH 0229/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1addde5ab1..b512c70e08 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,15 @@ Like - - 53 + + 62 Performance From 17e5f52a9abe8986288a34d9d62ab60d597e8507 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 22 Mar 2021 01:40:55 +0000 Subject: [PATCH 0231/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b512c70e08..49da8c85f4 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From fe1c09b3225caab5265b0f50169fab101bd5571f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 22 Mar 2021 01:41:03 +0000 Subject: [PATCH 0232/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 49da8c85f4..230772ce89 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like - - 62 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..d40ddfb268 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 24 Performance From a0c831b292ff9c4f2ea25bba6f158b3b58ce60cd Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 23 Mar 2021 01:40:26 +0000 Subject: [PATCH 0234/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 230772ce89..dbe11c6238 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 8ab81e20a9a994cf66e66320b8d3575070a7f0a8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 23 Mar 2021 01:40:33 +0000 Subject: [PATCH 0235/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dbe11c6238..19948f47cf 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like +- [17 Google Assistant Tricks You Might Not Know About](https://gizmodo.com/17-google-assistant-tricks-you-might-not-know-about-1846523906) - [Barnes & Noble's Nook Sidesteps the Grave Once Again With a New Lenovo-Built Tablet](https://gizmodo.com/barnes-nobles-nook-sidesteps-the-grave-once-again-wit-1846511475) - [How to Sideload Any App on Your Chromecast With Google TV](https://gizmodo.com/how-to-sideload-any-app-on-your-chromecast-with-google-1846490542) - [Google's New Nest Hub Tracks Your Sleep From Your Nightstand, No Wearables Required](https://gizmodo.com/googles-new-nest-hub-tracks-your-sleep-from-your-nights-1846389994) @@ -335,7 +336,6 @@ Like +- [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) - [The privacy mirage](https://mobiledevmemo.com/the-privacy-mirage/) @@ -350,7 +351,6 @@ Like - - 61 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ddfb268..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 24 + + 29 Performance From 8f8f0c60d9cd0170fc08085d330b65a5cf3ab4d1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 24 Mar 2021 01:42:09 +0000 Subject: [PATCH 0239/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6188bf3ce6..083fbd37c0 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From d2718db2f21077e59e6ac9699b58247e328b48c8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 24 Mar 2021 01:42:14 +0000 Subject: [PATCH 0240/2080] Updated with the latest blog posts --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 083fbd37c0..092ca5ca21 100644 --- a/README.md +++ b/README.md @@ -281,16 +281,16 @@ Like -- [Cross-Platform Mobile Development with no Frameworks — Part 1: Why?](https://mdapp.medium.com/cross-platform-mobile-development-with-no-frameworks-part-1-why-a6f8c9648c9f?source=rss------android-5) -- [Exploring helper CircularFlow](https://rodrigomartind.medium.com/exploring-helper-circularflow-6ef168abf4fe?source=rss------android-5) -- [Prix imbattable IPTV](https://azulapk.medium.com/prix-imbattable-iptv-2426761397ae?source=rss------android-5) -- [Okta Device Trust for iOS/Android + Microsoft Intune](https://ajawzero.medium.com/okta-device-trust-for-ios-android-microsoft-intune-9fef9af0864?source=rss------android-5) -- [Deploying a Gitlab Repository and Runner Server on Google Cloud.](https://andresmaca.medium.com/deploying-a-gitlab-repository-and-runner-server-on-google-cloud-57b9d490c975?source=rss------android-5) -- [Android Continuous Integration and Coverage visualization on Gitlab.](https://andresmaca.medium.com/android-continuous-integration-and-coverage-visualization-on-gitlab-4a15d58f624c?source=rss------android-5) -- [How to stop Google from listening to you on your Android phone](https://rafabelokurows.medium.com/how-to-stop-google-from-listening-to-you-on-your-android-phone-a031b8d4da08?source=rss------android-5) -- [itel android tv: Itel launches G-series Android TV range at a starting price of Rs 16,999 | DAYYDAY](https://gaurav-dwivedy55.medium.com/itel-android-tv-itel-launches-g-series-android-tv-range-at-a-starting-price-of-rs-16-999-dayyday-b10c841ca7a0?source=rss------android-5) -- [Implement Podcast in a Service with ExoPlayer and Hilt #2](https://medium.com/ideas-by-idean/implement-podcast-in-a-service-with-exoplayer-and-hilt-2-2dc07d4d6f65?source=rss------android-5) -- [Implement Podcast in a Service with ExoPlayer and Hilt #1](https://medium.com/ideas-by-idean/implement-podcast-in-a-service-with-exoplayer-and-hilt-1-8c80cdbcd3bb?source=rss------android-5) +- [Flutter DevTools — The Last Article In My 30 Weeks Flutter Journey](https://betterprogramming.pub/flutter-devtools-the-last-article-in-my-30-weeks-flutter-journey-6cd638b33f3?source=rss------android-5) +- [10 Hidden WhatsApp Features you Need to Know About](https://lchalmers4200.medium.com/10-hidden-whatsapp-features-b6696ca46659?source=rss------android-5) +- [Add a custom badge to your bottom tabs, because sometimes you need a square instead of a circle](https://medium.com/androidxx/add-a-custom-badge-to-your-bottom-tabs-because-sometimes-you-need-a-square-instead-of-a-circle-c150091359b5?source=rss------android-5) +- [React native android: Background location in android 11 without ACCESS_BACKGROUND_LOCATION…](https://devashishsethia.medium.com/react-native-android-background-location-in-android-11-without-access-background-location-1c1a9be0a270?source=rss------android-5) +- [Is Your Android Phone Closing Every App You Open?](https://anthonyodugan.medium.com/is-your-android-phone-closing-every-app-you-open-c89cfcea1112?source=rss------android-5) +- [How to Install CalyxOS and De-Google your phone](https://medium.com/swlh/how-to-install-calyxos-and-de-google-your-phone-ea432956c12?source=rss------android-5) +- [Best phone under 10,000 and 15,000](https://alisha-garg.medium.com/best-phone-under-10-000-and-15-000-e0b6e8d658b5?source=rss------android-5) +- [Care jcui nmvnri iisoepr](https://medium.com/@fghqrdlq/care-jcui-nmvnri-iisoepr-ba1f7fbc94a8?source=rss------android-5) +- [I’m siri Google. It’s not you; it’s me](https://medium.com/unsplash-design/im-siri-google-it-s-not-you-it-s-me-95f6ce505d69?source=rss------android-5) +- [All About PendingIntents](https://medium.com/androiddevelopers/all-about-pendingintents-748c8eb8619?source=rss------android-5) ### _Gizmodo posts_ From 566ae175e3225e2cf49498440c04d12b30c283cf Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 25 Mar 2021 00:13:16 +0000 Subject: [PATCH 0242/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 30 Performance From a457dcfd9695789fe3192b63cde34931675d1c93 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 25 Mar 2021 01:07:11 +0000 Subject: [PATCH 0243/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e5145fe808..13bc99a462 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like - [What is AWS certification?](https://www.androidauthority.com/what-is-aws-certification-1157928/) +- [The best AWS courses for professionals](https://www.androidauthority.com/aws-courses-1159464/) - [How to use lists in Python](https://www.androidauthority.com/how-to-add-to-a-list-in-python-1134815/) +- [The beginner’s guide to Android game development: Everything you need to know](https://www.androidauthority.com/android-game-development-1128058/) - [The best resources to learn Java – free and paid](https://www.androidauthority.com/best-resources-to-learn-java-1147362/) - [Making an app with no programming experience: What are your options?](https://www.androidauthority.com/how-to-make-android-apps-629325/) - [How to open CSV files in Python – store and retrieve large data sets](https://www.androidauthority.com/how-to-open-csv-file-python-1140486/) - [How to round in Python](https://www.androidauthority.com/how-to-round-in-python-1134475/) - [How to make a game in Unity: it starts with a simple 3D maze game](https://www.androidauthority.com/how-to-make-a-game-in-unity-1130929/) - [What is Unity? Everything you need to know](https://www.androidauthority.com/what-is-unity-1131558/) -- [What is Azure certification?](https://www.androidauthority.com/azure-certification-1162875/) -- [What is Google Cloud? Here’s what you need to know](https://www.androidauthority.com/what-is-google-cloud-1163777/) ### _Android Arsenal posts_ From 79af4863bd8f4893776e1b043cb26c8b3baeb1b3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 25 Mar 2021 01:07:18 +0000 Subject: [PATCH 0245/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c910bc0426..46ee290a7e 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ Like ### _Medium posts_ From ed0f93f640bef9037d055e8565400e9ecedee424 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 25 Mar 2021 01:07:20 +0000 Subject: [PATCH 0246/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 46ee290a7e..e28083d459 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like - - 59 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 29 Performance From 385c67b445109e0650336f35063e154b6aa98e1a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 26 Mar 2021 01:16:38 +0000 Subject: [PATCH 0248/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e28083d459..69fb73d179 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _Android Arsenal posts_ From 167a7eabae2505356f99b0b5eb788602e9b22cb6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 26 Mar 2021 01:16:57 +0000 Subject: [PATCH 0250/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6366438648..1bb684085d 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like - - 57 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..4033c9005f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 36 Performance From 3cc4ce4f289e04a9ae8c3b978894d4c9b039c32b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 27 Mar 2021 01:23:56 +0000 Subject: [PATCH 0252/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1bb684085d..1d23134145 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [How to make money on Fiverr as a creative professional](https://www.androidauthority.com/how-to-make-money-on-fiverr-1026987/) - [What is AWS certification?](https://www.androidauthority.com/what-is-aws-certification-1157928/) - [The best AWS courses for professionals](https://www.androidauthority.com/aws-courses-1159464/) - [How to use lists in Python](https://www.androidauthority.com/how-to-add-to-a-list-in-python-1134815/) @@ -290,7 +291,6 @@ Like +- [AndroidStyling-LintRules](http://android-arsenal.com/details/1/8238) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) @@ -305,7 +306,6 @@ Like -- [Introducing Clubhouse: The Money Making Audio Social Network](https://rui-alves.medium.com/introducing-clubhouse-the-money-making-audio-social-network-656b7fbe35ef?source=rss------android-5) -- [QUALCOMM IS MAKING AN ANDROID CONSOLE?](https://outputinfos.medium.com/qualcomm-is-making-an-android-console-443152265892?source=rss------android-5) -- [Ten #AndroidLifeHacks You Can Use Today](https://gpeal.medium.com/ten-androidlifehacks-you-can-use-today-9f74186fc207?source=rss------android-5) -- [Noovnb birk nea rutp eme](https://medium.com/@gdhyoemq/noovnb-birk-nea-rutp-eme-8786f5e44b4a?source=rss------android-5) -- [Top 8 Call Recording Apps for Android](https://andylouis0555.medium.com/top-8-call-recording-apps-for-android-d6d4b54fef98?source=rss------android-5) -- [Create your own Android Library & Publish it](https://drjansari.medium.com/create-your-own-android-library-publish-it-1b55bb492ce7?source=rss------android-5) -- [Can the Pixel 6 Keep Google In Todays Phone Market?](https://medium.com/adventures-in-consumer-technology/can-the-pixel-6-keep-google-in-todays-phone-market-6ed53ed15f33?source=rss------android-5) -- [The Best Social Media Downloader Apps for Android](https://martinjustin0777.medium.com/the-best-social-media-downloader-apps-for-android-2a9c941a1c86?source=rss------android-5) -- [How to use Native iOS / Android code in React Native](https://marmik-mobile.medium.com/how-to-use-native-ios-android-code-in-react-native-e25633c4250c?source=rss------android-5) -- [Google Chrome dan Apps Android Sempat Crash, Ini Solusi](https://michaeljohnraharjo.medium.com/google-chrome-dan-apps-android-sempat-crash-ini-solusi-f5a5c33ea70b?source=rss------android-5) +- [2021 मे 20,000 के अंदर सबसे अच्छा कैमरा फ़ोन | Best Camera Phone Under 20000 in 2021](https://medium.com/@hindiaddaxyz/2021-%E0%A4%AE%E0%A5%87-20-000-%E0%A4%95%E0%A5%87-%E0%A4%85%E0%A4%82%E0%A4%A6%E0%A4%B0-%E0%A4%B8%E0%A4%AC%E0%A4%B8%E0%A5%87-%E0%A4%85%E0%A4%9A%E0%A5%8D%E0%A4%9B%E0%A4%BE-%E0%A4%95%E0%A5%88%E0%A4%AE%E0%A4%B0%E0%A4%BE-%E0%A5%9E%E0%A5%8B%E0%A4%A8-best-camera-phone-under-20000-in-2021-56aed5e02726?source=rss------android-5) +- [Gaocvo msodep ieoen snuve4](https://medium.com/@zwwuormq/gaocvo-msodep-ieoen-snuve4-ce0765b9ca70?source=rss------android-5) +- [Comunicação entre aplicativos Android usando ServerSocket](https://tfccomputation.medium.com/comunica%C3%A7%C3%A3o-entre-aplicativos-android-usando-serversocket-103e4217f97?source=rss------android-5) +- [Still waiting for Dynamic Refresh Rate on your galaxy S20 series?](https://lim1998.medium.com/still-waiting-for-dynamic-refresh-rate-on-your-galaxy-s20-series-53d8b95da76e?source=rss------android-5) +- [Smart Home Solution using Face Recognition](https://anbunathanramaiah.medium.com/smart-home-solution-using-face-recognition-8284644d49a?source=rss------android-5) +- [What is Gcam (Google Camera)? गूगल कैमरा क्या है?](https://techdjt3.medium.com/what-is-gcam-google-camera-%E0%A4%97%E0%A5%82%E0%A4%97%E0%A4%B2-%E0%A4%95%E0%A5%88%E0%A4%AE%E0%A4%B0%E0%A4%BE-%E0%A4%95%E0%A5%8D%E0%A4%AF%E0%A4%BE-%E0%A4%B9%E0%A5%88-5dade411b7d5?source=rss------android-5) +- [ArbitriumRAT, an antidote to static analysis and internet security software](https://benchaliah.medium.com/arbitriumrat-an-antidote-to-static-analysis-and-internet-security-software-11c05c8cb441?source=rss------android-5) +- [iScanner Count Mode Feature](https://bp-mobile.medium.com/iscanner-count-mode-feature-43a022ab973f?source=rss------android-5) +- [How to stop apps running in Background Android Programmatically](https://shakilahansika.medium.com/how-to-stop-apps-running-in-background-android-programmatically-75a86a7c9185?source=rss------android-5) ### _Gizmodo posts_ From 0eabe8c2243ca9513e7d84f4b8173fea1a399669 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 27 Mar 2021 01:24:10 +0000 Subject: [PATCH 0256/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 551c2c23b5..ac0465482d 100644 --- a/README.md +++ b/README.md @@ -355,11 +355,11 @@ Like - - 56 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 4033c9005f..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 29 Performance From 06573c48cbf7f870c57041c01bfad9c75d2de105 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 28 Mar 2021 01:24:23 +0000 Subject: [PATCH 0258/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ac0465482d..bfc0c243f4 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) - [AndroidStyling-LintRules](http://android-arsenal.com/details/1/8238) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) @@ -305,7 +306,6 @@ Like -- [2021 मे 20,000 के अंदर सबसे अच्छा कैमरा फ़ोन | Best Camera Phone Under 20000 in 2021](https://medium.com/@hindiaddaxyz/2021-%E0%A4%AE%E0%A5%87-20-000-%E0%A4%95%E0%A5%87-%E0%A4%85%E0%A4%82%E0%A4%A6%E0%A4%B0-%E0%A4%B8%E0%A4%AC%E0%A4%B8%E0%A5%87-%E0%A4%85%E0%A4%9A%E0%A5%8D%E0%A4%9B%E0%A4%BE-%E0%A4%95%E0%A5%88%E0%A4%AE%E0%A4%B0%E0%A4%BE-%E0%A5%9E%E0%A5%8B%E0%A4%A8-best-camera-phone-under-20000-in-2021-56aed5e02726?source=rss------android-5) -- [Gaocvo msodep ieoen snuve4](https://medium.com/@zwwuormq/gaocvo-msodep-ieoen-snuve4-ce0765b9ca70?source=rss------android-5) -- [Comunicação entre aplicativos Android usando ServerSocket](https://tfccomputation.medium.com/comunica%C3%A7%C3%A3o-entre-aplicativos-android-usando-serversocket-103e4217f97?source=rss------android-5) -- [Still waiting for Dynamic Refresh Rate on your galaxy S20 series?](https://lim1998.medium.com/still-waiting-for-dynamic-refresh-rate-on-your-galaxy-s20-series-53d8b95da76e?source=rss------android-5) -- [Smart Home Solution using Face Recognition](https://anbunathanramaiah.medium.com/smart-home-solution-using-face-recognition-8284644d49a?source=rss------android-5) -- [What is Gcam (Google Camera)? गूगल कैमरा क्या है?](https://techdjt3.medium.com/what-is-gcam-google-camera-%E0%A4%97%E0%A5%82%E0%A4%97%E0%A4%B2-%E0%A4%95%E0%A5%88%E0%A4%AE%E0%A4%B0%E0%A4%BE-%E0%A4%95%E0%A5%8D%E0%A4%AF%E0%A4%BE-%E0%A4%B9%E0%A5%88-5dade411b7d5?source=rss------android-5) -- [ArbitriumRAT, an antidote to static analysis and internet security software](https://benchaliah.medium.com/arbitriumrat-an-antidote-to-static-analysis-and-internet-security-software-11c05c8cb441?source=rss------android-5) -- [iScanner Count Mode Feature](https://bp-mobile.medium.com/iscanner-count-mode-feature-43a022ab973f?source=rss------android-5) -- [How to stop apps running in Background Android Programmatically](https://shakilahansika.medium.com/how-to-stop-apps-running-in-background-android-programmatically-75a86a7c9185?source=rss------android-5) +- [ONEPLUS NORD 5G](https://medium.com/@vibhusirohi019/oneplus-nord-5g-e377a13acdd4?source=rss------android-5) +- [How to continue backing up your photos to Google Photos for free after the June deadline](https://mcendreet.medium.com/how-to-continue-backing-up-your-photos-to-google-photos-for-free-after-the-june-deadline-69b3d56baa6f?source=rss------android-5) +- [Android İçin Kütüphane Geliştirken Dikkat Edilmesi Gereken Konular](https://hsmnzaydn.medium.com/android-i%CC%87%C3%A7in-k%C3%BCt%C3%BCphane-geli%C5%9Ftirken-dikkat-edilmesi-gereken-konular-a7ffdf4a3a3a?source=rss------android-5) +- [SALVE GALERA BLZ!Quem ai curte um bom jogo de rpg?](https://manoelaugusto-67983.medium.com/salve-galera-blz-quem-ai-curte-um-bom-jogo-de-rpg-f0a7d28eb91a?source=rss------android-5) +- [Android Kotlin “Notification”](https://julien-ex-nihilo.medium.com/android-kotlin-notification-1e55796e765f?source=rss------android-5) +- [Android Capturing Images from Camera or Gallery as Bitmaps Kotlin](https://hamzaasif-mobileml.medium.com/android-capturing-images-from-camera-or-gallery-as-bitmaps-kotlin-50e9dc3e7bd3?source=rss------android-5) +- [TextView & ](https://foxum.medium.com/textview-img-91aaf865d96d?source=rss------android-5) +- [Acf a0 9vu j34j 3](https://medium.com/@zvmvninq/acf-a0-9vu-j34j-3-5c4e80127137?source=rss------android-5) +- [Create Your Own CameraApp Using CameraX](https://janjiralasai420.medium.com/create-your-own-cameraapp-using-camerax-1232ba636cd5?source=rss------android-5) +- [Hiby FC3 Review](https://medium.com/bedrock-reviews/hiby-fc3-review-42761b6da958?source=rss------android-5) ### _Gizmodo posts_ From 8142c8da47960fb8e30d1785d7804f13d639ed85 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 29 Mar 2021 01:25:04 +0000 Subject: [PATCH 0261/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aa88ed55d9..f5e6bbe217 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [ONEPLUS NORD 5G](https://medium.com/@vibhusirohi019/oneplus-nord-5g-e377a13acdd4?source=rss------android-5) -- [How to continue backing up your photos to Google Photos for free after the June deadline](https://mcendreet.medium.com/how-to-continue-backing-up-your-photos-to-google-photos-for-free-after-the-june-deadline-69b3d56baa6f?source=rss------android-5) -- [Android İçin Kütüphane Geliştirken Dikkat Edilmesi Gereken Konular](https://hsmnzaydn.medium.com/android-i%CC%87%C3%A7in-k%C3%BCt%C3%BCphane-geli%C5%9Ftirken-dikkat-edilmesi-gereken-konular-a7ffdf4a3a3a?source=rss------android-5) -- [SALVE GALERA BLZ!Quem ai curte um bom jogo de rpg?](https://manoelaugusto-67983.medium.com/salve-galera-blz-quem-ai-curte-um-bom-jogo-de-rpg-f0a7d28eb91a?source=rss------android-5) -- [Android Kotlin “Notification”](https://julien-ex-nihilo.medium.com/android-kotlin-notification-1e55796e765f?source=rss------android-5) -- [Android Capturing Images from Camera or Gallery as Bitmaps Kotlin](https://hamzaasif-mobileml.medium.com/android-capturing-images-from-camera-or-gallery-as-bitmaps-kotlin-50e9dc3e7bd3?source=rss------android-5) -- [TextView & ](https://foxum.medium.com/textview-img-91aaf865d96d?source=rss------android-5) -- [Acf a0 9vu j34j 3](https://medium.com/@zvmvninq/acf-a0-9vu-j34j-3-5c4e80127137?source=rss------android-5) -- [Create Your Own CameraApp Using CameraX](https://janjiralasai420.medium.com/create-your-own-cameraapp-using-camerax-1232ba636cd5?source=rss------android-5) -- [Hiby FC3 Review](https://medium.com/bedrock-reviews/hiby-fc3-review-42761b6da958?source=rss------android-5) +- [What’s next for MobileFFmpeg?](https://tanersener.medium.com/whats-next-for-mobileffmpeg-44d2fac6f09b?source=rss------android-5) +- [Secrets Gradle Pluginを使ってAndroidアプリのAPIキーをリポジトリから隠す方法](https://yaxarat.medium.com/secrets-gradle-plugin%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6android%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AEapi%E3%82%AD%E3%83%BC%E3%82%92%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%8B%E3%82%89%E9%9A%A0%E3%81%99%E6%96%B9%E6%B3%95-564fcbdbc830?source=rss------android-5) +- [Jetpack Compose CompositionLocal -what you need to know](https://medium.com/swlh/jetpack-compose-compositionlocal-what-you-need-to-know-979a4aef6412?source=rss------android-5) +- [Flutter 2.0 deploy to iOS Device without a Developer Account with MacOS](https://ottokafka.medium.com/flutter-2-0-deploy-to-ios-device-without-a-developer-account-with-macos-fa847eb7e3ab?source=rss------android-5) +- [Best PKV Perang Dadu Online Indonesia](https://kasqqpkv.medium.com/best-pkv-perang-dadu-online-indonesia-cffe32eaaab9?source=rss------android-5) +- [The hidden fingerprint inside your photos](https://ideahuman89.medium.com/the-hidden-fingerprint-inside-your-photos-8e53f491bc1?source=rss------android-5) +- [Jetpack compose layout](https://shirsh94.medium.com/jetpack-compose-layout-581a87b3a4be?source=rss------android-5) +- [How to install React Native Intercom for 0.63+](https://begumakbay.medium.com/how-to-install-react-native-intercom-for-0-63-6475853c5932?source=rss------android-5) +- [3 sencillos pasos para reproducir YouTube en segundo plano](https://jmsansan.medium.com/3-sencillos-pasos-para-reproducir-youtube-en-segundo-plano-10a43e5f974f?source=rss------android-5) ### _Gizmodo posts_ From 12bd95feb88ab6b8e2d7aa502f3d0f2929d7fda0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 30 Mar 2021 00:10:39 +0000 Subject: [PATCH 0263/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From fed48f67327ad7e54af7b79da8c66f78fdbf74c9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 30 Mar 2021 01:23:54 +0000 Subject: [PATCH 0264/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c010d47ec8..a9fbf01ff7 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From ef27793375fc41a87510d9d455c5124823647830 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 30 Mar 2021 01:24:00 +0000 Subject: [PATCH 0265/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a9fbf01ff7..5a1e8a4585 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like +- [T-Mobile Will Make Google Messages Its Default Messaging App for Android](https://gizmodo.com/t-mobile-will-make-google-messages-its-default-messagin-1846578155) +- [Dangerous Android App Pretends to Be a System Update to Steal Your Data](https://gizmodo.com/dangerous-android-app-pretends-to-be-a-system-update-to-1846574044) - [17 Google Assistant Tricks You Might Not Know About](https://gizmodo.com/17-google-assistant-tricks-you-might-not-know-about-1846523906) - [Barnes & Noble's Nook Sidesteps the Grave Once Again With a New Lenovo-Built Tablet](https://gizmodo.com/barnes-nobles-nook-sidesteps-the-grave-once-again-wit-1846511475) - [How to Sideload Any App on Your Chromecast With Google TV](https://gizmodo.com/how-to-sideload-any-app-on-your-chromecast-with-google-1846490542) @@ -334,8 +336,6 @@ Like +- [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) @@ -350,7 +351,6 @@ Like - - - - - 57 - Performance - - - - - 72 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 26 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 05e99ff2ee7257bbd6148dca41fb4546f49ec900 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 31 Mar 2021 01:23:30 +0000 Subject: [PATCH 0269/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9cf5d87aeb..3dab70e4a0 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 303eda905de49b93be75c9fbb0aa943739eeb36e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 31 Mar 2021 01:23:37 +0000 Subject: [PATCH 0270/2080] Updated with the latest blog posts --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3dab70e4a0..798dc7934c 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,17 @@ Like - - 26 + + 32 Performance From 0fa75c9e905ef3c1c31b9b43a61de6a623d900cf Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 2 Apr 2021 00:17:20 +0000 Subject: [PATCH 0273/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 ++++++++++++++++++++++++++++++++---- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 60 + Performance + + + + + 72 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 7abaf36c3692c05dff9a578eca9ed8848a76e7dd Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 3 Apr 2021 00:10:52 +0000 Subject: [PATCH 0274/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..32c5f0458a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..e1585f7644 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 34 Performance From aaa3b130d31081f03665077ac1ab94fc1bf7f89f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 3 Apr 2021 01:25:04 +0000 Subject: [PATCH 0275/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 39251a4aca..b554ad5b25 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) +- [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) +- [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) +- [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - [How to make money on Fiverr as a creative professional](https://www.androidauthority.com/how-to-make-money-on-fiverr-1026987/) - [What is AWS certification?](https://www.androidauthority.com/what-is-aws-certification-1157928/) - [The best AWS courses for professionals](https://www.androidauthority.com/aws-courses-1159464/) - [How to use lists in Python](https://www.androidauthority.com/how-to-add-to-a-list-in-python-1134815/) - [What is Google Cloud? Here’s what you need to know](https://www.androidauthority.com/what-is-google-cloud-1163777/) - [The beginner’s guide to Android game development: Everything you need to know](https://www.androidauthority.com/android-game-development-1128058/) -- [The best resources to learn Java – free and paid](https://www.androidauthority.com/best-resources-to-learn-java-1147362/) -- [Making an app with no programming experience: What are your options?](https://www.androidauthority.com/how-to-make-android-apps-629325/) -- [How to open CSV files in Python – store and retrieve large data sets](https://www.androidauthority.com/how-to-open-csv-file-python-1140486/) -- [How to round in Python](https://www.androidauthority.com/how-to-round-in-python-1134475/) ### _Android Arsenal posts_ From f9aa6daf586b3971a51f2a65e1ebbfe9521d5395 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 3 Apr 2021 01:25:15 +0000 Subject: [PATCH 0277/2080] Updated with the latest blog posts --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7b9da3b031..557abaed20 100644 --- a/README.md +++ b/README.md @@ -311,17 +311,16 @@ Like +- [Dear App Developers: fingerprinting is not a viable workaround to ATT](https://mobiledevmemo.com/dear-app-developers-fingerprinting-is-not-a-viable-workaround-to-att/) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) @@ -350,7 +351,6 @@ Like +- [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) - [Create a blur effect with Android 12](https://androidsweets.ongoodbits.com/create-a-blur-effect-with-android-12) - [There is a Better Way to Mock Retrofit API Calls](https://androidsweets.ongoodbits.com/there-is-a-better-way-to-mock-retrofit-api-calls) -- [Announcing Jetpack Compose Beta!](https://androidsweets.ongoodbits.com/announcing-jetpack-compose-beta) --- From 7e3d48b02040db49241c9c4f0e788d65a8ff3004 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 4 Apr 2021 00:12:11 +0000 Subject: [PATCH 0280/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 28 insertions(+), 233 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 32c5f0458a..a398e381a6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 55 + + 39 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e1585f7644..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 34 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 75794bead184ea19ee18a8e16971323080ab6e58 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 4 Apr 2021 01:25:17 +0000 Subject: [PATCH 0281/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 34f8a1a89d..ffc1243e94 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [AndroidResourceManager](http://android-arsenal.com/details/1/8240) - [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) - [AndroidStyling-LintRules](http://android-arsenal.com/details/1/8238) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) @@ -305,7 +306,6 @@ Like -- [Converting LiveData to Flow: Lessons learned](https://chao2zhang.medium.com/converting-livedata-to-flow-lessons-learned-9362a00611c8?source=rss------android-5) -- [Hyperlinks in Flutter](https://medium.com/nerd-for-tech/hyperlinks-in-flutter-8adb88f96fe8?source=rss------android-5) -- [KMM QuickStart Guide](https://proandroiddev.com/kmm-quickstart-guide-7598527a2ab9?source=rss------android-5) -- [List: Free Phone Number & SMS Sites for Verification](https://techmende.medium.com/list-free-phone-number-sms-sites-for-verification-a5490df8bf8?source=rss------android-5) -- [Business Logic and Input Validation Fl at a Fintech app](https://stevebiotech.medium.com/business-logic-and-input-validation-fl-at-a-fintech-app-df3128df0ba7?source=rss------android-5) -- [Limedev Cards — service for creating electronic business cards](https://medium.com/@timmeleshko/limedev-cards-service-for-creating-electronic-business-cards-890ffc0268b2?source=rss------android-5) -- [ANDROID APPLICATION EXPLOITATION OF A DIGITAL BANK](https://stevebiotech.medium.com/android-application-exploitation-of-a-digital-bank-5809360838ac?source=rss------android-5) -- [Beating the fitsSystemWindows nightmare](https://skinnyy.medium.com/beating-the-fitssystemwindows-nightmare-607eea46d3b?source=rss------android-5) -- [Custom Image Classification on Android using TensorFlow Lite](https://tiwarinitin1999.medium.com/custom-image-classification-on-android-using-tensorflow-lite-9f9b3917a26f?source=rss------android-5) -- [How to Use Apple Maps on Windows and Android Devices](https://stephennicoisa.medium.com/how-to-use-apple-maps-on-windows-and-android-devices-6557064b142?source=rss------android-5) +- [8 Secret Android Functions 90% of Users Don’t Know About](https://lifebetter.medium.com/8-secret-android-functions-90-of-users-dont-know-about-f38395b2b418?source=rss------android-5) +- [Turn Your WordPress Website into a PWA](https://volkan68.medium.com/turn-your-wordpress-website-into-a-pwa-a958e1bf0e4c?source=rss------android-5) +- [Aefo mvyr 8vruka aiocer](https://medium.com/@kvblxstq/aefo-mvyr-8vruka-aiocer-e15986915216?source=rss------android-5) +- [Context Nedir? — Onlar her yerde.](https://eeren.medium.com/context-nedir-onlar-her-yerde-849671668566?source=rss------android-5) +- [Animated Folding Cell in Android Studio (JAVA)](https://androidapps-development-blogs.medium.com/animated-folding-cell-in-android-studio-java-c270e26f8057?source=rss------android-5) +- [Абстракции с нулевой стоимостью* в Kotlin](https://medium.com/nuances-of-programming/%D0%B0%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D0%B8-%D1%81-%D0%BD%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9-%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%B2-kotlin-6cd14f0be503?source=rss------android-5) +- [「Android Binder」AIDL中的 in / out 到底是啥?](https://littlefourthlee.medium.com/android-binder-aidl%E4%B8%AD%E7%9A%84-in-out-%E5%88%B0%E5%BA%95%E6%98%AF%E5%95%A5-5c9defdef069?source=rss------android-5) +- [Android Activity Life Cycle](https://medium.com/cnk-tech/android-activity-life-cycle-7116bebee77c?source=rss------android-5) +- [Learn motion layout in Android using Twitter splash screen](https://medium.com/swlh/learn-motion-layout-in-android-using-twitter-splash-screen-9c38160c46d?source=rss------android-5) +- [React Native Generate APK — Debug and Release APK](https://fabiomancuso-11.medium.com/react-native-generate-apk-debug-and-release-apk-1377f6898cf5?source=rss------android-5) ### _Gizmodo posts_ From 6da3e5015eaf126518151e0d1e1cad094e047b60 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 5 Apr 2021 00:12:28 +0000 Subject: [PATCH 0284/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 255 insertions(+), 255 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index a398e381a6..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 39 - Performance - - - - - 72 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 27 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From a728e5af6c662205a1a958213f430783d02ba810 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 5 Apr 2021 01:25:24 +0000 Subject: [PATCH 0285/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 328217d051..d925e756ad 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _Android Arsenal posts_ From 4f2ce2af40e4b8284ac7df8e3f7664bd81a605d8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 6 Apr 2021 01:34:25 +0000 Subject: [PATCH 0287/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 61 + Performance + + + + + 72 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..60d9263181 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 28 Performance From d3ecf102b3c2c79ca2b8739e917bef2bc9cddec6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 6 Apr 2021 01:38:03 +0000 Subject: [PATCH 0288/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 29eab4b92d..fdb73a5d3b 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Google wins Java dispute, Oracle remains defiant](https://www.infoworld.com/article/3614083/google-wins-java-dispute-oracle-remains-defiant.html#tk.rss_android) - [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) @@ -265,7 +266,6 @@ Like -- [8 Secret Android Functions 90% of Users Don’t Know About](https://lifebetter.medium.com/8-secret-android-functions-90-of-users-dont-know-about-f38395b2b418?source=rss------android-5) -- [Turn Your WordPress Website into a PWA](https://volkan68.medium.com/turn-your-wordpress-website-into-a-pwa-a958e1bf0e4c?source=rss------android-5) -- [Aefo mvyr 8vruka aiocer](https://medium.com/@kvblxstq/aefo-mvyr-8vruka-aiocer-e15986915216?source=rss------android-5) -- [Context Nedir? — Onlar her yerde.](https://eeren.medium.com/context-nedir-onlar-her-yerde-849671668566?source=rss------android-5) -- [Animated Folding Cell in Android Studio (JAVA)](https://androidapps-development-blogs.medium.com/animated-folding-cell-in-android-studio-java-c270e26f8057?source=rss------android-5) -- [Абстракции с нулевой стоимостью* в Kotlin](https://medium.com/nuances-of-programming/%D0%B0%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D0%B8-%D1%81-%D0%BD%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9-%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%B2-kotlin-6cd14f0be503?source=rss------android-5) -- [「Android Binder」AIDL中的 in / out 到底是啥?](https://littlefourthlee.medium.com/android-binder-aidl%E4%B8%AD%E7%9A%84-in-out-%E5%88%B0%E5%BA%95%E6%98%AF%E5%95%A5-5c9defdef069?source=rss------android-5) -- [Android Activity Life Cycle](https://medium.com/cnk-tech/android-activity-life-cycle-7116bebee77c?source=rss------android-5) -- [Learn motion layout in Android using Twitter splash screen](https://medium.com/swlh/learn-motion-layout-in-android-using-twitter-splash-screen-9c38160c46d?source=rss------android-5) -- [React Native Generate APK — Debug and Release APK](https://fabiomancuso-11.medium.com/react-native-generate-apk-debug-and-release-apk-1377f6898cf5?source=rss------android-5) +- [Cómo compartir su red Wifi con dispositivos cercanos, usando el servicio cercano de HMS](https://huawei-latinoamerica.medium.com/c%C3%B3mo-compartir-su-red-wifi-con-dispositivos-cercanos-usando-el-servicio-cercano-de-hms-a26e2f77468b?source=rss------android-5) +- [Como tirar a mensagem de correio de voz da One UI 3.0](https://tatss.medium.com/como-tirar-a-mensagem-de-correio-de-voz-da-one-ui-3-0-6c6ace426bee?source=rss------android-5) +- [Get Android 11 Update on Your Android Phone With These Steps](https://martinjosephine115.medium.com/get-android-11-update-on-your-android-phone-with-these-steps-dd05d8982d6e?source=rss------android-5) +- [Deploying a cross platform deep learning application](https://towardsdatascience.com/deploying-a-cross-platform-deep-learning-application-a026da146d6?source=rss------android-5) +- [[Android] 4대 구성 요소 (4 Components)](https://medium.com/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EB%B9%B5%EC%A7%80/android-4%EB%8C%80-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C-4-components-53de6a293898?source=rss------android-5) +- [As a part of my series about about how leaders can create a “fantastic work culture”, I had the…](https://sevencheese777.medium.com/as-a-part-of-my-series-about-about-how-leaders-can-create-a-fantastic-work-culture-i-had-the-cf55f532766e?source=rss------android-5) +- [Kotlin Volley ile Sunucudan Veri Çekme](https://basaransuleyman.medium.com/kotlin-volley-ile-sunucudan-veri-%C3%A7ekme-92176137c6ea?source=rss------android-5) +- [Kotlin Multiplatform Mobile — what’s all the fuss?](https://ian-alexander.medium.com/kotlin-multiplatform-mobile-whats-all-the-fuss-fd6cb8af7082?source=rss------android-5) +- [What, Why and How questions of flutter](https://flutter-simplified.medium.com/what-why-and-how-questions-of-flutter-d0c8eca89653?source=rss------android-5) +- [Gestión de Errores en Android — Parte 1: entrando en calor](https://medium.com/droid-latam/gesti%C3%B3n-de-errores-en-android-parte-1-entrando-en-calor-296946977557?source=rss------android-5) ### _Gizmodo posts_ From 18eb0161288bba70cdeef0a8473a827e227b9ac3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 6 Apr 2021 01:38:13 +0000 Subject: [PATCH 0291/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 53e90a1841..92b19a6609 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,8 @@ Like ### _Mobile Dev Memo posts_ From 39950748c442e4382c49c291d8bb1fd4df1cd2dd Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 6 Apr 2021 01:38:16 +0000 Subject: [PATCH 0292/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92b19a6609..b83da2e37f 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,7 @@ Like ### _Infinum posts_ From 899788d2defb11d30ed127b01337204de1ca99be Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 7 Apr 2021 00:11:05 +0000 Subject: [PATCH 0293/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 60d9263181..e1585f7644 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 34 Performance From bed73f5e26d6ce085b1da7f27b182c47541587b5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 7 Apr 2021 01:25:09 +0000 Subject: [PATCH 0294/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b83da2e37f..47fca21f82 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Cómo compartir su red Wifi con dispositivos cercanos, usando el servicio cercano de HMS](https://huawei-latinoamerica.medium.com/c%C3%B3mo-compartir-su-red-wifi-con-dispositivos-cercanos-usando-el-servicio-cercano-de-hms-a26e2f77468b?source=rss------android-5) -- [Como tirar a mensagem de correio de voz da One UI 3.0](https://tatss.medium.com/como-tirar-a-mensagem-de-correio-de-voz-da-one-ui-3-0-6c6ace426bee?source=rss------android-5) -- [Get Android 11 Update on Your Android Phone With These Steps](https://martinjosephine115.medium.com/get-android-11-update-on-your-android-phone-with-these-steps-dd05d8982d6e?source=rss------android-5) -- [Deploying a cross platform deep learning application](https://towardsdatascience.com/deploying-a-cross-platform-deep-learning-application-a026da146d6?source=rss------android-5) -- [[Android] 4대 구성 요소 (4 Components)](https://medium.com/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EB%B9%B5%EC%A7%80/android-4%EB%8C%80-%EA%B5%AC%EC%84%B1-%EC%9A%94%EC%86%8C-4-components-53de6a293898?source=rss------android-5) -- [As a part of my series about about how leaders can create a “fantastic work culture”, I had the…](https://sevencheese777.medium.com/as-a-part-of-my-series-about-about-how-leaders-can-create-a-fantastic-work-culture-i-had-the-cf55f532766e?source=rss------android-5) -- [Kotlin Volley ile Sunucudan Veri Çekme](https://basaransuleyman.medium.com/kotlin-volley-ile-sunucudan-veri-%C3%A7ekme-92176137c6ea?source=rss------android-5) -- [Kotlin Multiplatform Mobile — what’s all the fuss?](https://ian-alexander.medium.com/kotlin-multiplatform-mobile-whats-all-the-fuss-fd6cb8af7082?source=rss------android-5) -- [What, Why and How questions of flutter](https://flutter-simplified.medium.com/what-why-and-how-questions-of-flutter-d0c8eca89653?source=rss------android-5) -- [Gestión de Errores en Android — Parte 1: entrando en calor](https://medium.com/droid-latam/gesti%C3%B3n-de-errores-en-android-parte-1-entrando-en-calor-296946977557?source=rss------android-5) +- [Coordinating multiple view visibility with Flow and the combine operator](https://aidan128.medium.com/coordinating-multiple-view-visibility-with-flow-and-the-combine-operator-6ecceaadd37c?source=rss------android-5) +- [Odin for Beginners | Flash Like Pro](https://medium.com/@trendyport002/odin-for-beginners-flash-like-pro-d2b86861cfdd?source=rss------android-5) +- [How to increase internal storage on your android device](https://medium.com/@trendyport008/how-to-increase-internal-storage-on-your-android-device-3098d2c205b2?source=rss------android-5) +- [How to Boost Gaming Performance on Android Devices](https://medium.com/@trendyport008/how-to-boost-gaming-performance-on-android-devices-9b347e579bef?source=rss------android-5) +- [The Best Meditation Apps You Can Use on Android](https://jackturner808.medium.com/the-best-meditation-apps-you-can-use-on-android-537ad9f462f0?source=rss------android-5) +- [Generating a GraphQL Query DSL with Kotlin](https://mtzhisham.medium.com/generating-a-graphql-query-dsl-with-kotlin-b4bfc9def9a8?source=rss------android-5) +- [En İyi Ücretsiz Android Uygulamaları](https://sosyal-teknoloji-news.medium.com/en-i%CC%87yi-%C3%BCcretsiz-android-uygulamalar%C4%B1-d630bfcd4e1b?source=rss------android-5) +- [Relax & Enjoy Your Free Time With Candy Fruit Blast Game for Android](https://hightechholic.medium.com/relax-enjoy-your-free-time-with-candy-fruit-blast-game-for-android-84b7cb846f2c?source=rss------android-5) +- [Network debugging in android with Stetho](https://todaypoc.medium.com/network-debugging-in-android-with-stetho-eff9c2b15ccd?source=rss------android-5) +- [Best Open Source Apps for Android in 2021](https://medium.com/@wesleyjrz/best-open-source-apps-for-android-in-2021-fc558e1bbbc?source=rss------android-5) ### _Gizmodo posts_ From 1c33144e2116634ad10b12ff0949015f4ddfbcc1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 7 Apr 2021 01:25:18 +0000 Subject: [PATCH 0296/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3abb2ff529..a4055a30b1 100644 --- a/README.md +++ b/README.md @@ -326,6 +326,7 @@ Like ### _Mobile Dev Memo posts_ From ba3b56598ef0567a071a4720e67489197c20f1ca Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 8 Apr 2021 00:13:33 +0000 Subject: [PATCH 0297/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 8 +- 2 files changed, 29 insertions(+), 234 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 60 - Performance - - - - - 72 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e1585f7644..84dd5672fd 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 32 Performance @@ -133,8 +133,8 @@ - - 80 + + 73 Best Practices From 0c8e33b8325f5ccf030a9fc221d34d2194371dff Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 8 Apr 2021 01:25:50 +0000 Subject: [PATCH 0298/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a4055a30b1..637eb03239 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Coordinating multiple view visibility with Flow and the combine operator](https://aidan128.medium.com/coordinating-multiple-view-visibility-with-flow-and-the-combine-operator-6ecceaadd37c?source=rss------android-5) -- [Odin for Beginners | Flash Like Pro](https://medium.com/@trendyport002/odin-for-beginners-flash-like-pro-d2b86861cfdd?source=rss------android-5) -- [How to increase internal storage on your android device](https://medium.com/@trendyport008/how-to-increase-internal-storage-on-your-android-device-3098d2c205b2?source=rss------android-5) -- [How to Boost Gaming Performance on Android Devices](https://medium.com/@trendyport008/how-to-boost-gaming-performance-on-android-devices-9b347e579bef?source=rss------android-5) -- [The Best Meditation Apps You Can Use on Android](https://jackturner808.medium.com/the-best-meditation-apps-you-can-use-on-android-537ad9f462f0?source=rss------android-5) -- [Generating a GraphQL Query DSL with Kotlin](https://mtzhisham.medium.com/generating-a-graphql-query-dsl-with-kotlin-b4bfc9def9a8?source=rss------android-5) -- [En İyi Ücretsiz Android Uygulamaları](https://sosyal-teknoloji-news.medium.com/en-i%CC%87yi-%C3%BCcretsiz-android-uygulamalar%C4%B1-d630bfcd4e1b?source=rss------android-5) -- [Relax & Enjoy Your Free Time With Candy Fruit Blast Game for Android](https://hightechholic.medium.com/relax-enjoy-your-free-time-with-candy-fruit-blast-game-for-android-84b7cb846f2c?source=rss------android-5) -- [Network debugging in android with Stetho](https://todaypoc.medium.com/network-debugging-in-android-with-stetho-eff9c2b15ccd?source=rss------android-5) -- [Best Open Source Apps for Android in 2021](https://medium.com/@wesleyjrz/best-open-source-apps-for-android-in-2021-fc558e1bbbc?source=rss------android-5) +- [Open messaging app in Android](https://medium.com/swlh/open-messaging-app-in-android-44c4b218cb1a?source=rss------android-5) +- [10 great ideas to improve your Gradle build times](https://medium.com/dipien/10-great-ideas-to-improve-your-gradle-build-times-2a6b281c69c6?source=rss------android-5) +- [How Artificial Intelligence Transforming Mobile App Industry](https://eetipatel.medium.com/how-artificial-intelligence-transforming-mobile-app-industry-83698af17a92?source=rss------android-5) +- [Android App Development course in Rawalpindi Islamabad](https://alitayyaba01.medium.com/android-app-development-course-in-rawalpindi-islamabad-b37fe70d0abb?source=rss------android-5) +- [Ae tempiro nce vagsd casin](https://medium.com/@bwwwfhwq/ae-tempiro-nce-vagsd-casin-b0a47edaebd7?source=rss------android-5) +- [Fim da divisão mobile da LG](https://medium.com/technyks/fim-da-divis%C3%A3o-mobile-da-lg-a4cc2ca96421?source=rss------android-5) +- [Best video editing app for Android without watermark](https://shafiq-rehman193.medium.com/best-video-editing-app-for-android-without-watermark-19f0e45873b7?source=rss------android-5) +- [DevTools no Android — Debbugando aplicações web pelo celular em 9 passos](https://pedromihael.medium.com/devtools-no-android-debbugando-aplica%C3%A7%C3%B5es-web-pelo-celular-em-9-passos-86df4d47b538?source=rss------android-5) +- [Kotlin Fragment ile iletişim](https://basaransuleyman.medium.com/kotlin-fragment-ile-ileti%C5%9Fim-8780844cf293?source=rss------android-5) +- [How to build an Android app in Scala 2.13](https://medium.com/swlh/how-to-build-an-android-app-in-scala-2-13-e2d887c4dc2?source=rss------android-5) ### _Gizmodo posts_ From fb1e15f580d4b61a7bef02ef26e04ffa52eb28bb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 8 Apr 2021 01:26:01 +0000 Subject: [PATCH 0300/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bf10468df..dd5a3aa87d 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,7 @@ Like ### _Infinum posts_ From de7211ee67a9e966659a1bec932c5b65ffc4cc1f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 9 Apr 2021 00:11:58 +0000 Subject: [PATCH 0301/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 84dd5672fd..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -133,8 +133,8 @@ - - 73 + + 80 Best Practices From 452be7c0751dcd0eb6c8268da44f683a25369ba9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 9 Apr 2021 01:24:08 +0000 Subject: [PATCH 0302/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dd5a3aa87d..342abebd22 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like -- [Open messaging app in Android](https://medium.com/swlh/open-messaging-app-in-android-44c4b218cb1a?source=rss------android-5) -- [10 great ideas to improve your Gradle build times](https://medium.com/dipien/10-great-ideas-to-improve-your-gradle-build-times-2a6b281c69c6?source=rss------android-5) -- [How Artificial Intelligence Transforming Mobile App Industry](https://eetipatel.medium.com/how-artificial-intelligence-transforming-mobile-app-industry-83698af17a92?source=rss------android-5) -- [Android App Development course in Rawalpindi Islamabad](https://alitayyaba01.medium.com/android-app-development-course-in-rawalpindi-islamabad-b37fe70d0abb?source=rss------android-5) -- [Ae tempiro nce vagsd casin](https://medium.com/@bwwwfhwq/ae-tempiro-nce-vagsd-casin-b0a47edaebd7?source=rss------android-5) -- [Fim da divisão mobile da LG](https://medium.com/technyks/fim-da-divis%C3%A3o-mobile-da-lg-a4cc2ca96421?source=rss------android-5) -- [Best video editing app for Android without watermark](https://shafiq-rehman193.medium.com/best-video-editing-app-for-android-without-watermark-19f0e45873b7?source=rss------android-5) -- [DevTools no Android — Debbugando aplicações web pelo celular em 9 passos](https://pedromihael.medium.com/devtools-no-android-debbugando-aplica%C3%A7%C3%B5es-web-pelo-celular-em-9-passos-86df4d47b538?source=rss------android-5) -- [Kotlin Fragment ile iletişim](https://basaransuleyman.medium.com/kotlin-fragment-ile-ileti%C5%9Fim-8780844cf293?source=rss------android-5) -- [How to build an Android app in Scala 2.13](https://medium.com/swlh/how-to-build-an-android-app-in-scala-2-13-e2d887c4dc2?source=rss------android-5) +- [¿Cómo trabajo (UX/UI Designer)? 2/4](https://samueluxdesigner.medium.com/c%C3%B3mo-trabajo-ux-ui-designer-2-4-5560cab57890?source=rss------android-5) +- [Review of the Google Pixel 4A, after more than half a year using it](https://dannyemerson2.medium.com/review-of-the-google-pixel-4a-after-more-than-half-a-year-using-it-9fa4c016aef9?source=rss------android-5) +- [Debugging LiveData changes made easy](https://chao2zhang.medium.com/debugging-livedata-changes-made-easy-d3aa16b81b41?source=rss------android-5) +- [10 Best Android Phones To Buy In 2021](https://infotinotech.medium.com/10-best-android-phones-to-buy-in-2021-83d6c203e69a?source=rss------android-5) +- [Ace cppem nhcaie](https://medium.com/@ubkijcxq/ace-cppem-nhcaie-76fd38aa02f2?source=rss------android-5) +- [Jetpack Compose Part 3 — Retrospect](https://medium.com/android-deep-dive-study/jetpack-compose-part-3-retrospect-73f0769b2d82?source=rss------android-5) +- [Jetpack Compose Part 2 — Preview / Layout / Decompile](https://medium.com/android-deep-dive-study/jetpack-compose-part-2-preview-layout-decompile-84fae294d458?source=rss------android-5) +- [Jetpack Compose Part 1 — Compose 소개 및 코드랩 따라하기](https://medium.com/android-deep-dive-study/jetpack-compose-part-1-compose-%EC%86%8C%EA%B0%9C-%EB%B0%8F-%EC%BD%94%EB%93%9C%EB%9E%A9-%EB%94%B0%EB%9D%BC%ED%95%98%EA%B8%B0-35f7a0e6c581?source=rss------android-5) ### _Gizmodo posts_ From 9e3528c52113bc395b13220702f297631229658a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 10 Apr 2021 00:11:53 +0000 Subject: [PATCH 0304/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 ++++++++++++++++++++++++++++++++---- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 62 + Performance + + + + + 72 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From affe91ffc2098fa5e7d09237a4452c6c5a18221c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 10 Apr 2021 01:24:41 +0000 Subject: [PATCH 0305/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 867e8f7db5..f7209a36b4 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) - [Google wins Java dispute, Oracle remains defiant](https://www.infoworld.com/article/3614083/google-wins-java-dispute-oracle-remains-defiant.html#tk.rss_android) - [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) @@ -265,7 +266,6 @@ Like +- [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) +- [The best Android developer tools for getting started](https://www.androidauthority.com/best-android-developer-tools-671650/) +- [How to install Python and start coding on Windows, Mac, or Linux](https://www.androidauthority.com/how-to-install-python-1134793/) +- [How to define a function in Python](https://www.androidauthority.com/how-to-define-a-function-in-python-1141219/) - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - [How to make money on Fiverr as a creative professional](https://www.androidauthority.com/how-to-make-money-on-fiverr-1026987/) - [The best AWS courses for professionals](https://www.androidauthority.com/aws-courses-1159464/) -- [How to use lists in Python](https://www.androidauthority.com/how-to-add-to-a-list-in-python-1134815/) -- [What is Google Cloud? Here’s what you need to know](https://www.androidauthority.com/what-is-google-cloud-1163777/) -- [The beginner’s guide to Android game development: Everything you need to know](https://www.androidauthority.com/android-game-development-1128058/) -- [The best resources to learn Java – free and paid](https://www.androidauthority.com/best-resources-to-learn-java-1147362/) ### _Android Arsenal posts_ From fb04fc221a3b890ed2109bdd1b079f06cb45bbe2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 10 Apr 2021 01:24:50 +0000 Subject: [PATCH 0308/2080] Updated with the latest blog posts --- README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e6dd6905ce..4f5a2dcf10 100644 --- a/README.md +++ b/README.md @@ -311,14 +311,16 @@ Like +- [Google Has Canceled the Pixel 5a, Multiple Reports Claim [Update: The Pixel 5a Is Still Alive]](https://gizmodo.com/google-has-canceled-the-pixel-5a-multiple-reports-clai-1846651933) - [Google's April Software Update Just Gave the Pixel 5 and 4a 5G a Big Performance Boost](https://gizmodo.com/googles-april-software-update-just-gave-the-pixel-5-and-1846627652) - [Supreme Court Sides With Google in Historic API Copyright Fight Against Oracle](https://gizmodo.com/supreme-courts-sides-with-google-in-historic-api-copyri-1846618603) - [Google Is Cracking Down on Apps That Can See Every Other App You Have Installed](https://gizmodo.com/google-is-cracking-down-on-apps-that-can-see-every-othe-1846619251) @@ -335,7 +336,6 @@ Like +- [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) - [Create a blur effect with Android 12](https://androidsweets.ongoodbits.com/create-a-blur-effect-with-android-12) -- [There is a Better Way to Mock Retrofit API Calls](https://androidsweets.ongoodbits.com/there-is-a-better-way-to-mock-retrofit-api-calls) --- From 9dbc06f1705c843f41120913d0bc3d52781a46df Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 11 Apr 2021 00:12:42 +0000 Subject: [PATCH 0311/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From cdad2156ef3d7bfb32e5cd86c9f72a67fedac2f3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 11 Apr 2021 01:26:33 +0000 Subject: [PATCH 0312/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6b2520c4b8..45785db571 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From c20015ca44498a616c926b2fac52fea8ea03c0f0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 11 Apr 2021 01:26:40 +0000 Subject: [PATCH 0313/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 45785db571..8e2a7ecc0b 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like - - 54 + + 61 Performance From 9e9efdebd3421f0d1730ffbb7642e250568e885e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 12 Apr 2021 01:25:41 +0000 Subject: [PATCH 0315/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8e2a7ecc0b..2eb3ce22aa 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 2bf9d846bdd10e2ff2e4e0c27d7f011792af0260 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 12 Apr 2021 01:25:47 +0000 Subject: [PATCH 0316/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2eb3ce22aa..c2a96ce177 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like +- [Google Will Shut Down the Google Shopping App for iOS and Android in a Few Weeks](https://gizmodo.com/google-will-shut-down-the-google-shopping-app-for-ios-a-1846662681) - [Google Has Canceled the Pixel 5a, Multiple Reports Claim [Update: The Pixel 5a Is Still Alive]](https://gizmodo.com/google-has-canceled-the-pixel-5a-multiple-reports-clai-1846651933) - [Google's April Software Update Just Gave the Pixel 5 and 4a 5G a Big Performance Boost](https://gizmodo.com/googles-april-software-update-just-gave-the-pixel-5-and-1846627652) - [Supreme Court Sides With Google in Historic API Copyright Fight Against Oracle](https://gizmodo.com/supreme-courts-sides-with-google-in-historic-api-copyri-1846618603) @@ -335,7 +336,6 @@ Like - - 29 + + 30 Performance From a60080af17ff5d8e3e6175bdea2782982d9ce1ce Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 13 Apr 2021 01:25:44 +0000 Subject: [PATCH 0319/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 93f6e3989f..e78df207e6 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like +- [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) - [Google wins Java dispute, Oracle remains defiant](https://www.infoworld.com/article/3614083/google-wins-java-dispute-oracle-remains-defiant.html#tk.rss_android) - [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) @@ -265,7 +266,6 @@ Like +- [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) - [The best Android developer tools for getting started](https://www.androidauthority.com/best-android-developer-tools-671650/) - [How to install Python and start coding on Windows, Mac, or Linux](https://www.androidauthority.com/how-to-install-python-1134793/) @@ -290,7 +291,6 @@ Like -- [Actualiza tu HTC! Android 11 para todos-casi todos](https://htcstoremexico.medium.com/actualiza-tu-htc-android-11-para-todos-casi-todos-fe15f47ec7a8?source=rss------android-5) -- [Colisiones en Android FileProvider, Una Solución Simple.](https://drummshot.medium.com/colisiones-en-android-fileprovider-una-soluci%C3%B3n-simple-edc17e96b0f2?source=rss------android-5) -- [UPGRADE REACT NATIVE APP TO API LEVEL TO 29](https://fayyaztech.medium.com/upgrade-react-native-app-to-api-level-to-29-8c964c71ee2b?source=rss------android-5) -- [Kotlin Simplified (Part -1 Basic syntax)](https://errorcrasher.medium.com/kotlin-simplified-part-1-basic-syntax-2d8fec9d7781?source=rss------android-5) -- [Exploiting Android Activity ““](https://aupsham98.medium.com/exploiting-android-activity-activity-android-exported-true-93ffeb263682?source=rss------android-5) -- [Download dbz shin budokai 7 file iso for psp](https://gamepech.medium.com/download-dbz-shin-budokai-7-file-iso-for-psp-6f0b4981456f?source=rss------android-5) -- [GTA Chinatown Wars PSP Download — GTA Chinatown Wars PPSSPP ISO 500MB Free](https://gamepech.medium.com/gta-chinatown-wars-psp-download-gta-chinatown-wars-ppsspp-iso-500mb-free-30684c9d8a9e?source=rss------android-5) -- [Improve your Gradle build times by disabling plugins](https://medium.com/dipien/improve-your-gradle-build-times-by-only-applying-needed-plugins-5cbe78319e17?source=rss------android-5) -- [Managing Global textScaleFactor in Flutter](https://dishita-shah1714.medium.com/managing-global-textscalefactor-in-flutter-226ed1daa3b5?source=rss------android-5) -- [Top Casual Game of 2021](https://chatorasant.medium.com/top-casual-game-of-2021-8fa92794245b?source=rss------android-5) +- [Implementing MVI on Android with Coroutines](https://fvilarino.medium.com/implementing-mvi-on-android-with-coroutines-7b747ef96870?source=rss------android-5) +- [How To Transfer iPhone contacts to Android Phone using BizConnect?](https://bizconnect321.medium.com/how-to-transfer-iphone-contacts-to-android-phone-using-bizconnect-7bea6ccde168?source=rss------android-5) +- [SharePoint Site Templates](https://regarding365.com/sharepoint-site-templates-1d18c9ad2562?source=rss------android-5) +- [Dragon Ball Z Tag Team Anime Crossover download PPSSPP ISO Mod Android 2021](https://gamepech.medium.com/dragon-ball-z-tag-team-anime-crossover-download-ppsspp-iso-mod-android-2021-cc10ec999a95?source=rss------android-5) +- [SpiderDAO iOS ve Android Uygulamalarına Göz Atın — Size yakın bir mağazaya geliyor](https://bkocabey.medium.com/spiderdao-ios-ve-android-uygulamalar%C4%B1na-g%C3%B6z-at%C4%B1n-size-yak%C4%B1n-bir-ma%C4%9Fazaya-geliyor-46b65d33f012?source=rss------android-5) +- [Android draw Line Chart with Canvas](https://medium.com/gustavo-santorio/android-draw-line-chart-with-canvas-106120579d96?source=rss------android-5) +- [MediaPipe Object Detection and Box Tracking](https://yogeshsangtani.medium.com/mediapipe-object-detection-and-box-tracking-82926abc50c2?source=rss------android-5) +- [Troubleshooting Microsoft Teams Android based devices](https://medium.com/@graham_walsh/troubleshooting-microsoft-teams-android-based-devices-8f20bde5a075?source=rss------android-5) +- [An App Developer’s Guide to Mobile System Design Interviews](https://betterprogramming.pub/an-app-developers-guide-to-mobile-system-design-interviews-74cd552bd963?source=rss------android-5) +- [MediaStore Audio Album image Thumbnail](https://amitkumar-72131.medium.com/mediastore-audio-album-image-thumbnail-e2493e0373a8?source=rss------android-5) ### _Gizmodo posts_ From 447c32e7f4f735e1473e15f5bc14b7af6a9c7f29 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 13 Apr 2021 01:26:01 +0000 Subject: [PATCH 0323/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff681858ff..07afec6a40 100644 --- a/README.md +++ b/README.md @@ -341,6 +341,7 @@ Like ### _Infinum posts_ From 7686b8c60b68572ba4cc499dd6a3cc623931b0f5 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 14 Apr 2021 00:10:17 +0000 Subject: [PATCH 0324/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..e1585f7644 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 34 Performance From bbd2ef615e7f5a5f50b3ffd6bdda0da18833e7d7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 14 Apr 2021 01:24:22 +0000 Subject: [PATCH 0325/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 07afec6a40..399ecdaf15 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From abecb65bb53bdc3eeedbe8b3070f7b8e66fde70e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 14 Apr 2021 01:24:24 +0000 Subject: [PATCH 0326/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 399ecdaf15..68ed756ddd 100644 --- a/README.md +++ b/README.md @@ -256,6 +256,7 @@ Like ### _RedHat posts_ From 402ce5f3c4bfb92477dde32029b55194e3759221 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 14 Apr 2021 01:24:29 +0000 Subject: [PATCH 0327/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 68ed756ddd..c23f7ea143 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like +- [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) +- [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) +- [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) - [Google Will Shut Down the Google Shopping App for iOS and Android in a Few Weeks](https://gizmodo.com/google-will-shut-down-the-google-shopping-app-for-ios-a-1846662681) - [Google Has Canceled the Pixel 5a, Multiple Reports Claim [Update: The Pixel 5a Is Still Alive]](https://gizmodo.com/google-has-canceled-the-pixel-5a-multiple-reports-clai-1846651933) - [Google's April Software Update Just Gave the Pixel 5 and 4a 5G a Big Performance Boost](https://gizmodo.com/googles-april-software-update-just-gave-the-pixel-5-and-1846627652) @@ -333,9 +336,6 @@ Like + - - 54 + + 37 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e1585f7644..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 32 Performance From f80df1a395dbdc9981618aec6cc039ce0ff0ba9d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 15 Apr 2021 01:24:53 +0000 Subject: [PATCH 0330/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d81fd232b1..aaf2752567 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 7da0966913ade5db927028595bcdd6dfd6a0eca1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 15 Apr 2021 01:24:59 +0000 Subject: [PATCH 0331/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aaf2752567..d4d275d8d3 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ Like ### _Medium posts_ From f49c890006ed84d4e9318546642f90142f801c82 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 15 Apr 2021 01:25:01 +0000 Subject: [PATCH 0332/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d4d275d8d3..84fc68364f 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,15 @@ Like +- [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) - [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) @@ -334,7 +335,6 @@ Like - - 37 + + 41 Performance From cbb6d323aede91c5600296ffd4dfba2b62972a3e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 16 Apr 2021 01:25:18 +0000 Subject: [PATCH 0335/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f929688ab2..e7b0d42713 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From c3d9ab99ca574d3695597b181ef5cd0d8c80033c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 16 Apr 2021 01:25:24 +0000 Subject: [PATCH 0336/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e7b0d42713..02cb5b8ab4 100644 --- a/README.md +++ b/README.md @@ -311,15 +311,16 @@ Like + - - 41 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From d8164b9ebbad59bcd044aed680dd91177c8efda1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 17 Apr 2021 01:24:29 +0000 Subject: [PATCH 0338/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 02cb5b8ab4..af3d0d0cee 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 20d44cc8eb6d5feda41ff60e2ee302f6a1f09a12 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 17 Apr 2021 01:24:35 +0000 Subject: [PATCH 0339/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index af3d0d0cee..bd39bc3058 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like +- [Google Misled Android Users About Location Data, Australian Court Finds](https://gizmodo.com/google-misled-android-users-about-location-data-austra-1846699135) - [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) @@ -335,7 +336,6 @@ Like +- [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) -- [Create a blur effect with Android 12](https://androidsweets.ongoodbits.com/create-a-blur-effect-with-android-12) --- From 2de96bceaa646ccb28cc1500b988120f0660e4b5 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 18 Apr 2021 00:11:02 +0000 Subject: [PATCH 0342/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 62 Performance From 9f23634326cf66d17b745b1ffaf3620f68db939c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 18 Apr 2021 01:25:55 +0000 Subject: [PATCH 0343/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7c9da4282b..4050c5765d 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 65a4b10aef7f5196397d3a0c5ada72fe30be5eae Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 18 Apr 2021 01:26:08 +0000 Subject: [PATCH 0344/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4050c5765d..d9c28cadfa 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like - - 62 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 32 Performance From a9f117f0d0f8ccf19167c776fa837bfa30f64ac0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 19 Apr 2021 01:25:14 +0000 Subject: [PATCH 0346/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d9c28cadfa..656b234fd9 100644 --- a/README.md +++ b/README.md @@ -241,16 +241,16 @@ Like ### _InfoWorld posts_ From 40e6dbf9bd3d2e4ccfd21a6682a03d12b031c959 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 19 Apr 2021 01:25:20 +0000 Subject: [PATCH 0347/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 656b234fd9..cf26d58039 100644 --- a/README.md +++ b/README.md @@ -311,16 +311,16 @@ Like Date: Mon, 19 Apr 2021 21:02:33 +0300 Subject: [PATCH 0348/2080] docs: updates on workflows Added information on documentation --- .readthedocs.yaml | 24 ++++++++++++++++++++++++ README.md | 2 ++ docs/requirements.txt | 2 ++ 3 files changed, 28 insertions(+) create mode 100644 .readthedocs.yaml create mode 100644 docs/requirements.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000000..7f21237a85 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,24 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +formats: + - epub + - pdf + +mkdocs: + configuration: mkdocs.yml + fail_on_warning: false + +# Optionally set the version of Python and requirements required to build your docs +python: + version: 3.7 + install: + - requirements: docs/requirements.txt + +# Avoid cloning submodules +submodules: + exclude: all diff --git a/README.md b/README.md index cf26d58039..8ccf903233 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ ![GitHub search hit counter](https://img.shields.io/github/search/AlexRogalskiy/android-patterns/goto) ![GitHub Repository branches](https://badgen.net/github/branches/AlexRogalskiy/android-patterns) ![GitHub Repository dependents](https://badgen.net/github/dependents-repo/AlexRogalskiy/android-patterns) + [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fandroid-patterns.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FAlexRogalskiy%2Fandroid-patterns?ref=badge_shield) [![Renovatebot](https://badgen.net/badge/renovate/enabled/green?cache=300)](https://renovatebot.com/) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-1f8ceb.svg?style=flat-square)](https://dependabot.com/) @@ -35,6 +36,7 @@ [![Hits-of-Code](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master)](https://hitsofcode.com/github/alexrogalskiy/android-patterns?branch=master/view?branch=master) [![ComVer](https://img.shields.io/badge/ComVer-compliant-brightgreen.svg)][repo] [![GitHub Super-Linter](https://github.com/alexrogalskiy/android-patterns/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) +[![Documentation Status](https://readthedocs.org/projects/android-patterns/badge/?version=latest)](https://android-patterns.readthedocs.io/en/latest/?badge=latest) ## 🎹 _Table of contents_ diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000000..870797e938 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,2 @@ +mkdocs-material==7.1.2 +markdown-include==0.6.0 From 479a9c38822d20390dc96bd48826532088356b58 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 20 Apr 2021 00:11:17 +0000 Subject: [PATCH 0349/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c67d311f4..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 26 Performance From a402200fcbb415e21ab7e4c169b465cb4ff55afe Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 20 Apr 2021 01:25:07 +0000 Subject: [PATCH 0350/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8ccf903233..2fe2b4b6a1 100644 --- a/README.md +++ b/README.md @@ -243,16 +243,16 @@ Like -- [Belajar Yuk Sahabat Migran! Mengaktifkan Mode Gelap di Aplikasi Gmail Mobile](https://rumahmigran.medium.com/belajar-yuk-sahabat-migran-mengaktifkan-mode-gelap-di-aplikasi-gmail-mobile-5c46cf9b7ef0?source=rss------android-5) -- [Top 10 trending phones of week 15 _Rataul.comLatest upcoming mobile phones and gadgets](https://mobilephone.medium.com/top-10-trending-phones-of-week-15-rataul-comlatest-upcoming-mobile-phones-and-gadgets-bc544ef7f4cb?source=rss------android-5) -- [Call International Numbers with Second Number](https://bitwings.medium.com/call-international-numbers-with-second-number-6b9f5e93b778?source=rss------android-5) -- [Real-time lifecycle-aware updates in Jetpack Compose](https://skyyo.medium.com/real-time-lifecycle-aware-updates-in-jetpack-compose-be2e80e613c2?source=rss------android-5) -- [Pi Practice App in Compose](https://proandroiddev.com/pi-practice-app-in-compose-bb6572d5bad4?source=rss------android-5) -- [Product Flavors in Android (Part 1)](https://vadhermilan64526.medium.com/product-flavors-in-android-part-1-9ede9a519f07?source=rss------android-5) -- [Scope Functions and it’s use case](https://poojaabbott96.medium.com/scope-functions-and-its-use-case-c20a9fbe22ba?source=rss------android-5) -- [WhatsApp offers two main features to iPhone users with new update this month](https://medium.com/@shubham.reddy50/whatsapp-offers-two-main-features-to-iphone-users-with-new-update-this-month-8bec4617e37c?source=rss------android-5) -- [Convert website to mobile app](https://medium.com/techlinehub/convert-website-to-mobile-app-2b0c56a9f233?source=rss------android-5) -- [The Coroutine Basics in Android](https://bobirawan.medium.com/the-coroutine-basics-in-android-15219795c597?source=rss------android-5) +- [把手機當成FTP使用](https://medium.com/%E9%A6%AC%E5%85%8B%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98/%E6%8A%8A%E6%89%8B%E6%A9%9F%E7%95%B6%E6%88%90ftp%E4%BD%BF%E7%94%A8-f6daf231f96f?source=rss------android-5) +- [On July 21, 2020, fundraising for the release of the smallest smartphone in the world began.](https://medium.com/@nesterdanya21/on-july-21-2020-fundraising-for-the-release-of-the-smallest-smartphone-in-the-world-began-8a4fd04e6dbd?source=rss------android-5) +- [E kiʻi i kāu paseka hou, ka leka uila, nā kāleka ID, SSN, IELTS / TOEFL a me nā pepa ʻē aʻe.](https://brandonhan203.medium.com/e-ki%CA%BBi-i-k%C4%81u-paseka-hou-ka-leka-uila-n%C4%81-k%C4%81leka-id-ssn-ielts-toefl-a-me-n%C4%81-pepa-%CA%BB%C4%93-a%CA%BBe-95d94816b030?source=rss------android-5) +- [Creating a heterogeneous list with Jetpack Compose](https://fvilarino.medium.com/creating-a-heterogeneous-list-with-jetpack-compose-138d3698c4cc?source=rss------android-5) +- [Modular Navigation with Jetpack Compose](https://medium.com/google-developer-experts/modular-navigation-with-jetpack-compose-fda9f6b2bef7?source=rss------android-5) +- [Android — İstisna İşleme — ExceptionHandler](https://resulsilay.medium.com/android-i%CC%87stisna-i%CC%87%C5%9Fleme-exceptionhandler-fd82a4d8469c?source=rss------android-5) +- [How to use NestedScrollView with ConstraintLayout and RecyclerView](https://medium.com/tech-takeaways/how-to-use-nestedscrollview-with-constraintlayout-and-recyclerview-fbd1cf977e98?source=rss------android-5) +- [Counter-Strike 16 Apk (Latest Version)v1.6 Free Download For Android](https://alymalang00.medium.com/counter-strike-16-apk-latest-version-v1-6-free-download-for-android-2493261012f6?source=rss------android-5) +- [The 6 Best Android Screen Brightness Apps](https://medium.com/@duggu2409/the-6-best-android-screen-brightness-apps-810250cbc269?source=rss------android-5) +- [Using Google’s ML Kit to control an Android device without hands](https://axel7083.medium.com/using-googles-ml-kit-to-control-an-android-device-without-hands-cf2a1c589e73?source=rss------android-5) ### _Gizmodo posts_ From 2547eb247992d5ec402e7ad24dede4a5ef89152b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 20 Apr 2021 01:25:16 +0000 Subject: [PATCH 0352/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50a554049e..576d003fc8 100644 --- a/README.md +++ b/README.md @@ -328,6 +328,7 @@ Like ### _Mobile Dev Memo posts_ From f59a71aacfda3c9645ae80b77ee2cd51d68c2d33 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 20 Apr 2021 01:25:20 +0000 Subject: [PATCH 0353/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 576d003fc8..b334b6aa77 100644 --- a/README.md +++ b/README.md @@ -343,6 +343,7 @@ Like ### _Infinum posts_ From 7e26c76b0af51de6ed7625fee98df0f1d3eb2a00 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 21 Apr 2021 00:11:29 +0000 Subject: [PATCH 0354/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..32c5f0458a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 27 Performance From 9b5de988ef50a3cc0306b6d33e346645f5eddc0c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 21 Apr 2021 01:25:22 +0000 Subject: [PATCH 0355/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b334b6aa77..6e77c4aed9 100644 --- a/README.md +++ b/README.md @@ -243,16 +243,16 @@ Like ### _InfoWorld posts_ From 6576ddfb9323566587298015719743d021a9538e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 21 Apr 2021 01:25:30 +0000 Subject: [PATCH 0356/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6e77c4aed9..3541125ca7 100644 --- a/README.md +++ b/README.md @@ -313,16 +313,16 @@ Like +- [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) - [These Are the Best AR Apps You Can Use Outside](https://gizmodo.com/these-are-the-best-ar-apps-you-can-use-outside-1846696834) - [Google Misled Android Users About Location Data, Australian Court Finds](https://gizmodo.com/google-misled-android-users-about-location-data-austra-1846699135) - [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) @@ -337,7 +338,6 @@ Like +- [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) - [Unpacking Tim Cook’s comments about ATT](https://mobiledevmemo.com/unpacking-tim-cooks-comments-about-att/) @@ -352,7 +353,6 @@ Like - - 55 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From 241cbedf6e1e2192cf48b46a0d36f04a012fa945 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 22 Apr 2021 01:25:30 +0000 Subject: [PATCH 0360/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 909643da22..d9682cc3da 100644 --- a/README.md +++ b/README.md @@ -243,16 +243,16 @@ Like ### _InfoWorld posts_ From 41821f450fc4008f4aee8e83cea0a70bed27888f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 22 Apr 2021 01:25:35 +0000 Subject: [PATCH 0361/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d9682cc3da..11ce336d99 100644 --- a/README.md +++ b/README.md @@ -283,6 +283,7 @@ Like ### _Android Arsenal posts_ From fcd0bf3a70716d4e92f036147ddc2df259d58ea0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 22 Apr 2021 01:25:38 +0000 Subject: [PATCH 0362/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 11ce336d99..6caa6b1925 100644 --- a/README.md +++ b/README.md @@ -313,16 +313,16 @@ Like +- [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) +- [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) - [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) - [These Are the Best AR Apps You Can Use Outside](https://gizmodo.com/these-are-the-best-ar-apps-you-can-use-outside-1846696834) - [Google Misled Android Users About Location Data, Australian Court Finds](https://gizmodo.com/google-misled-android-users-about-location-data-austra-1846699135) @@ -336,8 +338,6 @@ Like Date: Thu, 22 Apr 2021 19:08:38 +0300 Subject: [PATCH 0364/2080] docs: updates on workflows Added information on documentation --- .DEREK.yml | 11 ++ .editorconfig | 4 +- .gitbook.yaml | 6 +- .github/workflows/build.yml | 49 ++++++++ .gitignore | 43 +++++-- .husky/.gitignore | 1 + .husky/pre-commit | 11 ++ .husky/pre-push | 4 + .kodiak.toml | 9 ++ .lintstagedrc.json | 3 + .ls-lint.yml | 21 ++++ .mergify.yml | 58 ++++++++++ .npmignore | 13 +++ .npmrc | 2 + .nvmrc | 1 + .prettierignore | 14 +++ .prettierrc.yaml | 37 ++++++ .remarkrc | 6 + .typo-ci.yml | 29 +++-- .unibeautifyrc.json | 14 +-- .yarnrc | 3 + CHANGELOG.md | 8 ++ OSSMETADATA | 1 + README.md | 174 +++++++++++++++++------------ changelog.config.js | 60 ++++++++++ docs/README.md | 8 +- docs/SUMMARY.md | 36 +++--- docs/_config.yml | 4 +- docs/contributing/README.md | 1 - docs/contributing/info.md | 147 ++++++++++++------------ docs/links/README.md | 1 - docs/links/info.md | 5 +- docs/units/README.md | 1 - docs/units/design-patterns.md | 3 +- docs/units/scenarios.md | 3 +- docs/units/use-cases.md | 3 +- docs/user-guide/README.md | 1 - docs/user-guide/changelog.md | 17 ++- docs/user-guide/code_of_conduct.md | 47 ++++---- docs/user-guide/code_owners.md | 11 +- docs/user-guide/dependency.md | 5 +- docs/user-guide/faq.md | 5 +- docs/user-guide/getting-started.md | 3 +- docs/user-guide/troubleshooting.md | 27 +++-- docs/user-guide/upgrade.md | 52 +++++---- package.json | 72 ++++++++++++ renovate.json | 88 +++++++-------- 47 files changed, 768 insertions(+), 354 deletions(-) create mode 100644 .DEREK.yml create mode 100644 .github/workflows/build.yml create mode 100644 .husky/.gitignore create mode 100644 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .kodiak.toml create mode 100644 .lintstagedrc.json create mode 100644 .ls-lint.yml create mode 100644 .mergify.yml create mode 100644 .npmignore create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.yaml create mode 100644 .remarkrc create mode 100644 .yarnrc create mode 100644 CHANGELOG.md create mode 100644 OSSMETADATA create mode 100644 changelog.config.js create mode 100644 package.json diff --git a/.DEREK.yml b/.DEREK.yml new file mode 100644 index 0000000000..462522f880 --- /dev/null +++ b/.DEREK.yml @@ -0,0 +1,11 @@ +curators: + - alexrogalskiy + +features: + - dco_check + - comments + - pr_description_required + - release_notes + - hacktoberfest + +contributing_url: https://github.com/AlexRogalskiy/github-action-random-quote/blob/master/.github/CONTRIBUTING.md diff --git a/.editorconfig b/.editorconfig index 98cbf42fa4..63e1e2c9ec 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,7 +13,7 @@ insert_final_newline = true trim_trailing_whitespace = true max_line_length = 120 -[*.js] +[*.{js, ts}] indent_size = 2 max_line_length = 100 @@ -24,7 +24,7 @@ indent_size = 2 indent_size = 4 [*.{css, scss, json}] -indent_size = 2 +indent_size = 4 [*.{md, markdown}] max_line_length = off diff --git a/.gitbook.yaml b/.gitbook.yaml index 207fec18dd..46e567c0cd 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -1,6 +1,6 @@ root: ./docs/ -​structure: +​structure: user-guide: changelog: ./user-guide/changelog.md dependency: ./user-guide/dependency.md @@ -25,8 +25,8 @@ root: ./docs/ links: info: ./links/info.md -redirects: +redirects: msin: ./README.md info: ./SUMMARY.md​ help: ./user-guide/support.md - start: ./user-guide/getting-started.md \ No newline at end of file + start: ./user-guide/getting-started.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..5acb70da31 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,49 @@ +name: CI + +on: + pull_request: + branches: + - master + push: + branches: + - master + - 'releases/*' + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + max-parallel: 2 + matrix: + node-version: + - 10.x + - 11.x + - 12.x + - 14.x + + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Setup PNPM + uses: pnpm/action-setup@v1.2.1 + with: + version: 4.11.1 + + - name: Install Dependencies + run: pnpm i + + - name: Lint & Format + run: | + pnpm run all --if-present + + - name: Check + run: | + pnpm run check:all --if-present diff --git a/.gitignore b/.gitignore index 6a78d46217..8123371e16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,20 @@ -# Compiled class file -*.class - -# Log file +# Log files *.log +logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* # BlueJ files *.ctxt -# Mobile Tools for Java (J2ME) -.mtj.tmp/ +# Cache files +.npm +.eslintcache +lunr-index.json -# Package Files # +# Package files *.jar *.war *.nar @@ -18,9 +22,27 @@ *.zip *.tar.gz *.rar +*.tgz +**/.DS_Store + +# License files +licenses.json # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +pids +*.pid +*.seed +*.pid.lock + +# Yarn Integrity file +.yarn-integrity + +# TypeScript cache +*.tsbuildinfo + +# Optional REPL history +.node_repl_history # Build and temp folders .settings/ @@ -29,7 +51,10 @@ hs_err_pid* bin/ tmp/ build/* -packages/ +coverage/ target/ log/ -site/ \ No newline at end of file +site/ +dist/ +.cache +node_modules diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000000..31354ec138 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000000..82693347d2 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,11 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint:staged +npm run all +npm run changelog + +git add docs/ + +git add README.md +git add CHANGELOG.md diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000000..687fec934f --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run check:all diff --git a/.kodiak.toml b/.kodiak.toml new file mode 100644 index 0000000000..a964fb21f0 --- /dev/null +++ b/.kodiak.toml @@ -0,0 +1,9 @@ +# This file is maintained in https://github.com/WeblateOrg/meta/ +# Configuration for https://kodiakhq.com/ +version = 1 + +[merge] +method = "rebase" + +[update] +ignored_usernames = ["dependabot", "weblate"] diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 0000000000..b4dc1e4b1c --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,3 @@ +{ + "**/*.{json,yaml,yml}": "prettier --single-quote --write --ignore-unknown" +} diff --git a/.ls-lint.yml b/.ls-lint.yml new file mode 100644 index 0000000000..d984b89a2b --- /dev/null +++ b/.ls-lint.yml @@ -0,0 +1,21 @@ +ls: + .js: kebab-case + .md: kebab-case + .ts: kebab-case + .d.ts: kebab-case + .spec.ts: kebab-case + .generated.ts: kebab-case + +ignore: + - .cache + - .eslintrc.js + - .git + - .github + - .dependabot + - idea + - coverage + - dist + - jest.config.ts + - node_modules + - SECURITY.md + - tests diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 0000000000..e63f450ece --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,58 @@ +pull_request_rules: + - name: automatic merge on CI success require review + conditions: + - status-success=Travis CI - Pull Request + - '#approved-reviews-by>=1' + - '#changes-requested-reviews-by=0' + - label!=block-merge + actions: + label: + add: + - quotes + merge: + method: squash + strict: smart + + # if there is a conflict in a backport PR, ping the author to send a proper backport PR + - name: ping author on conflicts + conditions: + - conflict + actions: + comment: + message: + This pull request has merge conflicts that must be resolved before it + can be merged. @{{author}} please rebase it. + https://rook.io/docs/rook/master/development-flow.html#updating-your-fork + + # automerge on master only under certain strict conditions + - name: + automerge merge master with specific label and approvals with code change + conditions: + - author=mergify[bot] + - base=master + - '#approved-reviews-by>=1' + - '#changes-requested-reviews-by=0' + - label!=do-not-merge + - label=ready-to-merge + actions: + merge: + method: merge + strict: false + dismiss_reviews: {} + delete_head_branch: {} + + - name: automatic merge on CI success for TemplateControl + conditions: + - status-success=Travis CI - Pull Request + - label=merge-when-green + - label!=block-merge + actions: + merge: + method: squash + strict: smart + + - name: delete branch after merge + conditions: + - merged + actions: + delete_head_branch: {} diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000..8c997f9aae --- /dev/null +++ b/.npmignore @@ -0,0 +1,13 @@ +/src/ +/test/ +/coverage/ +tsconfig* +.editorconfig +.travis.yml +tslint.json +jest.config.js +.huskyrc +.lintstagedrc +.prettierignore +.prettierrc +yarn-error.log diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..5c69597eca --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +package-lock=false +save-exact=false diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..2a0dc9a810 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +14.16.0 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..d69125f41a --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +*.log +*.DS_Store +OSSMETADATA + +.github +.dependabot +.idea +.vscode +.husky + +node_modules +flow-typed +coverage +dist diff --git a/.prettierrc.yaml b/.prettierrc.yaml new file mode 100644 index 0000000000..d8291611cc --- /dev/null +++ b/.prettierrc.yaml @@ -0,0 +1,37 @@ +$schema: http://json.schemastore.org/prettierrc +printWidth: 110 +tabWidth: 4 +useTabs: false +endOfLine: lf +semi: false +singleQuote: true +quoteProps: 'consistent' +jsxSingleQuote: false +trailingComma: 'all' +bracketSpacing: true +jsxBracketSameLine: true +arrowParens: 'avoid' +proseWrap: 'always' +overrides: + - files: + - '*.html' + - 'legacy/**/*.js' + options: + semi: true + - files: '**/*.json*' + options: + parser: json + proseWrap: 'always' + - files: '**/*.md*' + options: + parser: markdown + proseWrap: 'always' + - files: '**/*.{yaml,yml}*' + options: + parser: yaml + tabWidth: 2 + printWidth: 80 + - files: '**/.all-(contributorsrc|membersrc|sponsorsrc)' + options: + parser: 'json-stringify' + singleQuote: false diff --git a/.remarkrc b/.remarkrc new file mode 100644 index 0000000000..fad0406aaf --- /dev/null +++ b/.remarkrc @@ -0,0 +1,6 @@ +{ + "plugins": { + "lint-code-block-style": "fenced", + "lint-ordered-list-marker-value": "ordered" + } +} diff --git a/.typo-ci.yml b/.typo-ci.yml index 81bd58150a..7011e90eb5 100644 --- a/.typo-ci.yml +++ b/.typo-ci.yml @@ -1,7 +1,6 @@ # This is a sample .typo-ci.yml file, it's used to configure how Typo CI will behave. # Add it to the root of your project and push it to github. --- - # What language dictionaries should it use? By default Typo CI will select 'en' & 'en_GB' # Currently Typo CI supports: # de @@ -19,23 +18,23 @@ dictionaries: # Any files/folders we should ignore? excluded_files: - - "vendor/**/*" - - "node_modules/**/*" - - "*.key" - - "*.enc" - - "*.min.css" - - "*.css.map" - - "*.min.js" - - "*.js.map" - - "*.mk" - - "package-lock.json" - - "yarn.lock" - - "Gemfile.lock" - - ".typo-ci.yml" + - 'vendor/**/*' + - 'node_modules/**/*' + - '*.key' + - '*.enc' + - '*.min.css' + - '*.css.map' + - '*.min.js' + - '*.js.map' + - '*.mk' + - 'package-lock.json' + - 'yarn.lock' + - 'Gemfile.lock' + - '.typo-ci.yml' # Any typos we should ignore? excluded_words: - typoci # Would you like filenames to also be spellchecked? -spellcheck_filenames: true \ No newline at end of file +spellcheck_filenames: true diff --git a/.unibeautifyrc.json b/.unibeautifyrc.json index c00b1cd8c4..1e2a599d0b 100644 --- a/.unibeautifyrc.json +++ b/.unibeautifyrc.json @@ -1,9 +1,7 @@ { - "Markdown": { - "beautifiers": [ - "Prettier" - ], - "__pragma_insert__": true, - "wrap_line_length": 0 - } -} \ No newline at end of file + "Markdown": { + "beautifiers": ["Prettier"], + "__pragma_insert__": true, + "wrap_line_length": 0 + } +} diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 0000000000..7bd7a52cae --- /dev/null +++ b/.yarnrc @@ -0,0 +1,3 @@ +save-prefix "^" +--no-lockfile true +unsafe-disable-integrity-migration true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..efbc229e1a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-22) + + + +## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) + + + diff --git a/OSSMETADATA b/OSSMETADATA new file mode 100644 index 0000000000..b96d4a4dfa --- /dev/null +++ b/OSSMETADATA @@ -0,0 +1 @@ +osslifecycle=active diff --git a/README.md b/README.md index 1db733ad5f..435e92b045 100644 --- a/README.md +++ b/README.md @@ -38,35 +38,37 @@ [![GitHub Super-Linter](https://github.com/alexrogalskiy/android-patterns/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter) [![Documentation Status](https://readthedocs.org/projects/android-patterns/badge/?version=latest)](https://android-patterns.readthedocs.io/en/latest/?badge=latest) -## 🎹 _Table of contents_ +## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + -## ☝ _Summary_ +## ☝ *Summary*

Android @@ -81,7 +83,7 @@

-_**Android Design Patterns**_ is intended to provide various use case scenarios and architectural concepts on prototyping adaptive applications. +***Android Design Patterns*** is intended to provide various use case scenarios and architectural concepts on prototyping adaptive applications. ```text mkdocs.yml # Configuration file. @@ -115,27 +117,27 @@ docs/ info.md # Links page ``` -## 📝 _Documentation_ +## 📝 *Documentation* The Website documentation is provided by [gitbook](https://www.gitbook.com/) and can be discovered at url: -[_**Android Patterns**_][docs] +[***Android Patterns***][docs] -To enable documentation serving at _**localhost**_ the following steps should be considered: +To enable documentation serving at ***localhost*** the following steps should be considered: -1\) Install/upgrade _**pip**_ command-line utility: +1\) Install/upgrade ***pip*** command-line utility: ```text pip install --upgrade pip ``` -or if you need to install _**pip**_ for the first time: +or if you need to install ***pip*** for the first time: ```text python get-pip.py ``` -2\) Install the _**mkdocs**_ package using pip: +2\) Install the ***mkdocs*** package using pip: ```text pip install mkdocs @@ -155,7 +157,7 @@ pip install mkdocs-material pip install markdown-include ``` -4\) Start the server at _**localhost**_ by running the following command: +4\) Start the server at ***localhost*** by running the following command: ```text mkdocs serve --verbose --dirtyreload @@ -169,27 +171,27 @@ mkdocs --verbose gh-deploy --force --remote-branch gh-pages 5\) Open up [localhost](http://127.0.0.1:8000/) in browser to get the default documentation homepage. -## ⏰ _Statistics_ +## ⏰ *Statistics*

Documentation PageSpeed result dashboard

-## 📝 _Versioning_ +## 📝 *Versioning* The project uses [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository][tags]. -## 🌹 _Authors_ +## 🌹 *Authors* -_**Android Patterns**_ is maintained by the following GitHub team-members: +***Android Patterns*** is maintained by the following GitHub team-members: -* [![Author](https://img.shields.io/badge/author-AlexRogalskiy-FB8F0A)](https://github.com/AlexRogalskiy) +- [![Author](https://img.shields.io/badge/author-AlexRogalskiy-FB8F0A)](https://github.com/AlexRogalskiy) with community support please contact with us if you have some question or proposition. -## 💕 _Contributing_ +## 💕 *Contributing* -[![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/android-patterns?size=50&padding=5&bots=true)](https://badges.pufler.dev) +[![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/android-patterns?size=50\&padding=5\&bots=true)](https://badges.pufler.dev) Please read [CONTRIBUTING.md](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CONTRIBUTING.md) @@ -204,60 +206,63 @@ specification. Contributions of any kind are welcome! See also the list of [contributors][contributors] who participated in this project. -## 🚨 _Visitor stats_ +## 🚨 *Visitor stats* -[![GitHub page hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAlexRogalskiy%2Fandroid-patterns&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=true)](https://hits.seeyoufarm.com) +[![GitHub page hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FAlexRogalskiy%2Fandroid-patterns\&count_bg=%2379C83D\&title_bg=%23555555\&icon=\&icon_color=%23E7E7E7\&title=hits\&edge_flat=true)](https://hits.seeyoufarm.com) ![GitHub stars](https://img.shields.io/github/stars/AlexRogalskiy/android-patterns?style=social) ![GitHub forks](https://img.shields.io/github/forks/AlexRogalskiy/android-patterns?style=social) ![GitHub watchers](https://img.shields.io/github/watchers/AlexRogalskiy/android-patterns?style=social) -## ⚽ _Licensing_ +## ⚽ *Licensing* -_**Android Patterns**_ is distributed under LGPL version 3 or later, [[License](https://github.com/AlexRogalskiy/android-patterns/blob/master/LICENSE.txt)]. +***Android Patterns*** is distributed under LGPL version 3 or later, \[[License](https://github.com/AlexRogalskiy/android-patterns/blob/master/LICENSE.txt)]. LGPLv3 is additional permissions on top of GPLv3. ![image](https://user-images.githubusercontent.com/19885116/48661948-6cf97e80-ea7a-11e8-97e7-b45332a13e49.png) -## 🌟 _Development Support_ +## 🌟 *Development Support* Like Android Design patterns - and _**Android Patterns**_ ? Consider buying me a coffee :\) +and ***Android Patterns*** ? Consider buying me a coffee :) -[![Become a Patron](https://img.shields.io/badge/Become_Patron-Support_me_on_Patreon-blue.svg?style=flat-square&logo=patreon&color=e64413)](https://www.patreon.com/alexrogalskiy) +[![Become a Patron](https://img.shields.io/badge/Become_Patron-Support_me_on_Patreon-blue.svg?style=flat-square\&logo=patreon\&color=e64413)](https://www.patreon.com/alexrogalskiy) [![Buy Me A Coffee](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=buy%20me%20a%20coffee)](https://www.buymeacoffee.com/AlexRogalskiy) [![KoFi](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=ko-fi)](https://ko-fi.com/alexrogalskiy) -## 👨‍👨‍👧‍👦 _Acknowledgement_ +## 👨‍👨‍👧‍👦 *Acknowledgement* [![Stargazers repo roster for @AlexRogalskiy/android-patterns](https://reporoster.com/stars/AlexRogalskiy/android-patterns)][stars] -## 📎 _OpenGraph Card_ +## 📎 *OpenGraph Card*

OpenGraph card

-## 🔥 _Feeds and Podcasts_ +## 🔥 *Feeds and Podcasts* -### _Reddit posts_ +### *Reddit posts* + - [Google Play Console shows crashes of forked apps](https://www.reddit.com/r/androiddev/comments/mvplsg/google_play_console_shows_crashes_of_forked_apps/) -- [[Open source] Simple Calculator](https://www.reddit.com/r/androiddev/comments/mvotoq/open_source_simple_calculator/) +- [\[Open source\] Simple Calculator](https://www.reddit.com/r/androiddev/comments/mvotoq/open_source_simple_calculator/) - [How to setup NDK in IntelliJ ultimate on Mac m1?](https://www.reddit.com/r/androiddev/comments/mvoqcv/how_to_setup_ndk_in_intellij_ultimate_on_mac_m1/) -- [Android 12 deprecate MediaStore Playlists (Is there any captain still controlling the ship?)](https://www.reddit.com/r/androiddev/comments/mvmuin/android_12_deprecate_mediastore_playlists_is/) -- [Android 12 Developer Preview 3](https://www.reddit.com/r/androiddev/comments/mvkjc9/android_12_developer_preview_3/) +- [Android 12 deprecate MediaStore Playlists (Is there any captain still controlling the ship?)](https://www.reddit.com/r/androiddev/comments/mvmuin/android\_12\_deprecate_mediastore_playlists_is/) +- [Android 12 Developer Preview 3](https://www.reddit.com/r/androiddev/comments/mvkjc9/android\_12\_developer_preview\_3/) - [Does the developer need to detect and prevent click fraud on their ads or is this handled more by google?](https://www.reddit.com/r/androiddev/comments/mvj7ya/does_the_developer_need_to_detect_and_prevent/) - [Lazy and fluent syntactic sugar of Kotlin for initializing Android lifecycle-aware property.](https://www.reddit.com/r/androiddev/comments/mvi5xt/lazy_and_fluent_syntactic_sugar_of_kotlin_for/) - [Tools to help developers provide a safer content experience](https://www.reddit.com/r/androiddev/comments/mvhfae/tools_to_help_developers_provide_a_safer_content/) - [Total remake of my game - New game or update?](https://www.reddit.com/r/androiddev/comments/mvghgl/total_remake_of_my_game_new_game_or_update/) - [Livedata giving null](https://www.reddit.com/r/androiddev/comments/mvg0pw/livedata_giving_null/) + -### _InfoWorld posts_ +### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -268,21 +273,25 @@ Like -### _Android Arsenal posts_ +### *Android Arsenal posts* + - [Screenshot Detection](http://android-arsenal.com/details/1/8241) - [AndroidResourceManager](http://android-arsenal.com/details/1/8240) - [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) @@ -308,11 +319,13 @@ Like -### _Gizmodo posts_ +### *Gizmodo posts* + - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) - [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) @@ -338,11 +353,13 @@ Like -### _Infinum posts_ +### *Infinum posts* + - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) + ---- +*** + +[![forthebadge](https://img.shields.io/badge/made%20with-%20markdown-C1282D.svg?logo=markdown\&style=for-the-badge)](https://www.markdownguide.org/) +[![forthebadge](https://img.shields.io/badge/powered%20by-%20gitbook-7116FB.svg?logo=gitbook\&style=for-the-badge)](https://www.gitbook.com/) +[![forthebadge](https://img.shields.io/badge/build%20with-%20%E2%9D%A4-B6FF9B.svg?logo=heart\&style=for-the-badge)](https://forthebadge.com/) + +[repo]: https://github.com/AlexRogalskiy/android-patterns + +[tags]: https://github.com/AlexRogalskiy/android-patterns/tags + +[issues]: https://github.com/AlexRogalskiy/android-patterns/issues + +[pulls]: https://github.com/AlexRogalskiy/android-patterns/pulls + +[wiki]: https://github.com/AlexRogalskiy/android-patterns/wiki -[![forthebadge](https://img.shields.io/badge/made%20with-%20markdown-C1282D.svg?logo=markdown&style=for-the-badge)](https://www.markdownguide.org/) -[![forthebadge](https://img.shields.io/badge/powered%20by-%20gitbook-7116FB.svg?logo=gitbook&style=for-the-badge)](https://www.gitbook.com/) -[![forthebadge](https://img.shields.io/badge/build%20with-%20%E2%9D%A4-B6FF9B.svg?logo=heart&style=for-the-badge)](https://forthebadge.com/) +[stars]: https://github.com/AlexRogalskiy/android-patterns/stargazers +[contributors]: https://github.com/AlexRogalskiy/android-patterns/graphs/contributors - [repo]: https://github.com/AlexRogalskiy/android-patterns - [tags]: https://github.com/AlexRogalskiy/android-patterns/tags - [issues]: https://github.com/AlexRogalskiy/android-patterns/issues - [pulls]: https://github.com/AlexRogalskiy/android-patterns/pulls - [wiki]: https://github.com/AlexRogalskiy/android-patterns/wiki - [stars]: https://github.com/AlexRogalskiy/android-patterns/stargazers - [contributors]: https://github.com/AlexRogalskiy/android-patterns/graphs/contributors - [docs]: https://alexander-rogalsky.gitbook.io/android-patterns/ +[docs]: https://alexander-rogalsky.gitbook.io/android-patterns/ diff --git a/changelog.config.js b/changelog.config.js new file mode 100644 index 0000000000..02d357baa7 --- /dev/null +++ b/changelog.config.js @@ -0,0 +1,60 @@ +module.exports = { + disableEmoji: false, + list: ['test', 'feat', 'fix', 'chore', 'docs', 'refactor', 'style', 'ci', 'perf'], + maxMessageLength: 64, + minMessageLength: 3, + questions: ['type', 'scope', 'subject', 'body', 'breaking', 'issues', 'lerna'], + scopes: [], + types: { + chore: { + description: 'Build process or auxiliary tool changes', + emoji: '🤖', + value: 'chore', + }, + ci: { + description: 'CI related changes', + emoji: '🎡', + value: 'ci', + }, + docs: { + description: 'Documentation only changes', + emoji: '✏️', + value: 'docs', + }, + feat: { + description: 'A new feature', + emoji: '🎸', + value: 'feat', + }, + fix: { + description: 'A bug fix', + emoji: '🐛', + value: 'fix', + }, + perf: { + description: 'A code change that improves performance', + emoji: '⚡️', + value: 'perf', + }, + refactor: { + description: 'A code change that neither fixes a bug or adds a feature', + emoji: '💡', + value: 'refactor', + }, + release: { + description: 'Create a release commit', + emoji: '🏹', + value: 'release', + }, + style: { + description: 'Markup, white-space, formatting, missing semi-colons...', + emoji: '💄', + value: 'style', + }, + test: { + description: 'Adding missing tests', + emoji: '💍', + value: 'test', + }, + }, +} diff --git a/docs/README.md b/docs/README.md index f74cd0ba93..24be635cb3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,9 +1,9 @@ # Getting Started -## _Installation_ +## *Installation* -For full documentation visit [https://docs.gitbook.com/](https://docs.gitbook.com/). +For full documentation visit . -## _Description_ +## *Description* -With the help of _**GitBook**_ you can create and develop documentation on Android Design patterns. \ No newline at end of file +With the help of ***GitBook*** you can create and develop documentation on Android Design patterns. diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 1bc2aa438f..2f3543113d 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -1,20 +1,20 @@ # Table of contents -* [Getting Started](README.md) -* [Contributing](contributing/README.md) - * [Contributing](contributing/info.md) -* [User Guide](user-guide/README.md) - * [Upgrading](user-guide/upgrade.md) - * [Troubleshooting](user-guide/troubleshooting.md) - * [Getting Started](user-guide/getting-started.md) - * [FAQ](user-guide/faq.md) - * [Changelog](user-guide/changelog.md) - * [Code Owners](user-guide/code_owners.md) - * [Code of Conduct](user-guide/code_of_conduct.md) - * [Dependency Management](user-guide/dependency.md) -* [Links](links/README.md) - * [Resources](links/info.md) -* [Units](units/README.md) - * [Scenarios](units/scenarios.md) - * [Use Cases](units/use-cases.md) - * [Design Patterns](units/design-patterns.md) \ No newline at end of file +- [Getting Started](README.md) +- [Contributing](contributing/README.md) + - [Contributing](contributing/info.md) +- [User Guide](user-guide/README.md) + - [Upgrading](user-guide/upgrade.md) + - [Troubleshooting](user-guide/troubleshooting.md) + - [Getting Started](user-guide/getting-started.md) + - [FAQ](user-guide/faq.md) + - [Changelog](user-guide/changelog.md) + - [Code Owners](user-guide/code_owners.md) + - [Code of Conduct](user-guide/code_of_conduct.md) + - [Dependency Management](user-guide/dependency.md) +- [Links](links/README.md) + - [Resources](links/info.md) +- [Units](units/README.md) + - [Scenarios](units/scenarios.md) + - [Use Cases](units/use-cases.md) + - [Design Patterns](units/design-patterns.md) diff --git a/docs/_config.yml b/docs/_config.yml index 34c0db1af6..7b70a7ded4 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -4,7 +4,9 @@ permalink: pretty baseurl: https://github.com/AlexRogalskiy/android-patterns title: Android Design Patterns -description: Explores different architectural concepts and design principles for Android applications +description: + Explores different architectural concepts and design principles for Android + applications author: Alexander Rogalskiy diff --git a/docs/contributing/README.md b/docs/contributing/README.md index 8ba1f31cb1..854139a319 100644 --- a/docs/contributing/README.md +++ b/docs/contributing/README.md @@ -1,2 +1 @@ # Contributing - diff --git a/docs/contributing/info.md b/docs/contributing/info.md index 3f4cc12f16..2db93a9e00 100644 --- a/docs/contributing/info.md +++ b/docs/contributing/info.md @@ -8,7 +8,7 @@ Following these guidelines helps to communicate that you respect the time of the As for everything else in the project, the contributions to IceCore Hashids are governed by our [Code of Conduct](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior via [email](mailto:development@nullables.io). -## _Getting Started_ +## *Getting Started* ObjectMappers is an open source project and we love to receive contributions from the community! There are many ways to contribute, from [writing- and improving documentation and tutorials](info.md), [reporting bugs](info.md#bug-reports), [submitting enhancement suggestions](info.md#enhancement-suggestions) which can be incorporated into IceCore Hashids itself by [submitting a pull request](info.md#pull-requests). @@ -16,167 +16,166 @@ The project development workflow and process uses [GitHub Issues](https://github Before you continue with this contribution guideslines we highly recommend to read the awesome GitHub [Open Source Guide](https://opensource.guide) on how to [making open source contributions](https://opensource.guide/how-to-contribute). -### _Bug Reports_ +### *Bug Reports* -A bug is a _demonstrable problem_ that is caused by the code in the repository. This section guides you through submitting a bug report for IceCore Hashids. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior and find related reports. +A bug is a *demonstrable problem* that is caused by the code in the repository. This section guides you through submitting a bug report for IceCore Hashids. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior and find related reports. **Do NOT report security vulnerabilities in public issues!** Please contact the core team members and the project owner in a responsible manner by [email](mailto:development@nullables.io) only. We will assess the issue as soon as possible on a best-effort basis and will give you an estimate for when we have a fix and release available for an eventual public disclosure. -* **Use the** [**GitHub Issues search**](https://github.com/AlexRogalskiy/object-mappers-playground/issues) — check if the issue has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. If you find a closed issue that seems like it is the same thing that you are experiencing, open a new issue and include a link to the original issue in the body of your new one. -* **Check if the issue has been fixed** — try to reproduce it using the [latest version](https://github.com/AlexRogalskiy/object-mappers-playground/releases/latest) and [`develop`](https://github.com/AlexRogalskiy/object-mappers-playground/tree/develop) branch in the repository. -* **Isolate the problem** — ideally create a [MCVE](info.md#mcve). +- **Use the** [**GitHub Issues search**](https://github.com/AlexRogalskiy/object-mappers-playground/issues) — check if the issue has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one. If you find a closed issue that seems like it is the same thing that you are experiencing, open a new issue and include a link to the original issue in the body of your new one. +- **Check if the issue has been fixed** — try to reproduce it using the [latest version](https://github.com/AlexRogalskiy/object-mappers-playground/releases/latest) and [`develop`](https://github.com/AlexRogalskiy/object-mappers-playground/tree/develop) branch in the repository. +- **Isolate the problem** — ideally create a [MCVE](info.md#mcve). When you are creating a bug report, please provide as much detail and context as possible. Fill out [the required template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/ISSUE_TEMPLATE.md), the information it asks for helps maintainers to reproduce the problem and resolve issues faster. -* **Use a clear and descriptive title** for the issue to identify the problem. -* **Describe the exact steps which reproduce the problem** in as many details as possible. -* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. -* **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets. If you are providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or [attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests). +- **Use a clear and descriptive title** for the issue to identify the problem. +- **Describe the exact steps which reproduce the problem** in as many details as possible. +- **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. +- **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets. If you are providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or [attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests). If possible please provide more context by answering these questions: -* **Did the problem start happening recently** \(e.g. after updating to a new version of IceCore Hashids\) or was this always a problem? If the problem started happening recently, **can you reproduce the problem in an older version of IceCore Hashids**? What is the most recent version in which the problem does not happen? -* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. +- **Did the problem start happening recently** (e.g. after updating to a new version of IceCore Hashids) or was this always a problem? If the problem started happening recently, **can you reproduce the problem in an older version of IceCore Hashids**? What is the most recent version in which the problem does not happen? +- **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. Please include details about your configuration and environment: -* What is the version of IceCore Hashids you are using? -* What is the name and the version of the OS you're using? - * Have you tried to reproduce it on different OS environments and if yes is the behavior the same for all? -* Which Java JDK/JRE distribution and version are you using? \(_Oracle_, _OpenJDK_, ...\) -* Are you running the project with your IDE or Maven? - * Are you using any additional CLI arguments for Java or Maven? - * What is the name and the version of the IDE you're using? +- What is the version of IceCore Hashids you are using? +- What is the name and the version of the OS you're using? + - Have you tried to reproduce it on different OS environments and if yes is the behavior the same for all? +- Which Java JDK/JRE distribution and version are you using? (*Oracle*, *OpenJDK*, ...) +- Are you running the project with your IDE or Maven? + - Are you using any additional CLI arguments for Java or Maven? + - What is the name and the version of the IDE you're using? -### _Enhancement Suggestions_ +### *Enhancement Suggestions* This section guides you through submitting an enhancement suggestion, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion and find related suggestions. -* **Use the** [**GitHub Issues search**](https://github.com/AlexRogalskiy/object-mappers-playground/issues) — check if this enhancement has already been suggested. If it has **and the issue is still open**, add your additions as comment to the existing issue instead of opening a new one. -* **Check if the enhancement has already been implemented** — use the [latest version](https://github.com/AlexRogalskiy/object-mappers-playground/releases/latest) and [`develop`](https://github.com/AlexRogalskiy/object-mappers-playground/tree/develop) branch to ensure that the feature or improvement has not already been added. -* **Provide a reduced show case** — ideally create a [MCVE](info.md#mcve). +- **Use the** [**GitHub Issues search**](https://github.com/AlexRogalskiy/object-mappers-playground/issues) — check if this enhancement has already been suggested. If it has **and the issue is still open**, add your additions as comment to the existing issue instead of opening a new one. +- **Check if the enhancement has already been implemented** — use the [latest version](https://github.com/AlexRogalskiy/object-mappers-playground/releases/latest) and [`develop`](https://github.com/AlexRogalskiy/object-mappers-playground/tree/develop) branch to ensure that the feature or improvement has not already been added. +- **Provide a reduced show case** — ideally create a [MCVE](info.md#mcve). Before creating enhancement suggestions, please check if your idea fits with the scope and provide as much detail and context as possible using a structured layout like the [the issue template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/ISSUE_TEMPLATE.md). -* **Use a clear and descriptive title** for the issue to identify the suggestion. -* **Provide a step-by-step description of the suggested enhancement** in as many details as possible and provide use-cases. -* **Provide examples to demonstrate the need of an enhancement**. Include copy/pasteable snippets which you use in those examples, use [Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or [attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests). -* **Describe the current behavior** and **explain which behavior you expected to see instead** and why. -* **Explain why this enhancement would be useful** to most IceCore Hashids users. -* **List some other libraries where this enhancement exists.** +- **Use a clear and descriptive title** for the issue to identify the suggestion. +- **Provide a step-by-step description of the suggested enhancement** in as many details as possible and provide use-cases. +- **Provide examples to demonstrate the need of an enhancement**. Include copy/pasteable snippets which you use in those examples, use [Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or [attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests). +- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. +- **Explain why this enhancement would be useful** to most IceCore Hashids users. +- **List some other libraries where this enhancement exists.** -### _Pull Requests_ +### *Pull Requests* This section guides you through submitting an pull request. Following these guidelines helps maintainers and the community to better understand your code. -**Please** [**suggest an enhancement**](info.md#enhancement-suggestions) **or** [**report a bug**](info.md#bug-reports) **first before embarking on any significant pull request** \(e.g. implementing features, refactoring code, fixing a bug\), otherwise you risk spending a lot of time working on something that the core team members and project owner might not want to merge into the project. +**Please** [**suggest an enhancement**](info.md#enhancement-suggestions) **or** [**report a bug**](info.md#bug-reports) **first before embarking on any significant pull request** (e.g. implementing features, refactoring code, fixing a bug), otherwise you risk spending a lot of time working on something that the core team members and project owner might not want to merge into the project. When you are submitting an pull request, please provide as much detail and context as possible. Fill out [the required template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/PULL_REQUEST_TEMPLATE.md) to help maintainers to understand your submitted code. -* **Use a clear and descriptive title for the pull request** -* **Do not include issue numbers in the pull request title** but fill in the metadata section at the top of the [required pull request template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/PULL_REQUEST_TEMPLATE.md) making use of the [GitHub issue keywords](https://help.github.com/articles/closing-issues-using-keywords) to link to specific [enhancement suggestions](info.md#enhancement-suggestions) or [bug reports](info.md#bug-reports). -* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the change. -* **Make sure to follow the** [**Java**](info.md#java-code-style) **and** [**Git commit message**](info.md#git-commit-messages) **style guides**. -* **Remain focused in scope and avoid to include unrelated commits**. -* **Features and improvements should always be accompanied with tests and documentation**. If the pull request improves the performance consider to include a benchmark test, optimally including a chart. -* **Lint and test before submitting the pull request**. -* **Make sure to create the pull request from a** [**topic branch**](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows). +- **Use a clear and descriptive title for the pull request** +- **Do not include issue numbers in the pull request title** but fill in the metadata section at the top of the [required pull request template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/PULL_REQUEST_TEMPLATE.md) making use of the [GitHub issue keywords](https://help.github.com/articles/closing-issues-using-keywords) to link to specific [enhancement suggestions](info.md#enhancement-suggestions) or [bug reports](info.md#bug-reports). +- **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the change. +- **Make sure to follow the** [**Java**](info.md#java-code-style) **and** [**Git commit message**](info.md#git-commit-messages) **style guides**. +- **Remain focused in scope and avoid to include unrelated commits**. +- **Features and improvements should always be accompanied with tests and documentation**. If the pull request improves the performance consider to include a benchmark test, optimally including a chart. +- **Lint and test before submitting the pull request**. +- **Make sure to create the pull request from a** [**topic branch**](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows). **All pull requests must be send against the `develop` branch** - Please read the [branch organization](info.md#branch-organization) section below for details about the branching model. -### _Documentations_ +### *Documentations* IceCore Hashids has two main sets of documentation: the docs and guides, which helps users to learn about the project, and the API, which serves as a reference. You can help improve the docs and guides by making them more coherent, consistent or readable, adding missing information, correcting factual errors, fixing typos, bringing them up to date when there are differences to the latest version. This can be done by submitting a [enhancement suggestion](info.md#enhancement-suggestions) and then opening a [pull request](info.md#pull-requests) for it. -## _Branch Organization_ +## *Branch Organization* The IceCore Hashids uses the [gitflow](http://nvie.com/posts/a-successful-git-branching-model) branching model. The repository consists of two core branches with an infinite development lifecycle: -* `master` - The source code of `HEAD` always reflects a tagged release version. -* `develop` - The default branch where the source code of `HEAD` always reflects a state with the latest development state. +- `master` - The source code of `HEAD` always reflects a tagged release version. +- `develop` - The default branch where the source code of `HEAD` always reflects a state with the latest development state. -**All** [**pull requests**](info.md#pull-requests) **for the limited development lifecycle** _**story**_**/**_**topic**_ **branches must be send against the `develop` branch**. +**All** [**pull requests**](info.md#pull-requests) **for the limited development lifecycle** ***story***\*\*/\*\****topic*** **branches must be send against the `develop` branch**. -## _How else can I help?_ +## *How else can I help?* -### _Improve Issues_ +### *Improve Issues* Some issues are created with missing information, not reproducible, or plain invalid. You can help to make it easier for maintainer to understand and resolve them faster. since handling issues takes a lot of time that could rather spend on writing code. -### _Give Feedback On Issues and Pull Requests_ +### *Give Feedback On Issues and Pull Requests* We're always looking for more opinions on discussions in issues and pull request reviews which is a good opportunity to influence the future direction of IceCore Hashids. The [question](https://github.com/AlexRogalskiy/object-mappers-playground/labels/question) issue label is a good place to find ongoing discussions and questions. -## _Styleguides_ +## *Styleguides* Every major open source project has its own style guide, a set of standards and conventions for the writing and design of code, documentations and Git commit messages. It is much easier to understand a large codebase when all the code in it is in a consistent style. A style guide establishes and enforces style to improve the intelligibility and communication within the project community. It ensures consistency and enforces best practice in usage and language composition. -### _Java Code Style_ +### *Java Code Style* -IceCore Hasids adheres to the \[Nullables Studio Java Style Guide\]\[styleguide-java-github\]. +IceCore Hasids adheres to the \[Nullables Studio Java Style Guide]\[styleguide-java-github]. -\[!\[\]\[styleguide-java-badge\]\]\[styleguide-java-github\] +\[!\[]\[styleguide-java-badge]]\[styleguide-java-github] -### _Git Commit Messages_ +### *Git Commit Messages* -A well-crafted Git commit message is the best way to communicate _context_ about a change to the maintainers. The code will tell what changed, but only the commit message can properly tell why. Re-establishing the context of a piece of code is wasteful. We can't avoid it completely, so our efforts should go to reducing it as much as possible. +A well-crafted Git commit message is the best way to communicate *context* about a change to the maintainers. The code will tell what changed, but only the commit message can properly tell why. Re-establishing the context of a piece of code is wasteful. We can't avoid it completely, so our efforts should go to reducing it as much as possible. -IceCore Hasids adheres to the \[Nullables Studio Git Style Guide\]\[styleguide-git-github\]. +IceCore Hasids adheres to the \[Nullables Studio Git Style Guide]\[styleguide-git-github]. -\[!\[\]\[styleguide-git-badge\]\]\[styleguide-git-github\] +\[!\[]\[styleguide-git-badge]]\[styleguide-git-github] The style guide assumes that you are familiar with the [gitflow](http://nvie.com/posts/a-successful-git-branching-model) branching model. -## _MCVE_ +## *MCVE* A Minimal, Complete, and Verifiable Example. When [reporting a bug](info.md#bug-reports), sometimes even when [suggestig a enhancement](info.md#enhancement-suggestions), the issue can be processed faster if you provide code for reproduction. That code should be… -* …Minimal – Use as little code as possible that still produces the same behavior -* …Complete – Provide all parts needed to reproduce the behavior -* …Verifiable – Test the code you're about to provide to make sure it reproduces the behavior +- …Minimal – Use as little code as possible that still produces the same behavior +- …Complete – Provide all parts needed to reproduce the behavior +- …Verifiable – Test the code you're about to provide to make sure it reproduces the behavior -A MCVE is a common practice like on [Stack Overflow](https://stackoverflow.com/help/mcve) and sometimes it is also called [SSCCE](http://sscce.org), a _Short, Self Contained, Correct \(Compilable\), Example_. +A MCVE is a common practice like on [Stack Overflow](https://stackoverflow.com/help/mcve) and sometimes it is also called [SSCCE](http://sscce.org), a *Short, Self Contained, Correct (Compilable), Example*. The recommended way for GitHub based projects is to create it as [Gist](https://gist.github.com) or new repository, but of course you can [attach it to issues and pull requests as files](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests), use any free code paste- or file hosting service or paste the code in [Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) into the issue. -### _Minimal_ +### *Minimal* The more code there is to go through, the less likely developers can understand your enhancement or find the bug. Streamline your example in one of two ways: -* **Restart from scratch**. Create new code, adding in only what is needed to demonstrate the behavior and is also useful if you can't post the original code publicly for legal or ethical reasons. -* **Divide and conquer**. When you have a small amount of code, but the source of the bug is entirely unclear, start removing code a bit at a time until the problem disappears – then add the last part back and document this behavior to help developers to trace- and debug faster. +- **Restart from scratch**. Create new code, adding in only what is needed to demonstrate the behavior and is also useful if you can't post the original code publicly for legal or ethical reasons. +- **Divide and conquer**. When you have a small amount of code, but the source of the bug is entirely unclear, start removing code a bit at a time until the problem disappears – then add the last part back and document this behavior to help developers to trace- and debug faster. -#### _Minimal and readable_ +#### *Minimal and readable* Minimal does not mean terse – don't sacrifice communication to brevity. Use consistent naming and indentation following the [styleguide](info.md#styleguides), and include comments if needed to explain portions of the code. -### _Complete_ +### *Complete* Make sure all resources and code necessary to reproduce the behavior is included. The problem might not be in the part you suspect it is, but another part entirely. -### _Verifiable_ +### *Verifiable* -To entirely understand your enhancement or bug report, developers will need to verify that it _exists_: +To entirely understand your enhancement or bug report, developers will need to verify that it *exists*: -* **Follow the contribution guidelines regarding the description and details**. Without information developers won't be able to understand and reproduce the behavior. -* **Eliminate any issues that aren't relevant**. Ensure that there are no compile-time errors. -* **Make sure that the example actually reproduces the problem**. Sometimes the bug gets fixed inadvertently or unconsciously while composing the example or does not occur when running on fresh machine environment. +- **Follow the contribution guidelines regarding the description and details**. Without information developers won't be able to understand and reproduce the behavior. +- **Eliminate any issues that aren't relevant**. Ensure that there are no compile-time errors. +- **Make sure that the example actually reproduces the problem**. Sometimes the bug gets fixed inadvertently or unconsciously while composing the example or does not occur when running on fresh machine environment. -## _Versioning_ +## *Versioning* -IceCore Hashids follows the \[Arctic Versioning Specification\]\[arcver\] \(ArcVer\) which is a lightweight and fully compatible derivative of [Semantic Versioning](http://semver.org) \(SemVer\). We release patch versions for bugfixes, minor versions for enhancements like new features and improvements, and major versions for any backwards incompatible changes. Deprecation warnings are introduced for breaking changes in a minor version so that users learn about the upcoming changes and migrate their code in advance. +IceCore Hashids follows the \[Arctic Versioning Specification]\[arcver] (ArcVer) which is a lightweight and fully compatible derivative of [Semantic Versioning](http://semver.org) (SemVer). We release patch versions for bugfixes, minor versions for enhancements like new features and improvements, and major versions for any backwards incompatible changes. Deprecation warnings are introduced for breaking changes in a minor version so that users learn about the upcoming changes and migrate their code in advance. Every significant change is documented in the [changelog](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/CHANGELOG.md). -## _Credits_ +## *Credits* Thanks for the inspirations and attributions to GitHub's [Open Source Guides](https://opensource.guide) and various contribution guides of large open source projects like [Atom](https://github.com/atom/atom/blob/master/CONTRIBUTING.md), [React](https://facebook.github.io/react/contributing/how-to-contribute.html) and [Ruby on Rails](http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html). - diff --git a/docs/links/README.md b/docs/links/README.md index 708c5acb59..17622ae080 100644 --- a/docs/links/README.md +++ b/docs/links/README.md @@ -1,2 +1 @@ # Links - diff --git a/docs/links/info.md b/docs/links/info.md index 70ee4f3d75..92995f17cf 100644 --- a/docs/links/info.md +++ b/docs/links/info.md @@ -1,6 +1,5 @@ # Resources -## _Useful Links and Materials_ - -* [**Java Bean Mappers**](https://www.frank-rahn.de/java-bean-mapper/) +## *Useful Links and Materials* +- [**Java Bean Mappers**](https://www.frank-rahn.de/java-bean-mapper/) diff --git a/docs/units/README.md b/docs/units/README.md index 876cfb5f40..a6405361b6 100644 --- a/docs/units/README.md +++ b/docs/units/README.md @@ -1,2 +1 @@ # Units - diff --git a/docs/units/design-patterns.md b/docs/units/design-patterns.md index bd69e2669d..c8fdb56e27 100644 --- a/docs/units/design-patterns.md +++ b/docs/units/design-patterns.md @@ -15,9 +15,10 @@ Super-powers are granted randomly so please submit an issue if you're not happy Once you're strong enough, save the world: {% code title="hello.sh" %} + ```bash # Ain't no code for that yet, sorry echo 'You got to trust me on this, I saved the world' ``` -{% endcode %} +{% endcode %} diff --git a/docs/units/scenarios.md b/docs/units/scenarios.md index 6fdf455bf3..13063eb25d 100644 --- a/docs/units/scenarios.md +++ b/docs/units/scenarios.md @@ -15,9 +15,10 @@ Super-powers are granted randomly so please submit an issue if you're not happy Once you're strong enough, save the world: {% code title="hello.sh" %} + ```bash # Ain't no code for that yet, sorry echo 'You got to trust me on this, I saved the world' ``` -{% endcode %} +{% endcode %} diff --git a/docs/units/use-cases.md b/docs/units/use-cases.md index 2239a6eb39..9379e1bb00 100644 --- a/docs/units/use-cases.md +++ b/docs/units/use-cases.md @@ -15,9 +15,10 @@ Super-powers are granted randomly so please submit an issue if you're not happy Once you're strong enough, save the world: {% code title="hello.sh" %} + ```bash # Ain't no code for that yet, sorry echo 'You got to trust me on this, I saved the world' ``` -{% endcode %} +{% endcode %} diff --git a/docs/user-guide/README.md b/docs/user-guide/README.md index ba623ff35b..cd3d452278 100644 --- a/docs/user-guide/README.md +++ b/docs/user-guide/README.md @@ -1,2 +1 @@ # User Guide - diff --git a/docs/user-guide/changelog.md b/docs/user-guide/changelog.md index a9e526c8f1..aa46d47119 100644 --- a/docs/user-guide/changelog.md +++ b/docs/user-guide/changelog.md @@ -1,18 +1,17 @@ # Changelog -## _15.0.0 - 2042-12-03_ +## *15.0.0 - 2042-12-03* -### _Fixed_ +### *Fixed* -* Removed humans, they weren't doing fine with animals. +- Removed humans, they weren't doing fine with animals. -### _Changed_ +### *Changed* -* Animals are now super cute, all of them. +- Animals are now super cute, all of them. -## _14.0.0 - 2042-10-06_ +## *14.0.0 - 2042-10-06* -### _Added_ - -* Introduced animals into the world, we believe they're going to be a neat addition. +### *Added* +- Introduced animals into the world, we believe they're going to be a neat addition. diff --git a/docs/user-guide/code_of_conduct.md b/docs/user-guide/code_of_conduct.md index f21703c653..e5ffbae832 100644 --- a/docs/user-guide/code_of_conduct.md +++ b/docs/user-guide/code_of_conduct.md @@ -4,42 +4,42 @@ All members, committers and volunteers in this project are required to act accor If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact us via [email](mailto:development@nullables.io). Your reports will be taken seriously and not dismissed or argued with. -## _What we believe in and how we act_ +## *What we believe in and how we act* -* In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. We welcome people regardless of these or other attributes. -* Our community is based on mutual respect, tolerance, and encouragement. -* We believe that a diverse community where people treat each other with respect is stronger, more vibrant and has more potential contributors and more sources for ideas. We aim for more diversity. -* We are kind, welcoming and courteous to everyone. -* We are respectful of others, their positions, their skills, their commitments and their efforts. -* We are attentive in our communications, whether in person or online, and we are tactful and respectful when approaching differing views and experiences. -* We are aware that language shapes reality. Thus, we use inclusive, gender-neutral language in the documents we provide and when we talk to people. When referring to a group of people, we aim to use gender-neutral terms like "team", "folks" or "everyone". [1](https://modelviewculture.com/pieces/gendered-language-feature-or-bug-in-software-documentation) -* We respect that people have differences of opinion and criticize constructively. +- In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. We welcome people regardless of these or other attributes. +- Our community is based on mutual respect, tolerance, and encouragement. +- We believe that a diverse community where people treat each other with respect is stronger, more vibrant and has more potential contributors and more sources for ideas. We aim for more diversity. +- We are kind, welcoming and courteous to everyone. +- We are respectful of others, their positions, their skills, their commitments and their efforts. +- We are attentive in our communications, whether in person or online, and we are tactful and respectful when approaching differing views and experiences. +- We are aware that language shapes reality. Thus, we use inclusive, gender-neutral language in the documents we provide and when we talk to people. When referring to a group of people, we aim to use gender-neutral terms like "team", "folks" or "everyone". [1](https://modelviewculture.com/pieces/gendered-language-feature-or-bug-in-software-documentation) +- We respect that people have differences of opinion and criticize constructively. If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact us via [email](mailto:development@nullables.io). Your reports will be taken seriously and not dismissed or argued with. -## _Unacceptable Behavior_ +## *Unacceptable Behavior* -* Do not be mean or rude. -* Do not discriminate against anyone. -* Sexism and racism of any kind \(including sexist and racist "jokes"\), demeaning or insulting behaviour and harassment are seen as direct violations to this Code of Conduct. Harassment includes offensive verbal comments related to age, body size, culture, ethnicity, gender expression, gender identity, level of experience, nationality, personal ability or disability, physical appearance, physical or mental difference, race, religion, set of skills, sexual orientation, socio-economic status, and subculture. Harassment also includes sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, inappropriate physical contact, and unwelcome sexual attention. -* Respect that some individuals and cultures consider the casual use of profanity offensive and off-putting. -* Derailing, tone arguments and otherwise playing on people's desires to be nice are not welcome, especially in discussions about violations to this Code of Conduct. -* Please avoid unstructured critique. -* Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour is not welcome. -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- Do not be mean or rude. +- Do not discriminate against anyone. +- Sexism and racism of any kind (including sexist and racist "jokes"), demeaning or insulting behaviour and harassment are seen as direct violations to this Code of Conduct. Harassment includes offensive verbal comments related to age, body size, culture, ethnicity, gender expression, gender identity, level of experience, nationality, personal ability or disability, physical appearance, physical or mental difference, race, religion, set of skills, sexual orientation, socio-economic status, and subculture. Harassment also includes sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, inappropriate physical contact, and unwelcome sexual attention. +- Respect that some individuals and cultures consider the casual use of profanity offensive and off-putting. +- Derailing, tone arguments and otherwise playing on people's desires to be nice are not welcome, especially in discussions about violations to this Code of Conduct. +- Please avoid unstructured critique. +- Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour is not welcome. +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting -## _Responsibilities_ +## *Responsibilities* Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. -## _Enforcement_ +## *Enforcement* Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project core team members or owner via [email](mailto:development@nullables.io). The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. -## _Consequences for Violations_ +## *Consequences for Violations* If a participant engages in any behaviour violating this Code of Conduct, the core team members and project owner of this project may take any action they deem appropriate, including warning the offender or expulsion from the project, exclusion from any interaction and loss of all rights in this project. @@ -47,9 +47,8 @@ Project maintainers have the right and responsibility to remove, edit, or reject Decisions about consequences of violations of this Code of Conduct are made by this projects core team members and project owner as named above and will not be discussed with the person responsible for the violation. -## _Scope_ +## *Scope* This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. Thanks for the inspirations and attributions to GitHub's [Open Source Guides](https://opensource.guide), [Hoodie's Code of Conduct](http://hood.ie/code-of-conduct) and the [Contributor Covenant Version 1.4](http://contributor-covenant.org/version/1/4/). - diff --git a/docs/user-guide/code_owners.md b/docs/user-guide/code_owners.md index 4bd304fca0..11f74d37b5 100644 --- a/docs/user-guide/code_owners.md +++ b/docs/user-guide/code_owners.md @@ -2,12 +2,11 @@ > **Configuration for the GitHub feature to automatically request reviews from the code owners when a pull request changes any owned files.** -## _References_ +## *References* -* [https://github.com/blog/2392-introducing-code-owners](https://github.com/blog/2392-introducing-code-owners) -* [https://help.github.com/articles/about-codeowners](https://help.github.com/articles/about-codeowners) +- +- -## _Ownership_ - -* [https://github.com/AlexRogalskiy/](https://github.com/AlexRogalskiy/) +## *Ownership* +- diff --git a/docs/user-guide/dependency.md b/docs/user-guide/dependency.md index a6c0d1a574..17950479ab 100644 --- a/docs/user-guide/dependency.md +++ b/docs/user-guide/dependency.md @@ -1,6 +1,6 @@ # Dependency Management -## _Maven_ +## *Maven* ObjectMappers playground dependency can be simply acquired by adding the following code snippet to your `pom.xml`: @@ -10,9 +10,8 @@ ObjectMappers playground dependency can be simply acquired by adding the followi 0.1.0-SNAPSHOT ``` -## _Gradle_ +## *Gradle* ```groovy compile 'io.nullables.api.playground:objectmappers-all:0.1.0-SNAPSHOT' ``` - diff --git a/docs/user-guide/faq.md b/docs/user-guide/faq.md index 35c594fbff..cc383e57b1 100644 --- a/docs/user-guide/faq.md +++ b/docs/user-guide/faq.md @@ -1,10 +1,9 @@ # FAQ -## _Can I become who I want to be?_ +## *Can I become who I want to be?* That's a tough question but thankfully, our team is on it. Please bear with us while we're investigating. -## _Have you had a chance to answer the previous question?_ +## *Have you had a chance to answer the previous question?* Yes, after a few months we finally found the answer. Sadly, Mike is on vacations right now so I'm afraid we are not able to provide the answer at this point. - diff --git a/docs/user-guide/getting-started.md b/docs/user-guide/getting-started.md index b9102206a0..59a435c010 100644 --- a/docs/user-guide/getting-started.md +++ b/docs/user-guide/getting-started.md @@ -1,6 +1,5 @@ # Getting Started -## _Basic Usage_ +## *Basic Usage* Please see [./index.md](https://github.com/AlexRogalskiy/object-mappers-playground/blob/master/docs/index.md) - diff --git a/docs/user-guide/troubleshooting.md b/docs/user-guide/troubleshooting.md index b24d649c61..88c2b6044e 100644 --- a/docs/user-guide/troubleshooting.md +++ b/docs/user-guide/troubleshooting.md @@ -1,6 +1,6 @@ # Troubleshooting -## _Filing Bugs & Troubleshooting_ +## *Filing Bugs & Troubleshooting* These are required prerequisites before filing an issue on GitHub @@ -14,33 +14,33 @@ See the [Upgrading guide](https://github.com/AlexRogalsky/object-mappers-playgro ### Step 2: Search Relevant Places For Similar Issues -* [ ] Search issues on the [repo](https://github.com/AlexRogalsky/object-mappers-playground/) for a similar problems? -* [ ] Read the [README](https://github.com/AlexRogalsky/object-mappers-playground/blob/master/README.md) carefully +- \[ ] Search issues on the [repo](https://github.com/AlexRogalsky/object-mappers-playground/) for a similar problems? +- \[ ] Read the [README](https://github.com/AlexRogalsky/object-mappers-playground/blob/master/README.md) carefully ### Step 3: Observe Build Logs When Developing Locally -* [ ] Run the [fastpages blog server locally](https://github.com/AlexRogalskiy/object-mappers-playground/tree/411b3cc78f62a724d9d5eab4c09535e4ed36ceb3/docs/user-guide/DEVELOPMENT.md) - * Pay attention to the emitted logs when you save your notebooks or files. Often, you will see errors here that will give you important clues. -* [ ] When developing locally, you will notice that Jupyter notebooks are converted to corresponding markdown files in the `_posts` folder. Take a look at the problematic blog posts and see if you can spot the offending HTML or markdown in that code. -* Use your browser's developer tools to see if there are any errors. Common errors are \(1\) not able to find images because they have not been saved into the right folder, \(2\) javascript or other errors. -* If you receive a Jekyll build error or a Liquid error, search for this error on Stack Overflow to provide more insight on the problem. +- \[ ] Run the [fastpages blog server locally](https://github.com/AlexRogalskiy/object-mappers-playground/tree/411b3cc78f62a724d9d5eab4c09535e4ed36ceb3/docs/user-guide/DEVELOPMENT.md) + - Pay attention to the emitted logs when you save your notebooks or files. Often, you will see errors here that will give you important clues. +- \[ ] When developing locally, you will notice that Jupyter notebooks are converted to corresponding markdown files in the `_posts` folder. Take a look at the problematic blog posts and see if you can spot the offending HTML or markdown in that code. +- Use your browser's developer tools to see if there are any errors. Common errors are (1) not able to find images because they have not been saved into the right folder, (2) javascript or other errors. +- If you receive a Jekyll build error or a Liquid error, search for this error on Stack Overflow to provide more insight on the problem. ### Step 4: See if there are errors in the build process of GitHub Actions. -* [ ] In your GitHub repository, you will have a tab called **Actions**. To find build errors, click on the `Event` dropdown list and select `push`. Browse through the logs to see if you can find an error. If you receive an error, read the error message and try to debug. +- \[ ] In your GitHub repository, you will have a tab called **Actions**. To find build errors, click on the `Event` dropdown list and select `push`. Browse through the logs to see if you can find an error. If you receive an error, read the error message and try to debug. ### Step 5: Once you have performed all the above steps, post your issue in the fastai forums or a GitHub Issue. -* [ ] If you cannot find a similar issue create a new thread instead of commenting on an unrelated one. -* When reporting a bug, provide this information: +- \[ ] If you cannot find a similar issue create a new thread instead of commenting on an unrelated one. +- When reporting a bug, provide this information: 1. Steps to reproduce the problem 2. **A link to the notebook or markdown file** where the error is occurring 3. If the error is happening in GitHub Actions, a link to the specific error along with how you are able to reproduce this error. You must provide this **in addition to the link to the notebook or markdown file**. - 4. A screenshot / dump of relevant logs or error messages you are receiving from your local development environment. the local development server as indicated in the [development guide](https://github.com/fastai/fastpages/blob/master/_fastpages_docs/DEVELOPMENT.md). + 4. A screenshot / dump of relevant logs or error messages you are receiving from your local development environment. the local development server as indicated in the [development guide](https://github.com/fastai/fastpages/blob/master/\_fastpages_docs/DEVELOPMENT.md). **You must provide ALL of the above information**. -## _Frequent Errors_ +## *Frequent Errors* 1. Malformed front matter. Note that anything defined in front matter must be valid YAML. **Failure to provide valid YAML could result in your page not rendering** in your blog. For example, if you want a colon in your title you must escape it with double quotes like this: @@ -61,4 +61,3 @@ See the [Upgrading guide](https://github.com/AlexRogalsky/object-mappers-playgro 2. Can you customize the styling or theme? **A**: See [Customizing](https://github.com/AlexRogalskiy/object-mappers-playground#customizing-fastpages) See the [FAQ](https://github.com/AlexRogalskiy/object-mappers-playground#faq) for frequently asked questions. - diff --git a/docs/user-guide/upgrade.md b/docs/user-guide/upgrade.md index 8e10a9287c..c72b429248 100644 --- a/docs/user-guide/upgrade.md +++ b/docs/user-guide/upgrade.md @@ -1,54 +1,52 @@ # Upgrading -* [Automated Upgrade](upgrade.md#automated-upgrade) - * [Step 1: Open An Issue With The Upgrade Template.](upgrade.md#step-1-open-an-issue-with-the-upgrade-template) - * [Step 2: Click `Submit new issue`](upgrade.md#step-2-click-submit-new-issue) - * [Step 3: A Link to Pull Request Will Appear](upgrade.md#step-3-a-link-to-pull-request-will-appear) - * [Step 4: Review & Merge PR](upgrade.md#step-4-review-merge-pr) -* [Manual Upgrade](upgrade.md#manual-upgrade) - * [Easy Way \(Recommended\)](upgrade.md#easy-way-recommended) - * [Advanced](upgrade.md#advanced) -* [Additional Resources](upgrade.md#additional-resources) +- [Automated Upgrade](upgrade.md#automated-upgrade) + - [Step 1: Open An Issue With The Upgrade Template.](upgrade.md#step-1-open-an-issue-with-the-upgrade-template) + - [Step 2: Click `Submit new issue`](upgrade.md#step-2-click-submit-new-issue) + - [Step 3: A Link to Pull Request Will Appear](upgrade.md#step-3-a-link-to-pull-request-will-appear) + - [Step 4: Review & Merge PR](upgrade.md#step-4-review-and-merge-pr) +- [Manual Upgrade](upgrade.md#manual-upgrade) + - [Easy Way (Recommended)](upgrade.md#easy-way-recommended) + - [Advanced](upgrade.md#advanced) There are two ways to upgrade. One is an automated way that assumes you have made no changes to the HTML of your site. Alternatively, you may [upgrade manually](upgrade.md#manual-upgrade) and determine which changes to accept or reject. For most people we recommend upgrading fastpages automatically. -## _Automated Upgrade_ +## *Automated Upgrade* -* This method is appropriate for those who have not customized the HTML of their site. -* **If you are unsure, try the Automated approach and review which files are changed in the automated PR** to see if this appropriate for you. +- This method is appropriate for those who have not customized the HTML of their site. +- **If you are unsure, try the Automated approach and review which files are changed in the automated PR** to see if this appropriate for you. ### Step 1: Open An Issue With The Upgrade Template. -* Open a new issue in your repository, and push the "Get Started" button for the `[ObjectMappers] Automated Upgrade` Issue template, which looks like this: - * **IF YOU DON'T SEE THIS**: you have an older version of fastpages and you **must** [**manually upgrade**](upgrade.md#manual-upgrade) **once** to get this new functionality. +- Open a new issue in your repository, and push the "Get Started" button for the `[ObjectMappers] Automated Upgrade` Issue template, which looks like this: + - **IF YOU DON'T SEE THIS**: you have an older version of fastpages and you **must** [**manually upgrade**](upgrade.md#manual-upgrade) **once** to get this new functionality. ### Step 2: Click `Submit new issue` -* Be careful not to change anything before clicking the button. +- Be careful not to change anything before clicking the button. ### Step 3: A Link to Pull Request Will Appear -* This issue will trigger GitHub to open a PR making changes to your repository for the upgrade to take place. A comment with the link to the PR will be made in the issue, and will look like this: +- This issue will trigger GitHub to open a PR making changes to your repository for the upgrade to take place. A comment with the link to the PR will be made in the issue, and will look like this: It is possible that you might receive an error message instead of this command. You can follow the instructions in the comment to troubleshoot the issue. Common reasons for receiving an error are: - * You are up to date, therefore no upgrade is possible. You will see an error that there is "nothing to commit". - * You already have a PR from a previous upgrade open that you never merged. + - You are up to date, therefore no upgrade is possible. You will see an error that there is "nothing to commit". + - You already have a PR from a previous upgrade open that you never merged. -### Step 4: Review & Merge PR +### Step 4: Review and Merge PR -* Ensure that you read the instructions in the PR carefully. Furthermore, carefully review which files will be changed to determine if this interferes with any customizations you have mades to your site. When ready, select `Merge pull request`. -* If the PR is making undesired changes to files you can use the manual upgrade approach instead. +- Ensure that you read the instructions in the PR carefully. Furthermore, carefully review which files will be changed to determine if this interferes with any customizations you have mades to your site. When ready, select `Merge pull request`. +- If the PR is making undesired changes to files you can use the manual upgrade approach instead. -## _Manual Upgrade_ +## *Manual Upgrade* -### Easy Way \(Recommended\) +### Easy Way (Recommended) Create a new repo with the current project by following the [setup instructions](https://github.com/AlexRogalskiy/object-mappers-playground#setup-instructions) in the README. ### Advanced -* This method is appropriate for those who made customizations to the HTML. -* You must proceed with caution, as new versions may not be compatible with your customizations. -* Be careful to not duplicate files, as files have been reorganized several times. - +- This method is appropriate for those who made customizations to the HTML. +- You must proceed with caution, as new versions may not be compatible with your customizations. +- Be careful to not duplicate files, as files have been reorganized several times. diff --git a/package.json b/package.json new file mode 100644 index 0000000000..31f005c329 --- /dev/null +++ b/package.json @@ -0,0 +1,72 @@ +{ + "name": "spark-patterns", + "version": "0.0.0", + "description": "Spark design patterns", + "license": "GPL-3.0", + "scripts": { + "husky:install": "husky install", + "postinstall": "npm run husky:install", + "remark": "remark -q -f .", + "format": "prettier --single-quote --write **/*.{json,yaml,yml}", + "format:md": "remark-preset-davidtheclark --format", + "format:check": "prettier --check **/*.{json,yaml,yml}", + "lint:md": "remark-preset-davidtheclark", + "lint:json": "jsonlint ./package.json --quiet", + "lint:staged": "lint-staged --no-stash --allow-empty", + "pretty": "pretty-quick --staged --pattern '!test/tests/lint/**'", + "license": "license-checker --json > licenses.json", + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", + "markdown": "markdown-link-check ./README.md ./SECURITY.md", + "lint:all": "npm run lint:md && npm run lint:json", + "format:all": "npm run format && npm run format:md", + "check:all": "npm run format:check", + "all": "npm run format:all && npm run lint:all && npm run pretty" + }, + "devDependencies": { + "conventional-changelog-cli": "^2.0.0", + "husky": "^5.0.8", + "jsonlint": "^1.6.3", + "license-checker": "^25.0.1", + "lint-staged": "^10.1.6", + "markdown-link-check": "^3.8.6", + "prettier": "^2.1.2", + "pretty-quick": "^3.1.0", + "remark-cli": "^9.0.0", + "remark-lint-code-block-style": "^2.0.1", + "remark-lint-ordered-list-marker-value": "^2.0.1", + "remark-preset-davidtheclark": "^0.12.0", + "remark-validate-links": "^10.0.2" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/AlexRogalskiy/spark-patterns.git" + }, + "publishConfig": { + "access": "public" + }, + "engines": { + "node": ">= 12.x" + }, + "keywords": ["java patterns"], + "maintainers": [ + { + "name": "Alexander Rogalskiy", + "email": "hi@nullables.io" + } + ], + "contributors": [ + { + "name": "Alexander Rogalskiy", + "email": "hi@nullables.io" + } + ], + "bugs": { + "url": "https://github.com/AlexRogalskiy/spark-patterns/issues" + }, + "homepage": "https://github.com/AlexRogalskiy/spark-patterns/", + "author": { + "name": "Alexander Rogalskiy", + "url": "https://github.com/AlexRogalskiy" + }, + "funding": "https://github.com/sponsors/AlexRogalskiy" +} diff --git a/renovate.json b/renovate.json index e8c513704f..3e50ce947a 100644 --- a/renovate.json +++ b/renovate.json @@ -1,50 +1,42 @@ { - "extends": [ - "config:base", - ":maintainLockFilesWeekly", - ":prHourlyLimitNone", - ":prConcurrentLimitNone", - ":gitSignOff", - "group:monorepos", - "group:recommended" - ], - "ignoreUnstable": false, - "schedule": [ - "after 10pm every weekday", - "before 5am every weekday", - "every weekend" - ], - "lockFileMaintenance": { - "enabled": true, - "schedule": [ - "before 5am on monday" - ] - }, - "automerge": true, - "statusCheckVerify": true, - "updateNotScheduled": true, - "branchPrefix": "renovate/", - "automergeType": "branch", - "major": { - "automerge": false - }, - "masterIssue": true, - "masterIssueApproval": false, - "masterIssueAutoclose": true, - "prConcurrentLimit": 5, - "prCreation": "immediate", - "timezone": "Europe/Moscow", - "rangeStrategy": "bump", - "prHourlyLimit": 2, - "semanticCommits": "enabled", - "semanticCommitType": "chore", - "semanticCommitScope": "null", - "separateMajorMinor": true, - "separateMinorPatch": false, - "commitMessageAction": "Updates", - "commitMessageTopic": "{{depName}}", - "commitMessagePrefix": ":arrow_up:", - "labels": [ - "javascript dependencies" - ] + "extends": [ + "config:base", + ":maintainLockFilesWeekly", + ":prHourlyLimitNone", + ":prConcurrentLimitNone", + ":gitSignOff", + "group:monorepos", + "group:recommended" + ], + "ignoreUnstable": false, + "schedule": ["after 10pm every weekday", "before 5am every weekday", "every weekend"], + "lockFileMaintenance": { + "enabled": true, + "schedule": ["before 5am on monday"] + }, + "automerge": true, + "statusCheckVerify": true, + "updateNotScheduled": true, + "branchPrefix": "renovate/", + "automergeType": "branch", + "major": { + "automerge": false + }, + "masterIssue": true, + "masterIssueApproval": false, + "masterIssueAutoclose": true, + "prConcurrentLimit": 5, + "prCreation": "immediate", + "timezone": "Europe/Moscow", + "rangeStrategy": "bump", + "prHourlyLimit": 2, + "semanticCommits": "enabled", + "semanticCommitType": "chore", + "semanticCommitScope": "null", + "separateMajorMinor": true, + "separateMinorPatch": false, + "commitMessageAction": "Updates", + "commitMessageTopic": "{{depName}}", + "commitMessagePrefix": ":arrow_up:", + "labels": ["javascript dependencies"] } From 8ba9fb28219e28e46beefc8c3efa1203d09d69a2 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Thu, 22 Apr 2021 16:12:02 +0000 Subject: [PATCH 0365/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 435e92b045..5fb458080c 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From ae5aebde9657a38829d737593b36cb0bcc62f278 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 23 Apr 2021 00:11:14 +0000 Subject: [PATCH 0366/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index bd037d2169..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 7010f9b2787b459f77fae78f6f8d726efddfa6c5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:02 +0000 Subject: [PATCH 0367/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5fb458080c..c1b81c583d 100644 --- a/README.md +++ b/README.md @@ -243,18 +243,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [Google Play Console shows crashes of forked apps](https://www.reddit.com/r/androiddev/comments/mvplsg/google_play_console_shows_crashes_of_forked_apps/) -- [\[Open source\] Simple Calculator](https://www.reddit.com/r/androiddev/comments/mvotoq/open_source_simple_calculator/) -- [How to setup NDK in IntelliJ ultimate on Mac m1?](https://www.reddit.com/r/androiddev/comments/mvoqcv/how_to_setup_ndk_in_intellij_ultimate_on_mac_m1/) -- [Android 12 deprecate MediaStore Playlists (Is there any captain still controlling the ship?)](https://www.reddit.com/r/androiddev/comments/mvmuin/android\_12\_deprecate_mediastore_playlists_is/) -- [Android 12 Developer Preview 3](https://www.reddit.com/r/androiddev/comments/mvkjc9/android\_12\_developer_preview\_3/) -- [Does the developer need to detect and prevent click fraud on their ads or is this handled more by google?](https://www.reddit.com/r/androiddev/comments/mvj7ya/does_the_developer_need_to_detect_and_prevent/) -- [Lazy and fluent syntactic sugar of Kotlin for initializing Android lifecycle-aware property.](https://www.reddit.com/r/androiddev/comments/mvi5xt/lazy_and_fluent_syntactic_sugar_of_kotlin_for/) -- [Tools to help developers provide a safer content experience](https://www.reddit.com/r/androiddev/comments/mvhfae/tools_to_help_developers_provide_a_safer_content/) -- [Total remake of my game - New game or update?](https://www.reddit.com/r/androiddev/comments/mvghgl/total_remake_of_my_game_new_game_or_update/) -- [Livedata giving null](https://www.reddit.com/r/androiddev/comments/mvg0pw/livedata_giving_null/) - +- [If you were to “start over”, how would you go about learning fundamentals?](https://www.reddit.com/r/androiddev/comments/mwjw9y/if_you_were_to_start_over_how_would_you_go_about/) +- [Dagger Hilt is now stable with 2.35!](https://www.reddit.com/r/androiddev/comments/mwjut9/dagger_hilt_is_now_stable_with_235/) +- [Developing notes application](https://www.reddit.com/r/androiddev/comments/mwe2md/developing_notes_application/) +- [How do you work with E2E testing?](https://www.reddit.com/r/androiddev/comments/mwbrwf/how_do_you_work_with_e2e_testing/) +- [Interested in bringing custom voice tech to Android? I've got the beta program for you!](https://www.reddit.com/r/androiddev/comments/mwbaht/interested_in_bringing_custom_voice_tech_to/) +- [Scoped Storage Recap](https://www.reddit.com/r/androiddev/comments/mwaqn1/scoped_storage_recap/) +- [Any way to know if an app is running in the background or not?](https://www.reddit.com/r/androiddev/comments/mwa3cy/any_way_to_know_if_an_app_is_running_in_the/) +- [Is there any android emulator that Supports magisk? I need an emulator that passes the safetynet, and as of nowl think that can be done only using magisk!](https://www.reddit.com/r/androiddev/comments/mw91wg/is_there_any_android_emulator_that_supports/) +- [SAF - filter by file extension](https://www.reddit.com/r/androiddev/comments/mw8aan/saf_filter_by_file_extension/) +- [University Project App Feedback Request](https://www.reddit.com/r/androiddev/comments/mw6nzq/university_project_app_feedback_request/) ### *InfoWorld posts* From f0b2e4b04a9ba56591dc1d447b4ab58b0e61a2ca Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:06 +0000 Subject: [PATCH 0368/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index c1b81c583d..dd888bd4ca 100644 --- a/README.md +++ b/README.md @@ -258,7 +258,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -269,7 +268,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From 358e620488e3db380ae4a13179d2b0353957056f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:09 +0000 Subject: [PATCH 0369/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index dd888bd4ca..26628b18b0 100644 --- a/README.md +++ b/README.md @@ -273,13 +273,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *RedHat posts* - - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) - ### *Android Authority posts* From 7bb89c3088e7e707eb40da1e8e22ec165ee2128c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:12 +0000 Subject: [PATCH 0370/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 26628b18b0..6866ea517b 100644 --- a/README.md +++ b/README.md @@ -283,7 +283,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Authority posts* - - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) @@ -294,7 +293,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - ### *Android Arsenal posts* From 9628691893636e0456b8e0bb5e34780b8fb7d7b5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:15 +0000 Subject: [PATCH 0371/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 6866ea517b..a6edb1b39c 100644 --- a/README.md +++ b/README.md @@ -298,7 +298,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Arsenal posts* - - [Screenshot Detection](http://android-arsenal.com/details/1/8241) - [AndroidResourceManager](http://android-arsenal.com/details/1/8240) - [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) @@ -309,7 +308,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Composer](http://android-arsenal.com/details/1/8234) - [Synth](http://android-arsenal.com/details/1/8233) - [TCharts](http://android-arsenal.com/details/1/8232) - ### *Medium posts* From 52105e984fc540c378fb2de603d0119f86440e44 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:17 +0000 Subject: [PATCH 0372/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index a6edb1b39c..bc69d96e1e 100644 --- a/README.md +++ b/README.md @@ -313,18 +313,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* - -- [Custom Cluster Marker For Google Maps: How To](https://gabrielwadi.medium.com/custom-cluster-marker-for-google-maps-how-to-8a7b858e2879?source=rss------android-5) -- [How I show and hide a password in NativeScript on Android](https://medium.com/@stephen.carboni/how-i-show-and-hide-a-password-in-nativescript-on-android-da9450ef4adf?source=rss------android-5) -- [Android Jetpack : App Startup Kütüphanesi](https://akacaran.medium.com/android-jetpack-app-startup-k%C3%BCt%C3%BCphanesi-d7c7ff80d36a?source=rss------android-5) -- [Now in Android #38](https://medium.com/androiddevelopers/now-in-android-38-588b043094?source=rss------android-5) -- [Design to Canvas in Android](https://blog.usejournal.com/design-to-canvas-in-android-81e77d8e136f?source=rss------android-5) -- [Room auto-migrations](https://medium.com/androiddevelopers/room-auto-migrations-d5370b0ca6eb?source=rss------android-5) -- [Behind the scenes at Moneybox: Meet Jaeren & Valerio](https://medium.com/moneybox-product-engineering/behind-the-scenes-at-moneybox-meet-jaeren-valerio-3343fb8a0337?source=rss------android-5) -- [Android’in En Son Özelliği, Dikkatinizin Dağılmasını Önleyecek](https://sosyal-teknoloji-news.medium.com/androidin-en-son-%C3%B6zelli%C4%9Fi-dikkatinizin-da%C4%9F%C4%B1lmas%C4%B1n%C4%B1-%C3%B6nleyecek-2be5f39ef368?source=rss------android-5) -- [Jetpack Compose: building a generic grid canvas](https://patxi.medium.com/jetpack-compose-building-a-generic-grid-canvas-557da35493fe?source=rss------android-5) -- [Material Motion for Jetpack Compose](https://fornewid.medium.com/material-motion-for-jetpack-compose-d97ef2114b9c?source=rss------android-5) - +- [Android Activity Result API](https://oguzhanalpayli.medium.com/android-activity-result-api-daff2156c054?source=rss------android-5) +- [ДОБИЈТЕ ЈА ВАШАТА НОВА ПАСПОРТ, ЛИЦЕНЦА ЗА ВОЗАЕ, ЛИЦЕНСКИ КАРТИ, SSN, IELTS / TOEFL И ДРУГИ…](https://alihandzer.medium.com/%D0%B4%D0%BE%D0%B1%D0%B8%D1%98%D1%82%D0%B5-%D1%98%D0%B0-%D0%B2%D0%B0%D1%88%D0%B0%D1%82%D0%B0-%D0%BD%D0%BE%D0%B2%D0%B0-%D0%BF%D0%B0%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%86%D0%B0-%D0%B7%D0%B0-%D0%B2%D0%BE%D0%B7%D0%B0%D0%B5-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%81%D0%BA%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B8-ssn-ielts-toefl-%D0%B8-%D0%B4%D1%80%D1%83%D0%B3%D0%B8-ade348b77abf?source=rss------android-5) +- [Agregar texto en Flutter](https://pepecode6.medium.com/agregar-texto-en-flutter-ad0d7147feef?source=rss------android-5) +- [Disgaea RPG Takes Your Phone to the Netherworld](https://medium.com/super-jump/disgaea-rpg-takes-your-phone-to-the-netherworld-449700e0f824?source=rss------android-5) +- [Navigation Drawer using Jetpack Compose](https://proandroiddev.com/navigation-drawer-using-jetpack-compose-27ea7db74903?source=rss------android-5) +- [Brave — Stealing your cookies remotely](https://infosecwriteups.com/brave-stealing-your-cookies-remotely-1e09d1184675?source=rss------android-5) +- [The Tragic Tale of Ouya](https://medium.com/super-jump/the-tragic-tale-of-ouya-152bd63b58cc?source=rss------android-5) +- [Hacker Baba Free Fire APK Download](https://hmuzafar398.medium.com/hacker-baba-free-fire-apk-download-beaa683628b4?source=rss------android-5) +- [Publish a multi-module Java/Android library to Maven Central + GitHub CI automation at 2021](https://petrakeas.medium.com/publish-a-multi-module-java-android-library-to-maven-central-github-ci-automation-at-2021-4f98a311df2a?source=rss------android-5) +- [Kotlin - delegate that interface!](https://medium.com/wonderquill/kotlin-delegate-that-interface-1fd97c36019d?source=rss------android-5) ### *Gizmodo posts* From 59f37d3636aecc2d79c7aa9cb0afa839d0660c9a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:21 +0000 Subject: [PATCH 0373/2080] Updated with the latest blog posts --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index bc69d96e1e..9181aee187 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* - +- [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) - [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) @@ -338,8 +338,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) - [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) -- [Google Will Shut Down the Google Shopping App for iOS and Android in a Few Weeks](https://gizmodo.com/google-will-shut-down-the-google-shopping-app-for-ios-a-1846662681) - ### *Mobile Dev Memo posts* From fdddc558731e180cbd8502877ca74f08663a4df2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:25 +0000 Subject: [PATCH 0374/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 9181aee187..2dacd72126 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* - - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) @@ -354,7 +353,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) - ### *Infinum posts* From 540b1bfd0d3099676b77b5ccc0e9f898a7e89c53 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Apr 2021 01:26:28 +0000 Subject: [PATCH 0375/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 2dacd72126..a528a7d3d6 100644 --- a/README.md +++ b/README.md @@ -358,13 +358,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Infinum posts* - - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) - *** From dd75e631ce3b62586aa3a2931fe208f7625f9499 Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Fri, 23 Apr 2021 20:48:55 +0300 Subject: [PATCH 0376/2080] docs: updates on workflows Added information on documentation --- .github/workflows/enforce-labels.yml | 13 ++++ CHANGELOG.md | 2 +- README.md | 99 ++++++++++++++++++---------- scripts/build-docs.sh | 20 ++++++ 4 files changed, 97 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/enforce-labels.yml create mode 100644 scripts/build-docs.sh diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml new file mode 100644 index 0000000000..17274a6f52 --- /dev/null +++ b/.github/workflows/enforce-labels.yml @@ -0,0 +1,13 @@ +name: Enforce PR labels for release drafter + +on: + pull_request: + types: [ labeled, unlabeled, opened, edited, synchronize ] +jobs: + enforce-label: + runs-on: ubuntu-latest + steps: + - uses: yogevbd/enforce-label-action@2.2.1 + with: + REQUIRED_LABELS_ANY: "bug,enhancement,internal,no-changelog" + REQUIRED_LABELS_ANY_DESCRIPTION: "Select at least one label ['bug','enhancement','internal','no-changelog'] for the PR" diff --git a/CHANGELOG.md b/CHANGELOG.md index efbc229e1a..9462d4614c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-22) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-23) diff --git a/README.md b/README.md index a528a7d3d6..182c51a630 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -121,50 +123,57 @@ The Website documentation is provided by [gitbook](https://www.gitbook.com/) and [***Android Patterns***][docs] -To enable documentation serving at ***localhost*** the following steps should be considered: +To enable documentation serving at ***localhost*** you can run the following script + +```shell script +./scripts/build-docs.sh +``` + +otherwise, the next steps should be considered: 1\) Install/upgrade ***pip*** command-line utility: -```text +```shell script pip install --upgrade pip ``` or if you need to install ***pip*** for the first time: -```text +```shell script +wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py python get-pip.py ``` 2\) Install the ***mkdocs*** package using pip: -```text +```shell script pip install mkdocs ``` or more conveniently for Windows subsystem: -```text +```shell script python -m pip install mkdocs python -m mkdocs ``` 3\) Install the material theme for the website: -```text -pip install mkdocs-material -pip install markdown-include +```shell script +python -m pip install mkdocs-material +python -m pip install markdown-include ``` 4\) Start the server at ***localhost*** by running the following command: -```text -mkdocs serve --verbose --dirtyreload +```shell script +python -m mkdocs serve --verbose --dirtyreload ``` 5\) Deploy to GitHub pages: -```text -mkdocs --verbose gh-deploy --force --remote-branch gh-pages +```shell script +python -m mkdocs --verbose gh-deploy --force --remote-branch gh-pages ``` 5\) Open up [localhost](http://127.0.0.1:8000/) in browser to get the default documentation homepage. @@ -243,8 +252,9 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [If you were to “start over”, how would you go about learning fundamentals?](https://www.reddit.com/r/androiddev/comments/mwjw9y/if_you_were_to_start_over_how_would_you_go_about/) -- [Dagger Hilt is now stable with 2.35!](https://www.reddit.com/r/androiddev/comments/mwjut9/dagger_hilt_is_now_stable_with_235/) +- [Dagger Hilt is now stable with 2.35!](https://www.reddit.com/r/androiddev/comments/mwjut9/dagger_hilt_is_now_stable_with\_235/) - [Developing notes application](https://www.reddit.com/r/androiddev/comments/mwe2md/developing_notes_application/) - [How do you work with E2E testing?](https://www.reddit.com/r/androiddev/comments/mwbrwf/how_do_you_work_with_e2e_testing/) - [Interested in bringing custom voice tech to Android? I've got the beta program for you!](https://www.reddit.com/r/androiddev/comments/mwbaht/interested_in_bringing_custom_voice_tech_to/) @@ -253,11 +263,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Is there any android emulator that Supports magisk? I need an emulator that passes the safetynet, and as of nowl think that can be done only using magisk!](https://www.reddit.com/r/androiddev/comments/mw91wg/is_there_any_android_emulator_that_supports/) - [SAF - filter by file extension](https://www.reddit.com/r/androiddev/comments/mw8aan/saf_filter_by_file_extension/) - [University Project App Feedback Request](https://www.reddit.com/r/androiddev/comments/mw6nzq/university_project_app_feedback_request/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -268,21 +280,25 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* + - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) + ### *Android Authority posts* + - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) @@ -293,11 +309,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) + ### *Android Arsenal posts* + - [Screenshot Detection](http://android-arsenal.com/details/1/8241) - [AndroidResourceManager](http://android-arsenal.com/details/1/8240) - [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) @@ -308,11 +326,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Composer](http://android-arsenal.com/details/1/8234) - [Synth](http://android-arsenal.com/details/1/8233) - [TCharts](http://android-arsenal.com/details/1/8232) + ### *Medium posts* + - [Android Activity Result API](https://oguzhanalpayli.medium.com/android-activity-result-api-daff2156c054?source=rss------android-5) - [ДОБИЈТЕ ЈА ВАШАТА НОВА ПАСПОРТ, ЛИЦЕНЦА ЗА ВОЗАЕ, ЛИЦЕНСКИ КАРТИ, SSN, IELTS / TOEFL И ДРУГИ…](https://alihandzer.medium.com/%D0%B4%D0%BE%D0%B1%D0%B8%D1%98%D1%82%D0%B5-%D1%98%D0%B0-%D0%B2%D0%B0%D1%88%D0%B0%D1%82%D0%B0-%D0%BD%D0%BE%D0%B2%D0%B0-%D0%BF%D0%B0%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%86%D0%B0-%D0%B7%D0%B0-%D0%B2%D0%BE%D0%B7%D0%B0%D0%B5-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%81%D0%BA%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B8-ssn-ielts-toefl-%D0%B8-%D0%B4%D1%80%D1%83%D0%B3%D0%B8-ade348b77abf?source=rss------android-5) - [Agregar texto en Flutter](https://pepecode6.medium.com/agregar-texto-en-flutter-ad0d7147feef?source=rss------android-5) @@ -323,11 +343,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Hacker Baba Free Fire APK Download](https://hmuzafar398.medium.com/hacker-baba-free-fire-apk-download-beaa683628b4?source=rss------android-5) - [Publish a multi-module Java/Android library to Maven Central + GitHub CI automation at 2021](https://petrakeas.medium.com/publish-a-multi-module-java-android-library-to-maven-central-github-ci-automation-at-2021-4f98a311df2a?source=rss------android-5) - [Kotlin - delegate that interface!](https://medium.com/wonderquill/kotlin-delegate-that-interface-1fd97c36019d?source=rss------android-5) + ### *Gizmodo posts* + - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) @@ -338,11 +360,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) - [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) + ### *Mobile Dev Memo posts* + - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) @@ -353,16 +377,19 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) + ### *Infinum posts* + - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) + *** diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh new file mode 100644 index 0000000000..28161992ef --- /dev/null +++ b/scripts/build-docs.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -e +set -o errexit +set -o pipefail +set -o nounset + +cd .. + +## Install pip module +wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get-pip.py +python $TMPDIR/get-pip.py + +## Install project dependencies +python -m pip install mkdocs +python -m pip install mkdocs-material +python -m pip install markdown-include + +## Start server locally +python -m mkdocs serve --verbose --dirtyreload From 9364dd2d619a2f9a93d49b59c87ce831b060955b Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Fri, 23 Apr 2021 17:54:07 +0000 Subject: [PATCH 0377/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 182c51a630..7aa5ba23d5 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From 82a6408aba160be48c53046cb0a16bb523a2d576 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 24 Apr 2021 00:11:59 +0000 Subject: [PATCH 0378/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 32 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 9ff623c51cd96de580b2aaf20ff0dcda8e2ab62f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:26 +0000 Subject: [PATCH 0379/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7aa5ba23d5..5fcb12eb0a 100644 --- a/README.md +++ b/README.md @@ -250,18 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [If you were to “start over”, how would you go about learning fundamentals?](https://www.reddit.com/r/androiddev/comments/mwjw9y/if_you_were_to_start_over_how_would_you_go_about/) -- [Dagger Hilt is now stable with 2.35!](https://www.reddit.com/r/androiddev/comments/mwjut9/dagger_hilt_is_now_stable_with\_235/) -- [Developing notes application](https://www.reddit.com/r/androiddev/comments/mwe2md/developing_notes_application/) -- [How do you work with E2E testing?](https://www.reddit.com/r/androiddev/comments/mwbrwf/how_do_you_work_with_e2e_testing/) -- [Interested in bringing custom voice tech to Android? I've got the beta program for you!](https://www.reddit.com/r/androiddev/comments/mwbaht/interested_in_bringing_custom_voice_tech_to/) -- [Scoped Storage Recap](https://www.reddit.com/r/androiddev/comments/mwaqn1/scoped_storage_recap/) -- [Any way to know if an app is running in the background or not?](https://www.reddit.com/r/androiddev/comments/mwa3cy/any_way_to_know_if_an_app_is_running_in_the/) -- [Is there any android emulator that Supports magisk? I need an emulator that passes the safetynet, and as of nowl think that can be done only using magisk!](https://www.reddit.com/r/androiddev/comments/mw91wg/is_there_any_android_emulator_that_supports/) -- [SAF - filter by file extension](https://www.reddit.com/r/androiddev/comments/mw8aan/saf_filter_by_file_extension/) -- [University Project App Feedback Request](https://www.reddit.com/r/androiddev/comments/mw6nzq/university_project_app_feedback_request/) - +- [SQLDelight v1.5.0 released](https://www.reddit.com/r/androiddev/comments/mx8j48/sqldelight_v150_released/) +- [Why Declarative UIs matter on Android? All the answers in this article](https://www.reddit.com/r/androiddev/comments/mx7m2c/why_declarative_uis_matter_on_android_all_the/) +- [IMO Verve Android 6.0 FRP Bypass](https://www.reddit.com/r/androiddev/comments/mx40p4/imo_verve_android_60_frp_bypass/) +- [Keeping up to date with the Android Topics](https://www.reddit.com/r/androiddev/comments/mx3ypz/keeping_up_to_date_with_the_android_topics/) +- [Androidtv live-tv app build, Protocol Buffers Files](https://www.reddit.com/r/androiddev/comments/mx3lti/androidtv_livetv_app_build_protocol_buffers_files/) +- [Emulator is killing my Mac mini. Is there any way to reduce usage of Emulator? (I tried disabling the sound for emulator through config file already, doesn't fix anything).](https://www.reddit.com/r/androiddev/comments/mx299l/emulator_is_killing_my_mac_mini_is_there_any_way/) +- [RecyclerViews and the Law of Demeter!](https://www.reddit.com/r/androiddev/comments/mx1vst/recyclerviews_and_the_law_of_demeter/) +- [Accessibility in a Scrollview. Should the accessibility focus force it to scroll down further?](https://www.reddit.com/r/androiddev/comments/mx1afq/accessibility_in_a_scrollview_should_the/) +- [ELI5: Layout Inflation](https://www.reddit.com/r/androiddev/comments/mwzfj8/eli5_layout_inflation/) +- [Showing No internet in Android App](https://www.reddit.com/r/androiddev/comments/mwyuzj/showing_no_internet_in_android_app/) ### *InfoWorld posts* From ab469af5ff9b1d1dee88479f1eb402b14fa3aae0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:29 +0000 Subject: [PATCH 0380/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 5fcb12eb0a..d70835a3bd 100644 --- a/README.md +++ b/README.md @@ -265,7 +265,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -276,7 +275,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From 13e3d9c0edb078deb1b0d2859e3f52cceb638b18 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:33 +0000 Subject: [PATCH 0381/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index d70835a3bd..3ace028055 100644 --- a/README.md +++ b/README.md @@ -280,13 +280,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *RedHat posts* - - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) - ### *Android Authority posts* From 9e20c828717e742847e9ccf7d0fb35f3f19f0990 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:36 +0000 Subject: [PATCH 0382/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3ace028055..da2dbea52e 100644 --- a/README.md +++ b/README.md @@ -290,7 +290,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Authority posts* - - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) @@ -301,7 +300,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - ### *Android Arsenal posts* From 77a322bd2a7d07a24777733a68773f57f8166beb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:39 +0000 Subject: [PATCH 0383/2080] Updated with the latest blog posts --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index da2dbea52e..9e01456747 100644 --- a/README.md +++ b/README.md @@ -305,7 +305,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Arsenal posts* - +- [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) - [Screenshot Detection](http://android-arsenal.com/details/1/8241) - [AndroidResourceManager](http://android-arsenal.com/details/1/8240) - [FixedHeaderTableLayout](http://android-arsenal.com/details/1/8239) @@ -315,8 +315,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) - [Composer](http://android-arsenal.com/details/1/8234) - [Synth](http://android-arsenal.com/details/1/8233) -- [TCharts](http://android-arsenal.com/details/1/8232) - ### *Medium posts* From 53cac18036f94862bd31e74739678763fad9e4e6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:41 +0000 Subject: [PATCH 0384/2080] Updated with the latest blog posts --- README.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9e01456747..ec53b6c507 100644 --- a/README.md +++ b/README.md @@ -320,18 +320,15 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* - -- [Android Activity Result API](https://oguzhanalpayli.medium.com/android-activity-result-api-daff2156c054?source=rss------android-5) -- [ДОБИЈТЕ ЈА ВАШАТА НОВА ПАСПОРТ, ЛИЦЕНЦА ЗА ВОЗАЕ, ЛИЦЕНСКИ КАРТИ, SSN, IELTS / TOEFL И ДРУГИ…](https://alihandzer.medium.com/%D0%B4%D0%BE%D0%B1%D0%B8%D1%98%D1%82%D0%B5-%D1%98%D0%B0-%D0%B2%D0%B0%D1%88%D0%B0%D1%82%D0%B0-%D0%BD%D0%BE%D0%B2%D0%B0-%D0%BF%D0%B0%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%86%D0%B0-%D0%B7%D0%B0-%D0%B2%D0%BE%D0%B7%D0%B0%D0%B5-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D1%81%D0%BA%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B8-ssn-ielts-toefl-%D0%B8-%D0%B4%D1%80%D1%83%D0%B3%D0%B8-ade348b77abf?source=rss------android-5) -- [Agregar texto en Flutter](https://pepecode6.medium.com/agregar-texto-en-flutter-ad0d7147feef?source=rss------android-5) -- [Disgaea RPG Takes Your Phone to the Netherworld](https://medium.com/super-jump/disgaea-rpg-takes-your-phone-to-the-netherworld-449700e0f824?source=rss------android-5) -- [Navigation Drawer using Jetpack Compose](https://proandroiddev.com/navigation-drawer-using-jetpack-compose-27ea7db74903?source=rss------android-5) -- [Brave — Stealing your cookies remotely](https://infosecwriteups.com/brave-stealing-your-cookies-remotely-1e09d1184675?source=rss------android-5) -- [The Tragic Tale of Ouya](https://medium.com/super-jump/the-tragic-tale-of-ouya-152bd63b58cc?source=rss------android-5) -- [Hacker Baba Free Fire APK Download](https://hmuzafar398.medium.com/hacker-baba-free-fire-apk-download-beaa683628b4?source=rss------android-5) -- [Publish a multi-module Java/Android library to Maven Central + GitHub CI automation at 2021](https://petrakeas.medium.com/publish-a-multi-module-java-android-library-to-maven-central-github-ci-automation-at-2021-4f98a311df2a?source=rss------android-5) -- [Kotlin - delegate that interface!](https://medium.com/wonderquill/kotlin-delegate-that-interface-1fd97c36019d?source=rss------android-5) - +- [Cómo integrar Huawei Map Kit en Xamarin](https://medium.com/huawei-developers-latinoam%C3%A9rica/c%C3%B3mo-integrar-huawei-map-kit-en-xamarin-f26aa4f349de?source=rss------android-5) +- [ZOAKS Weekly Summary from the Latest News #16–1](https://zoaksteam.medium.com/zoaks-weekly-summary-from-the-latest-news-16-1-66fb3aae34c0?source=rss------android-5) +- [Dragon City Mod APK[l](https://alymalang00.medium.com/dragon-city-mod-apk-l-1cfaad1e708b?source=rss------android-5) +- [Using Reflection in Android](https://medium.com/predict/using-reflection-in-android-87e56329c706?source=rss------android-5) +- [Scared Grate Apk Download](https://hmuzafar398.medium.com/scared-grate-apk-download-bf22d4d3a96e?source=rss------android-5) +- [Lessons learned when migrating my app to Jetpack Compose](https://proandroiddev.com/lessons-learned-when-migrating-my-app-to-jetpack-compose-55ea1b05b988?source=rss------android-5) +- [Basics of Kotlin- Part 2](https://csj5483.medium.com/basics-of-kotlin-part-2-ff3c14b2e625?source=rss------android-5) +- [Extension Functions and Swipe for delete.](https://andrewthompson-80543.medium.com/extension-functions-and-swipe-for-delete-4cb5226edca1?source=rss------android-5) +- [Handling user selectable themes in Jetpack Compose](https://fvilarino.medium.com/handling-user-selectable-themes-in-jetpack-compose-c7509784da16?source=rss------android-5) ### *Gizmodo posts* From f0bcaa7608b4bd1deed6e96f836a138428e4692d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:45 +0000 Subject: [PATCH 0385/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index ec53b6c507..555a7b44a7 100644 --- a/README.md +++ b/README.md @@ -334,7 +334,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* - - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) @@ -345,7 +344,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) - [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) - ### *Mobile Dev Memo posts* From 1c81f4cc1c1cb6cc58f91618d3a5d6f99040aeb7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:49 +0000 Subject: [PATCH 0386/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 555a7b44a7..cf2d4e7271 100644 --- a/README.md +++ b/README.md @@ -349,7 +349,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* - - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) @@ -360,7 +359,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) - ### *Infinum posts* From 8ec192bb95d2003d5c51871b77b1b28fc7ec1ea8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Apr 2021 01:25:52 +0000 Subject: [PATCH 0387/2080] Updated with the latest blog posts --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index cf2d4e7271..3e934c4ed3 100644 --- a/README.md +++ b/README.md @@ -364,13 +364,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Infinum posts* - +- [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) -- [Share code between Android and Jvm](https://androidsweets.ongoodbits.com/share-code-between-android-and-jvm) - *** From 3bcef18cd681212387b2433a370cba856275ff58 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 25 Apr 2021 00:11:46 +0000 Subject: [PATCH 0388/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..2433052f5e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From 9fde7e5cec43d2d0c1c37259038493f11ade1d1d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 25 Apr 2021 01:27:24 +0000 Subject: [PATCH 0389/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3e934c4ed3..cbb52cc692 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [SQLDelight v1.5.0 released](https://www.reddit.com/r/androiddev/comments/mx8j48/sqldelight_v150_released/) -- [Why Declarative UIs matter on Android? All the answers in this article](https://www.reddit.com/r/androiddev/comments/mx7m2c/why_declarative_uis_matter_on_android_all_the/) -- [IMO Verve Android 6.0 FRP Bypass](https://www.reddit.com/r/androiddev/comments/mx40p4/imo_verve_android_60_frp_bypass/) -- [Keeping up to date with the Android Topics](https://www.reddit.com/r/androiddev/comments/mx3ypz/keeping_up_to_date_with_the_android_topics/) -- [Androidtv live-tv app build, Protocol Buffers Files](https://www.reddit.com/r/androiddev/comments/mx3lti/androidtv_livetv_app_build_protocol_buffers_files/) -- [Emulator is killing my Mac mini. Is there any way to reduce usage of Emulator? (I tried disabling the sound for emulator through config file already, doesn't fix anything).](https://www.reddit.com/r/androiddev/comments/mx299l/emulator_is_killing_my_mac_mini_is_there_any_way/) -- [RecyclerViews and the Law of Demeter!](https://www.reddit.com/r/androiddev/comments/mx1vst/recyclerviews_and_the_law_of_demeter/) -- [Accessibility in a Scrollview. Should the accessibility focus force it to scroll down further?](https://www.reddit.com/r/androiddev/comments/mx1afq/accessibility_in_a_scrollview_should_the/) -- [ELI5: Layout Inflation](https://www.reddit.com/r/androiddev/comments/mwzfj8/eli5_layout_inflation/) -- [Showing No internet in Android App](https://www.reddit.com/r/androiddev/comments/mwyuzj/showing_no_internet_in_android_app/) +- [app idea](https://www.reddit.com/r/androiddev/comments/mxtq1q/app_idea/) +- [Why smartphones with identical hardware have different performance? Which parts of Android OS that are usually modified/implemented by smartphone manufacturers have the greatest impact on it?](https://www.reddit.com/r/androiddev/comments/mxro8v/why_smartphones_with_identical_hardware_have/) +- [Tap Response Time: Jetpack Navigation](https://www.reddit.com/r/androiddev/comments/mxrjkx/tap_response_time_jetpack_navigation/) +- [Android Login template with the most common login methods with Firebase.](https://www.reddit.com/r/androiddev/comments/mxrgxr/android_login_template_with_the_most_common_login/) +- [First time Android app developer. Please send me down the right path.](https://www.reddit.com/r/androiddev/comments/mxr48x/first_time_android_app_developer_please_send_me/) +- [Admob Issues Again](https://www.reddit.com/r/androiddev/comments/mxqfmg/admob_issues_again/) +- [How to translate your application](https://www.reddit.com/r/androiddev/comments/mxoncv/how_to_translate_your_application/) +- [Are there any services/websites that will make apks or webapps from urls?](https://www.reddit.com/r/androiddev/comments/mxoi83/are_there_any_serviceswebsites_that_will_make/) +- [Android Modular Navigation](https://www.reddit.com/r/androiddev/comments/mxnxyu/android_modular_navigation/) +- [Does Admob SDK V20 improve ad performance?](https://www.reddit.com/r/androiddev/comments/mxmb5e/does_admob_sdk_v20_improve_ad_performance/) ### *InfoWorld posts* From a0bcf346ad6fbc2c1d00bbadf513895adca8e68d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 25 Apr 2021 01:27:30 +0000 Subject: [PATCH 0390/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbb52cc692..44e4f67d58 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Arsenal posts* +- [SSImagePicker](http://android-arsenal.com/details/1/8243) - [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) - [Screenshot Detection](http://android-arsenal.com/details/1/8241) - [AndroidResourceManager](http://android-arsenal.com/details/1/8240) @@ -314,7 +315,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) - [Composer](http://android-arsenal.com/details/1/8234) -- [Synth](http://android-arsenal.com/details/1/8233) ### *Medium posts* From 108d6a8b1578bf359c18d7e1d2b26b072b3de7ed Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 25 Apr 2021 01:27:33 +0000 Subject: [PATCH 0391/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 44e4f67d58..ead71033db 100644 --- a/README.md +++ b/README.md @@ -320,15 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Cómo integrar Huawei Map Kit en Xamarin](https://medium.com/huawei-developers-latinoam%C3%A9rica/c%C3%B3mo-integrar-huawei-map-kit-en-xamarin-f26aa4f349de?source=rss------android-5) -- [ZOAKS Weekly Summary from the Latest News #16–1](https://zoaksteam.medium.com/zoaks-weekly-summary-from-the-latest-news-16-1-66fb3aae34c0?source=rss------android-5) -- [Dragon City Mod APK[l](https://alymalang00.medium.com/dragon-city-mod-apk-l-1cfaad1e708b?source=rss------android-5) -- [Using Reflection in Android](https://medium.com/predict/using-reflection-in-android-87e56329c706?source=rss------android-5) -- [Scared Grate Apk Download](https://hmuzafar398.medium.com/scared-grate-apk-download-bf22d4d3a96e?source=rss------android-5) -- [Lessons learned when migrating my app to Jetpack Compose](https://proandroiddev.com/lessons-learned-when-migrating-my-app-to-jetpack-compose-55ea1b05b988?source=rss------android-5) -- [Basics of Kotlin- Part 2](https://csj5483.medium.com/basics-of-kotlin-part-2-ff3c14b2e625?source=rss------android-5) -- [Extension Functions and Swipe for delete.](https://andrewthompson-80543.medium.com/extension-functions-and-swipe-for-delete-4cb5226edca1?source=rss------android-5) -- [Handling user selectable themes in Jetpack Compose](https://fvilarino.medium.com/handling-user-selectable-themes-in-jetpack-compose-c7509784da16?source=rss------android-5) +- [Oneplus 8T Review.](https://princemanik1971.medium.com/oneplus-8t-review-95606298f23?source=rss------android-5) +- [Android ConstraintLayout — All of the Things](https://medium.com/geekculture/android-constraintlayout-all-of-the-things-7b74ba9a366b?source=rss------android-5) +- [Galaxy Note 20 Ultra camera update | Which Samsung Note has the best camera?](https://sk6446777.medium.com/galaxy-note-20-ultra-camera-update-which-samsung-note-has-the-best-camera-271a4580ba96?source=rss------android-5) +- [Local Notifications In Flutter](https://medium.com/flutter-community/local-notifications-in-flutter-746eb1d606c6?source=rss------android-5) +- [The Problem with Clubhouse Being iOS-only at This Point](https://medium.com/voiceedu/the-problem-with-clubhouse-being-ios-only-at-this-point-f829f756ad69?source=rss------android-5) +- [Tic Tac Toe with Android Studio](https://medium.com/@harshitbhatt972/tic-tac-toe-with-android-studio-ba65f8689b73?source=rss------android-5) +- [How to set a Ringtone from an MP3 file on iPhone](https://medium.com/idomongodb/how-to-set-a-ringtone-from-an-mp3-file-on-iphone-59697a339ef2?source=rss------android-5) +- [Google Assistant For Android Lets You Run Quick Commands Without Having to Say “Ok Google”](https://medium.com/@thetechnodiary.com/google-assistant-for-android-lets-you-run-quick-commands-without-having-to-say-ok-google-59dbf89bc0f6?source=rss------android-5) +- [HMS Remote Configuration — Notificar nueva versión y otras funciones](https://firemixdev.medium.com/hms-remote-configuration-notificar-nueva-versi%C3%B3n-y-otras-funciones-559d92204401?source=rss------android-5) +- [Run Multiple Android Studio Versions On A Single Machine](https://medium.com/dwarsoft/run-multiple-android-studio-versions-on-a-single-machine-2a7d00045813?source=rss------android-5) ### *Gizmodo posts* From 9a3e2492722b047af902fa686a77674f2e50e761 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 25 Apr 2021 01:27:36 +0000 Subject: [PATCH 0392/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ead71033db..a9dec9fc3f 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) @@ -344,7 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) -- [This Is the Worst Smartwatch I've Ever Used](https://gizmodo.com/this-is-the-worst-smartwatch-ive-ever-used-1846652533) ### *Mobile Dev Memo posts* From b91484acdaaf92c81c085f4daf183508c0010d23 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 26 Apr 2021 00:12:23 +0000 Subject: [PATCH 0393/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2433052f5e..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..60d9263181 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 28 Performance From 69831a1ce38106ba364f5da1e6c6a51dc84ccffe Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 26 Apr 2021 01:26:27 +0000 Subject: [PATCH 0394/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a9dec9fc3f..43eabfea1c 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [app idea](https://www.reddit.com/r/androiddev/comments/mxtq1q/app_idea/) -- [Why smartphones with identical hardware have different performance? Which parts of Android OS that are usually modified/implemented by smartphone manufacturers have the greatest impact on it?](https://www.reddit.com/r/androiddev/comments/mxro8v/why_smartphones_with_identical_hardware_have/) -- [Tap Response Time: Jetpack Navigation](https://www.reddit.com/r/androiddev/comments/mxrjkx/tap_response_time_jetpack_navigation/) -- [Android Login template with the most common login methods with Firebase.](https://www.reddit.com/r/androiddev/comments/mxrgxr/android_login_template_with_the_most_common_login/) -- [First time Android app developer. Please send me down the right path.](https://www.reddit.com/r/androiddev/comments/mxr48x/first_time_android_app_developer_please_send_me/) -- [Admob Issues Again](https://www.reddit.com/r/androiddev/comments/mxqfmg/admob_issues_again/) -- [How to translate your application](https://www.reddit.com/r/androiddev/comments/mxoncv/how_to_translate_your_application/) -- [Are there any services/websites that will make apks or webapps from urls?](https://www.reddit.com/r/androiddev/comments/mxoi83/are_there_any_serviceswebsites_that_will_make/) -- [Android Modular Navigation](https://www.reddit.com/r/androiddev/comments/mxnxyu/android_modular_navigation/) -- [Does Admob SDK V20 improve ad performance?](https://www.reddit.com/r/androiddev/comments/mxmb5e/does_admob_sdk_v20_improve_ad_performance/) +- [Looking for Tutor for Android App Dev](https://www.reddit.com/r/androiddev/comments/mymhx8/looking_for_tutor_for_android_app_dev/) +- [Programming for Tile Tracker?](https://www.reddit.com/r/androiddev/comments/mylrio/programming_for_tile_tracker/) +- [Android Studio on Linux - OpenJDK or Oracle JDK?](https://www.reddit.com/r/androiddev/comments/myk9vc/android_studio_on_linux_openjdk_or_oracle_jdk/) +- [Use mobile data while connected to my laptop's hotspot](https://www.reddit.com/r/androiddev/comments/mybl4c/use_mobile_data_while_connected_to_my_laptops/) +- [Is this against data laws ?](https://www.reddit.com/r/androiddev/comments/mybdzh/is_this_against_data_laws/) +- [Library private resources](https://www.reddit.com/r/androiddev/comments/myb8us/library_private_resources/) +- [Using App Mediation](https://www.reddit.com/r/androiddev/comments/my8itp/using_app_mediation/) +- [Why lawmakers are so interested in Apple’s and Google’s “rents”](https://www.reddit.com/r/androiddev/comments/my8dk4/why_lawmakers_are_so_interested_in_apples_and/) +- [Changing bundle Id to reset the ratings. What to expect?](https://www.reddit.com/r/androiddev/comments/my5sxz/changing_bundle_id_to_reset_the_ratings_what_to/) +- [Android Setup Decent Look](https://www.reddit.com/r/androiddev/comments/my401o/android_setup_decent_look/) ### *InfoWorld posts* From db1f42d8016de9b78f8c1a89f9b3fbd961a42c4f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 26 Apr 2021 01:26:36 +0000 Subject: [PATCH 0395/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 43eabfea1c..4b75398693 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,15 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Oneplus 8T Review.](https://princemanik1971.medium.com/oneplus-8t-review-95606298f23?source=rss------android-5) -- [Android ConstraintLayout — All of the Things](https://medium.com/geekculture/android-constraintlayout-all-of-the-things-7b74ba9a366b?source=rss------android-5) -- [Galaxy Note 20 Ultra camera update | Which Samsung Note has the best camera?](https://sk6446777.medium.com/galaxy-note-20-ultra-camera-update-which-samsung-note-has-the-best-camera-271a4580ba96?source=rss------android-5) -- [Local Notifications In Flutter](https://medium.com/flutter-community/local-notifications-in-flutter-746eb1d606c6?source=rss------android-5) -- [The Problem with Clubhouse Being iOS-only at This Point](https://medium.com/voiceedu/the-problem-with-clubhouse-being-ios-only-at-this-point-f829f756ad69?source=rss------android-5) -- [Tic Tac Toe with Android Studio](https://medium.com/@harshitbhatt972/tic-tac-toe-with-android-studio-ba65f8689b73?source=rss------android-5) -- [How to set a Ringtone from an MP3 file on iPhone](https://medium.com/idomongodb/how-to-set-a-ringtone-from-an-mp3-file-on-iphone-59697a339ef2?source=rss------android-5) -- [Google Assistant For Android Lets You Run Quick Commands Without Having to Say “Ok Google”](https://medium.com/@thetechnodiary.com/google-assistant-for-android-lets-you-run-quick-commands-without-having-to-say-ok-google-59dbf89bc0f6?source=rss------android-5) -- [HMS Remote Configuration — Notificar nueva versión y otras funciones](https://firemixdev.medium.com/hms-remote-configuration-notificar-nueva-versi%C3%B3n-y-otras-funciones-559d92204401?source=rss------android-5) -- [Run Multiple Android Studio Versions On A Single Machine](https://medium.com/dwarsoft/run-multiple-android-studio-versions-on-a-single-machine-2a7d00045813?source=rss------android-5) +- [Jetpack Compose の Navigation Compose で画面遷移を実現する](https://kaleidot.net/jetpack-compose-%E3%81%AE-navigation-compose-%E3%81%A7%E7%94%BB%E9%9D%A2%E9%81%B7%E7%A7%BB%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B-5ce09b446c?source=rss------android-5) +- [Android user authentication using Firebase with Spring boot backend — Part 2](https://richygreat.medium.com/android-user-authentication-using-firebase-with-spring-boot-backend-part-2-2a7243cf5b0c?source=rss------android-5) +- [Controlling video and audio in android application with android studio](https://medium.com/@harshitbhatt972/controlling-video-and-audio-in-android-application-with-android-studio-177a3cf6328c?source=rss------android-5) +- [Background work in Android : WorkManager .](https://marouene-khadhraoui.medium.com/background-work-in-android-workmanager-a228ffbcbdee?source=rss------android-5) +- [Free-Mobi Ringtones](https://freemobi-ringtones.medium.com/free-mobi-ringtones-ebc6d5787f9b?source=rss------android-5) +- [Cops & Thugs: Police Car Chase — Endless Chase](https://iamfahad1296.medium.com/cops-thugs-police-car-chase-endless-chase-dc008c681f87?source=rss------android-5) +- [Android 12 will be Featuring Extra dim mode](https://techberg.medium.com/android-12-will-be-featuring-extra-dim-mode-dbebdb43b58f?source=rss------android-5) +- [Swipe to Delete and Undo in Android RecyclerView](https://walidum.medium.com/swipe-to-delete-and-undo-in-android-recyclerview-6066b5d73541?source=rss------android-5) +- [Kotlin Collections](https://rcpyesilkaya.medium.com/kotlin-collections-c1ca6af5da87?source=rss------android-5) ### *Gizmodo posts* From 1d6c01e28c622bd32aa5fe571634f5894a3dd8be Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 27 Apr 2021 00:11:21 +0000 Subject: [PATCH 0396/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 50 insertions(+), 460 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 57 - Performance - - - - - 72 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 60d9263181..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 28 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 2a761c93e0cee54311e6f21b0c66d29810e0bee4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 27 Apr 2021 01:25:16 +0000 Subject: [PATCH 0397/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4b75398693..7a3eb1de05 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Looking for Tutor for Android App Dev](https://www.reddit.com/r/androiddev/comments/mymhx8/looking_for_tutor_for_android_app_dev/) -- [Programming for Tile Tracker?](https://www.reddit.com/r/androiddev/comments/mylrio/programming_for_tile_tracker/) -- [Android Studio on Linux - OpenJDK or Oracle JDK?](https://www.reddit.com/r/androiddev/comments/myk9vc/android_studio_on_linux_openjdk_or_oracle_jdk/) -- [Use mobile data while connected to my laptop's hotspot](https://www.reddit.com/r/androiddev/comments/mybl4c/use_mobile_data_while_connected_to_my_laptops/) -- [Is this against data laws ?](https://www.reddit.com/r/androiddev/comments/mybdzh/is_this_against_data_laws/) -- [Library private resources](https://www.reddit.com/r/androiddev/comments/myb8us/library_private_resources/) -- [Using App Mediation](https://www.reddit.com/r/androiddev/comments/my8itp/using_app_mediation/) -- [Why lawmakers are so interested in Apple’s and Google’s “rents”](https://www.reddit.com/r/androiddev/comments/my8dk4/why_lawmakers_are_so_interested_in_apples_and/) -- [Changing bundle Id to reset the ratings. What to expect?](https://www.reddit.com/r/androiddev/comments/my5sxz/changing_bundle_id_to_reset_the_ratings_what_to/) -- [Android Setup Decent Look](https://www.reddit.com/r/androiddev/comments/my401o/android_setup_decent_look/) +- [UK company charging VAT](https://www.reddit.com/r/androiddev/comments/mzbsip/uk_company_charging_vat/) +- [New Android Device Actually Shipping](https://www.reddit.com/r/androiddev/comments/mzart2/new_android_device_actually_shipping/) +- [KotlinX Coroutines Release 1.5.0-RC](https://www.reddit.com/r/androiddev/comments/mzane5/kotlinx_coroutines_release_150rc/) +- [What is the best way to keep the auth token?](https://www.reddit.com/r/androiddev/comments/mz8ac3/what_is_the_best_way_to_keep_the_auth_token/) +- [Question regarding Google coroutine example](https://www.reddit.com/r/androiddev/comments/mz76a2/question_regarding_google_coroutine_example/) +- [Apple just posted this about data, I wonder how Google will respond. Especially with data mining being the center of many of Google's core businesses.](https://www.reddit.com/r/androiddev/comments/mz5n8x/apple_just_posted_this_about_data_i_wonder_how/) +- [Use delegates to access Room methods from the Ui](https://www.reddit.com/r/androiddev/comments/mz57he/use_delegates_to_access_room_methods_from_the_ui/) +- [How to select vector path in android?](https://www.reddit.com/r/androiddev/comments/mz471n/how_to_select_vector_path_in_android/) +- [The current state of audio manipulation frameworks in Android](https://www.reddit.com/r/androiddev/comments/mz2r81/the_current_state_of_audio_manipulation/) +- [Android SAF Create Document - URI Manipulation](https://www.reddit.com/r/androiddev/comments/mz2j9s/android_saf_create_document_uri_manipulation/) ### *InfoWorld posts* From 6dea10190bb3642a79d4c5e8c23c69f8b1af644b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 27 Apr 2021 01:25:23 +0000 Subject: [PATCH 0398/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a3eb1de05..db0a8dc19e 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Arsenal posts* +- [locus](http://android-arsenal.com/details/1/8244) - [SSImagePicker](http://android-arsenal.com/details/1/8243) - [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) - [Screenshot Detection](http://android-arsenal.com/details/1/8241) @@ -314,7 +315,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) -- [Composer](http://android-arsenal.com/details/1/8234) ### *Medium posts* From 8ee6ca5112b4a693b50010f68da5ee8a393009f7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 27 Apr 2021 01:25:25 +0000 Subject: [PATCH 0399/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index db0a8dc19e..215727b130 100644 --- a/README.md +++ b/README.md @@ -320,15 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Jetpack Compose の Navigation Compose で画面遷移を実現する](https://kaleidot.net/jetpack-compose-%E3%81%AE-navigation-compose-%E3%81%A7%E7%94%BB%E9%9D%A2%E9%81%B7%E7%A7%BB%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B-5ce09b446c?source=rss------android-5) -- [Android user authentication using Firebase with Spring boot backend — Part 2](https://richygreat.medium.com/android-user-authentication-using-firebase-with-spring-boot-backend-part-2-2a7243cf5b0c?source=rss------android-5) -- [Controlling video and audio in android application with android studio](https://medium.com/@harshitbhatt972/controlling-video-and-audio-in-android-application-with-android-studio-177a3cf6328c?source=rss------android-5) -- [Background work in Android : WorkManager .](https://marouene-khadhraoui.medium.com/background-work-in-android-workmanager-a228ffbcbdee?source=rss------android-5) -- [Free-Mobi Ringtones](https://freemobi-ringtones.medium.com/free-mobi-ringtones-ebc6d5787f9b?source=rss------android-5) -- [Cops & Thugs: Police Car Chase — Endless Chase](https://iamfahad1296.medium.com/cops-thugs-police-car-chase-endless-chase-dc008c681f87?source=rss------android-5) -- [Android 12 will be Featuring Extra dim mode](https://techberg.medium.com/android-12-will-be-featuring-extra-dim-mode-dbebdb43b58f?source=rss------android-5) -- [Swipe to Delete and Undo in Android RecyclerView](https://walidum.medium.com/swipe-to-delete-and-undo-in-android-recyclerview-6066b5d73541?source=rss------android-5) -- [Kotlin Collections](https://rcpyesilkaya.medium.com/kotlin-collections-c1ca6af5da87?source=rss------android-5) +- [Android Lifecycle Revised](https://victorbrandalise.medium.com/android-lifecycle-revised-9974eb952bc5?source=rss------android-5) +- [Herramientas de informática para Android](https://vay3t.medium.com/herramientas-de-inform%C3%A1tica-para-android-fe01bb9b0e98?source=rss------android-5) +- [An organization out to help and to give privilege to the less privilege and also to enhance power](https://elp541113.medium.com/an-organization-out-to-help-and-to-give-privilege-to-the-less-privilege-and-also-to-enhance-power-534d5ec2ab01?source=rss------android-5) +- [FluBot: An Andriod password-stealing malware](https://priderockjoy.medium.com/flubot-an-andriod-password-stealing-malware-4cc5ec0a2529?source=rss------android-5) +- [Eyecandying Android app’s splash screen with animations](https://aednlaxer.medium.com/eyecandying-android-apps-splash-screen-with-animations-b6630c732940?source=rss------android-5) +- [MLive Mod Apk (2.3.6.5)_Unlock Room_Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/mlive-mod-apk-2-3-6-5-unlock-room-latest-version-2021-22-free-download-for-android-mobile-apk-d0861a7ca378?source=rss------android-5) +- [Creating a custom modifier attribute on Jetpack Compose](https://fvilarino.medium.com/creating-a-custom-modifier-attribute-on-jetpack-compose-f100c6bcb987?source=rss------android-5) +- [Jetpack Compose — Earthquake Effect](https://pauloaapereira.medium.com/jetpack-compose-earthquake-effect-9c3c0701fd2c?source=rss------android-5) +- [YouCut Pro Apk Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/youcut-pro-apk-latest-version-2021-22-free-download-for-android-mobile-apk-13f984aa7ee1?source=rss------android-5) +- [Having Texting Issues After Switching from Android to iPhone? Here’s a Possible Fix](https://joshuabeckthewriter.medium.com/having-texting-issues-after-switching-from-android-to-iphone-heres-a-possible-fix-cd94efae812c?source=rss------android-5) ### *Gizmodo posts* From 0eb7f62712634baebc3624893bf56cfe414f5add Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 27 Apr 2021 01:25:30 +0000 Subject: [PATCH 0400/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 215727b130..79c8d16136 100644 --- a/README.md +++ b/README.md @@ -350,6 +350,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* +- [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) @@ -359,7 +360,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) -- [Is VR the bear case for Facebook?](https://mobiledevmemo.com/is-vr-ar-the-bear-case-for-facebook/) ### *Infinum posts* From bfe2b882a82f1fe10396585a91320120d86a6dcf Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Tue, 27 Apr 2021 12:14:27 +0300 Subject: [PATCH 0401/2080] docs: updates on workflows Added information on documentation --- CHANGELOG.md | 2 +- README.md | 70 +++++++++++++++++++++++++++---------------- scripts/build-docs.sh | 4 ++- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9462d4614c..19a31bc422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-23) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-27) diff --git a/README.md b/README.md index 79c8d16136..6717b441c6 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -250,9 +252,10 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [UK company charging VAT](https://www.reddit.com/r/androiddev/comments/mzbsip/uk_company_charging_vat/) - [New Android Device Actually Shipping](https://www.reddit.com/r/androiddev/comments/mzart2/new_android_device_actually_shipping/) -- [KotlinX Coroutines Release 1.5.0-RC](https://www.reddit.com/r/androiddev/comments/mzane5/kotlinx_coroutines_release_150rc/) +- [KotlinX Coroutines Release 1.5.0-RC](https://www.reddit.com/r/androiddev/comments/mzane5/kotlinx_coroutines_release\_150rc/) - [What is the best way to keep the auth token?](https://www.reddit.com/r/androiddev/comments/mz8ac3/what_is_the_best_way_to_keep_the_auth_token/) - [Question regarding Google coroutine example](https://www.reddit.com/r/androiddev/comments/mz76a2/question_regarding_google_coroutine_example/) - [Apple just posted this about data, I wonder how Google will respond. Especially with data mining being the center of many of Google's core businesses.](https://www.reddit.com/r/androiddev/comments/mz5n8x/apple_just_posted_this_about_data_i_wonder_how/) @@ -260,11 +263,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [How to select vector path in android?](https://www.reddit.com/r/androiddev/comments/mz471n/how_to_select_vector_path_in_android/) - [The current state of audio manipulation frameworks in Android](https://www.reddit.com/r/androiddev/comments/mz2r81/the_current_state_of_audio_manipulation/) - [Android SAF Create Document - URI Manipulation](https://www.reddit.com/r/androiddev/comments/mz2j9s/android_saf_create_document_uri_manipulation/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -275,21 +280,25 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* + - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) + ### *Android Authority posts* + - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) @@ -300,11 +309,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) - [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) + ### *Android Arsenal posts* + - [locus](http://android-arsenal.com/details/1/8244) - [SSImagePicker](http://android-arsenal.com/details/1/8243) - [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) @@ -315,26 +326,30 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) + ### *Medium posts* + - [Android Lifecycle Revised](https://victorbrandalise.medium.com/android-lifecycle-revised-9974eb952bc5?source=rss------android-5) - [Herramientas de informática para Android](https://vay3t.medium.com/herramientas-de-inform%C3%A1tica-para-android-fe01bb9b0e98?source=rss------android-5) - [An organization out to help and to give privilege to the less privilege and also to enhance power](https://elp541113.medium.com/an-organization-out-to-help-and-to-give-privilege-to-the-less-privilege-and-also-to-enhance-power-534d5ec2ab01?source=rss------android-5) - [FluBot: An Andriod password-stealing malware](https://priderockjoy.medium.com/flubot-an-andriod-password-stealing-malware-4cc5ec0a2529?source=rss------android-5) - [Eyecandying Android app’s splash screen with animations](https://aednlaxer.medium.com/eyecandying-android-apps-splash-screen-with-animations-b6630c732940?source=rss------android-5) -- [MLive Mod Apk (2.3.6.5)_Unlock Room_Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/mlive-mod-apk-2-3-6-5-unlock-room-latest-version-2021-22-free-download-for-android-mobile-apk-d0861a7ca378?source=rss------android-5) +- [MLive Mod Apk (2.3.6.5)\_Unlock Room_Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/mlive-mod-apk-2-3-6-5-unlock-room-latest-version-2021-22-free-download-for-android-mobile-apk-d0861a7ca378?source=rss------android-5) - [Creating a custom modifier attribute on Jetpack Compose](https://fvilarino.medium.com/creating-a-custom-modifier-attribute-on-jetpack-compose-f100c6bcb987?source=rss------android-5) - [Jetpack Compose — Earthquake Effect](https://pauloaapereira.medium.com/jetpack-compose-earthquake-effect-9c3c0701fd2c?source=rss------android-5) - [YouCut Pro Apk Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/youcut-pro-apk-latest-version-2021-22-free-download-for-android-mobile-apk-13f984aa7ee1?source=rss------android-5) - [Having Texting Issues After Switching from Android to iPhone? Here’s a Possible Fix](https://joshuabeckthewriter.medium.com/having-texting-issues-after-switching-from-android-to-iphone-heres-a-possible-fix-cd94efae812c?source=rss------android-5) + ### *Gizmodo posts* + - [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) @@ -345,11 +360,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) + ### *Mobile Dev Memo posts* + - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) @@ -360,16 +377,19 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) + ### *Infinum posts* + - [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) + *** diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index 28161992ef..a9d0f48f55 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -5,7 +5,9 @@ set -o errexit set -o pipefail set -o nounset -cd .. +## Change working directory +base_dir=$(dirname $0)/.. +cd $base_dir ## Install pip module wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get-pip.py From de5bd2d43d0f4f59fec11ed7994b21e7da062683 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Tue, 27 Apr 2021 09:23:59 +0000 Subject: [PATCH 0402/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 6717b441c6..e6fddefa9c 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From ee1a087e32f026c76e9cad023aab84ae5c6db0c8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 28 Apr 2021 00:11:33 +0000 Subject: [PATCH 0403/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 32 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From aedd2f72e8438127ee5509cc67a6150b2b5c894b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:20 +0000 Subject: [PATCH 0404/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index e6fddefa9c..6ab7ef8d1c 100644 --- a/README.md +++ b/README.md @@ -250,18 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [UK company charging VAT](https://www.reddit.com/r/androiddev/comments/mzbsip/uk_company_charging_vat/) -- [New Android Device Actually Shipping](https://www.reddit.com/r/androiddev/comments/mzart2/new_android_device_actually_shipping/) -- [KotlinX Coroutines Release 1.5.0-RC](https://www.reddit.com/r/androiddev/comments/mzane5/kotlinx_coroutines_release\_150rc/) -- [What is the best way to keep the auth token?](https://www.reddit.com/r/androiddev/comments/mz8ac3/what_is_the_best_way_to_keep_the_auth_token/) -- [Question regarding Google coroutine example](https://www.reddit.com/r/androiddev/comments/mz76a2/question_regarding_google_coroutine_example/) -- [Apple just posted this about data, I wonder how Google will respond. Especially with data mining being the center of many of Google's core businesses.](https://www.reddit.com/r/androiddev/comments/mz5n8x/apple_just_posted_this_about_data_i_wonder_how/) -- [Use delegates to access Room methods from the Ui](https://www.reddit.com/r/androiddev/comments/mz57he/use_delegates_to_access_room_methods_from_the_ui/) -- [How to select vector path in android?](https://www.reddit.com/r/androiddev/comments/mz471n/how_to_select_vector_path_in_android/) -- [The current state of audio manipulation frameworks in Android](https://www.reddit.com/r/androiddev/comments/mz2r81/the_current_state_of_audio_manipulation/) -- [Android SAF Create Document - URI Manipulation](https://www.reddit.com/r/androiddev/comments/mz2j9s/android_saf_create_document_uri_manipulation/) - +- [How to deal with unknown device in google play devices list](https://www.reddit.com/r/androiddev/comments/n01zr3/how_to_deal_with_unknown_device_in_google_play/) +- [Has anyone actually benefited from migrating to using androidx.datastore?](https://www.reddit.com/r/androiddev/comments/mzzd0e/has_anyone_actually_benefited_from_migrating_to/) +- [How do Firebase query listeners work with cloud functions?](https://www.reddit.com/r/androiddev/comments/mzw77a/how_do_firebase_query_listeners_work_with_cloud/) +- [Coveralls with Android Development?](https://www.reddit.com/r/androiddev/comments/mzvdlh/coveralls_with_android_development/) +- [Does the place you work at dedicate time for learning and research?](https://www.reddit.com/r/androiddev/comments/mzuwj8/does_the_place_you_work_at_dedicate_time_for/) +- [is it possible to compile chromium webview and embed that inside an android app ?](https://www.reddit.com/r/androiddev/comments/mzuieu/is_it_possible_to_compile_chromium_webview_and/) +- [Jetpack Compose: An easy way to RecyclerView](https://www.reddit.com/r/androiddev/comments/mzug49/jetpack_compose_an_easy_way_to_recyclerview/) +- [A few tips for TestParameterInjector Library](https://www.reddit.com/r/androiddev/comments/mztyva/a_few_tips_for_testparameterinjector_library/) +- [Any tutorial on how to create a paid app?](https://www.reddit.com/r/androiddev/comments/mztgb6/any_tutorial_on_how_to_create_a_paid_app/) +- [Best 5 Chat SDK Tools for Android & iOS Apps — Worth Your Attention](https://www.reddit.com/r/androiddev/comments/mztbe5/best_5_chat_sdk_tools_for_android_ios_apps_worth/) ### *InfoWorld posts* From 648f1b680a0dccca5a4c522ba82a6a4007037d2d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:22 +0000 Subject: [PATCH 0405/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 6ab7ef8d1c..2929f0da53 100644 --- a/README.md +++ b/README.md @@ -265,7 +265,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -276,7 +275,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From 21c38480d8a5398ea2b5a31f79c57967a368e6da Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:25 +0000 Subject: [PATCH 0406/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 2929f0da53..b8982891b2 100644 --- a/README.md +++ b/README.md @@ -280,13 +280,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *RedHat posts* - - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) - ### *Android Authority posts* From 8e57f76ab4382844ea6890e62aa230ae8421bf34 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:28 +0000 Subject: [PATCH 0407/2080] Updated with the latest blog posts --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index b8982891b2..0115c31468 100644 --- a/README.md +++ b/README.md @@ -290,7 +290,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Authority posts* - +- [Google I/O 2021: Here’s what to expect](https://www.androidauthority.com/google-io/) - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) - [How to use loops in Python](https://www.androidauthority.com/how-to-use-loops-in-python-1148510/) @@ -300,8 +300,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) -- [An easy GameMaker Studio tutorial for beginners](https://www.androidauthority.com/gamemaker-studio-tutorial-1198695/) - ### *Android Arsenal posts* From b31f0d6026653aecf57e617f5f89e63aa355c529 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:31 +0000 Subject: [PATCH 0408/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 0115c31468..a4e337ffab 100644 --- a/README.md +++ b/README.md @@ -305,7 +305,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Arsenal posts* - - [locus](http://android-arsenal.com/details/1/8244) - [SSImagePicker](http://android-arsenal.com/details/1/8243) - [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) @@ -316,7 +315,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) - ### *Medium posts* From 5c0c5f2f50015fb78fad82a87edfc5da1005db5f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:33 +0000 Subject: [PATCH 0409/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index a4e337ffab..dd3153f8b2 100644 --- a/README.md +++ b/README.md @@ -320,18 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* - -- [Android Lifecycle Revised](https://victorbrandalise.medium.com/android-lifecycle-revised-9974eb952bc5?source=rss------android-5) -- [Herramientas de informática para Android](https://vay3t.medium.com/herramientas-de-inform%C3%A1tica-para-android-fe01bb9b0e98?source=rss------android-5) -- [An organization out to help and to give privilege to the less privilege and also to enhance power](https://elp541113.medium.com/an-organization-out-to-help-and-to-give-privilege-to-the-less-privilege-and-also-to-enhance-power-534d5ec2ab01?source=rss------android-5) -- [FluBot: An Andriod password-stealing malware](https://priderockjoy.medium.com/flubot-an-andriod-password-stealing-malware-4cc5ec0a2529?source=rss------android-5) -- [Eyecandying Android app’s splash screen with animations](https://aednlaxer.medium.com/eyecandying-android-apps-splash-screen-with-animations-b6630c732940?source=rss------android-5) -- [MLive Mod Apk (2.3.6.5)\_Unlock Room_Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/mlive-mod-apk-2-3-6-5-unlock-room-latest-version-2021-22-free-download-for-android-mobile-apk-d0861a7ca378?source=rss------android-5) -- [Creating a custom modifier attribute on Jetpack Compose](https://fvilarino.medium.com/creating-a-custom-modifier-attribute-on-jetpack-compose-f100c6bcb987?source=rss------android-5) -- [Jetpack Compose — Earthquake Effect](https://pauloaapereira.medium.com/jetpack-compose-earthquake-effect-9c3c0701fd2c?source=rss------android-5) -- [YouCut Pro Apk Latest Version 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/youcut-pro-apk-latest-version-2021-22-free-download-for-android-mobile-apk-13f984aa7ee1?source=rss------android-5) -- [Having Texting Issues After Switching from Android to iPhone? Here’s a Possible Fix](https://joshuabeckthewriter.medium.com/having-texting-issues-after-switching-from-android-to-iphone-heres-a-possible-fix-cd94efae812c?source=rss------android-5) - +- [50 PCS Prop Money 100 Dollars 20s Pile d’impression complète pour film, télévision, vidéo…](https://brandonhan203.medium.com/50-pcs-prop-money-100-dollars-20s-pile-dimpression-compl%C3%A8te-pour-film-t%C3%A9l%C3%A9vision-vid%C3%A9o-6b2d2dd89f87?source=rss------android-5) +- [O app da Polkamon para Android já está disponível!](https://polkamonportuguese.medium.com/o-app-da-polkamon-para-android-j%C3%A1-est%C3%A1-dispon%C3%ADvel-804a0552fb46?source=rss------android-5) +- [Como conectar minha App Android ao Flutter — Acoplando meu projecto](https://medium.com/android-dev-moz/como-conectar-minha-app-android-ao-flutter-acoplando-meu-projecto-61feabdd5d26?source=rss------android-5) +- [¿Porque Android Studio?](https://alainnicolastello.medium.com/porque-android-studio-d8142048cbff?source=rss------android-5) +- [Ubiquity Founder Profile: Yadhu Gopalan, CEO of Esper](https://ubiquityvc.medium.com/ubiquity-founder-profile-yadhu-gopalan-ceo-of-esper-ea0e17a7c088?source=rss------android-5) +- [Jetpack Compose: Řekneme XML konečně sbohem?](https://medium.com/ackee/jetpack-compose-%C5%99ekneme-xml-kone%C4%8Dn%C4%9B-sbohem-80e1537177fe?source=rss------android-5) +- [Programmatically add chips to chipGroup Android Kotlin.](https://dehb.medium.com/programmatically-add-chips-to-chipgroup-android-kotlin-72f975b475ab?source=rss------android-5) +- [2 Minutes: 2 minutes of anger](https://medium.com/@ikkondratov/2-minutes-2-minutes-of-anger-5a59982d76a5?source=rss------android-5) +- [Android App to match Regular Expressions](https://nobinjohnson2.medium.com/android-app-to-match-regular-expressions-4864df7acddb?source=rss------android-5) +- [How is Android Application Development has brought about a major revolution in the mobile world?](https://mabdulla.medium.com/how-is-android-application-development-has-brought-about-a-major-revolution-in-the-mobile-world-f16e24e6ee4f?source=rss------android-5) ### *Gizmodo posts* From f31091962c6cc34b8415d49b2cd7acc638797eb8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:35 +0000 Subject: [PATCH 0410/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index dd3153f8b2..82585c9ed1 100644 --- a/README.md +++ b/README.md @@ -335,7 +335,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* - - [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) @@ -346,7 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) - [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) - [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) - ### *Mobile Dev Memo posts* From a1c05c2793c37594411428a318c7d5b0f2822556 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:39 +0000 Subject: [PATCH 0411/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 82585c9ed1..859263a8aa 100644 --- a/README.md +++ b/README.md @@ -350,7 +350,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* - - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) @@ -361,7 +360,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) - [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) - ### *Infinum posts* From 202582c43fdd5bb6a6fc95b9b60560dd9297bd38 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Apr 2021 01:25:42 +0000 Subject: [PATCH 0412/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 859263a8aa..3328ad213a 100644 --- a/README.md +++ b/README.md @@ -365,13 +365,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Infinum posts* - - [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) - [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) - *** From 3c50c71c37c07b64b3d1e961c191f3a9a24cf1e1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 29 Apr 2021 00:11:00 +0000 Subject: [PATCH 0413/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 62 + Performance + + + + + 72 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 27 Performance From 58417e3fea613cc047d3649a959f75ab1445a4f1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 29 Apr 2021 01:24:52 +0000 Subject: [PATCH 0414/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3328ad213a..aab70245de 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to deal with unknown device in google play devices list](https://www.reddit.com/r/androiddev/comments/n01zr3/how_to_deal_with_unknown_device_in_google_play/) -- [Has anyone actually benefited from migrating to using androidx.datastore?](https://www.reddit.com/r/androiddev/comments/mzzd0e/has_anyone_actually_benefited_from_migrating_to/) -- [How do Firebase query listeners work with cloud functions?](https://www.reddit.com/r/androiddev/comments/mzw77a/how_do_firebase_query_listeners_work_with_cloud/) -- [Coveralls with Android Development?](https://www.reddit.com/r/androiddev/comments/mzvdlh/coveralls_with_android_development/) -- [Does the place you work at dedicate time for learning and research?](https://www.reddit.com/r/androiddev/comments/mzuwj8/does_the_place_you_work_at_dedicate_time_for/) -- [is it possible to compile chromium webview and embed that inside an android app ?](https://www.reddit.com/r/androiddev/comments/mzuieu/is_it_possible_to_compile_chromium_webview_and/) -- [Jetpack Compose: An easy way to RecyclerView](https://www.reddit.com/r/androiddev/comments/mzug49/jetpack_compose_an_easy_way_to_recyclerview/) -- [A few tips for TestParameterInjector Library](https://www.reddit.com/r/androiddev/comments/mztyva/a_few_tips_for_testparameterinjector_library/) -- [Any tutorial on how to create a paid app?](https://www.reddit.com/r/androiddev/comments/mztgb6/any_tutorial_on_how_to_create_a_paid_app/) -- [Best 5 Chat SDK Tools for Android & iOS Apps — Worth Your Attention](https://www.reddit.com/r/androiddev/comments/mztbe5/best_5_chat_sdk_tools_for_android_ios_apps_worth/) +- [KotlinX Serialization Release 1.2.0](https://www.reddit.com/r/androiddev/comments/n0spbu/kotlinx_serialization_release_120/) +- [Why are globals, static variables, and singletons so often used?](https://www.reddit.com/r/androiddev/comments/n0qgj7/why_are_globals_static_variables_and_singletons/) +- [I know that Compose’s Preview feature can only be used in the Canary version, but is it possible to use, or at least build Jetpack Compose in the stable Android Studio?](https://www.reddit.com/r/androiddev/comments/n0pbk2/i_know_that_composes_preview_feature_can_only_be/) +- [Kotlin 1.5.0, More About Future Support for Value Classes"](https://www.reddit.com/r/androiddev/comments/n0oj48/kotlin_150_more_about_future_support_for_value/) +- [Google has declared Droidscript is malware](https://www.reddit.com/r/androiddev/comments/n0hq7t/google_has_declared_droidscript_is_malware/) +- [PSA: Big Sur 11.3 breaks Android emulator](https://www.reddit.com/r/androiddev/comments/n0hnn6/psa_big_sur_113_breaks_android_emulator/) +- [AutoBindings - Set of annotations that aims to remove some boilerplate code](https://www.reddit.com/r/androiddev/comments/n0fg08/autobindings_set_of_annotations_that_aims_to/) +- [Phone warranty lost due to "adb root" command on unrooted phone](https://www.reddit.com/r/androiddev/comments/n0fc75/phone_warranty_lost_due_to_adb_root_command_on/) +- [Google Play App Upload](https://www.reddit.com/r/androiddev/comments/n0d243/google_play_app_upload/) +- [Looking for a chat SDK for a marketplace app](https://www.reddit.com/r/androiddev/comments/n0cwnx/looking_for_a_chat_sdk_for_a_marketplace_app/) ### *InfoWorld posts* From c5da9ebefa53fe564ee0f2d5f746ff9f2e54dd9d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 29 Apr 2021 01:24:59 +0000 Subject: [PATCH 0415/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aab70245de..3da1a68d05 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [50 PCS Prop Money 100 Dollars 20s Pile d’impression complète pour film, télévision, vidéo…](https://brandonhan203.medium.com/50-pcs-prop-money-100-dollars-20s-pile-dimpression-compl%C3%A8te-pour-film-t%C3%A9l%C3%A9vision-vid%C3%A9o-6b2d2dd89f87?source=rss------android-5) -- [O app da Polkamon para Android já está disponível!](https://polkamonportuguese.medium.com/o-app-da-polkamon-para-android-j%C3%A1-est%C3%A1-dispon%C3%ADvel-804a0552fb46?source=rss------android-5) -- [Como conectar minha App Android ao Flutter — Acoplando meu projecto](https://medium.com/android-dev-moz/como-conectar-minha-app-android-ao-flutter-acoplando-meu-projecto-61feabdd5d26?source=rss------android-5) -- [¿Porque Android Studio?](https://alainnicolastello.medium.com/porque-android-studio-d8142048cbff?source=rss------android-5) -- [Ubiquity Founder Profile: Yadhu Gopalan, CEO of Esper](https://ubiquityvc.medium.com/ubiquity-founder-profile-yadhu-gopalan-ceo-of-esper-ea0e17a7c088?source=rss------android-5) -- [Jetpack Compose: Řekneme XML konečně sbohem?](https://medium.com/ackee/jetpack-compose-%C5%99ekneme-xml-kone%C4%8Dn%C4%9B-sbohem-80e1537177fe?source=rss------android-5) -- [Programmatically add chips to chipGroup Android Kotlin.](https://dehb.medium.com/programmatically-add-chips-to-chipgroup-android-kotlin-72f975b475ab?source=rss------android-5) -- [2 Minutes: 2 minutes of anger](https://medium.com/@ikkondratov/2-minutes-2-minutes-of-anger-5a59982d76a5?source=rss------android-5) -- [Android App to match Regular Expressions](https://nobinjohnson2.medium.com/android-app-to-match-regular-expressions-4864df7acddb?source=rss------android-5) -- [How is Android Application Development has brought about a major revolution in the mobile world?](https://mabdulla.medium.com/how-is-android-application-development-has-brought-about-a-major-revolution-in-the-mobile-world-f16e24e6ee4f?source=rss------android-5) +- [Android Lifecycle Scenarios — Single and Multi Activities](https://victorbrandalise.medium.com/android-lifecycle-scenarios-single-and-multi-activities-43b28dd3ee26?source=rss------android-5) +- [5th Blog Post (3rd party Icons done)](https://vaivea1.medium.com/5th-blog-post-3rd-party-icons-done-dbe0cfdb0424?source=rss------android-5) +- [¿Porque Kotlin? Kotlin vs Java](https://alainnicolastello.medium.com/porque-kotlin-kotlin-vs-java-78b2070035f5?source=rss------android-5) +- [Ghost Screen Fix Repara Daños En Tu Pantalla](https://htcstoremexico.medium.com/ghost-screen-fix-repara-da%C3%B1os-en-tu-pantalla-8515a548e932?source=rss------android-5) +- [Test Secrets, Test Suites](https://fredgrott.medium.com/test-secrets-test-suites-99f8390b8d4b?source=rss------android-5) +- [An organization out to help and to give privilege to the less privilege and also to enhance power](https://tiopage86.medium.com/an-organization-out-to-help-and-to-give-privilege-to-the-less-privilege-and-also-to-enhance-power-188e82c0ea0d?source=rss------android-5) +- [Snipping Tool++ (v6.4.5) Latest Version 2021/22 Free Download For All Windows — PCSuite](https://nafaswali14.medium.com/snipping-tool-v6-4-5-latest-version-2021-22-free-download-for-all-windows-pcsuite-f0ad12599e0f?source=rss------android-5) +- [ONEPLUS in 2021?](https://kailashsiri.medium.com/oneplus-in-2021-f9cec0ba1e65?source=rss------android-5) +- [Domain Specific Language — DSL](https://gabrielmoraesleonardo.medium.com/domain-specific-language-dsl-82e458f330c4?source=rss------android-5) +- [Best File Manager Apps Android Phone Ke Liye](https://hinditechvideos.medium.com/best-file-manager-apps-android-phone-ke-liye-fa0c968711bd?source=rss------android-5) ### *Gizmodo posts* From 26cc48139727faedb7029a9251edf43daefa2279 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 29 Apr 2021 01:25:04 +0000 Subject: [PATCH 0416/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3da1a68d05..9563373152 100644 --- a/README.md +++ b/README.md @@ -350,6 +350,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* +- [Creative paralysis: ad creative production and testing in iOS 14](https://mobiledevmemo.com/creative-paralysis-ad-creative-production-and-testing-for-ios-14/) - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) @@ -359,7 +360,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Dear App Developers: fingerprinting is not a viable workaround to ATT](https://mobiledevmemo.com/dear-app-developers-fingerprinting-is-not-a-viable-workaround-to-att/) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) - [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) -- [Apple, CAID, and China: rock, meet hard place](https://mobiledevmemo.com/apple-caid-and-china-rock-meet-hard-place/) ### *Infinum posts* From 38f448a4b397326af7fe71a1a0921ca3088538cd Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 30 Apr 2021 00:38:59 +0000 Subject: [PATCH 0417/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..bd037d2169 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..60d9263181 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 28 Performance From 074e1d8efbdd8b7a8764dcc151634a2f4559a539 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 30 Apr 2021 01:58:16 +0000 Subject: [PATCH 0418/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9563373152..d52e1a48e1 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [KotlinX Serialization Release 1.2.0](https://www.reddit.com/r/androiddev/comments/n0spbu/kotlinx_serialization_release_120/) -- [Why are globals, static variables, and singletons so often used?](https://www.reddit.com/r/androiddev/comments/n0qgj7/why_are_globals_static_variables_and_singletons/) -- [I know that Compose’s Preview feature can only be used in the Canary version, but is it possible to use, or at least build Jetpack Compose in the stable Android Studio?](https://www.reddit.com/r/androiddev/comments/n0pbk2/i_know_that_composes_preview_feature_can_only_be/) -- [Kotlin 1.5.0, More About Future Support for Value Classes"](https://www.reddit.com/r/androiddev/comments/n0oj48/kotlin_150_more_about_future_support_for_value/) -- [Google has declared Droidscript is malware](https://www.reddit.com/r/androiddev/comments/n0hq7t/google_has_declared_droidscript_is_malware/) -- [PSA: Big Sur 11.3 breaks Android emulator](https://www.reddit.com/r/androiddev/comments/n0hnn6/psa_big_sur_113_breaks_android_emulator/) -- [AutoBindings - Set of annotations that aims to remove some boilerplate code](https://www.reddit.com/r/androiddev/comments/n0fg08/autobindings_set_of_annotations_that_aims_to/) -- [Phone warranty lost due to "adb root" command on unrooted phone](https://www.reddit.com/r/androiddev/comments/n0fc75/phone_warranty_lost_due_to_adb_root_command_on/) -- [Google Play App Upload](https://www.reddit.com/r/androiddev/comments/n0d243/google_play_app_upload/) -- [Looking for a chat SDK for a marketplace app](https://www.reddit.com/r/androiddev/comments/n0cwnx/looking_for_a_chat_sdk_for_a_marketplace_app/) +- [How to lock bootloader from a Chromebook...](https://www.reddit.com/r/androiddev/comments/n1ifhr/how_to_lock_bootloader_from_a_chromebook/) +- [Did you try "Paraphraser" android app?](https://www.reddit.com/r/androiddev/comments/n1hh45/did_you_try_paraphraser_android_app/) +- [I we can use It natively in mac m1](https://www.reddit.com/r/androiddev/comments/n1gxk8/i_we_can_use_it_natively_in_mac_m1/) +- [Initial support for Apple Silicon (arm64) in Android Studio Arctic Fox](https://www.reddit.com/r/androiddev/comments/n1gtit/initial_support_for_apple_silicon_arm64_in/) +- [Looking to buy apps with 5000+ dau](https://www.reddit.com/r/androiddev/comments/n1gnzy/looking_to_buy_apps_with_5000_dau/) +- [Scene depth map using android smartphone](https://www.reddit.com/r/androiddev/comments/n1g077/scene_depth_map_using_android_smartphone/) +- [Android Studio Arctic Fox Canary 15 available](https://www.reddit.com/r/androiddev/comments/n1fkme/android_studio_arctic_fox_canary_15_available/) +- [Did you ever think how would your UI behave when there is an e҉a҉r҉t҉h҉q҉u҉a҉k҉e҉? Well, I can show you. 🤯](https://www.reddit.com/r/androiddev/comments/n1dqfr/did_you_ever_think_how_would_your_ui_behave_when/) +- [Neumorphic UI in android](https://www.reddit.com/r/androiddev/comments/n193jm/neumorphic_ui_in_android/) +- [Is there a way to export the navigation graph as an image?](https://www.reddit.com/r/androiddev/comments/n16j64/is_there_a_way_to_export_the_navigation_graph_as/) ### *InfoWorld posts* From f0bcae74e37097976de151a8789b858352e33762 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 30 Apr 2021 01:58:22 +0000 Subject: [PATCH 0419/2080] Updated with the latest blog posts --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d52e1a48e1..2ddf8e748a 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,15 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Android Lifecycle Scenarios — Single and Multi Activities](https://victorbrandalise.medium.com/android-lifecycle-scenarios-single-and-multi-activities-43b28dd3ee26?source=rss------android-5) -- [5th Blog Post (3rd party Icons done)](https://vaivea1.medium.com/5th-blog-post-3rd-party-icons-done-dbe0cfdb0424?source=rss------android-5) -- [¿Porque Kotlin? Kotlin vs Java](https://alainnicolastello.medium.com/porque-kotlin-kotlin-vs-java-78b2070035f5?source=rss------android-5) -- [Ghost Screen Fix Repara Daños En Tu Pantalla](https://htcstoremexico.medium.com/ghost-screen-fix-repara-da%C3%B1os-en-tu-pantalla-8515a548e932?source=rss------android-5) -- [Test Secrets, Test Suites](https://fredgrott.medium.com/test-secrets-test-suites-99f8390b8d4b?source=rss------android-5) -- [An organization out to help and to give privilege to the less privilege and also to enhance power](https://tiopage86.medium.com/an-organization-out-to-help-and-to-give-privilege-to-the-less-privilege-and-also-to-enhance-power-188e82c0ea0d?source=rss------android-5) -- [Snipping Tool++ (v6.4.5) Latest Version 2021/22 Free Download For All Windows — PCSuite](https://nafaswali14.medium.com/snipping-tool-v6-4-5-latest-version-2021-22-free-download-for-all-windows-pcsuite-f0ad12599e0f?source=rss------android-5) -- [ONEPLUS in 2021?](https://kailashsiri.medium.com/oneplus-in-2021-f9cec0ba1e65?source=rss------android-5) -- [Domain Specific Language — DSL](https://gabrielmoraesleonardo.medium.com/domain-specific-language-dsl-82e458f330c4?source=rss------android-5) -- [Best File Manager Apps Android Phone Ke Liye](https://hinditechvideos.medium.com/best-file-manager-apps-android-phone-ke-liye-fa0c968711bd?source=rss------android-5) +- [Primeros pasos con HUAWEI Auth Service](https://medium.com/huawei-developers-latinoam%C3%A9rica/primeros-pasos-con-huawei-auth-service-50053f2c4fa5?source=rss------android-5) +- [50 sztuk Prop Money 100 dolarów 20s Full Print Stack do filmów, telewizji, wideo, nowości i…](https://handzerjohn.medium.com/50-sztuk-prop-money-100-dolar%C3%B3w-20s-full-print-stack-do-film%C3%B3w-telewizji-wideo-nowo%C5%9Bci-i-ce8f275a431b?source=rss------android-5) +- [Seekbar in application with Android Studio](https://medium.com/@harshitbhatt972/seekbar-in-application-with-android-studio-fedadd2dcfb1?source=rss------android-5) +- [API(Application programming Interface)](https://askmrtrivedi.medium.com/api-application-programming-interface-22e11ddbfd1b?source=rss------android-5) +- [Simple Steps to Saving, Loading, and Deleting Bitmaps in Android Storage — Using Java](https://dpw-developer.medium.com/simple-steps-to-saving-loading-and-deleting-bitmaps-in-android-storage-using-java-a974b9d97c4a?source=rss------android-5) +- [Virtual Library, An Easy to Use Android Application](https://grantsaylordev.medium.com/virtual-library-an-easy-to-use-android-application-53275a905768?source=rss------android-5) +- [Chrome OS で Android の設定画面を出す](https://oka.medium.com/chromeos-%E3%81%A7-android-%E3%81%AE%E8%A8%AD%E5%AE%9A%E7%94%BB%E9%9D%A2%E3%82%92%E5%87%BA%E3%81%99-32e2cdcd87ee?source=rss------android-5) +- [Facebook harvested phone call and text data from Android users for years](https://weberlegacy.medium.com/facebook-harvested-phone-call-and-text-data-from-android-users-for-years-8b67f14cbd14?source=rss------android-5) +- [Adding Interactivity to an Image in Flutter — Take 2](https://jtmuller5-98869.medium.com/adding-interactivity-to-an-image-in-flutter-take-2-9b51402c8329?source=rss------android-5) ### *Gizmodo posts* From 3c0ea99e76583b4c043252027cfe0f3a9fb7b6d9 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 1 May 2021 00:41:16 +0000 Subject: [PATCH 0420/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index bd037d2169..2433052f5e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 59 Performance From 7738310c521ef32e537e6cc5e87e41a47c021668 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 1 May 2021 02:02:09 +0000 Subject: [PATCH 0421/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2ddf8e748a..cddbf139cf 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to lock bootloader from a Chromebook...](https://www.reddit.com/r/androiddev/comments/n1ifhr/how_to_lock_bootloader_from_a_chromebook/) -- [Did you try "Paraphraser" android app?](https://www.reddit.com/r/androiddev/comments/n1hh45/did_you_try_paraphraser_android_app/) -- [I we can use It natively in mac m1](https://www.reddit.com/r/androiddev/comments/n1gxk8/i_we_can_use_it_natively_in_mac_m1/) -- [Initial support for Apple Silicon (arm64) in Android Studio Arctic Fox](https://www.reddit.com/r/androiddev/comments/n1gtit/initial_support_for_apple_silicon_arm64_in/) -- [Looking to buy apps with 5000+ dau](https://www.reddit.com/r/androiddev/comments/n1gnzy/looking_to_buy_apps_with_5000_dau/) -- [Scene depth map using android smartphone](https://www.reddit.com/r/androiddev/comments/n1g077/scene_depth_map_using_android_smartphone/) -- [Android Studio Arctic Fox Canary 15 available](https://www.reddit.com/r/androiddev/comments/n1fkme/android_studio_arctic_fox_canary_15_available/) -- [Did you ever think how would your UI behave when there is an e҉a҉r҉t҉h҉q҉u҉a҉k҉e҉? Well, I can show you. 🤯](https://www.reddit.com/r/androiddev/comments/n1dqfr/did_you_ever_think_how_would_your_ui_behave_when/) -- [Neumorphic UI in android](https://www.reddit.com/r/androiddev/comments/n193jm/neumorphic_ui_in_android/) -- [Is there a way to export the navigation graph as an image?](https://www.reddit.com/r/androiddev/comments/n16j64/is_there_a_way_to_export_the_navigation_graph_as/) +- [Interviewing: Android focused system design materials](https://www.reddit.com/r/androiddev/comments/n2614y/interviewing_android_focused_system_design/) +- [Write to Android/data folder, android 11](https://www.reddit.com/r/androiddev/comments/n25iu0/write_to_androiddata_folder_android_11/) +- [Google pixel 4 can't connect to VoLTE](https://www.reddit.com/r/androiddev/comments/n23lh2/google_pixel_4_cant_connect_to_volte/) +- [How to hide "Developer Options" from other apps?](https://www.reddit.com/r/androiddev/comments/n232ko/how_to_hide_developer_options_from_other_apps/) +- [What is your experience and tips for driving game app downloads via paid ads platforms like Facebook Ads, Apple Search Ads, Youtube ads, etc...?](https://www.reddit.com/r/androiddev/comments/n21csq/what_is_your_experience_and_tips_for_driving_game/) +- [How should I differentiate free and paid version of an app?](https://www.reddit.com/r/androiddev/comments/n1ykaw/how_should_i_differentiate_free_and_paid_version/) +- [Mail notificationfor every sms i got on my android device with its content](https://www.reddit.com/r/androiddev/comments/n1x5f8/mail_notificationfor_every_sms_i_got_on_my/) +- [KMMT : Kotlin Multiplatform Mobile Template ( Kotlin Multiplatform Mobile Development Simplified )](https://www.reddit.com/r/androiddev/comments/n1x3pi/kmmt_kotlin_multiplatform_mobile_template_kotlin/) +- [Google I/O 2021 schedule is out](https://www.reddit.com/r/androiddev/comments/n1wdli/google_io_2021_schedule_is_out/) +- [Salaries](https://www.reddit.com/r/androiddev/comments/n1u3p8/salaries/) ### *InfoWorld posts* From 326d1a4f95c9edcb5609336ba086dac51c81f1f7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 1 May 2021 02:02:16 +0000 Subject: [PATCH 0422/2080] Updated with the latest blog posts --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cddbf139cf..aafa7f85f9 100644 --- a/README.md +++ b/README.md @@ -320,15 +320,15 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Primeros pasos con HUAWEI Auth Service](https://medium.com/huawei-developers-latinoam%C3%A9rica/primeros-pasos-con-huawei-auth-service-50053f2c4fa5?source=rss------android-5) -- [50 sztuk Prop Money 100 dolarów 20s Full Print Stack do filmów, telewizji, wideo, nowości i…](https://handzerjohn.medium.com/50-sztuk-prop-money-100-dolar%C3%B3w-20s-full-print-stack-do-film%C3%B3w-telewizji-wideo-nowo%C5%9Bci-i-ce8f275a431b?source=rss------android-5) -- [Seekbar in application with Android Studio](https://medium.com/@harshitbhatt972/seekbar-in-application-with-android-studio-fedadd2dcfb1?source=rss------android-5) -- [API(Application programming Interface)](https://askmrtrivedi.medium.com/api-application-programming-interface-22e11ddbfd1b?source=rss------android-5) -- [Simple Steps to Saving, Loading, and Deleting Bitmaps in Android Storage — Using Java](https://dpw-developer.medium.com/simple-steps-to-saving-loading-and-deleting-bitmaps-in-android-storage-using-java-a974b9d97c4a?source=rss------android-5) -- [Virtual Library, An Easy to Use Android Application](https://grantsaylordev.medium.com/virtual-library-an-easy-to-use-android-application-53275a905768?source=rss------android-5) -- [Chrome OS で Android の設定画面を出す](https://oka.medium.com/chromeos-%E3%81%A7-android-%E3%81%AE%E8%A8%AD%E5%AE%9A%E7%94%BB%E9%9D%A2%E3%82%92%E5%87%BA%E3%81%99-32e2cdcd87ee?source=rss------android-5) -- [Facebook harvested phone call and text data from Android users for years](https://weberlegacy.medium.com/facebook-harvested-phone-call-and-text-data-from-android-users-for-years-8b67f14cbd14?source=rss------android-5) -- [Adding Interactivity to an Image in Flutter — Take 2](https://jtmuller5-98869.medium.com/adding-interactivity-to-an-image-in-flutter-take-2-9b51402c8329?source=rss------android-5) +- [Simplewall (Latest v3.3.3) Free Download For Windows — PCSuite](https://nafaswali14.medium.com/simplewall-latest-v3-3-3-free-download-for-windows-pcsuite-55e13b8e885f?source=rss------android-5) +- [50 sztuk Prop Money 100 dolarów 20s Full Print Stack do filmów, telewizji, wideo, nowości i…](https://lelyahandzer.medium.com/50-sztuk-prop-money-100-dolar%C3%B3w-20s-full-print-stack-do-film%C3%B3w-telewizji-wideo-nowo%C5%9Bci-i-be954bc6b857?source=rss------android-5) +- [TECNO has announced the release of the Spark 7 Pro, which includes some exciting surprises for fans!](https://sk6446777.medium.com/tecno-has-announced-the-release-of-the-spark-7-pro-which-includes-some-exciting-surprises-for-fans-6c83b1f3555c?source=rss------android-5) +- [Rules of Structured concurrency in Kotlin](https://keep-calm.medium.com/rules-of-structured-concurrency-in-kotlin-dad5623423a4?source=rss------android-5) +- [SOLID: Um assunto necessário | Parte 5 — Princípio da inversão de dependência](https://medium.com/aline-souza/solid-um-assunto-necess%C3%A1rio-parte-5-princ%C3%ADpio-da-invers%C3%A3o-de-depend%C3%AAncia-46ef93709e06?source=rss------android-5) +- [Snapchat iOS’tan Daha Fazla Android Kullanıcısına Sahip](https://sosyal-teknoloji-news.medium.com/snapchat-iostan-daha-fazla-android-kullan%C4%B1c%C4%B1s%C4%B1na-sahip-f19ac0667955?source=rss------android-5) +- [Test ypurs souce a 30 04 2021](https://medium.com/@iumqcdbs/test-ypurs-souce-a-30-04-2021-a5e604dcf293?source=rss------android-5) +- [Android Kotlin Mülakat Soruları](https://ercanduman.medium.com/android-kotlin-m%C3%BClakat-sorular%C4%B1-39a6c39ab2d9?source=rss------android-5) +- [Android Developer Interview Questions:-](https://p-mishra2905.medium.com/android-developer-interview-questions-553c8508fe3?source=rss------android-5) ### *Gizmodo posts* From 3c71f14d45a25e5979fa9e96815b4138545dd6a8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 1 May 2021 02:02:21 +0000 Subject: [PATCH 0423/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aafa7f85f9..7ee3867d54 100644 --- a/README.md +++ b/README.md @@ -364,11 +364,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Infinum posts* +- [Be careful with you Google ads!](https://androidsweets.ongoodbits.com/be-careful-with-you-google-ads) - [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) - [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) -- [Do you think you know all about PendingIntent?](https://androidsweets.ongoodbits.com/do-you-think-you-know-all-about-pendingintent) *** From 787cd1116e0766439c2998ecf06473a55e77c9ba Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 2 May 2021 00:45:22 +0000 Subject: [PATCH 0424/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2433052f5e..1c67d311f4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 60d9263181..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 32 Performance From 731cfc82c1e5bb66c502b3df440c609771233d50 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 2 May 2021 02:06:18 +0000 Subject: [PATCH 0425/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7ee3867d54..e03fb2e07b 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Interviewing: Android focused system design materials](https://www.reddit.com/r/androiddev/comments/n2614y/interviewing_android_focused_system_design/) -- [Write to Android/data folder, android 11](https://www.reddit.com/r/androiddev/comments/n25iu0/write_to_androiddata_folder_android_11/) -- [Google pixel 4 can't connect to VoLTE](https://www.reddit.com/r/androiddev/comments/n23lh2/google_pixel_4_cant_connect_to_volte/) -- [How to hide "Developer Options" from other apps?](https://www.reddit.com/r/androiddev/comments/n232ko/how_to_hide_developer_options_from_other_apps/) -- [What is your experience and tips for driving game app downloads via paid ads platforms like Facebook Ads, Apple Search Ads, Youtube ads, etc...?](https://www.reddit.com/r/androiddev/comments/n21csq/what_is_your_experience_and_tips_for_driving_game/) -- [How should I differentiate free and paid version of an app?](https://www.reddit.com/r/androiddev/comments/n1ykaw/how_should_i_differentiate_free_and_paid_version/) -- [Mail notificationfor every sms i got on my android device with its content](https://www.reddit.com/r/androiddev/comments/n1x5f8/mail_notificationfor_every_sms_i_got_on_my/) -- [KMMT : Kotlin Multiplatform Mobile Template ( Kotlin Multiplatform Mobile Development Simplified )](https://www.reddit.com/r/androiddev/comments/n1x3pi/kmmt_kotlin_multiplatform_mobile_template_kotlin/) -- [Google I/O 2021 schedule is out](https://www.reddit.com/r/androiddev/comments/n1wdli/google_io_2021_schedule_is_out/) -- [Salaries](https://www.reddit.com/r/androiddev/comments/n1u3p8/salaries/) +- [Boot loader](https://www.reddit.com/r/androiddev/comments/n2wqty/boot_loader/) +- [Is it possible to use Android Enterprise on Android Go devices?](https://www.reddit.com/r/androiddev/comments/n2w8fg/is_it_possible_to_use_android_enterprise_on/) +- [What is the logic behind updateQuestion regarding the animations in Trivia App?](https://www.reddit.com/r/androiddev/comments/n2vj6z/what_is_the_logic_behind_updatequestion_regarding/) +- [Testing Admob Ad Serving Limit](https://www.reddit.com/r/androiddev/comments/n2vi51/testing_admob_ad_serving_limit/) +- [Library for Resource Binding?](https://www.reddit.com/r/androiddev/comments/n2uba4/library_for_resource_binding/) +- [How do you implement your FirebaseRemoteConfig object as singleton correct, for easy access?](https://www.reddit.com/r/androiddev/comments/n2ouir/how_do_you_implement_your_firebaseremoteconfig/) +- [Did Google all of a sudden start manually reviewing Android TV apps?](https://www.reddit.com/r/androiddev/comments/n2nqjx/did_google_all_of_a_sudden_start_manually/) +- [Handling Scrolling of Horizontal Recyclerview inside Viewpager2](https://www.reddit.com/r/androiddev/comments/n2nax9/handling_scrolling_of_horizontal_recyclerview/) +- [Has anyone used the instrumentation orchestrator and Emma code coverage targeting Android 11?](https://www.reddit.com/r/androiddev/comments/n2n7fe/has_anyone_used_the_instrumentation_orchestrator/) +- [Create video generator](https://www.reddit.com/r/androiddev/comments/n2mx47/create_video_generator/) ### *InfoWorld posts* From aa3652a1e5e4b145325ddfe6a9e6b3539978e4af Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 2 May 2021 02:06:25 +0000 Subject: [PATCH 0426/2080] Updated with the latest blog posts --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e03fb2e07b..ff39df442b 100644 --- a/README.md +++ b/README.md @@ -320,15 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Simplewall (Latest v3.3.3) Free Download For Windows — PCSuite](https://nafaswali14.medium.com/simplewall-latest-v3-3-3-free-download-for-windows-pcsuite-55e13b8e885f?source=rss------android-5) -- [50 sztuk Prop Money 100 dolarów 20s Full Print Stack do filmów, telewizji, wideo, nowości i…](https://lelyahandzer.medium.com/50-sztuk-prop-money-100-dolar%C3%B3w-20s-full-print-stack-do-film%C3%B3w-telewizji-wideo-nowo%C5%9Bci-i-be954bc6b857?source=rss------android-5) -- [TECNO has announced the release of the Spark 7 Pro, which includes some exciting surprises for fans!](https://sk6446777.medium.com/tecno-has-announced-the-release-of-the-spark-7-pro-which-includes-some-exciting-surprises-for-fans-6c83b1f3555c?source=rss------android-5) -- [Rules of Structured concurrency in Kotlin](https://keep-calm.medium.com/rules-of-structured-concurrency-in-kotlin-dad5623423a4?source=rss------android-5) -- [SOLID: Um assunto necessário | Parte 5 — Princípio da inversão de dependência](https://medium.com/aline-souza/solid-um-assunto-necess%C3%A1rio-parte-5-princ%C3%ADpio-da-invers%C3%A3o-de-depend%C3%AAncia-46ef93709e06?source=rss------android-5) -- [Snapchat iOS’tan Daha Fazla Android Kullanıcısına Sahip](https://sosyal-teknoloji-news.medium.com/snapchat-iostan-daha-fazla-android-kullan%C4%B1c%C4%B1s%C4%B1na-sahip-f19ac0667955?source=rss------android-5) -- [Test ypurs souce a 30 04 2021](https://medium.com/@iumqcdbs/test-ypurs-souce-a-30-04-2021-a5e604dcf293?source=rss------android-5) -- [Android Kotlin Mülakat Soruları](https://ercanduman.medium.com/android-kotlin-m%C3%BClakat-sorular%C4%B1-39a6c39ab2d9?source=rss------android-5) -- [Android Developer Interview Questions:-](https://p-mishra2905.medium.com/android-developer-interview-questions-553c8508fe3?source=rss------android-5) +- [Easy UI And Screenshot Testing On Android](https://patrykkosieradzki.medium.com/easy-ui-and-screenshot-testing-on-android-2b138f6d1eb8?source=rss------android-5) +- [No encuentras una app en la Play Store? Aquí te la conseguimos!](https://htcstoremexico.medium.com/no-encuentras-una-app-en-la-play-store-aqu%C3%AD-te-la-conseguimos-1c396c53f0b8?source=rss------android-5) +- [Jetpack RecyclerView [All official development resources]](https://medium.com/android-topics/recyclerview-all-official-development-resources-6da82e5966b6?source=rss------android-5) +- [Организация, стремящаяся помочь и предоставить привилегии менее привилегированным, а также усилить…](https://chii58921.medium.com/%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D1%81%D1%82%D1%80%D0%B5%D0%BC%D1%8F%D1%89%D0%B0%D1%8F%D1%81%D1%8F-%D0%BF%D0%BE%D0%BC%D0%BE%D1%87%D1%8C-%D0%B8-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8-%D0%BC%D0%B5%D0%BD%D0%B5%D0%B5-%D0%BF%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC-%D0%B0-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D1%83%D1%81%D0%B8%D0%BB%D0%B8%D1%82%D1%8C-379606c100e4?source=rss------android-5) +- [Android, Kotlin free resources](https://paul77uk.medium.com/android-kotlin-free-resources-73418a87b95b?source=rss------android-5) +- [Gaming trends witnessed in 2020](https://tinyturtlesays.medium.com/gaming-trends-witnessed-in-2020-a3f20ad0bc03?source=rss------android-5) +- [Android Coroutine Scopes](https://loumorda.medium.com/android-coroutine-scopes-ebf4c88bf4d1?source=rss------android-5) +- [Firebase Remote Config [All official development resources]](https://medium.com/android-topics/firebase-remote-config-all-official-development-resources-14e1c0f6ac2b?source=rss------android-5) +- [Best Moba Injector (Latest v1.10) 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/best-moba-injector-latest-v1-10-2021-22-free-download-for-android-mobile-apk-bb9108ceec12?source=rss------android-5) +- [Выбор лучшего фреймворка для создания мобильного приложения](https://medium.com/nuances-of-programming/%D0%B2%D1%8B%D0%B1%D0%BE%D1%80-%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%B3%D0%BE-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-4bbca64a41f2?source=rss------android-5) ### *Gizmodo posts* From f5246af2af0fabb63cdd0250769428be4630155d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 3 May 2021 00:40:57 +0000 Subject: [PATCH 0427/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c67d311f4..bd037d2169 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From abf6537abf63d11cfd7f6d81d195c5aab87d6b92 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 3 May 2021 02:02:27 +0000 Subject: [PATCH 0428/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ff39df442b..e7e3cc13e1 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Boot loader](https://www.reddit.com/r/androiddev/comments/n2wqty/boot_loader/) -- [Is it possible to use Android Enterprise on Android Go devices?](https://www.reddit.com/r/androiddev/comments/n2w8fg/is_it_possible_to_use_android_enterprise_on/) -- [What is the logic behind updateQuestion regarding the animations in Trivia App?](https://www.reddit.com/r/androiddev/comments/n2vj6z/what_is_the_logic_behind_updatequestion_regarding/) -- [Testing Admob Ad Serving Limit](https://www.reddit.com/r/androiddev/comments/n2vi51/testing_admob_ad_serving_limit/) -- [Library for Resource Binding?](https://www.reddit.com/r/androiddev/comments/n2uba4/library_for_resource_binding/) -- [How do you implement your FirebaseRemoteConfig object as singleton correct, for easy access?](https://www.reddit.com/r/androiddev/comments/n2ouir/how_do_you_implement_your_firebaseremoteconfig/) -- [Did Google all of a sudden start manually reviewing Android TV apps?](https://www.reddit.com/r/androiddev/comments/n2nqjx/did_google_all_of_a_sudden_start_manually/) -- [Handling Scrolling of Horizontal Recyclerview inside Viewpager2](https://www.reddit.com/r/androiddev/comments/n2nax9/handling_scrolling_of_horizontal_recyclerview/) -- [Has anyone used the instrumentation orchestrator and Emma code coverage targeting Android 11?](https://www.reddit.com/r/androiddev/comments/n2n7fe/has_anyone_used_the_instrumentation_orchestrator/) -- [Create video generator](https://www.reddit.com/r/androiddev/comments/n2mx47/create_video_generator/) +- [Jira vs. Github Project Management vs. ClickUp, which one is the best?](https://www.reddit.com/r/androiddev/comments/n3hriv/jira_vs_github_project_management_vs_clickup/) +- [Updated : KMMT : Kotlin Multiplatform Mobile Development Simplified](https://www.reddit.com/r/androiddev/comments/n3h4ve/updated_kmmt_kotlin_multiplatform_mobile/) +- [What's the best software to use to document features?](https://www.reddit.com/r/androiddev/comments/n39y9k/whats_the_best_software_to_use_to_document/) +- [Coroutines for beginners- the only article you need to get started!](https://www.reddit.com/r/androiddev/comments/n36o42/coroutines_for_beginners_the_only_article_you/) +- [Upload to MavenCentral made easy for Android Library](https://www.reddit.com/r/androiddev/comments/n35qkc/upload_to_mavencentral_made_easy_for_android/) +- [Getting the notification's id sent via Firebase Messaging](https://www.reddit.com/r/androiddev/comments/n35ay1/getting_the_notifications_id_sent_via_firebase/) +- [Question about saving state in LazyColumn?](https://www.reddit.com/r/androiddev/comments/n34tec/question_about_saving_state_in_lazycolumn/) +- [Lightweight Linux distro for android app developers?](https://www.reddit.com/r/androiddev/comments/n33gc8/lightweight_linux_distro_for_android_app/) +- [Any free way to find keywords for your app?](https://www.reddit.com/r/androiddev/comments/n31c5j/any_free_way_to_find_keywords_for_your_app/) +- [[GDPR] How do you handle the user consent when using Crashlytics and Remote Config](https://www.reddit.com/r/androiddev/comments/n315az/gdpr_how_do_you_handle_the_user_consent_when/) ### *InfoWorld posts* From 9ee853c6392c55a78d4246491b8435bbc2773bc6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 3 May 2021 02:02:33 +0000 Subject: [PATCH 0429/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7e3cc13e1..ce2bcb052c 100644 --- a/README.md +++ b/README.md @@ -290,6 +290,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Android Authority posts* +- [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [Google I/O 2021: Here’s what to expect](https://www.androidauthority.com/google-io/) - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) - [How to call a function in Python](https://www.androidauthority.com/python-function-call-1121793/) @@ -297,7 +298,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [The best Android developer tools for getting started](https://www.androidauthority.com/best-android-developer-tools-671650/) - [How to install Python and start coding on Windows, Mac, or Linux](https://www.androidauthority.com/how-to-install-python-1134793/) - [How to define a function in Python](https://www.androidauthority.com/how-to-define-a-function-in-python-1141219/) -- [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) From bf721d5fd19e37b026614103946af3579b5d4397 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 3 May 2021 02:02:38 +0000 Subject: [PATCH 0430/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ce2bcb052c..fbaf0367eb 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Easy UI And Screenshot Testing On Android](https://patrykkosieradzki.medium.com/easy-ui-and-screenshot-testing-on-android-2b138f6d1eb8?source=rss------android-5) -- [No encuentras una app en la Play Store? Aquí te la conseguimos!](https://htcstoremexico.medium.com/no-encuentras-una-app-en-la-play-store-aqu%C3%AD-te-la-conseguimos-1c396c53f0b8?source=rss------android-5) -- [Jetpack RecyclerView [All official development resources]](https://medium.com/android-topics/recyclerview-all-official-development-resources-6da82e5966b6?source=rss------android-5) -- [Организация, стремящаяся помочь и предоставить привилегии менее привилегированным, а также усилить…](https://chii58921.medium.com/%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D1%81%D1%82%D1%80%D0%B5%D0%BC%D1%8F%D1%89%D0%B0%D1%8F%D1%81%D1%8F-%D0%BF%D0%BE%D0%BC%D0%BE%D1%87%D1%8C-%D0%B8-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BF%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B8-%D0%BC%D0%B5%D0%BD%D0%B5%D0%B5-%D0%BF%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC-%D0%B0-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D1%83%D1%81%D0%B8%D0%BB%D0%B8%D1%82%D1%8C-379606c100e4?source=rss------android-5) -- [Android, Kotlin free resources](https://paul77uk.medium.com/android-kotlin-free-resources-73418a87b95b?source=rss------android-5) -- [Gaming trends witnessed in 2020](https://tinyturtlesays.medium.com/gaming-trends-witnessed-in-2020-a3f20ad0bc03?source=rss------android-5) -- [Android Coroutine Scopes](https://loumorda.medium.com/android-coroutine-scopes-ebf4c88bf4d1?source=rss------android-5) -- [Firebase Remote Config [All official development resources]](https://medium.com/android-topics/firebase-remote-config-all-official-development-resources-14e1c0f6ac2b?source=rss------android-5) -- [Best Moba Injector (Latest v1.10) 2021/22 Free Download For Android | Mobile APK](https://nafaswali14.medium.com/best-moba-injector-latest-v1-10-2021-22-free-download-for-android-mobile-apk-bb9108ceec12?source=rss------android-5) -- [Выбор лучшего фреймворка для создания мобильного приложения](https://medium.com/nuances-of-programming/%D0%B2%D1%8B%D0%B1%D0%BE%D1%80-%D0%BB%D1%83%D1%87%D1%88%D0%B5%D0%B3%D0%BE-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-4bbca64a41f2?source=rss------android-5) +- [Flutter Image classification using TensorFlow in 4 steps](https://teresa-wu.medium.com/flutter-image-classification-using-tensorflow-in-4-steps-c68869b1d6e7?source=rss------android-5) +- [Android Vitals [All official development resources]](https://medium.com/android-topics/android-vitals-all-official-development-resources-aabb6d58a111?source=rss------android-5) +- [Fungsi android:allowBackup=”true” pada Android](https://inialdan.medium.com/fungsi-android-allowbackup-true-pada-android-606098eb836d?source=rss------android-5) +- [Apctmj mwpd porusicer opipos sezion](https://medium.com/@hlgypnds/apctmj-mwpd-porusicer-opipos-sezion-efc8b2588822?source=rss------android-5) +- [Without these three tools, I can not think of react native development](https://blog.devgenius.io/without-these-three-tools-i-can-not-think-of-react-native-development-4efb53dd6298?source=rss------android-5) +- [OAprm viro news 03 05 202](https://medium.com/@dimwifds/oaprm-viro-news-03-05-202-3f76234142b1?source=rss------android-5) +- [UX Policies — Part 3](https://medium.com/nerd-for-tech/ux-policies-part-3-d6937e2dda57?source=rss------android-5) +- [Implementation of Circular RecyclerView with Custom circle indicator which acts like ViewPager](https://medium.com/@akshaydahatonde/implementation-of-circular-recyclerview-with-custom-circle-indicator-which-acts-like-viewpager-805c6c20d628?source=rss------android-5) +- [Thread dealers: Kotlin Coroutines for beginners](https://enofeb.medium.com/thread-dealers-kotlin-coroutines-for-beginners-74a9c732d6d2?source=rss------android-5) +- [Best Android Home Screen Setup using Nova Launcher - 205](https://medium.com/@Kustome_bee/best-android-home-screen-setup-using-nova-launcher-205-549250e80237?source=rss------android-5) ### *Gizmodo posts* From 5cc4b8137e190f240df21ad13bfb7ad65aad4f8c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 4 May 2021 00:36:22 +0000 Subject: [PATCH 0431/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 32 Performance From 0f7a86d72337cfc2e388929e22f1c2c5865a601c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 4 May 2021 01:57:14 +0000 Subject: [PATCH 0432/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fbaf0367eb..370faa6bb6 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Jira vs. Github Project Management vs. ClickUp, which one is the best?](https://www.reddit.com/r/androiddev/comments/n3hriv/jira_vs_github_project_management_vs_clickup/) -- [Updated : KMMT : Kotlin Multiplatform Mobile Development Simplified](https://www.reddit.com/r/androiddev/comments/n3h4ve/updated_kmmt_kotlin_multiplatform_mobile/) -- [What's the best software to use to document features?](https://www.reddit.com/r/androiddev/comments/n39y9k/whats_the_best_software_to_use_to_document/) -- [Coroutines for beginners- the only article you need to get started!](https://www.reddit.com/r/androiddev/comments/n36o42/coroutines_for_beginners_the_only_article_you/) -- [Upload to MavenCentral made easy for Android Library](https://www.reddit.com/r/androiddev/comments/n35qkc/upload_to_mavencentral_made_easy_for_android/) -- [Getting the notification's id sent via Firebase Messaging](https://www.reddit.com/r/androiddev/comments/n35ay1/getting_the_notifications_id_sent_via_firebase/) -- [Question about saving state in LazyColumn?](https://www.reddit.com/r/androiddev/comments/n34tec/question_about_saving_state_in_lazycolumn/) -- [Lightweight Linux distro for android app developers?](https://www.reddit.com/r/androiddev/comments/n33gc8/lightweight_linux_distro_for_android_app/) -- [Any free way to find keywords for your app?](https://www.reddit.com/r/androiddev/comments/n31c5j/any_free_way_to_find_keywords_for_your_app/) -- [[GDPR] How do you handle the user consent when using Crashlytics and Remote Config](https://www.reddit.com/r/androiddev/comments/n315az/gdpr_how_do_you_handle_the_user_consent_when/) +- [Gradle Kotlin DSL failures on Android Gradle Plugin 7.0.0-alpha15](https://www.reddit.com/r/androiddev/comments/n4cvri/gradle_kotlin_dsl_failures_on_android_gradle/) +- [Tool tips in a chart in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/n47r7f/tool_tips_in_a_chart_in_jetpack_compose/) +- [How much could I sell my app for?](https://www.reddit.com/r/androiddev/comments/n44ip2/how_much_could_i_sell_my_app_for/) +- [Video Tutorial on Using Guidelines and Barriers in ConstraintLayout](https://www.reddit.com/r/androiddev/comments/n3zvrf/video_tutorial_on_using_guidelines_and_barriers/) +- [Custom Keyboard input for minority language (Java/Kotlin/Flutter/ReactNative?)](https://www.reddit.com/r/androiddev/comments/n3zgyc/custom_keyboard_input_for_minority_language/) +- [How NOT TO get banned from AdMob for 'click fraud'](https://www.reddit.com/r/androiddev/comments/n3xybm/how_not_to_get_banned_from_admob_for_click_fraud/) +- [Apple M1 Chip & Android Emulator: Working](https://www.reddit.com/r/androiddev/comments/n3w6hj/apple_m1_chip_android_emulator_working/) +- [How to add data binding to your project.](https://www.reddit.com/r/androiddev/comments/n3vqnx/how_to_add_data_binding_to_your_project/) +- [Weekly Who's Hiring Thread - May 03, 2021](https://www.reddit.com/r/androiddev/comments/n3veib/weekly_whos_hiring_thread_may_03_2021/) +- [Is it possible to find the status of the unsuccessful outgoing call?](https://www.reddit.com/r/androiddev/comments/n3uo8f/is_it_possible_to_find_the_status_of_the/) ### *InfoWorld posts* From ae49311c38ad00d7f4622d2cf7a8912b5cac953a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 4 May 2021 01:57:20 +0000 Subject: [PATCH 0433/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 370faa6bb6..8a07da542e 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Flutter Image classification using TensorFlow in 4 steps](https://teresa-wu.medium.com/flutter-image-classification-using-tensorflow-in-4-steps-c68869b1d6e7?source=rss------android-5) -- [Android Vitals [All official development resources]](https://medium.com/android-topics/android-vitals-all-official-development-resources-aabb6d58a111?source=rss------android-5) -- [Fungsi android:allowBackup=”true” pada Android](https://inialdan.medium.com/fungsi-android-allowbackup-true-pada-android-606098eb836d?source=rss------android-5) -- [Apctmj mwpd porusicer opipos sezion](https://medium.com/@hlgypnds/apctmj-mwpd-porusicer-opipos-sezion-efc8b2588822?source=rss------android-5) -- [Without these three tools, I can not think of react native development](https://blog.devgenius.io/without-these-three-tools-i-can-not-think-of-react-native-development-4efb53dd6298?source=rss------android-5) -- [OAprm viro news 03 05 202](https://medium.com/@dimwifds/oaprm-viro-news-03-05-202-3f76234142b1?source=rss------android-5) -- [UX Policies — Part 3](https://medium.com/nerd-for-tech/ux-policies-part-3-d6937e2dda57?source=rss------android-5) -- [Implementation of Circular RecyclerView with Custom circle indicator which acts like ViewPager](https://medium.com/@akshaydahatonde/implementation-of-circular-recyclerview-with-custom-circle-indicator-which-acts-like-viewpager-805c6c20d628?source=rss------android-5) -- [Thread dealers: Kotlin Coroutines for beginners](https://enofeb.medium.com/thread-dealers-kotlin-coroutines-for-beginners-74a9c732d6d2?source=rss------android-5) -- [Best Android Home Screen Setup using Nova Launcher - 205](https://medium.com/@Kustome_bee/best-android-home-screen-setup-using-nova-launcher-205-549250e80237?source=rss------android-5) +- [Spesifikasi Realme 5 Pro Terbaru 2021](https://rxhmadi.medium.com/spesifikasi-realme-5-pro-terbaru-2021-2f4f69369956?source=rss------android-5) +- [Install your debug & release variants on the same device](https://medium.com/dipien/install-your-debug-release-variants-on-the-same-device-be506916933f?source=rss------android-5) +- [Membuat Splash Screen Aplikasi Android di Android Studio (JAVA)](https://ramadhanhadiatma.medium.com/membuat-splash-screen-aplikasi-android-di-android-studio-java-8b960a555c32?source=rss------android-5) +- [Como realizar una validación HMS](https://medium.com/huawei-developers-latinoam%C3%A9rica/como-realizar-una-validaci%C3%B3n-hms-b0453a891ca5?source=rss------android-5) +- [In-app updates [All official development resources]](https://medium.com/android-topics/in-app-updates-all-official-development-resources-90a3ca4eb409?source=rss------android-5) +- [How to Ace your Studies with Handwritten Flashcards: 3 Tools: Microsoft OneNote + NoteDex + a…](https://notedex.medium.com/how-to-ace-your-studies-with-handwritten-digital-flash-cards-onenote-notedex-index-cards-app-a-c02cb452c574?source=rss------android-5) +- [This is about fetching list of data from Room database Asynchronously with coroutine’s Flow and…](https://pratibhagburde.medium.com/this-is-about-fetching-list-of-data-from-room-database-asynchronously-with-coroutines-flow-and-6b2a04544461?source=rss------android-5) +- [Aeo 02iu NEuai](https://metglres.medium.com/aeo-02iu-neuai-8b1a6589d720?source=rss------android-5) +- [Kotlin scope function Let, Run, With, apply and also](https://rahulsharmagbpec.medium.com/kotlin-scope-function-let-run-with-apply-and-also-63a86bebe5c7?source=rss------android-5) +- [How to upgrade the technology stack of your react native app?](https://marmik-mobile.medium.com/how-to-upgrade-the-technology-stack-of-your-react-native-app-ee0b56129508?source=rss------android-5) ### *Gizmodo posts* From 9f514a228b2d5d1e397f7d61d98f16415e807742 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 4 May 2021 01:57:22 +0000 Subject: [PATCH 0434/2080] Updated with the latest blog posts --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8a07da542e..a6c33e4e9f 100644 --- a/README.md +++ b/README.md @@ -335,16 +335,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) +- [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) +- [Google Assistant Will Now Finally Be Able to Say Your Name Correctly](https://gizmodo.com/google-assistant-will-now-finally-be-able-to-say-your-n-1846791494) +- [It Turns Out Covid-19 Contact Tracing on Android Is Not So Private After All](https://gizmodo.com/it-turns-out-covid-19-contact-tracing-on-android-is-not-1846775139) - [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) - [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) - [These Are the Best AR Apps You Can Use Outside](https://gizmodo.com/these-are-the-best-ar-apps-you-can-use-outside-1846696834) -- [Google Misled Android Users About Location Data, Australian Court Finds](https://gizmodo.com/google-misled-android-users-about-location-data-austra-1846699135) -- [Google Assistant Just Got a Useful Update With Four Helpful Features](https://gizmodo.com/google-assistant-just-got-a-useful-update-with-four-hel-1846681958) -- [Wow, Google, Show Us How You Really Feel About Wear OS](https://gizmodo.com/wow-google-show-us-how-you-really-feel-about-wear-os-1846674295) -- [New Google Photos Video-Editing Features Finally Appearing on Android Phones](https://gizmodo.com/new-google-photos-video-editing-features-finally-appear-1846674527) ### *Mobile Dev Memo posts* From 0261017b740347d657ec26f4fb6e5f74f6f15c52 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 4 May 2021 01:57:26 +0000 Subject: [PATCH 0435/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6c33e4e9f..dafa7ef99d 100644 --- a/README.md +++ b/README.md @@ -350,6 +350,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* +- [“Mobile advertising spend can’t just disappear”](https://mobiledevmemo.com/mobile-advertising-spend-cant-just-disappear/) - [Creative paralysis: ad creative production and testing in iOS 14](https://mobiledevmemo.com/creative-paralysis-ad-creative-production-and-testing-for-ios-14/) - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) @@ -359,7 +360,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [What is differential privacy in digital advertising?](https://mobiledevmemo.com/what-is-differential-privacy/) - [Dear App Developers: fingerprinting is not a viable workaround to ATT](https://mobiledevmemo.com/dear-app-developers-fingerprinting-is-not-a-viable-workaround-to-att/) - [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) -- [iOS14, Fortnite, and the importance of controlling distribution](https://mobiledevmemo.com/ios14-fortnite-and-the-importance-of-controlling-distribution/) ### *Infinum posts* From 8b47199a222a070256cbbee300f4b19b2b377c15 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 5 May 2021 00:31:32 +0000 Subject: [PATCH 0436/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index bd037d2169..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance From a799594e745d48f033d570c284a54e791e81cd46 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 5 May 2021 01:52:12 +0000 Subject: [PATCH 0437/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dafa7ef99d..92a5552b90 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Gradle Kotlin DSL failures on Android Gradle Plugin 7.0.0-alpha15](https://www.reddit.com/r/androiddev/comments/n4cvri/gradle_kotlin_dsl_failures_on_android_gradle/) -- [Tool tips in a chart in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/n47r7f/tool_tips_in_a_chart_in_jetpack_compose/) -- [How much could I sell my app for?](https://www.reddit.com/r/androiddev/comments/n44ip2/how_much_could_i_sell_my_app_for/) -- [Video Tutorial on Using Guidelines and Barriers in ConstraintLayout](https://www.reddit.com/r/androiddev/comments/n3zvrf/video_tutorial_on_using_guidelines_and_barriers/) -- [Custom Keyboard input for minority language (Java/Kotlin/Flutter/ReactNative?)](https://www.reddit.com/r/androiddev/comments/n3zgyc/custom_keyboard_input_for_minority_language/) -- [How NOT TO get banned from AdMob for 'click fraud'](https://www.reddit.com/r/androiddev/comments/n3xybm/how_not_to_get_banned_from_admob_for_click_fraud/) -- [Apple M1 Chip & Android Emulator: Working](https://www.reddit.com/r/androiddev/comments/n3w6hj/apple_m1_chip_android_emulator_working/) -- [How to add data binding to your project.](https://www.reddit.com/r/androiddev/comments/n3vqnx/how_to_add_data_binding_to_your_project/) -- [Weekly Who's Hiring Thread - May 03, 2021](https://www.reddit.com/r/androiddev/comments/n3veib/weekly_whos_hiring_thread_may_03_2021/) -- [Is it possible to find the status of the unsuccessful outgoing call?](https://www.reddit.com/r/androiddev/comments/n3uo8f/is_it_possible_to_find_the_status_of_the/) +- [How to auto-update local db every Xmins with web data/api?](https://www.reddit.com/r/androiddev/comments/n51weu/how_to_autoupdate_local_db_every_xmins_with_web/) +- [Do mobile apps (including iOS apps) use WebSockets for async features?](https://www.reddit.com/r/androiddev/comments/n4zlbj/do_mobile_apps_including_ios_apps_use_websockets/) +- [Hunting a race condition in the Android 10 Emulator](https://www.reddit.com/r/androiddev/comments/n4yfao/hunting_a_race_condition_in_the_android_10/) +- [How to survive Pair-Programming in an interview?](https://www.reddit.com/r/androiddev/comments/n4wyna/how_to_survive_pairprogramming_in_an_interview/) +- [Android Studio 4.2 available in the Stable channel](https://www.reddit.com/r/androiddev/comments/n4vco3/android_studio_42_available_in_the_stable_channel/) +- [First foray into Jetpack Compose – A party viewer for DDO](https://www.reddit.com/r/androiddev/comments/n4utfq/first_foray_into_jetpack_compose_a_party_viewer/) +- [Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4uom7/android_studio_42/) +- [What's new in Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4tt2y/whats_new_in_android_studio_42/) +- [Clicking Through a ViewPager2?](https://www.reddit.com/r/androiddev/comments/n4tr92/clicking_through_a_viewpager2/) +- [What's new in Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4tp7h/whats_new_in_android_studio_42/) ### *InfoWorld posts* From 73774be7ec0984ce59944f3cc1eb0d0c454f2e6a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 5 May 2021 01:52:17 +0000 Subject: [PATCH 0438/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 92a5552b90..be9fd093b4 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Spesifikasi Realme 5 Pro Terbaru 2021](https://rxhmadi.medium.com/spesifikasi-realme-5-pro-terbaru-2021-2f4f69369956?source=rss------android-5) -- [Install your debug & release variants on the same device](https://medium.com/dipien/install-your-debug-release-variants-on-the-same-device-be506916933f?source=rss------android-5) -- [Membuat Splash Screen Aplikasi Android di Android Studio (JAVA)](https://ramadhanhadiatma.medium.com/membuat-splash-screen-aplikasi-android-di-android-studio-java-8b960a555c32?source=rss------android-5) -- [Como realizar una validación HMS](https://medium.com/huawei-developers-latinoam%C3%A9rica/como-realizar-una-validaci%C3%B3n-hms-b0453a891ca5?source=rss------android-5) -- [In-app updates [All official development resources]](https://medium.com/android-topics/in-app-updates-all-official-development-resources-90a3ca4eb409?source=rss------android-5) -- [How to Ace your Studies with Handwritten Flashcards: 3 Tools: Microsoft OneNote + NoteDex + a…](https://notedex.medium.com/how-to-ace-your-studies-with-handwritten-digital-flash-cards-onenote-notedex-index-cards-app-a-c02cb452c574?source=rss------android-5) -- [This is about fetching list of data from Room database Asynchronously with coroutine’s Flow and…](https://pratibhagburde.medium.com/this-is-about-fetching-list-of-data-from-room-database-asynchronously-with-coroutines-flow-and-6b2a04544461?source=rss------android-5) -- [Aeo 02iu NEuai](https://metglres.medium.com/aeo-02iu-neuai-8b1a6589d720?source=rss------android-5) -- [Kotlin scope function Let, Run, With, apply and also](https://rahulsharmagbpec.medium.com/kotlin-scope-function-let-run-with-apply-and-also-63a86bebe5c7?source=rss------android-5) -- [How to upgrade the technology stack of your react native app?](https://marmik-mobile.medium.com/how-to-upgrade-the-technology-stack-of-your-react-native-app-ee0b56129508?source=rss------android-5) +- [Flutter-Text Recognition with Firebase ML Vision](https://emenaa.medium.com/flutter-text-recognition-with-firebase-ml-vision-80f887a0711a?source=rss------android-5) +- [BatteryGuru — Extiende la vida útil de tu batería](https://htcstoremexico.medium.com/batteryguru-extiende-la-vida-%C3%BAtil-de-tu-bater%C3%ADa-9ca862bb960b?source=rss------android-5) +- [Intents en Android ¿Qué son y para qué sirven?](https://alainnicolastello.medium.com/intents-en-android-qu%C3%A9-son-y-para-qu%C3%A9-sirven-f60b5f34c15b?source=rss------android-5) +- [Well done!](https://jonathancampos.medium.com/well-done-2753e4001fa7?source=rss------android-5) +- [Blokada- Bloquea Publicidad en tu Android](https://htcstoremexico.medium.com/blokada-bloquea-publicidad-en-tu-android-da56bbabeb89?source=rss------android-5) +- [Game Situs Betting Online Terhoki Di ASIA](https://kasqqpkv.medium.com/game-situs-betting-online-terhoki-di-asia-72f80ce2f33d?source=rss------android-5) +- [How do I earn in affiliate marketing?](https://meletadivine.medium.com/how-do-i-earn-in-affiliate-marketing-688a19559469?source=rss------android-5) +- [Hilt is stable! Easier dependency injection on Android](https://medium.com/androiddevelopers/hilt-is-stable-easier-dependency-injection-on-android-53aca3f38b9c?source=rss------android-5) +- [Ne demek startActivityForResult() is deprecated ?](https://hamurcuabi.medium.com/ne-demek-startactivityforresult-is-deprecated-bc438542fa8e?source=rss------android-5) +- [Infinix Hot 10 Play Bangla Review, ইনফিনিক্স হট ১০ প্লে বাংলা রিভিউ,](https://mobilephonedetailsbd.medium.com/infinix-hot-10-play-bangla-review-%E0%A6%87%E0%A6%A8%E0%A6%AB%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A6%95%E0%A7%8D%E0%A6%B8-%E0%A6%B9%E0%A6%9F-%E0%A7%A7%E0%A7%A6-%E0%A6%AA%E0%A7%8D%E0%A6%B2%E0%A7%87-%E0%A6%AC%E0%A6%BE%E0%A6%82%E0%A6%B2%E0%A6%BE-%E0%A6%B0%E0%A6%BF%E0%A6%AD%E0%A6%BF%E0%A6%89-d35ba9f9be04?source=rss------android-5) ### *Gizmodo posts* From 100b4c37c5b115c3390799059f7f27e142e24337 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 5 May 2021 01:52:20 +0000 Subject: [PATCH 0439/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index be9fd093b4..27417018dc 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Google May Have Inadvertently Just Spilled the Beans About the Pixel Buds A on Twitter](https://gizmodo.com/google-may-have-inadvertently-just-spilled-the-beans-ab-1846823832) +- [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) - [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) - [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) - [Google Assistant Will Now Finally Be Able to Say Your Name Correctly](https://gizmodo.com/google-assistant-will-now-finally-be-able-to-say-your-n-1846791494) @@ -343,8 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) - [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) -- [Android 12 May Include Feature That Will Hibernate Apps You Haven't Used in a While](https://gizmodo.com/android-12-may-include-feature-that-will-hibernate-apps-1846721234) -- [These Are the Best AR Apps You Can Use Outside](https://gizmodo.com/these-are-the-best-ar-apps-you-can-use-outside-1846696834) ### *Mobile Dev Memo posts* From 0b268e3ee53f6c873aa4ae46012125376eac738c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 6 May 2021 00:31:19 +0000 Subject: [PATCH 0440/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 67b91795d4b76ed501b625c87a72b1681524bddf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 6 May 2021 01:52:14 +0000 Subject: [PATCH 0441/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 27417018dc..2edcec301d 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to auto-update local db every Xmins with web data/api?](https://www.reddit.com/r/androiddev/comments/n51weu/how_to_autoupdate_local_db_every_xmins_with_web/) -- [Do mobile apps (including iOS apps) use WebSockets for async features?](https://www.reddit.com/r/androiddev/comments/n4zlbj/do_mobile_apps_including_ios_apps_use_websockets/) -- [Hunting a race condition in the Android 10 Emulator](https://www.reddit.com/r/androiddev/comments/n4yfao/hunting_a_race_condition_in_the_android_10/) -- [How to survive Pair-Programming in an interview?](https://www.reddit.com/r/androiddev/comments/n4wyna/how_to_survive_pairprogramming_in_an_interview/) -- [Android Studio 4.2 available in the Stable channel](https://www.reddit.com/r/androiddev/comments/n4vco3/android_studio_42_available_in_the_stable_channel/) -- [First foray into Jetpack Compose – A party viewer for DDO](https://www.reddit.com/r/androiddev/comments/n4utfq/first_foray_into_jetpack_compose_a_party_viewer/) -- [Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4uom7/android_studio_42/) -- [What's new in Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4tt2y/whats_new_in_android_studio_42/) -- [Clicking Through a ViewPager2?](https://www.reddit.com/r/androiddev/comments/n4tr92/clicking_through_a_viewpager2/) -- [What's new in Android Studio 4.2](https://www.reddit.com/r/androiddev/comments/n4tp7h/whats_new_in_android_studio_42/) +- [deleted the rom from android](https://www.reddit.com/r/androiddev/comments/n5vw6v/deleted_the_rom_from_android/) +- [Does Android have some kind of problem resolving subdomains of localhost? Browsers can, but it seems that internal connections from my app fail.](https://www.reddit.com/r/androiddev/comments/n5uxp3/does_android_have_some_kind_of_problem_resolving/) +- [AndroidX Camera is now stable!](https://www.reddit.com/r/androiddev/comments/n5umnh/androidx_camera_is_now_stable/) +- [Auth0 and Lock UI for Android got a major update that uses AndroidX dependencies, drops the use of Jetifier](https://www.reddit.com/r/androiddev/comments/n5uk68/auth0_and_lock_ui_for_android_got_a_major_update/) +- [How do I know if my projects (and resume) are good enough to start applying for Junior Android Dev jobs?](https://www.reddit.com/r/androiddev/comments/n5reww/how_do_i_know_if_my_projects_and_resume_are_good/) +- [shimart96/MyJoystick2](https://www.reddit.com/r/androiddev/comments/n5qlgs/shimart96myjoystick2/) +- [How do I use the Android Studio Github integration?](https://www.reddit.com/r/androiddev/comments/n5q5ql/how_do_i_use_the_android_studio_github_integration/) +- [Getting on the same page with Paging 3](https://www.reddit.com/r/androiddev/comments/n5piz4/getting_on_the_same_page_with_paging_3/) +- [A sample Android application to including Hilt + Coroutine + Flow](https://www.reddit.com/r/androiddev/comments/n5p6yj/a_sample_android_application_to_including_hilt/) +- [is there a discord server of android-x86?](https://www.reddit.com/r/androiddev/comments/n5l8xx/is_there_a_discord_server_of_androidx86/) ### *InfoWorld posts* From b1de574e61f69d405aca1b1328dcdbeb33e87cde Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 6 May 2021 01:52:20 +0000 Subject: [PATCH 0442/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2edcec301d..214b6ba315 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Flutter-Text Recognition with Firebase ML Vision](https://emenaa.medium.com/flutter-text-recognition-with-firebase-ml-vision-80f887a0711a?source=rss------android-5) -- [BatteryGuru — Extiende la vida útil de tu batería](https://htcstoremexico.medium.com/batteryguru-extiende-la-vida-%C3%BAtil-de-tu-bater%C3%ADa-9ca862bb960b?source=rss------android-5) -- [Intents en Android ¿Qué son y para qué sirven?](https://alainnicolastello.medium.com/intents-en-android-qu%C3%A9-son-y-para-qu%C3%A9-sirven-f60b5f34c15b?source=rss------android-5) -- [Well done!](https://jonathancampos.medium.com/well-done-2753e4001fa7?source=rss------android-5) -- [Blokada- Bloquea Publicidad en tu Android](https://htcstoremexico.medium.com/blokada-bloquea-publicidad-en-tu-android-da56bbabeb89?source=rss------android-5) -- [Game Situs Betting Online Terhoki Di ASIA](https://kasqqpkv.medium.com/game-situs-betting-online-terhoki-di-asia-72f80ce2f33d?source=rss------android-5) -- [How do I earn in affiliate marketing?](https://meletadivine.medium.com/how-do-i-earn-in-affiliate-marketing-688a19559469?source=rss------android-5) -- [Hilt is stable! Easier dependency injection on Android](https://medium.com/androiddevelopers/hilt-is-stable-easier-dependency-injection-on-android-53aca3f38b9c?source=rss------android-5) -- [Ne demek startActivityForResult() is deprecated ?](https://hamurcuabi.medium.com/ne-demek-startactivityforresult-is-deprecated-bc438542fa8e?source=rss------android-5) -- [Infinix Hot 10 Play Bangla Review, ইনফিনিক্স হট ১০ প্লে বাংলা রিভিউ,](https://mobilephonedetailsbd.medium.com/infinix-hot-10-play-bangla-review-%E0%A6%87%E0%A6%A8%E0%A6%AB%E0%A6%BF%E0%A6%A8%E0%A6%BF%E0%A6%95%E0%A7%8D%E0%A6%B8-%E0%A6%B9%E0%A6%9F-%E0%A7%A7%E0%A7%A6-%E0%A6%AA%E0%A7%8D%E0%A6%B2%E0%A7%87-%E0%A6%AC%E0%A6%BE%E0%A6%82%E0%A6%B2%E0%A6%BE-%E0%A6%B0%E0%A6%BF%E0%A6%AD%E0%A6%BF%E0%A6%89-d35ba9f9be04?source=rss------android-5) +- [Situs Poker Deposit Pulsa BEBAS RATE POTONGAN](https://kasqqpkv.medium.com/situs-poker-deposit-pulsa-bebas-rate-potongan-6cb13a4b9ebb?source=rss------android-5) +- [Adding a PIN screen with biometric authentication in Jetpack Compose](https://fvilarino.medium.com/adding-a-pin-screen-with-biometric-authentication-in-jetpack-compose-a9bf7bd8acc9?source=rss------android-5) +- [DEVELOPMENT AND LANGUAGE COMPLETE GUIDE](https://arpit16.medium.com/development-and-language-complete-guide-9daf3e49ae2c?source=rss------android-5) +- [Customize Your TUI-ConsoleLauncher](https://gabbarmod.medium.com/customize-your-tui-consolelauncher-2fd61798233a?source=rss------android-5) +- [Android CameraX — An Emergence](https://hannaholukoye.medium.com/android-camerax-an-emergence-119fba29ac75?source=rss------android-5) +- [Top 15 Android App Development Companies- 2021 Updated List](https://sysbunny.medium.com/top-15-android-app-development-companies-2021-updated-list-563b723952ad?source=rss------android-5) +- [Resizing while sliding would be little tricky because the child wouldnt have received its…](https://saurabhpant.medium.com/resizing-while-sliding-would-be-little-tricky-because-the-child-wouldnt-have-received-its-52597a74be23?source=rss------android-5) +- [What will it cost to make the app like fanni?](https://akkirewamped.medium.com/what-will-it-cost-to-make-the-app-like-fanni-f50757c745a7?source=rss------android-5) +- [Students के लिए iOS से 8 गुना ज्यादा Dangerous है Android Apps, study में दावा। Android Apps is 8…](https://glycalwarz.medium.com/students-%E0%A4%95%E0%A5%87-%E0%A4%B2%E0%A4%BF%E0%A4%8F-ios-%E0%A4%B8%E0%A5%87-8-%E0%A4%97%E0%A5%81%E0%A4%A8%E0%A4%BE-%E0%A4%9C%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%A6%E0%A4%BE-dangerous-%E0%A4%B9%E0%A5%88-android-apps-study-%E0%A4%AE%E0%A5%87%E0%A4%82-%E0%A4%A6%E0%A4%BE%E0%A4%B5%E0%A4%BE-android-apps-is-8-b0f6699882eb?source=rss------android-5) +- [TasteGram Android](https://lush93.medium.com/tastegram-android-afa113302432?source=rss------android-5) ### *Gizmodo posts* From 2d0a1ec89268a1af7f745264d895a3c23d56becc Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 6 May 2021 01:52:23 +0000 Subject: [PATCH 0443/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 214b6ba315..4b1062b555 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Google Is Bringing a Google TV-Like Experience to Android Tablets](https://gizmodo.com/google-is-bringing-a-google-tv-like-experience-to-andro-1846824566) - [Google May Have Inadvertently Just Spilled the Beans About the Pixel Buds A on Twitter](https://gizmodo.com/google-may-have-inadvertently-just-spilled-the-beans-ab-1846823832) - [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) - [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) @@ -344,7 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) - [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) - [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) -- [Apple's M1 Chip Is a Cruel Reminder of What Android Users Are Missing Out On](https://gizmodo.com/apples-m1-chip-is-a-cruel-reminder-of-what-android-user-1846726731) ### *Mobile Dev Memo posts* From 980ab41ab60b5db88964e25775591777c4a04fb4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 6 May 2021 01:52:27 +0000 Subject: [PATCH 0444/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4b1062b555..cbf1999900 100644 --- a/README.md +++ b/README.md @@ -351,8 +351,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [“Mobile advertising spend can’t just disappear”](https://mobiledevmemo.com/mobile-advertising-spend-cant-just-disappear/) -- [Creative paralysis: ad creative production and testing in iOS 14](https://mobiledevmemo.com/creative-paralysis-ad-creative-production-and-testing-for-ios-14/) - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) +- [Creative paralysis: ad creative production and testing in iOS 14](https://mobiledevmemo.com/creative-paralysis-ad-creative-production-and-testing-for-ios-14/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) - [ATT opt-in rates are irrelevant](https://mobiledevmemo.com/att-opt-in-rates-are-irrelevant/) From bde6b9a662c75e3db7e03a169f35ad47552e083e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 7 May 2021 00:32:31 +0000 Subject: [PATCH 0445/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 233 insertions(+), 28 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..0387f1e9f3 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 60 + + 41 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 29 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From eb6b16d432d2111d3987c05d2bc3aac9c0583631 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 7 May 2021 01:56:21 +0000 Subject: [PATCH 0446/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cbf1999900..5b689b2434 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [deleted the rom from android](https://www.reddit.com/r/androiddev/comments/n5vw6v/deleted_the_rom_from_android/) -- [Does Android have some kind of problem resolving subdomains of localhost? Browsers can, but it seems that internal connections from my app fail.](https://www.reddit.com/r/androiddev/comments/n5uxp3/does_android_have_some_kind_of_problem_resolving/) -- [AndroidX Camera is now stable!](https://www.reddit.com/r/androiddev/comments/n5umnh/androidx_camera_is_now_stable/) -- [Auth0 and Lock UI for Android got a major update that uses AndroidX dependencies, drops the use of Jetifier](https://www.reddit.com/r/androiddev/comments/n5uk68/auth0_and_lock_ui_for_android_got_a_major_update/) -- [How do I know if my projects (and resume) are good enough to start applying for Junior Android Dev jobs?](https://www.reddit.com/r/androiddev/comments/n5reww/how_do_i_know_if_my_projects_and_resume_are_good/) -- [shimart96/MyJoystick2](https://www.reddit.com/r/androiddev/comments/n5qlgs/shimart96myjoystick2/) -- [How do I use the Android Studio Github integration?](https://www.reddit.com/r/androiddev/comments/n5q5ql/how_do_i_use_the_android_studio_github_integration/) -- [Getting on the same page with Paging 3](https://www.reddit.com/r/androiddev/comments/n5piz4/getting_on_the_same_page_with_paging_3/) -- [A sample Android application to including Hilt + Coroutine + Flow](https://www.reddit.com/r/androiddev/comments/n5p6yj/a_sample_android_application_to_including_hilt/) -- [is there a discord server of android-x86?](https://www.reddit.com/r/androiddev/comments/n5l8xx/is_there_a_discord_server_of_androidx86/) +- [New safety section in Google Play will give transparency into how apps use data](https://www.reddit.com/r/androiddev/comments/n6bfgy/new_safety_section_in_google_play_will_give/) +- [App removal warning from Google due to Spam policy. What should I do?](https://www.reddit.com/r/androiddev/comments/n6bcqa/app_removal_warning_from_google_due_to_spam/) +- [Context Menu on ListViewItem](https://www.reddit.com/r/androiddev/comments/n6at7r/context_menu_on_listviewitem/) +- [Why does the Google Play console require 16:9 ratio *tablet* screenshots?](https://www.reddit.com/r/androiddev/comments/n693wn/why_does_the_google_play_console_require_169/) +- [Is the associate android developer certification worth it?](https://www.reddit.com/r/androiddev/comments/n67y9d/is_the_associate_android_developer_certification/) +- [How good is Admob actually?](https://www.reddit.com/r/androiddev/comments/n67x3i/how_good_is_admob_actually/) +- [GenericRecyclerView | Kotlin](https://www.reddit.com/r/androiddev/comments/n67rmy/genericrecyclerview_kotlin/) +- [Feedback on my latest Android project](https://www.reddit.com/r/androiddev/comments/n66t8l/feedback_on_my_latest_android_project/) +- [App rejected for upload phone](https://www.reddit.com/r/androiddev/comments/n66sad/app_rejected_for_upload_phone/) +- [Getting View Ids of third part applications](https://www.reddit.com/r/androiddev/comments/n65x2n/getting_view_ids_of_third_part_applications/) ### *InfoWorld posts* From 0a3221f958fa9f447c28528ae1561382b975559c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 7 May 2021 01:56:27 +0000 Subject: [PATCH 0447/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5b689b2434..f8a074e6a9 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Situs Poker Deposit Pulsa BEBAS RATE POTONGAN](https://kasqqpkv.medium.com/situs-poker-deposit-pulsa-bebas-rate-potongan-6cb13a4b9ebb?source=rss------android-5) -- [Adding a PIN screen with biometric authentication in Jetpack Compose](https://fvilarino.medium.com/adding-a-pin-screen-with-biometric-authentication-in-jetpack-compose-a9bf7bd8acc9?source=rss------android-5) -- [DEVELOPMENT AND LANGUAGE COMPLETE GUIDE](https://arpit16.medium.com/development-and-language-complete-guide-9daf3e49ae2c?source=rss------android-5) -- [Customize Your TUI-ConsoleLauncher](https://gabbarmod.medium.com/customize-your-tui-consolelauncher-2fd61798233a?source=rss------android-5) -- [Android CameraX — An Emergence](https://hannaholukoye.medium.com/android-camerax-an-emergence-119fba29ac75?source=rss------android-5) -- [Top 15 Android App Development Companies- 2021 Updated List](https://sysbunny.medium.com/top-15-android-app-development-companies-2021-updated-list-563b723952ad?source=rss------android-5) -- [Resizing while sliding would be little tricky because the child wouldnt have received its…](https://saurabhpant.medium.com/resizing-while-sliding-would-be-little-tricky-because-the-child-wouldnt-have-received-its-52597a74be23?source=rss------android-5) -- [What will it cost to make the app like fanni?](https://akkirewamped.medium.com/what-will-it-cost-to-make-the-app-like-fanni-f50757c745a7?source=rss------android-5) -- [Students के लिए iOS से 8 गुना ज्यादा Dangerous है Android Apps, study में दावा। Android Apps is 8…](https://glycalwarz.medium.com/students-%E0%A4%95%E0%A5%87-%E0%A4%B2%E0%A4%BF%E0%A4%8F-ios-%E0%A4%B8%E0%A5%87-8-%E0%A4%97%E0%A5%81%E0%A4%A8%E0%A4%BE-%E0%A4%9C%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%A6%E0%A4%BE-dangerous-%E0%A4%B9%E0%A5%88-android-apps-study-%E0%A4%AE%E0%A5%87%E0%A4%82-%E0%A4%A6%E0%A4%BE%E0%A4%B5%E0%A4%BE-android-apps-is-8-b0f6699882eb?source=rss------android-5) -- [TasteGram Android](https://lush93.medium.com/tastegram-android-afa113302432?source=rss------android-5) +- [Gestionar archivos en Huawei Drive usando HMS Drive Kit y Account Kit](https://firemixdev.medium.com/gestionar-archivos-en-huawei-drive-usando-hms-drive-kit-y-account-kit-80094ef8c5?source=rss------android-5) +- [Understanding MVVM pattern for Android in 2021](https://christopher-elias.medium.com/understanding-mvvm-pattern-for-android-in-2021-98b155b37b54?source=rss------android-5) +- [Retrofit request including both body and URL parameters](https://medium.com/@akshaykapase11/retrofit-request-including-both-body-and-url-parameters-8e19624f9981?source=rss------android-5) +- [[Android] AAC MVVM Pattern](https://dev-jihun.medium.com/android-aac-mvvm-pattern-7c1bf54fc574?source=rss------android-5) +- [5 Common question for starting career as mobile application developer](https://medium.com/@nobanhasan/5-common-question-for-starting-career-as-mobile-application-developer-b2d57d46cb7d?source=rss------android-5) +- [Managing UI with Kotlin sealed classes](https://sosorevgm.medium.com/managing-ui-with-kotlin-sealed-classes-1ee674f1836f?source=rss------android-5) +- [Twitter Will Now Prompt Users When They Reply With Offensive Language](https://rivek085.medium.com/twitter-will-now-prompt-users-when-they-reply-with-offensive-language-e1602dba3ec0?source=rss------android-5) +- [研究採用 R8 Compiler 的利益與風險設計與執行實驗](https://lush93.medium.com/%E7%A0%94%E7%A9%B6%E6%8E%A1%E7%94%A8-r8-compiler-%E7%9A%84%E5%88%A9%E7%9B%8A%E8%88%87%E9%A2%A8%E9%9A%AA%E8%A8%AD%E8%A8%88%E8%88%87%E5%9F%B7%E8%A1%8C%E5%AF%A6%E9%A9%97-5452116dc3d2?source=rss------android-5) +- [為專案導入 MVVM 架構以及 Data Binding,解決 memory leak 問題](https://lush93.medium.com/%E7%82%BA%E5%B0%88%E6%A1%88%E5%B0%8E%E5%85%A5-mvvm-%E6%9E%B6%E6%A7%8B%E4%BB%A5%E5%8F%8A-data-binding-%E8%A7%A3%E6%B1%BA-memory-leak-%E5%95%8F%E9%A1%8C-f2c67e4c80e3?source=rss------android-5) +- [Project Taste](https://lush93.medium.com/project-taste-869fa738d245?source=rss------android-5) ### *Gizmodo posts* From 03b70221123bb14642a96c3cf56dfaea918ef48b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 7 May 2021 01:56:30 +0000 Subject: [PATCH 0448/2080] Updated with the latest blog posts --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f8a074e6a9..64b3e7c638 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,9 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Qualcomm Chip Flaw Could Leave 30 Percent of the World's Phones Vulnerable to Hackers](https://gizmodo.com/qualcomm-chip-flaw-could-leave-30-percent-of-the-worlds-1846837667) +- [Google Is Launching Its Own Version of Apple’s Privacy Nutrition Labels](https://gizmodo.com/google-is-launching-its-own-version-of-apple-s-privacy-1846839667) +- [Google Assistant Is Getting a New Family Broadcast Feature Just in Time for Mother's Day](https://gizmodo.com/google-assistant-is-getting-a-new-family-broadcast-feat-1846836811) - [Google Is Bringing a Google TV-Like Experience to Android Tablets](https://gizmodo.com/google-is-bringing-a-google-tv-like-experience-to-andro-1846824566) - [Google May Have Inadvertently Just Spilled the Beans About the Pixel Buds A on Twitter](https://gizmodo.com/google-may-have-inadvertently-just-spilled-the-beans-ab-1846823832) - [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) @@ -342,9 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) - [Google Assistant Will Now Finally Be Able to Say Your Name Correctly](https://gizmodo.com/google-assistant-will-now-finally-be-able-to-say-your-n-1846791494) - [It Turns Out Covid-19 Contact Tracing on Android Is Not So Private After All](https://gizmodo.com/it-turns-out-covid-19-contact-tracing-on-android-is-not-1846775139) -- [Soon You May Not Have to Say 'Hey Google' to Get Your Phone's Google Assistant to Listen to You](https://gizmodo.com/soon-you-may-not-have-to-say-hey-google-to-get-your-pho-1846757693) -- [Researchers Take Down Botnet Pretending to Be Millions of People Watching TV](https://gizmodo.com/researchers-take-down-botnet-pretending-to-be-millions-1846726865) -- [Congrats to OnePlus for Making Its Smartwatch Slightly Less Awful](https://gizmodo.com/congrats-to-oneplus-for-making-its-smartwatch-slightly-1846734118) ### *Mobile Dev Memo posts* From b600272a36fe05eb4fb2d7f4c7330d878aaf985b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 8 May 2021 00:32:30 +0000 Subject: [PATCH 0449/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0387f1e9f3..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 41 + + 62 Performance From 5b633f71880415e84066cc3d021abbc0e5e4d1ce Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 8 May 2021 01:55:28 +0000 Subject: [PATCH 0450/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 64b3e7c638..1364e7a67d 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [New safety section in Google Play will give transparency into how apps use data](https://www.reddit.com/r/androiddev/comments/n6bfgy/new_safety_section_in_google_play_will_give/) -- [App removal warning from Google due to Spam policy. What should I do?](https://www.reddit.com/r/androiddev/comments/n6bcqa/app_removal_warning_from_google_due_to_spam/) -- [Context Menu on ListViewItem](https://www.reddit.com/r/androiddev/comments/n6at7r/context_menu_on_listviewitem/) -- [Why does the Google Play console require 16:9 ratio *tablet* screenshots?](https://www.reddit.com/r/androiddev/comments/n693wn/why_does_the_google_play_console_require_169/) -- [Is the associate android developer certification worth it?](https://www.reddit.com/r/androiddev/comments/n67y9d/is_the_associate_android_developer_certification/) -- [How good is Admob actually?](https://www.reddit.com/r/androiddev/comments/n67x3i/how_good_is_admob_actually/) -- [GenericRecyclerView | Kotlin](https://www.reddit.com/r/androiddev/comments/n67rmy/genericrecyclerview_kotlin/) -- [Feedback on my latest Android project](https://www.reddit.com/r/androiddev/comments/n66t8l/feedback_on_my_latest_android_project/) -- [App rejected for upload phone](https://www.reddit.com/r/androiddev/comments/n66sad/app_rejected_for_upload_phone/) -- [Getting View Ids of third part applications](https://www.reddit.com/r/androiddev/comments/n65x2n/getting_view_ids_of_third_part_applications/) +- [Problem in android studio](https://www.reddit.com/r/androiddev/comments/n7e3qz/problem_in_android_studio/) +- [[Survey] Rutgers and Mozilla researchers want to know how you use Google Assistant](https://www.reddit.com/r/androiddev/comments/n7cncd/survey_rutgers_and_mozilla_researchers_want_to/) +- [Is there a good app making program that let’s me start from the front end and work back?](https://www.reddit.com/r/androiddev/comments/n7b1dm/is_there_a_good_app_making_program_that_lets_me/) +- [is there any Real-time analytics just like fabric ?](https://www.reddit.com/r/androiddev/comments/n79s8t/is_there_any_realtime_analytics_just_like_fabric/) +- [Kotlin - wait till asynchronous call to get a response](https://www.reddit.com/r/androiddev/comments/n77ukc/kotlin_wait_till_asynchronous_call_to_get_a/) +- [Emulating old version for legacy app](https://www.reddit.com/r/androiddev/comments/n76js3/emulating_old_version_for_legacy_app/) +- [best phone with at least 90hz screen and developer friendly with at least a snapdragon 855???](https://www.reddit.com/r/androiddev/comments/n73ajg/best_phone_with_at_least_90hz_screen_and/) +- [Things to know about Flow’s shareIn and stateIn operators](https://www.reddit.com/r/androiddev/comments/n720u4/things_to_know_about_flows_sharein_and_statein/) +- [[JobSwitch] I am planning to move to a better company like Uber and I am not understanding if I should concentrate on Android Concepts or do LeetCode for couple of months before I start giving interviews.](https://www.reddit.com/r/androiddev/comments/n71rt5/jobswitch_i_am_planning_to_move_to_a_better/) +- [MVP on Jetpack Compose](https://www.reddit.com/r/androiddev/comments/n71n21/mvp_on_jetpack_compose/) ### *InfoWorld posts* From bd86cada834b55d66842b2106e30a4ba27d1d137 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 8 May 2021 01:55:41 +0000 Subject: [PATCH 0451/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1364e7a67d..791be11339 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Gestionar archivos en Huawei Drive usando HMS Drive Kit y Account Kit](https://firemixdev.medium.com/gestionar-archivos-en-huawei-drive-usando-hms-drive-kit-y-account-kit-80094ef8c5?source=rss------android-5) -- [Understanding MVVM pattern for Android in 2021](https://christopher-elias.medium.com/understanding-mvvm-pattern-for-android-in-2021-98b155b37b54?source=rss------android-5) -- [Retrofit request including both body and URL parameters](https://medium.com/@akshaykapase11/retrofit-request-including-both-body-and-url-parameters-8e19624f9981?source=rss------android-5) -- [[Android] AAC MVVM Pattern](https://dev-jihun.medium.com/android-aac-mvvm-pattern-7c1bf54fc574?source=rss------android-5) -- [5 Common question for starting career as mobile application developer](https://medium.com/@nobanhasan/5-common-question-for-starting-career-as-mobile-application-developer-b2d57d46cb7d?source=rss------android-5) -- [Managing UI with Kotlin sealed classes](https://sosorevgm.medium.com/managing-ui-with-kotlin-sealed-classes-1ee674f1836f?source=rss------android-5) -- [Twitter Will Now Prompt Users When They Reply With Offensive Language](https://rivek085.medium.com/twitter-will-now-prompt-users-when-they-reply-with-offensive-language-e1602dba3ec0?source=rss------android-5) -- [研究採用 R8 Compiler 的利益與風險設計與執行實驗](https://lush93.medium.com/%E7%A0%94%E7%A9%B6%E6%8E%A1%E7%94%A8-r8-compiler-%E7%9A%84%E5%88%A9%E7%9B%8A%E8%88%87%E9%A2%A8%E9%9A%AA%E8%A8%AD%E8%A8%88%E8%88%87%E5%9F%B7%E8%A1%8C%E5%AF%A6%E9%A9%97-5452116dc3d2?source=rss------android-5) -- [為專案導入 MVVM 架構以及 Data Binding,解決 memory leak 問題](https://lush93.medium.com/%E7%82%BA%E5%B0%88%E6%A1%88%E5%B0%8E%E5%85%A5-mvvm-%E6%9E%B6%E6%A7%8B%E4%BB%A5%E5%8F%8A-data-binding-%E8%A7%A3%E6%B1%BA-memory-leak-%E5%95%8F%E9%A1%8C-f2c67e4c80e3?source=rss------android-5) -- [Project Taste](https://lush93.medium.com/project-taste-869fa738d245?source=rss------android-5) +- [Best Screen Recorders Apps For Huge Games](https://medium.com/@arya4955q/best-screen-recorders-apps-for-huge-games-db0ce938ed7a?source=rss------android-5) +- [How did I learn Android Clean Architecture, Dagger2, and Retrofit?](https://ghahremani.medium.com/how-i-learned-android-clean-architecture-dagger2-and-retrofit-d1de27b211c7?source=rss------android-5) +- [Great article Brian.](https://medium.com/@arrmixer/great-article-brian-1eec0f48744a?source=rss------android-5) +- [Theming basics in Android](https://proandroiddev.com/theming-basics-in-android-13c57bc20605?source=rss------android-5) +- [Situs Poker Deposit Pulsa Elektrik Bebas Potongan](https://kasqqpkv.medium.com/situs-poker-deposit-pulsa-elektrik-bebas-potongan-9a800b9183c4?source=rss------android-5) +- [Android’de Recycler View — (JAVA)](https://tugcenurdaglar.medium.com/androidde-recycler-view-java-2a88986c3636?source=rss------android-5) +- [Hello iPhone](https://enomfon-inyang.medium.com/hello-iphone-3d8d0eb033f0?source=rss------android-5) +- [Coroutine Misconceptions: Whose Context Is It Anyway?](https://medium.com/livefront/coroutine-misconceptions-whose-context-is-it-anyway-320c0b7adcc7?source=rss------android-5) +- [Detecting which app was used to share your apps content](https://kbibek.medium.com/detecting-which-app-was-used-to-share-your-apps-content-cde124b563bb?source=rss------android-5) +- [Android : Circular ImageView](https://anubhav-arora.medium.com/android-circular-imageview-4147579d1a44?source=rss------android-5) ### *Gizmodo posts* From 63f188ce979d000b07be007ea9175b517df62f79 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 8 May 2021 01:55:50 +0000 Subject: [PATCH 0452/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 791be11339..12aab7aacf 100644 --- a/README.md +++ b/README.md @@ -365,11 +365,11 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Infinum posts* +- [Android Studio 4.2 is now available](https://androidsweets.ongoodbits.com/android-studio-4-2-is-now-available) - [Be careful with you Google ads!](https://androidsweets.ongoodbits.com/be-careful-with-you-google-ads) - [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) -- [Do you know your dependencies?](https://androidsweets.ongoodbits.com/do-you-know-your-dependencies) *** From 8a79c8ec7941d8dbe06bb60a98ea640d38f15e4f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 9 May 2021 00:35:25 +0000 Subject: [PATCH 0453/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..32c5f0458a 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 27 Performance From c2e3bc5b701f17bfc226d8537550c80e192269df Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 9 May 2021 01:57:30 +0000 Subject: [PATCH 0454/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 12aab7aacf..11a33ebb5f 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Problem in android studio](https://www.reddit.com/r/androiddev/comments/n7e3qz/problem_in_android_studio/) -- [[Survey] Rutgers and Mozilla researchers want to know how you use Google Assistant](https://www.reddit.com/r/androiddev/comments/n7cncd/survey_rutgers_and_mozilla_researchers_want_to/) -- [Is there a good app making program that let’s me start from the front end and work back?](https://www.reddit.com/r/androiddev/comments/n7b1dm/is_there_a_good_app_making_program_that_lets_me/) -- [is there any Real-time analytics just like fabric ?](https://www.reddit.com/r/androiddev/comments/n79s8t/is_there_any_realtime_analytics_just_like_fabric/) -- [Kotlin - wait till asynchronous call to get a response](https://www.reddit.com/r/androiddev/comments/n77ukc/kotlin_wait_till_asynchronous_call_to_get_a/) -- [Emulating old version for legacy app](https://www.reddit.com/r/androiddev/comments/n76js3/emulating_old_version_for_legacy_app/) -- [best phone with at least 90hz screen and developer friendly with at least a snapdragon 855???](https://www.reddit.com/r/androiddev/comments/n73ajg/best_phone_with_at_least_90hz_screen_and/) -- [Things to know about Flow’s shareIn and stateIn operators](https://www.reddit.com/r/androiddev/comments/n720u4/things_to_know_about_flows_sharein_and_statein/) -- [[JobSwitch] I am planning to move to a better company like Uber and I am not understanding if I should concentrate on Android Concepts or do LeetCode for couple of months before I start giving interviews.](https://www.reddit.com/r/androiddev/comments/n71rt5/jobswitch_i_am_planning_to_move_to_a_better/) -- [MVP on Jetpack Compose](https://www.reddit.com/r/androiddev/comments/n71n21/mvp_on_jetpack_compose/) +- [AMD or intel (lenovo legion 5)](https://www.reddit.com/r/androiddev/comments/n816lu/amd_or_intel_lenovo_legion_5/) +- [Adb open file picker](https://www.reddit.com/r/androiddev/comments/n7xbfo/adb_open_file_picker/) +- [Has anyone else gotten the error that there's a hold on their payment account because of Brazil?](https://www.reddit.com/r/androiddev/comments/n7tnn5/has_anyone_else_gotten_the_error_that_theres_a/) +- [How much money does a 30-second unskippable mobile ad generate?](https://www.reddit.com/r/androiddev/comments/n7sp5a/how_much_money_does_a_30second_unskippable_mobile/) +- [Seeking bite-sized app ideas](https://www.reddit.com/r/androiddev/comments/n7sllj/seeking_bitesized_app_ideas/) +- [Resources to learn MVVM development](https://www.reddit.com/r/androiddev/comments/n7ragw/resources_to_learn_mvvm_development/) +- [App Feedback Thread - May 08, 2021](https://www.reddit.com/r/androiddev/comments/n7oqr3/app_feedback_thread_may_08_2021/) +- [I'm working as a virtual assistant. Hated my job. Should I quit and take the plunge self studying Android dev?](https://www.reddit.com/r/androiddev/comments/n7ohq8/im_working_as_a_virtual_assistant_hated_my_job/) +- [Can't upload .apk - "Couldn't upload. Try again" error.](https://www.reddit.com/r/androiddev/comments/n7o676/cant_upload_apk_couldnt_upload_try_again_error/) +- [Rate my widgets!](https://www.reddit.com/r/androiddev/comments/n7lac3/rate_my_widgets/) ### *InfoWorld posts* From d6c4a963f1e55bcbaaa4e4c5bbf2d237cc5ae6bf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 9 May 2021 01:57:37 +0000 Subject: [PATCH 0455/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 11a33ebb5f..f234ea3b80 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Best Screen Recorders Apps For Huge Games](https://medium.com/@arya4955q/best-screen-recorders-apps-for-huge-games-db0ce938ed7a?source=rss------android-5) -- [How did I learn Android Clean Architecture, Dagger2, and Retrofit?](https://ghahremani.medium.com/how-i-learned-android-clean-architecture-dagger2-and-retrofit-d1de27b211c7?source=rss------android-5) -- [Great article Brian.](https://medium.com/@arrmixer/great-article-brian-1eec0f48744a?source=rss------android-5) -- [Theming basics in Android](https://proandroiddev.com/theming-basics-in-android-13c57bc20605?source=rss------android-5) -- [Situs Poker Deposit Pulsa Elektrik Bebas Potongan](https://kasqqpkv.medium.com/situs-poker-deposit-pulsa-elektrik-bebas-potongan-9a800b9183c4?source=rss------android-5) -- [Android’de Recycler View — (JAVA)](https://tugcenurdaglar.medium.com/androidde-recycler-view-java-2a88986c3636?source=rss------android-5) -- [Hello iPhone](https://enomfon-inyang.medium.com/hello-iphone-3d8d0eb033f0?source=rss------android-5) -- [Coroutine Misconceptions: Whose Context Is It Anyway?](https://medium.com/livefront/coroutine-misconceptions-whose-context-is-it-anyway-320c0b7adcc7?source=rss------android-5) -- [Detecting which app was used to share your apps content](https://kbibek.medium.com/detecting-which-app-was-used-to-share-your-apps-content-cde124b563bb?source=rss------android-5) -- [Android : Circular ImageView](https://anubhav-arora.medium.com/android-circular-imageview-4147579d1a44?source=rss------android-5) +- [Situs 99 Bandar Poker Pulsa Elektrik Bebas Rate Potongan](https://kasqqpkv.medium.com/situs-99-bandar-poker-pulsa-elektrik-bebas-rate-potongan-bd8af0c2080?source=rss------android-5) +- [Android-Simple Login Screen](https://hasancobanoglu1.medium.com/android-simple-login-screen-624752968fd?source=rss------android-5) +- [Quick Guide to Git](https://medium.com/geekculture/quick-guide-to-git-937d0e4c6e69?source=rss------android-5) +- [WhatsApp privacy policy changes 2021 | What is the new policy of WhatsApp 2021?](https://sk6446777.medium.com/whatsapp-privacy-policy-changes-2021-what-is-the-new-policy-of-whatsapp-2021-2575b165dc74?source=rss------android-5) +- [Shimmer Effect in Android](https://emre-arslan.medium.com/shimmer-effect-in-android-2b6840cc0097?source=rss------android-5) +- [Working with ViewPager2](https://info-anikdey003.medium.com/working-with-viewpager2-c4a43227486b?source=rss------android-5) +- [Firebase Google Sign-In Error pada Release Mode](https://muklasr.medium.com/firebase-google-sign-in-error-pada-release-mode-6cd9ef5792cb?source=rss------android-5) +- [Working with WAV files in Android](https://medium.com/@rizveeredwan/working-with-wav-files-in-android-52e9500297e?source=rss------android-5) +- [Flutter Basics: Making a Quote app and fetching data from a quote api](https://saquib-ansari.medium.com/flutter-basics-making-a-quote-app-and-fetching-data-from-a-quote-api-b4f0d64a2dbb?source=rss------android-5) +- [Firebase를 이용해 Audience(잠재고객) + FCM](https://c004112.medium.com/firebase%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-audience-%EC%9E%A0%EC%9E%AC%EA%B3%A0%EA%B0%9D-fcm-247a7c720990?source=rss------android-5) ### *Gizmodo posts* From cd2ef6e3e21caf1bd843e9486cd7b5967a27685b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 10 May 2021 00:33:58 +0000 Subject: [PATCH 0456/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 32c5f0458a..5029c4b8ee 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 26 Performance From adde939c5f40e7466e8148f6fa6953cd55235be2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 10 May 2021 01:59:25 +0000 Subject: [PATCH 0457/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f234ea3b80..a845a39e10 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [AMD or intel (lenovo legion 5)](https://www.reddit.com/r/androiddev/comments/n816lu/amd_or_intel_lenovo_legion_5/) -- [Adb open file picker](https://www.reddit.com/r/androiddev/comments/n7xbfo/adb_open_file_picker/) -- [Has anyone else gotten the error that there's a hold on their payment account because of Brazil?](https://www.reddit.com/r/androiddev/comments/n7tnn5/has_anyone_else_gotten_the_error_that_theres_a/) -- [How much money does a 30-second unskippable mobile ad generate?](https://www.reddit.com/r/androiddev/comments/n7sp5a/how_much_money_does_a_30second_unskippable_mobile/) -- [Seeking bite-sized app ideas](https://www.reddit.com/r/androiddev/comments/n7sllj/seeking_bitesized_app_ideas/) -- [Resources to learn MVVM development](https://www.reddit.com/r/androiddev/comments/n7ragw/resources_to_learn_mvvm_development/) -- [App Feedback Thread - May 08, 2021](https://www.reddit.com/r/androiddev/comments/n7oqr3/app_feedback_thread_may_08_2021/) -- [I'm working as a virtual assistant. Hated my job. Should I quit and take the plunge self studying Android dev?](https://www.reddit.com/r/androiddev/comments/n7ohq8/im_working_as_a_virtual_assistant_hated_my_job/) -- [Can't upload .apk - "Couldn't upload. Try again" error.](https://www.reddit.com/r/androiddev/comments/n7o676/cant_upload_apk_couldnt_upload_try_again_error/) -- [Rate my widgets!](https://www.reddit.com/r/androiddev/comments/n7lac3/rate_my_widgets/) +- [App that uses several interfaces, some with AR, games and other tools](https://www.reddit.com/r/androiddev/comments/n8rvg0/app_that_uses_several_interfaces_some_with_ar/) +- [There is a solution the problem of saving a picture into a folder in the comments of this video. How do you implement it?](https://www.reddit.com/r/androiddev/comments/n8ru9t/there_is_a_solution_the_problem_of_saving_a/) +- [Android Studio emulator keeps opening as standalone app?](https://www.reddit.com/r/androiddev/comments/n8rc95/android_studio_emulator_keeps_opening_as/) +- [Are the IMG files in the AVD data directory really encrypted?](https://www.reddit.com/r/androiddev/comments/n8qv61/are_the_img_files_in_the_avd_data_directory/) +- [Can anyone suggest me a template of clean architecture ?](https://www.reddit.com/r/androiddev/comments/n8q7le/can_anyone_suggest_me_a_template_of_clean/) +- [Foot Marksmanship With runBlocking](https://www.reddit.com/r/androiddev/comments/n8p5sg/foot_marksmanship_with_runblocking/) +- [Flutter dev wanting to learn native, in 2021 what is the best path for an android dev?](https://www.reddit.com/r/androiddev/comments/n8p0a2/flutter_dev_wanting_to_learn_native_in_2021_what/) +- [Is anyone here running the Android Emulator alongside WSL2?](https://www.reddit.com/r/androiddev/comments/n8orkj/is_anyone_here_running_the_android_emulator/) +- [Jetpack Compose, should we care yet?](https://www.reddit.com/r/androiddev/comments/n8ocki/jetpack_compose_should_we_care_yet/) +- [How often do you have to use multithreading while developing an app? Is it required for a simple CRUD app?](https://www.reddit.com/r/androiddev/comments/n8mpag/how_often_do_you_have_to_use_multithreading_while/) ### *InfoWorld posts* From 590f97f0ca84e6a260c5ff4789a3794140a205a7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 10 May 2021 01:59:31 +0000 Subject: [PATCH 0458/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a845a39e10..c3eed5332e 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Situs 99 Bandar Poker Pulsa Elektrik Bebas Rate Potongan](https://kasqqpkv.medium.com/situs-99-bandar-poker-pulsa-elektrik-bebas-rate-potongan-bd8af0c2080?source=rss------android-5) -- [Android-Simple Login Screen](https://hasancobanoglu1.medium.com/android-simple-login-screen-624752968fd?source=rss------android-5) -- [Quick Guide to Git](https://medium.com/geekculture/quick-guide-to-git-937d0e4c6e69?source=rss------android-5) -- [WhatsApp privacy policy changes 2021 | What is the new policy of WhatsApp 2021?](https://sk6446777.medium.com/whatsapp-privacy-policy-changes-2021-what-is-the-new-policy-of-whatsapp-2021-2575b165dc74?source=rss------android-5) -- [Shimmer Effect in Android](https://emre-arslan.medium.com/shimmer-effect-in-android-2b6840cc0097?source=rss------android-5) -- [Working with ViewPager2](https://info-anikdey003.medium.com/working-with-viewpager2-c4a43227486b?source=rss------android-5) -- [Firebase Google Sign-In Error pada Release Mode](https://muklasr.medium.com/firebase-google-sign-in-error-pada-release-mode-6cd9ef5792cb?source=rss------android-5) -- [Working with WAV files in Android](https://medium.com/@rizveeredwan/working-with-wav-files-in-android-52e9500297e?source=rss------android-5) -- [Flutter Basics: Making a Quote app and fetching data from a quote api](https://saquib-ansari.medium.com/flutter-basics-making-a-quote-app-and-fetching-data-from-a-quote-api-b4f0d64a2dbb?source=rss------android-5) -- [Firebase를 이용해 Audience(잠재고객) + FCM](https://c004112.medium.com/firebase%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-audience-%EC%9E%A0%EC%9E%AC%EA%B3%A0%EA%B0%9D-fcm-247a7c720990?source=rss------android-5) +- [Android Phone Ke Liye 10 Best Photo Editor App Ke Baare Me Puri Jaankari](https://techdhyan.medium.com/android-phone-ke-liye-10-best-photo-editor-app-ke-baare-me-puri-jaankari-56c83f0216f2?source=rss------android-5) +- [How to use the Android Activity Result API for selecting and taking images](https://medium.com/codex/how-to-use-the-android-activity-result-api-for-selecting-and-taking-images-5dbcc3e6324b?source=rss------android-5) +- [Thinking about Mobile: MediaQuery-CrossPlatform-Native](https://james-ardery.medium.com/thinking-about-mobile-mediaquery-crossplatform-native-9a406aecada6?source=rss------android-5) +- [Risk of Using System keyboard in mobile apps](https://ali-appdev.medium.com/risk-of-using-system-keyboard-in-mobile-apps-bd33ca3a8596?source=rss------android-5) +- [Android or IOS: My Experiment](https://hamidzr.medium.com/android-or-ios-bf439e688b7?source=rss------android-5) +- [Szerezd meg új útlevél, vezetői engedély, személyi igazolványok, SSN, IELTS / TOEFL és egyéb…](https://davidkelmama.medium.com/szerezd-meg-%C3%BAj-%C3%BAtlev%C3%A9l-vezet%C5%91i-enged%C3%A9ly-szem%C3%A9lyi-igazolv%C3%A1nyok-ssn-ielts-toefl-%C3%A9s-egy%C3%A9b-16693bf67ce9?source=rss------android-5) +- [How to Build an Offline-First Mobile App](https://santhosh-adiga-u.medium.com/how-to-build-an-offline-first-mobile-app-636487ca8036?source=rss------android-5) +- [Agen Deposit Pulsa Elektrik Poker online](https://kasqqpkv.medium.com/agen-deposit-pulsa-elektrik-poker-online-f1b1c2c509bf?source=rss------android-5) +- [Android uygulamanızın web sitenize giren kullanıcınızda yüklü olup olmadığını tespit etme.](https://hasokeyk.medium.com/android-uygulaman%C4%B1z%C4%B1n-web-sitenize-giren-kullan%C4%B1c%C4%B1n%C4%B1zda-y%C3%BCkl%C3%BC-olup-olmad%C4%B1%C4%9F%C4%B1n%C4%B1-tespit-etme-189865febc79?source=rss------android-5) +- [Welcome to RIT Android Club](https://medium.com/rit-android-club/welcome-to-rit-android-club-2a55e9f2a0bc?source=rss------android-5) ### *Gizmodo posts* From 8e441a0f31add0a26252f523fddc14fea7be05b0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 10 May 2021 01:59:33 +0000 Subject: [PATCH 0459/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3eed5332e..446faa1176 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Clubhouse Launches Android Beta as iOS Downloads Nosedive](https://gizmodo.com/clubhouse-launches-android-beta-as-downloads-nosedive-1846856771) - [Qualcomm Chip Flaw Could Leave 30 Percent of the World's Phones Vulnerable to Hackers](https://gizmodo.com/qualcomm-chip-flaw-could-leave-30-percent-of-the-worlds-1846837667) - [Google Is Launching Its Own Version of Apple’s Privacy Nutrition Labels](https://gizmodo.com/google-is-launching-its-own-version-of-apple-s-privacy-1846839667) - [Google Assistant Is Getting a New Family Broadcast Feature Just in Time for Mother's Day](https://gizmodo.com/google-assistant-is-getting-a-new-family-broadcast-feat-1846836811) @@ -344,7 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) - [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) - [Google Assistant Will Now Finally Be Able to Say Your Name Correctly](https://gizmodo.com/google-assistant-will-now-finally-be-able-to-say-your-n-1846791494) -- [It Turns Out Covid-19 Contact Tracing on Android Is Not So Private After All](https://gizmodo.com/it-turns-out-covid-19-contact-tracing-on-android-is-not-1846775139) ### *Mobile Dev Memo posts* From fca6f712696d72e8bc6a638fc803e93dd59d6e8e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 11 May 2021 00:33:51 +0000 Subject: [PATCH 0460/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5029c4b8ee..1c67d311f4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 58 Performance From d13bb2abf7aeb9b08b9dab219f278ada7be59109 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 11 May 2021 01:59:01 +0000 Subject: [PATCH 0461/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 446faa1176..8b9efa3b7b 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [App that uses several interfaces, some with AR, games and other tools](https://www.reddit.com/r/androiddev/comments/n8rvg0/app_that_uses_several_interfaces_some_with_ar/) -- [There is a solution the problem of saving a picture into a folder in the comments of this video. How do you implement it?](https://www.reddit.com/r/androiddev/comments/n8ru9t/there_is_a_solution_the_problem_of_saving_a/) -- [Android Studio emulator keeps opening as standalone app?](https://www.reddit.com/r/androiddev/comments/n8rc95/android_studio_emulator_keeps_opening_as/) -- [Are the IMG files in the AVD data directory really encrypted?](https://www.reddit.com/r/androiddev/comments/n8qv61/are_the_img_files_in_the_avd_data_directory/) -- [Can anyone suggest me a template of clean architecture ?](https://www.reddit.com/r/androiddev/comments/n8q7le/can_anyone_suggest_me_a_template_of_clean/) -- [Foot Marksmanship With runBlocking](https://www.reddit.com/r/androiddev/comments/n8p5sg/foot_marksmanship_with_runblocking/) -- [Flutter dev wanting to learn native, in 2021 what is the best path for an android dev?](https://www.reddit.com/r/androiddev/comments/n8p0a2/flutter_dev_wanting_to_learn_native_in_2021_what/) -- [Is anyone here running the Android Emulator alongside WSL2?](https://www.reddit.com/r/androiddev/comments/n8orkj/is_anyone_here_running_the_android_emulator/) -- [Jetpack Compose, should we care yet?](https://www.reddit.com/r/androiddev/comments/n8ocki/jetpack_compose_should_we_care_yet/) -- [How often do you have to use multithreading while developing an app? Is it required for a simple CRUD app?](https://www.reddit.com/r/androiddev/comments/n8mpag/how_often_do_you_have_to_use_multithreading_while/) +- [What is External marketing in PlayStore console?](https://www.reddit.com/r/androiddev/comments/n9k2n7/what_is_external_marketing_in_playstore_console/) +- [Need some advice - Firebase newbie here](https://www.reddit.com/r/androiddev/comments/n9j9w0/need_some_advice_firebase_newbie_here/) +- [Releasing my first paid app and have some questions](https://www.reddit.com/r/androiddev/comments/n9iv2o/releasing_my_first_paid_app_and_have_some/) +- [USB Type-C API](https://www.reddit.com/r/androiddev/comments/n9ii9z/usb_typec_api/) +- [Can any dev create an app that replaces the status bar like that of ios Jailbreak?](https://www.reddit.com/r/androiddev/comments/n9gik0/can_any_dev_create_an_app_that_replaces_the/) +- [A library I made that allows you to make quizzes and questionnaires without having to code a complex UI.](https://www.reddit.com/r/androiddev/comments/n9cox4/a_library_i_made_that_allows_you_to_make_quizzes/) +- [Can someone post a detailed review of using Android studio on the new M1 chip with the recent updates?](https://www.reddit.com/r/androiddev/comments/n9bx2k/can_someone_post_a_detailed_review_of_using/) +- [What do you think about limiting the number of times the main feature of an app can be used until an in-app purchase unlocks this limitation?](https://www.reddit.com/r/androiddev/comments/n9as77/what_do_you_think_about_limiting_the_number_of/) +- [Persist.vendor.audio_fx_current: Access denied](https://www.reddit.com/r/androiddev/comments/n99dtg/persistvendoraudio_fx_current_access_denied/) +- [How can I copy files to downloads folder in android 11 ?](https://www.reddit.com/r/androiddev/comments/n96kxn/how_can_i_copy_files_to_downloads_folder_in/) ### *InfoWorld posts* From 9c9e374e83165bbd7a7992460c6c45cfaea14697 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 11 May 2021 01:59:07 +0000 Subject: [PATCH 0462/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8b9efa3b7b..9bdd4c6049 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Android Phone Ke Liye 10 Best Photo Editor App Ke Baare Me Puri Jaankari](https://techdhyan.medium.com/android-phone-ke-liye-10-best-photo-editor-app-ke-baare-me-puri-jaankari-56c83f0216f2?source=rss------android-5) -- [How to use the Android Activity Result API for selecting and taking images](https://medium.com/codex/how-to-use-the-android-activity-result-api-for-selecting-and-taking-images-5dbcc3e6324b?source=rss------android-5) -- [Thinking about Mobile: MediaQuery-CrossPlatform-Native](https://james-ardery.medium.com/thinking-about-mobile-mediaquery-crossplatform-native-9a406aecada6?source=rss------android-5) -- [Risk of Using System keyboard in mobile apps](https://ali-appdev.medium.com/risk-of-using-system-keyboard-in-mobile-apps-bd33ca3a8596?source=rss------android-5) -- [Android or IOS: My Experiment](https://hamidzr.medium.com/android-or-ios-bf439e688b7?source=rss------android-5) -- [Szerezd meg új útlevél, vezetői engedély, személyi igazolványok, SSN, IELTS / TOEFL és egyéb…](https://davidkelmama.medium.com/szerezd-meg-%C3%BAj-%C3%BAtlev%C3%A9l-vezet%C5%91i-enged%C3%A9ly-szem%C3%A9lyi-igazolv%C3%A1nyok-ssn-ielts-toefl-%C3%A9s-egy%C3%A9b-16693bf67ce9?source=rss------android-5) -- [How to Build an Offline-First Mobile App](https://santhosh-adiga-u.medium.com/how-to-build-an-offline-first-mobile-app-636487ca8036?source=rss------android-5) -- [Agen Deposit Pulsa Elektrik Poker online](https://kasqqpkv.medium.com/agen-deposit-pulsa-elektrik-poker-online-f1b1c2c509bf?source=rss------android-5) -- [Android uygulamanızın web sitenize giren kullanıcınızda yüklü olup olmadığını tespit etme.](https://hasokeyk.medium.com/android-uygulaman%C4%B1z%C4%B1n-web-sitenize-giren-kullan%C4%B1c%C4%B1n%C4%B1zda-y%C3%BCkl%C3%BC-olup-olmad%C4%B1%C4%9F%C4%B1n%C4%B1-tespit-etme-189865febc79?source=rss------android-5) -- [Welcome to RIT Android Club](https://medium.com/rit-android-club/welcome-to-rit-android-club-2a55e9f2a0bc?source=rss------android-5) +- [Un’organizzazione che vuole aiutare e dare privilegi a chi ha meno privilegi e anche aumentare il…](https://vr4692183.medium.com/unorganizzazione-che-vuole-aiutare-e-dare-privilegi-a-chi-ha-meno-privilegi-e-anche-aumentare-il-8517de3197f1?source=rss------android-5) +- [Agen Pulsa Elektrik Poker Online](https://kasqqpkv.medium.com/agen-pulsa-elektrik-poker-online-988db866792d?source=rss------android-5) +- [How to work with WebSockets and unit-test them by OkHttp and Mockito](https://m-abdelsattar.medium.com/how-to-work-with-websockets-and-unit-test-them-by-okhttp-and-mockito-2f179967e7d?source=rss------android-5) +- [Mengatasi ‘constructor Handler()’ is deprecated](https://inialdan.medium.com/mengatasi-constructor-handler-is-deprecated-f96cf567a1f?source=rss------android-5) +- [Retrofit Fetch API with clean architecture MVVM](https://shivamk345.medium.com/retrofit-fetch-api-with-clean-architecture-mvvm-cc95a0f7f6f?source=rss------android-5) +- [Gamerazi Free Online HTML5 Game](https://gamerazi.medium.com/gamerazi-free-online-html5-game-37eb5ddacdc2?source=rss------android-5) +- [Samsung Galaxy A12 and Galaxy A02s have received the Android 11 update](https://realimagess.medium.com/samsung-galaxy-a12-and-galaxy-a02s-have-received-the-android-11-update-b31bbb7622af?source=rss------android-5) +- [RssBook for Surface Duo — yet another Flutter dual screen sample app](https://dualscreentobbo.medium.com/rssbook-for-surface-duo-yet-another-flutter-dual-screen-sample-app-382bac042fa4?source=rss------android-5) +- [Google I/O and everything to expect.](https://samcastle.medium.com/google-i-o-and-everything-to-expect-7fa8f385f08?source=rss------android-5) +- [[ASJ2021] 從零開始學 Android(一)Unit 1: Kotlin basic for Android](https://heidi-coding.medium.com/asj2021-%E5%BE%9E%E9%9B%B6%E9%96%8B%E5%A7%8B%E5%AD%B8-android-%E4%B8%80-unit-1-kotlin-basic-for-android-cc367238bc52?source=rss------android-5) ### *Gizmodo posts* From 475a5658406efcad3653ef188fc4f0a56be775c3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 11 May 2021 01:59:11 +0000 Subject: [PATCH 0463/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9bdd4c6049..ef40ec48fe 100644 --- a/README.md +++ b/README.md @@ -350,8 +350,9 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Mobile Dev Memo posts* -- [“Mobile advertising spend can’t just disappear”](https://mobiledevmemo.com/mobile-advertising-spend-cant-just-disappear/) +- [Apple robbed the mob’s bank](https://mobiledevmemo.com/apple-robbed-the-mobs-bank/) - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) +- [“Mobile advertising spend can’t just disappear”](https://mobiledevmemo.com/mobile-advertising-spend-cant-just-disappear/) - [Creative paralysis: ad creative production and testing in iOS 14](https://mobiledevmemo.com/creative-paralysis-ad-creative-production-and-testing-for-ios-14/) - [The end of the beginning on mobile: ATT is enforced next week](https://mobiledevmemo.com/the-end-of-the-beginning-on-mobile-att-is-enforced-next-week/) - [The growth trap](https://mobiledevmemo.com/the-growth-trap/) @@ -359,7 +360,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Unpacking Tim Cook’s comments about ATT](https://mobiledevmemo.com/unpacking-tim-cooks-comments-about-att/) - [What is differential privacy in digital advertising?](https://mobiledevmemo.com/what-is-differential-privacy/) - [Dear App Developers: fingerprinting is not a viable workaround to ATT](https://mobiledevmemo.com/dear-app-developers-fingerprinting-is-not-a-viable-workaround-to-att/) -- [Surveillance advertising is a myth](https://mobiledevmemo.com/surveillance-advertising-is-a-myth/) ### *Infinum posts* From c6c4207a5287f345af1d07440bee738c50ab8f05 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 12 May 2021 00:35:25 +0000 Subject: [PATCH 0464/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c67d311f4..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 62 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..74736c5aa1 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 25 Performance From 9a5d5865bcb3c8a9ba43f21b97922278990761e6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 12 May 2021 02:00:02 +0000 Subject: [PATCH 0465/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ef40ec48fe..12e31adfbd 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What is External marketing in PlayStore console?](https://www.reddit.com/r/androiddev/comments/n9k2n7/what_is_external_marketing_in_playstore_console/) -- [Need some advice - Firebase newbie here](https://www.reddit.com/r/androiddev/comments/n9j9w0/need_some_advice_firebase_newbie_here/) -- [Releasing my first paid app and have some questions](https://www.reddit.com/r/androiddev/comments/n9iv2o/releasing_my_first_paid_app_and_have_some/) -- [USB Type-C API](https://www.reddit.com/r/androiddev/comments/n9ii9z/usb_typec_api/) -- [Can any dev create an app that replaces the status bar like that of ios Jailbreak?](https://www.reddit.com/r/androiddev/comments/n9gik0/can_any_dev_create_an_app_that_replaces_the/) -- [A library I made that allows you to make quizzes and questionnaires without having to code a complex UI.](https://www.reddit.com/r/androiddev/comments/n9cox4/a_library_i_made_that_allows_you_to_make_quizzes/) -- [Can someone post a detailed review of using Android studio on the new M1 chip with the recent updates?](https://www.reddit.com/r/androiddev/comments/n9bx2k/can_someone_post_a_detailed_review_of_using/) -- [What do you think about limiting the number of times the main feature of an app can be used until an in-app purchase unlocks this limitation?](https://www.reddit.com/r/androiddev/comments/n9as77/what_do_you_think_about_limiting_the_number_of/) -- [Persist.vendor.audio_fx_current: Access denied](https://www.reddit.com/r/androiddev/comments/n99dtg/persistvendoraudio_fx_current_access_denied/) -- [How can I copy files to downloads folder in android 11 ?](https://www.reddit.com/r/androiddev/comments/n96kxn/how_can_i_copy_files_to_downloads_folder_in/) +- [Food Planner App](https://www.reddit.com/r/androiddev/comments/nad7al/food_planner_app/) +- [Integrating Rust Into the Android Open Source Project](https://www.reddit.com/r/androiddev/comments/na5bkt/integrating_rust_into_the_android_open_source/) +- [Unable to Create a sale on mobile device.](https://www.reddit.com/r/androiddev/comments/na0cvn/unable_to_create_a_sale_on_mobile_device/) +- [Advantages of new Fragment Version (1.3.3)?](https://www.reddit.com/r/androiddev/comments/n9zift/advantages_of_new_fragment_version_133/) +- [Is it possible to make my own (third party) keyboard that will have password manager integration like GBoard have?](https://www.reddit.com/r/androiddev/comments/n9y0je/is_it_possible_to_make_my_own_third_party/) +- [Two modern ProGuard tools we used to quickly find the optimal -keep rules for DuckDuckGo](https://www.reddit.com/r/androiddev/comments/n9xlxa/two_modern_proguard_tools_we_used_to_quickly_find/) +- [Dagger Android 2.28 deprecated](https://www.reddit.com/r/androiddev/comments/n9x5sj/dagger_android_228_deprecated/) +- [How to send body in Android Valley StringRequest?](https://www.reddit.com/r/androiddev/comments/n9wpkn/how_to_send_body_in_android_valley_stringrequest/) +- [Weekly Questions Thread - May 11, 2021](https://www.reddit.com/r/androiddev/comments/n9wgmn/weekly_questions_thread_may_11_2021/) +- [Android Automotive OS review: Under the hood with Google’s car OS](https://www.reddit.com/r/androiddev/comments/n9uxge/android_automotive_os_review_under_the_hood_with/) ### *InfoWorld posts* From 41132acefb7e7f83609eaf0433c35f72bd97b0ec Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 12 May 2021 02:00:11 +0000 Subject: [PATCH 0466/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 12e31adfbd..2375f62bd2 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [Un’organizzazione che vuole aiutare e dare privilegi a chi ha meno privilegi e anche aumentare il…](https://vr4692183.medium.com/unorganizzazione-che-vuole-aiutare-e-dare-privilegi-a-chi-ha-meno-privilegi-e-anche-aumentare-il-8517de3197f1?source=rss------android-5) -- [Agen Pulsa Elektrik Poker Online](https://kasqqpkv.medium.com/agen-pulsa-elektrik-poker-online-988db866792d?source=rss------android-5) -- [How to work with WebSockets and unit-test them by OkHttp and Mockito](https://m-abdelsattar.medium.com/how-to-work-with-websockets-and-unit-test-them-by-okhttp-and-mockito-2f179967e7d?source=rss------android-5) -- [Mengatasi ‘constructor Handler()’ is deprecated](https://inialdan.medium.com/mengatasi-constructor-handler-is-deprecated-f96cf567a1f?source=rss------android-5) -- [Retrofit Fetch API with clean architecture MVVM](https://shivamk345.medium.com/retrofit-fetch-api-with-clean-architecture-mvvm-cc95a0f7f6f?source=rss------android-5) -- [Gamerazi Free Online HTML5 Game](https://gamerazi.medium.com/gamerazi-free-online-html5-game-37eb5ddacdc2?source=rss------android-5) -- [Samsung Galaxy A12 and Galaxy A02s have received the Android 11 update](https://realimagess.medium.com/samsung-galaxy-a12-and-galaxy-a02s-have-received-the-android-11-update-b31bbb7622af?source=rss------android-5) -- [RssBook for Surface Duo — yet another Flutter dual screen sample app](https://dualscreentobbo.medium.com/rssbook-for-surface-duo-yet-another-flutter-dual-screen-sample-app-382bac042fa4?source=rss------android-5) -- [Google I/O and everything to expect.](https://samcastle.medium.com/google-i-o-and-everything-to-expect-7fa8f385f08?source=rss------android-5) -- [[ASJ2021] 從零開始學 Android(一)Unit 1: Kotlin basic for Android](https://heidi-coding.medium.com/asj2021-%E5%BE%9E%E9%9B%B6%E9%96%8B%E5%A7%8B%E5%AD%B8-android-%E4%B8%80-unit-1-kotlin-basic-for-android-cc367238bc52?source=rss------android-5) +- [In-App Updates: Como gerenciar updates no Android](https://wottrich.medium.com/in-app-updates-como-gerenciar-updates-no-android-41c09a4cdd04?source=rss------android-5) +- [MY APP NAME IS: GW ANIMALS](https://medium.com/appgallery/my-app-name-is-gw-animals-da9364a14202?source=rss------android-5) +- [Static analysis tools for Android](https://coyarzun.medium.com/static-analysis-tools-for-android-9531334954f6?source=rss------android-5) +- [Android 동일 Resource ID의 오동작](https://astrodeveloper.medium.com/android-%EB%8F%99%EC%9D%BC-resource-id%EC%9D%98-%EC%98%A4%EB%8F%99%EC%9E%91-a31e512e4ba2?source=rss------android-5) +- [Compose a Smart CameraX](https://proandroiddev.com/compose-a-smart-camerax-277f4933b54b?source=rss------android-5) +- [Dagger 2 and Jetpack Compose Integration](https://proandroiddev.com/dagger-2-and-jetpack-compose-integration-8a8d424ffdb4?source=rss------android-5) +- [Robot reviewing DANGERous Pull Request](https://zahidrasheed.medium.com/robot-reviewing-dangerous-pull-request-9f42eb7943d9?source=rss------android-5) +- [TwitchMod — Versión modificada de Twitch con muchas mejoras](https://htcstoremexico.medium.com/twitchmod-versi%C3%B3n-modificada-de-twitch-con-muchas-mejoras-81edac251c1c?source=rss------android-5) +- [Android Touch Framework](https://iadilkhan.medium.com/android-touch-framework-b5cc5a9926ed?source=rss------android-5) +- [My Old Android Phone Was Better Than My New iPhone](https://debugger.medium.com/my-old-android-phone-was-better-than-my-new-iphone-a9168a82b7f?source=rss------android-5) ### *Gizmodo posts* From 9692ae67c3b8b455dc4b44ae53cf2eaf35b1d80a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 12 May 2021 02:00:14 +0000 Subject: [PATCH 0467/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2375f62bd2..a69172cf4b 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [Google, You Should Already Know How People Feel About Wear OS](https://gizmodo.com/google-you-should-already-know-how-people-feel-about-w-1846866808) - [Clubhouse Launches Android Beta as iOS Downloads Nosedive](https://gizmodo.com/clubhouse-launches-android-beta-as-downloads-nosedive-1846856771) - [Qualcomm Chip Flaw Could Leave 30 Percent of the World's Phones Vulnerable to Hackers](https://gizmodo.com/qualcomm-chip-flaw-could-leave-30-percent-of-the-worlds-1846837667) - [Google Is Launching Its Own Version of Apple’s Privacy Nutrition Labels](https://gizmodo.com/google-is-launching-its-own-version-of-apple-s-privacy-1846839667) @@ -344,7 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) - [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) - [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) -- [Google Assistant Will Now Finally Be Able to Say Your Name Correctly](https://gizmodo.com/google-assistant-will-now-finally-be-able-to-say-your-n-1846791494) ### *Mobile Dev Memo posts* From 6ca07afe7fbb166118df105fae813598646c7ad4 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 13 May 2021 00:42:54 +0000 Subject: [PATCH 0468/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 74736c5aa1..754afbbe4c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 23 Performance From e187bb65608232e9e9892998414a9bf42223f6cf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 13 May 2021 02:08:11 +0000 Subject: [PATCH 0469/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a69172cf4b..94b4851dfe 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Food Planner App](https://www.reddit.com/r/androiddev/comments/nad7al/food_planner_app/) -- [Integrating Rust Into the Android Open Source Project](https://www.reddit.com/r/androiddev/comments/na5bkt/integrating_rust_into_the_android_open_source/) -- [Unable to Create a sale on mobile device.](https://www.reddit.com/r/androiddev/comments/na0cvn/unable_to_create_a_sale_on_mobile_device/) -- [Advantages of new Fragment Version (1.3.3)?](https://www.reddit.com/r/androiddev/comments/n9zift/advantages_of_new_fragment_version_133/) -- [Is it possible to make my own (third party) keyboard that will have password manager integration like GBoard have?](https://www.reddit.com/r/androiddev/comments/n9y0je/is_it_possible_to_make_my_own_third_party/) -- [Two modern ProGuard tools we used to quickly find the optimal -keep rules for DuckDuckGo](https://www.reddit.com/r/androiddev/comments/n9xlxa/two_modern_proguard_tools_we_used_to_quickly_find/) -- [Dagger Android 2.28 deprecated](https://www.reddit.com/r/androiddev/comments/n9x5sj/dagger_android_228_deprecated/) -- [How to send body in Android Valley StringRequest?](https://www.reddit.com/r/androiddev/comments/n9wpkn/how_to_send_body_in_android_valley_stringrequest/) -- [Weekly Questions Thread - May 11, 2021](https://www.reddit.com/r/androiddev/comments/n9wgmn/weekly_questions_thread_may_11_2021/) -- [Android Automotive OS review: Under the hood with Google’s car OS](https://www.reddit.com/r/androiddev/comments/n9uxge/android_automotive_os_review_under_the_hood_with/) +- [Anyone else getting this error when trying to upload app bundle "There was an error uploading the Android App Bundle. Try again later or contact Google Play developer support if the error persists."?](https://www.reddit.com/r/androiddev/comments/nb3zww/anyone_else_getting_this_error_when_trying_to/) +- [My newly app created to help you build lead (Lead Extractor)](https://www.reddit.com/r/androiddev/comments/nb2rvj/my_newly_app_created_to_help_you_build_lead_lead/) +- [Tips on choosing a library](https://www.reddit.com/r/androiddev/comments/nb2q4u/tips_on_choosing_a_library/) +- [Drawing Overlay graphics (lines), can under-app tell this is being done?](https://www.reddit.com/r/androiddev/comments/nau9yb/drawing_overlay_graphics_lines_can_underapp_tell/) +- [I wrote a free-to-read book about large-scale Android (and iOS) development challenges](https://www.reddit.com/r/androiddev/comments/naro2u/i_wrote_a_freetoread_book_about_largescale/) +- [Extending Material theme in Jetpack Compose | Xmartlabs Blog](https://www.reddit.com/r/androiddev/comments/naqr5f/extending_material_theme_in_jetpack_compose/) +- [Scaling architecture at Lyft with Denis Neklyudov](https://www.reddit.com/r/androiddev/comments/naqkj6/scaling_architecture_at_lyft_with_denis_neklyudov/) +- [Talking Kotlin: Contributing to the Kotlin Compiler](https://www.reddit.com/r/androiddev/comments/naqk8c/talking_kotlin_contributing_to_the_kotlin_compiler/) +- [Background Task Inspector](https://www.reddit.com/r/androiddev/comments/nanror/background_task_inspector/) +- [Android Demo](https://www.reddit.com/r/androiddev/comments/namtyd/android_demo/) ### *InfoWorld posts* From 67ab1cba1571786da56dd008b1516c76c90d7552 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 13 May 2021 02:08:18 +0000 Subject: [PATCH 0470/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 94b4851dfe..f97fd554b5 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Medium posts* -- [In-App Updates: Como gerenciar updates no Android](https://wottrich.medium.com/in-app-updates-como-gerenciar-updates-no-android-41c09a4cdd04?source=rss------android-5) -- [MY APP NAME IS: GW ANIMALS](https://medium.com/appgallery/my-app-name-is-gw-animals-da9364a14202?source=rss------android-5) -- [Static analysis tools for Android](https://coyarzun.medium.com/static-analysis-tools-for-android-9531334954f6?source=rss------android-5) -- [Android 동일 Resource ID의 오동작](https://astrodeveloper.medium.com/android-%EB%8F%99%EC%9D%BC-resource-id%EC%9D%98-%EC%98%A4%EB%8F%99%EC%9E%91-a31e512e4ba2?source=rss------android-5) -- [Compose a Smart CameraX](https://proandroiddev.com/compose-a-smart-camerax-277f4933b54b?source=rss------android-5) -- [Dagger 2 and Jetpack Compose Integration](https://proandroiddev.com/dagger-2-and-jetpack-compose-integration-8a8d424ffdb4?source=rss------android-5) -- [Robot reviewing DANGERous Pull Request](https://zahidrasheed.medium.com/robot-reviewing-dangerous-pull-request-9f42eb7943d9?source=rss------android-5) -- [TwitchMod — Versión modificada de Twitch con muchas mejoras](https://htcstoremexico.medium.com/twitchmod-versi%C3%B3n-modificada-de-twitch-con-muchas-mejoras-81edac251c1c?source=rss------android-5) -- [Android Touch Framework](https://iadilkhan.medium.com/android-touch-framework-b5cc5a9926ed?source=rss------android-5) -- [My Old Android Phone Was Better Than My New iPhone](https://debugger.medium.com/my-old-android-phone-was-better-than-my-new-iphone-a9168a82b7f?source=rss------android-5) +- [Every student needs to install this FREE android app NOW!](https://lydia22.medium.com/every-student-needs-to-install-this-free-android-app-now-563fed9189d1?source=rss------android-5) +- [Digital Signature Android Demo.](https://info-anikdey003.medium.com/digital-signature-android-demo-a38f1342b880?source=rss------android-5) +- [Augmented Reality(AR) in Android](https://mothegoat.medium.com/augmented-reality-ar-in-android-1af62f6a207e?source=rss------android-5) +- [5 Effective Dos and Don’ts in Java Programming](https://betterprogramming.pub/5-effective-dos-and-donts-in-java-programming-3c14b0467bfd?source=rss------android-5) +- [Latest whatsapp messenger apk download](https://farida-bomo.medium.com/latest-whatsapp-messenger-apk-download-230c83acbc43?source=rss------android-5) +- [Android : Good to know, Part-1](https://anubhav-arora.medium.com/android-good-to-know-part-1-93b141e93192?source=rss------android-5) +- [Pop-Up-Date](https://medium.com/niagara-launcher/pop-up-date-4a5d3522df2d?source=rss------android-5) +- [Un’organizzazione che vuole aiutare e dare privilegi a chi ha meno privilegi e anche aumentare il…](https://wemovekel01.medium.com/unorganizzazione-che-vuole-aiutare-e-dare-privilegi-a-chi-ha-meno-privilegi-e-anche-aumentare-il-13ec5ea12f09?source=rss------android-5) +- [Getting started: Android CameraX](https://thewerner.medium.com/getting-started-android-camerax-a84e138e2c00?source=rss------android-5) +- [Maintain View from Resizing while use `ADJUST_RESIZE`](https://mahmoud-mabrok.medium.com/maintain-view-from-resizing-while-use-adjust-resize-915676c1c5e5?source=rss------android-5) ### *Gizmodo posts* From 64cd4af09212f226747e593a003a099dfc1fb19f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 13 May 2021 02:08:20 +0000 Subject: [PATCH 0471/2080] Updated with the latest blog posts --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f97fd554b5..c85dea88d1 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Gizmodo posts* +- [The Asus Zenfone 8 Is an Affordable, Compelling Option If You Love Small Phones](https://gizmodo.com/the-asus-zenfone-8-is-an-affordable-compelling-option-1846854210) +- [My Kingdom for an Android Tablet That Doubles As a Portable Monitor](https://gizmodo.com/my-kingdom-for-an-android-tablet-that-doubles-as-a-port-1846850182) - [Google, You Should Already Know How People Feel About Wear OS](https://gizmodo.com/google-you-should-already-know-how-people-feel-about-w-1846866808) - [Clubhouse Launches Android Beta as iOS Downloads Nosedive](https://gizmodo.com/clubhouse-launches-android-beta-as-downloads-nosedive-1846856771) - [Qualcomm Chip Flaw Could Leave 30 Percent of the World's Phones Vulnerable to Hackers](https://gizmodo.com/qualcomm-chip-flaw-could-leave-30-percent-of-the-worlds-1846837667) @@ -343,8 +345,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Is Bringing a Google TV-Like Experience to Android Tablets](https://gizmodo.com/google-is-bringing-a-google-tv-like-experience-to-andro-1846824566) - [Google May Have Inadvertently Just Spilled the Beans About the Pixel Buds A on Twitter](https://gizmodo.com/google-may-have-inadvertently-just-spilled-the-beans-ab-1846823832) - [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) -- [Clubhouse Is Losing Steam](https://gizmodo.com/clubhouse-is-losing-steam-1846813209) -- [New Google Play Store Rules Aim to Weed Out Spammy Apps](https://gizmodo.com/new-google-play-store-rules-aim-to-weed-out-spammy-apps-1846797462) ### *Mobile Dev Memo posts* From 0f6c5841d7c8bce03d159c32d7564d732b160efc Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 14 May 2021 00:44:46 +0000 Subject: [PATCH 0472/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..bd037d2169 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 754afbbe4c..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 23 + + 27 Performance From 052c571428e5ac4268934d3f21f5aded6c9bd6b4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 14 May 2021 02:08:39 +0000 Subject: [PATCH 0473/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c85dea88d1..114ba29c49 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Anyone else getting this error when trying to upload app bundle "There was an error uploading the Android App Bundle. Try again later or contact Google Play developer support if the error persists."?](https://www.reddit.com/r/androiddev/comments/nb3zww/anyone_else_getting_this_error_when_trying_to/) -- [My newly app created to help you build lead (Lead Extractor)](https://www.reddit.com/r/androiddev/comments/nb2rvj/my_newly_app_created_to_help_you_build_lead_lead/) -- [Tips on choosing a library](https://www.reddit.com/r/androiddev/comments/nb2q4u/tips_on_choosing_a_library/) -- [Drawing Overlay graphics (lines), can under-app tell this is being done?](https://www.reddit.com/r/androiddev/comments/nau9yb/drawing_overlay_graphics_lines_can_underapp_tell/) -- [I wrote a free-to-read book about large-scale Android (and iOS) development challenges](https://www.reddit.com/r/androiddev/comments/naro2u/i_wrote_a_freetoread_book_about_largescale/) -- [Extending Material theme in Jetpack Compose | Xmartlabs Blog](https://www.reddit.com/r/androiddev/comments/naqr5f/extending_material_theme_in_jetpack_compose/) -- [Scaling architecture at Lyft with Denis Neklyudov](https://www.reddit.com/r/androiddev/comments/naqkj6/scaling_architecture_at_lyft_with_denis_neklyudov/) -- [Talking Kotlin: Contributing to the Kotlin Compiler](https://www.reddit.com/r/androiddev/comments/naqk8c/talking_kotlin_contributing_to_the_kotlin_compiler/) -- [Background Task Inspector](https://www.reddit.com/r/androiddev/comments/nanror/background_task_inspector/) -- [Android Demo](https://www.reddit.com/r/androiddev/comments/namtyd/android_demo/) +- [Proper way to launch other apps from native C/C++ code](https://www.reddit.com/r/androiddev/comments/nbujqh/proper_way_to_launch_other_apps_from_native_cc/) +- [How to upgrade Jetpack Compose to Beta in Android Studio](https://www.reddit.com/r/androiddev/comments/nbr79n/how_to_upgrade_jetpack_compose_to_beta_in_android/) +- [Using Apple's "SF Symbols" in our Android Apps](https://www.reddit.com/r/androiddev/comments/nbozcf/using_apples_sf_symbols_in_our_android_apps/) +- [Coroutine Misconceptions: Whose Context Is It Anyway?](https://www.reddit.com/r/androiddev/comments/nboxhc/coroutine_misconceptions_whose_context_is_it/) +- [Investigate Cause of Play Store Complaints Faster!](https://www.reddit.com/r/androiddev/comments/nbnri4/investigate_cause_of_play_store_complaints_faster/) +- [Android Studio 4.2.1 available](https://www.reddit.com/r/androiddev/comments/nbn12l/android_studio_421_available/) +- [Data binding in MVVM](https://www.reddit.com/r/androiddev/comments/nbmn2z/data_binding_in_mvvm/) +- [Compromised Keystore](https://www.reddit.com/r/androiddev/comments/nbmmls/compromised_keystore/) +- [Kotlin Multiplatform vs Flutter](https://www.reddit.com/r/androiddev/comments/nbjskd/kotlin_multiplatform_vs_flutter/) +- [Is it possible to not show ad for 15 second after click?](https://www.reddit.com/r/androiddev/comments/nbigna/is_it_possible_to_not_show_ad_for_15_second_after/) ### *InfoWorld posts* From 0613ffec0c88157489a918507de38c4e310e9ae1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 15 May 2021 00:42:00 +0000 Subject: [PATCH 0474/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index bd037d2169..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..c954d44d3a 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 32 Performance From 656164e9cb6a9017bcf6f2a688aece17c198c52f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 15 May 2021 02:05:40 +0000 Subject: [PATCH 0475/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 114ba29c49..c4d7d2f9bd 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Proper way to launch other apps from native C/C++ code](https://www.reddit.com/r/androiddev/comments/nbujqh/proper_way_to_launch_other_apps_from_native_cc/) -- [How to upgrade Jetpack Compose to Beta in Android Studio](https://www.reddit.com/r/androiddev/comments/nbr79n/how_to_upgrade_jetpack_compose_to_beta_in_android/) -- [Using Apple's "SF Symbols" in our Android Apps](https://www.reddit.com/r/androiddev/comments/nbozcf/using_apples_sf_symbols_in_our_android_apps/) -- [Coroutine Misconceptions: Whose Context Is It Anyway?](https://www.reddit.com/r/androiddev/comments/nboxhc/coroutine_misconceptions_whose_context_is_it/) -- [Investigate Cause of Play Store Complaints Faster!](https://www.reddit.com/r/androiddev/comments/nbnri4/investigate_cause_of_play_store_complaints_faster/) -- [Android Studio 4.2.1 available](https://www.reddit.com/r/androiddev/comments/nbn12l/android_studio_421_available/) -- [Data binding in MVVM](https://www.reddit.com/r/androiddev/comments/nbmn2z/data_binding_in_mvvm/) -- [Compromised Keystore](https://www.reddit.com/r/androiddev/comments/nbmmls/compromised_keystore/) -- [Kotlin Multiplatform vs Flutter](https://www.reddit.com/r/androiddev/comments/nbjskd/kotlin_multiplatform_vs_flutter/) -- [Is it possible to not show ad for 15 second after click?](https://www.reddit.com/r/androiddev/comments/nbigna/is_it_possible_to_not_show_ad_for_15_second_after/) +- [Has anyone got the new Admob console (app review process)?](https://www.reddit.com/r/androiddev/comments/ncnzif/has_anyone_got_the_new_admob_console_app_review/) +- [How do I resume my app on all android devices when its minimized and then the icon is clicked of the app](https://www.reddit.com/r/androiddev/comments/nchn7g/how_do_i_resume_my_app_on_all_android_devices/) +- [Coroutine 1.5.0 releasee](https://www.reddit.com/r/androiddev/comments/ncfkb3/coroutine_150_releasee/) +- [Assume: Easy response mocking library for retrofit-okhttp](https://www.reddit.com/r/androiddev/comments/ncer81/assume_easy_response_mocking_library_for/) +- [How do you know you are ready for freelance or junior dev position at a firm?](https://www.reddit.com/r/androiddev/comments/ncdsq7/how_do_you_know_you_are_ready_for_freelance_or/) +- [for people wondering how to log android room operation (CRUD) and transaction](https://www.reddit.com/r/androiddev/comments/ncdfst/for_people_wondering_how_to_log_android_room/) +- [New network address on Android 11 Hotspot](https://www.reddit.com/r/androiddev/comments/ncd38c/new_network_address_on_android_11_hotspot/) +- [Tablet for Dev recommendations](https://www.reddit.com/r/androiddev/comments/ncctif/tablet_for_dev_recommendations/) +- [Hey! 👋 I built a tool to modify app designs and content in the code. Without code —](https://www.reddit.com/r/androiddev/comments/ncbcnv/hey_i_built_a_tool_to_modify_app_designs_and/) +- [Data Visualization Libraries](https://www.reddit.com/r/androiddev/comments/nc9pjt/data_visualization_libraries/) ### *InfoWorld posts* From 519f0b74c81db708bbc34ea3ed754d9fe5b45be8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 16 May 2021 00:46:00 +0000 Subject: [PATCH 0476/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..1c67d311f4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index c954d44d3a..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 26 Performance From d8c1032c38c303ff05b4d299b165b094482ed102 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 16 May 2021 02:13:17 +0000 Subject: [PATCH 0477/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c4d7d2f9bd..86d68188d4 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Has anyone got the new Admob console (app review process)?](https://www.reddit.com/r/androiddev/comments/ncnzif/has_anyone_got_the_new_admob_console_app_review/) -- [How do I resume my app on all android devices when its minimized and then the icon is clicked of the app](https://www.reddit.com/r/androiddev/comments/nchn7g/how_do_i_resume_my_app_on_all_android_devices/) -- [Coroutine 1.5.0 releasee](https://www.reddit.com/r/androiddev/comments/ncfkb3/coroutine_150_releasee/) -- [Assume: Easy response mocking library for retrofit-okhttp](https://www.reddit.com/r/androiddev/comments/ncer81/assume_easy_response_mocking_library_for/) -- [How do you know you are ready for freelance or junior dev position at a firm?](https://www.reddit.com/r/androiddev/comments/ncdsq7/how_do_you_know_you_are_ready_for_freelance_or/) -- [for people wondering how to log android room operation (CRUD) and transaction](https://www.reddit.com/r/androiddev/comments/ncdfst/for_people_wondering_how_to_log_android_room/) -- [New network address on Android 11 Hotspot](https://www.reddit.com/r/androiddev/comments/ncd38c/new_network_address_on_android_11_hotspot/) -- [Tablet for Dev recommendations](https://www.reddit.com/r/androiddev/comments/ncctif/tablet_for_dev_recommendations/) -- [Hey! 👋 I built a tool to modify app designs and content in the code. Without code —](https://www.reddit.com/r/androiddev/comments/ncbcnv/hey_i_built_a_tool_to_modify_app_designs_and/) -- [Data Visualization Libraries](https://www.reddit.com/r/androiddev/comments/nc9pjt/data_visualization_libraries/) +- [I want to get into mobile (mainly android) dev with programming background and some mobile development shortcuts background (like Unity and Appinventor and tiny bit of android studio), what is the best programming language or thingy?](https://www.reddit.com/r/androiddev/comments/nd7oq0/i_want_to_get_into_mobile_mainly_android_dev_with/) +- [Video: Google's upcoming OS Android 12 first official promo leaked » The Deep News Source](https://www.reddit.com/r/androiddev/comments/nd6ssm/video_googles_upcoming_os_android_12_first/) +- [Does anyone has a good Android Java code example/ library which can perform PUT operation via S3 presigned URL?](https://www.reddit.com/r/androiddev/comments/nd49oj/does_anyone_has_a_good_android_java_code_example/) +- [Change app function completely.](https://www.reddit.com/r/androiddev/comments/nd42up/change_app_function_completely/) +- [Custom class initiates multiple times](https://www.reddit.com/r/androiddev/comments/nd3im7/custom_class_initiates_multiple_times/) +- [Looking for an USB IO Library to stream data](https://www.reddit.com/r/androiddev/comments/nd3ii2/looking_for_an_usb_io_library_to_stream_data/) +- [what do you predict is the future of cross platform mobile development?](https://www.reddit.com/r/androiddev/comments/nd27j5/what_do_you_predict_is_the_future_of_cross/) +- [A "Scala on Android" meetup, May 18, 19:00-21:00](https://www.reddit.com/r/androiddev/comments/nd1d78/a_scala_on_android_meetup_may_18_19002100/) +- [Is there any privacy-focused analytic platforms for mobile in 2021?](https://www.reddit.com/r/androiddev/comments/nd0gpk/is_there_any_privacyfocused_analytic_platforms/) +- [Canvas | 2D space Particles | Jetpack Compose Desktop](https://www.reddit.com/r/androiddev/comments/nczlsr/canvas_2d_space_particles_jetpack_compose_desktop/) ### *InfoWorld posts* From de2652c29ae46444548c66ab69337f538ee96ba1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 17 May 2021 00:41:26 +0000 Subject: [PATCH 0478/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c67d311f4..f12ea38eb6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 27 Performance From e1f74b9f4f50aa63c3365f29124348819ae82ac6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 17 May 2021 02:08:43 +0000 Subject: [PATCH 0479/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 86d68188d4..4441d01fe1 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I want to get into mobile (mainly android) dev with programming background and some mobile development shortcuts background (like Unity and Appinventor and tiny bit of android studio), what is the best programming language or thingy?](https://www.reddit.com/r/androiddev/comments/nd7oq0/i_want_to_get_into_mobile_mainly_android_dev_with/) -- [Video: Google's upcoming OS Android 12 first official promo leaked » The Deep News Source](https://www.reddit.com/r/androiddev/comments/nd6ssm/video_googles_upcoming_os_android_12_first/) -- [Does anyone has a good Android Java code example/ library which can perform PUT operation via S3 presigned URL?](https://www.reddit.com/r/androiddev/comments/nd49oj/does_anyone_has_a_good_android_java_code_example/) -- [Change app function completely.](https://www.reddit.com/r/androiddev/comments/nd42up/change_app_function_completely/) -- [Custom class initiates multiple times](https://www.reddit.com/r/androiddev/comments/nd3im7/custom_class_initiates_multiple_times/) -- [Looking for an USB IO Library to stream data](https://www.reddit.com/r/androiddev/comments/nd3ii2/looking_for_an_usb_io_library_to_stream_data/) -- [what do you predict is the future of cross platform mobile development?](https://www.reddit.com/r/androiddev/comments/nd27j5/what_do_you_predict_is_the_future_of_cross/) -- [A "Scala on Android" meetup, May 18, 19:00-21:00](https://www.reddit.com/r/androiddev/comments/nd1d78/a_scala_on_android_meetup_may_18_19002100/) -- [Is there any privacy-focused analytic platforms for mobile in 2021?](https://www.reddit.com/r/androiddev/comments/nd0gpk/is_there_any_privacyfocused_analytic_platforms/) -- [Canvas | 2D space Particles | Jetpack Compose Desktop](https://www.reddit.com/r/androiddev/comments/nczlsr/canvas_2d_space_particles_jetpack_compose_desktop/) +- [Do all architecture components really make development easier?](https://www.reddit.com/r/androiddev/comments/ne39kw/do_all_architecture_components_really_make/) +- [What do you think about Panoramic screenshots for Play Store?](https://www.reddit.com/r/androiddev/comments/ne2ca6/what_do_you_think_about_panoramic_screenshots_for/) +- [Have you had to deal with a negative review campaign against your app? What's the recourse?](https://www.reddit.com/r/androiddev/comments/ne1rek/have_you_had_to_deal_with_a_negative_review/) +- [Can't find Sha -1 key](https://www.reddit.com/r/androiddev/comments/ne1cue/cant_find_sha_1_key/) +- [Easy way to create a virtual keyboard?](https://www.reddit.com/r/androiddev/comments/ne11w3/easy_way_to_create_a_virtual_keyboard/) +- [I am looking for a free API for streaming music.](https://www.reddit.com/r/androiddev/comments/ndy8xr/i_am_looking_for_a_free_api_for_streaming_music/) +- [How to Update RecyclerView Item upload/download progress after fragment replaced?](https://www.reddit.com/r/androiddev/comments/ndxrtb/how_to_update_recyclerview_item_uploaddownload/) +- [Kotlin withContext() is very slow](https://www.reddit.com/r/androiddev/comments/ndvahj/kotlin_withcontext_is_very_slow/) +- [When you use a custom launcher, does the system launcher of your phone go to sleep?](https://www.reddit.com/r/androiddev/comments/ndute6/when_you_use_a_custom_launcher_does_the_system/) +- [Don't know how to (insert many things here) - text/UI based MMO.](https://www.reddit.com/r/androiddev/comments/ndt6l0/dont_know_how_to_insert_many_things_here_textui/) ### *InfoWorld posts* From 08e1b837eca7308b71330f2b2ed8bcac07d33c49 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 18 May 2021 00:46:01 +0000 Subject: [PATCH 0480/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f12ea38eb6..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 30 Performance From cda0659eed193c191cef5ee52a40b55d9f6c658f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 18 May 2021 02:11:04 +0000 Subject: [PATCH 0481/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4441d01fe1..1e2394bbf6 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Do all architecture components really make development easier?](https://www.reddit.com/r/androiddev/comments/ne39kw/do_all_architecture_components_really_make/) -- [What do you think about Panoramic screenshots for Play Store?](https://www.reddit.com/r/androiddev/comments/ne2ca6/what_do_you_think_about_panoramic_screenshots_for/) -- [Have you had to deal with a negative review campaign against your app? What's the recourse?](https://www.reddit.com/r/androiddev/comments/ne1rek/have_you_had_to_deal_with_a_negative_review/) -- [Can't find Sha -1 key](https://www.reddit.com/r/androiddev/comments/ne1cue/cant_find_sha_1_key/) -- [Easy way to create a virtual keyboard?](https://www.reddit.com/r/androiddev/comments/ne11w3/easy_way_to_create_a_virtual_keyboard/) -- [I am looking for a free API for streaming music.](https://www.reddit.com/r/androiddev/comments/ndy8xr/i_am_looking_for_a_free_api_for_streaming_music/) -- [How to Update RecyclerView Item upload/download progress after fragment replaced?](https://www.reddit.com/r/androiddev/comments/ndxrtb/how_to_update_recyclerview_item_uploaddownload/) -- [Kotlin withContext() is very slow](https://www.reddit.com/r/androiddev/comments/ndvahj/kotlin_withcontext_is_very_slow/) -- [When you use a custom launcher, does the system launcher of your phone go to sleep?](https://www.reddit.com/r/androiddev/comments/ndute6/when_you_use_a_custom_launcher_does_the_system/) -- [Don't know how to (insert many things here) - text/UI based MMO.](https://www.reddit.com/r/androiddev/comments/ndt6l0/dont_know_how_to_insert_many_things_here_textui/) +- [Migrating from LiveData to Kotlin’s Flow](https://www.reddit.com/r/androiddev/comments/nexb2r/migrating_from_livedata_to_kotlins_flow/) +- [Improving Android startup: Initializing Dagger Async](https://www.reddit.com/r/androiddev/comments/newfmg/improving_android_startup_initializing_dagger/) +- [Leak investigation: Rx disposal race in SQLDelight](https://www.reddit.com/r/androiddev/comments/neumod/leak_investigation_rx_disposal_race_in_sqldelight/) +- [Have you ever come across a situation where you used DS like graphs/trees to solve a problem in android Dev?](https://www.reddit.com/r/androiddev/comments/neqmak/have_you_ever_come_across_a_situation_where_you/) +- [Hilt to the rescue, part 1](https://www.reddit.com/r/androiddev/comments/neoyx5/hilt_to_the_rescue_part_1/) +- [yairm210/Unciv Unciv - FOSS Civ V for Android+Desktop](https://www.reddit.com/r/androiddev/comments/neob23/yairm210unciv_unciv_foss_civ_v_for_androiddesktop/) +- [Rich Messaging Implementation](https://www.reddit.com/r/androiddev/comments/nelnp8/rich_messaging_implementation/) +- [Have you ever used Facebook Audience Network ads in your app that is launched on galaxy store?](https://www.reddit.com/r/androiddev/comments/nek5ym/have_you_ever_used_facebook_audience_network_ads/) +- [Does anyone else have something other than a love for Material design?](https://www.reddit.com/r/androiddev/comments/nejy1t/does_anyone_else_have_something_other_than_a_love/) +- [Does providing link in the app is a policy violation?](https://www.reddit.com/r/androiddev/comments/nejque/does_providing_link_in_the_app_is_a_policy/) ### *InfoWorld posts* From 93b65f09e6b86b3ed915df49c8789cac845527f0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 19 May 2021 00:41:48 +0000 Subject: [PATCH 0482/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..1c67d311f4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..d40ddfb268 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 24 Performance From 20685931b72d55c6f4906aa85c6c02f13de19e49 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 19 May 2021 02:03:51 +0000 Subject: [PATCH 0483/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1e2394bbf6..fe9f1bc6f0 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Migrating from LiveData to Kotlin’s Flow](https://www.reddit.com/r/androiddev/comments/nexb2r/migrating_from_livedata_to_kotlins_flow/) -- [Improving Android startup: Initializing Dagger Async](https://www.reddit.com/r/androiddev/comments/newfmg/improving_android_startup_initializing_dagger/) -- [Leak investigation: Rx disposal race in SQLDelight](https://www.reddit.com/r/androiddev/comments/neumod/leak_investigation_rx_disposal_race_in_sqldelight/) -- [Have you ever come across a situation where you used DS like graphs/trees to solve a problem in android Dev?](https://www.reddit.com/r/androiddev/comments/neqmak/have_you_ever_come_across_a_situation_where_you/) -- [Hilt to the rescue, part 1](https://www.reddit.com/r/androiddev/comments/neoyx5/hilt_to_the_rescue_part_1/) -- [yairm210/Unciv Unciv - FOSS Civ V for Android+Desktop](https://www.reddit.com/r/androiddev/comments/neob23/yairm210unciv_unciv_foss_civ_v_for_androiddesktop/) -- [Rich Messaging Implementation](https://www.reddit.com/r/androiddev/comments/nelnp8/rich_messaging_implementation/) -- [Have you ever used Facebook Audience Network ads in your app that is launched on galaxy store?](https://www.reddit.com/r/androiddev/comments/nek5ym/have_you_ever_used_facebook_audience_network_ads/) -- [Does anyone else have something other than a love for Material design?](https://www.reddit.com/r/androiddev/comments/nejy1t/does_anyone_else_have_something_other_than_a_love/) -- [Does providing link in the app is a policy violation?](https://www.reddit.com/r/androiddev/comments/nejque/does_providing_link_in_the_app_is_a_policy/) +- [Pixel phone design](https://www.reddit.com/r/androiddev/comments/nfr064/pixel_phone_design/) +- [An idea of how you could handle Error Views in Android using SOLID Principles! :]](https://www.reddit.com/r/androiddev/comments/nfnm5u/an_idea_of_how_you_could_handle_error_views_in/) +- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/nfm89r/is_there_any_appgame_that_you_found_that_uses/) +- [The benefits of a shared mobile architecture](https://www.reddit.com/r/androiddev/comments/nflu0n/the_benefits_of_a_shared_mobile_architecture/) +- [Dear, droids, I need you help!!](https://www.reddit.com/r/androiddev/comments/nfkr24/dear_droids_i_need_you_help/) +- [What's new for Android developers at Google I/O](https://www.reddit.com/r/androiddev/comments/nfk2i2/whats_new_for_android_developers_at_google_io/) +- [Compose stable coming in July](https://www.reddit.com/r/androiddev/comments/nfjyvo/compose_stable_coming_in_july/) +- [Android Studio Arctic Fox Beta 1 available](https://www.reddit.com/r/androiddev/comments/nfj6aj/android_studio_arctic_fox_beta_1_available/) +- [Android Studio Arctic Fox beta is available!](https://www.reddit.com/r/androiddev/comments/nfj13h/android_studio_arctic_fox_beta_is_available/) +- [Android Studio's keyboard shortcuts mapped onto a virtual keyboard](https://www.reddit.com/r/androiddev/comments/nfiqq5/android_studios_keyboard_shortcuts_mapped_onto_a/) ### *InfoWorld posts* From ad15d81059d2c99af3bdf285909cadd297636322 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 20 May 2021 00:38:56 +0000 Subject: [PATCH 0484/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c67d311f4..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ddfb268..d40ac51c5b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 24 + + 27 Performance From 6c31e1f01b07b6edcb850bec1ed632e582371ccc Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 20 May 2021 02:04:16 +0000 Subject: [PATCH 0485/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fe9f1bc6f0..a474600249 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Pixel phone design](https://www.reddit.com/r/androiddev/comments/nfr064/pixel_phone_design/) -- [An idea of how you could handle Error Views in Android using SOLID Principles! :]](https://www.reddit.com/r/androiddev/comments/nfnm5u/an_idea_of_how_you_could_handle_error_views_in/) -- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/nfm89r/is_there_any_appgame_that_you_found_that_uses/) -- [The benefits of a shared mobile architecture](https://www.reddit.com/r/androiddev/comments/nflu0n/the_benefits_of_a_shared_mobile_architecture/) -- [Dear, droids, I need you help!!](https://www.reddit.com/r/androiddev/comments/nfkr24/dear_droids_i_need_you_help/) -- [What's new for Android developers at Google I/O](https://www.reddit.com/r/androiddev/comments/nfk2i2/whats_new_for_android_developers_at_google_io/) -- [Compose stable coming in July](https://www.reddit.com/r/androiddev/comments/nfjyvo/compose_stable_coming_in_july/) -- [Android Studio Arctic Fox Beta 1 available](https://www.reddit.com/r/androiddev/comments/nfj6aj/android_studio_arctic_fox_beta_1_available/) -- [Android Studio Arctic Fox beta is available!](https://www.reddit.com/r/androiddev/comments/nfj13h/android_studio_arctic_fox_beta_is_available/) -- [Android Studio's keyboard shortcuts mapped onto a virtual keyboard](https://www.reddit.com/r/androiddev/comments/nfiqq5/android_studios_keyboard_shortcuts_mapped_onto_a/) +- [Where to store JSON file for parsing](https://www.reddit.com/r/androiddev/comments/nglzmv/where_to_store_json_file_for_parsing/) +- [Which virtual devices should you install?](https://www.reddit.com/r/androiddev/comments/ngkblm/which_virtual_devices_should_you_install/) +- [Intercept and disable power button](https://www.reddit.com/r/androiddev/comments/ngj2pt/intercept_and_disable_power_button/) +- [How many of the presented changes in Android 12 will be available for everyone with AOSP ?](https://www.reddit.com/r/androiddev/comments/nghggx/how_many_of_the_presented_changes_in_android_12/) +- [Current state of GDPR and Ads in Europe?](https://www.reddit.com/r/androiddev/comments/ngh0gj/current_state_of_gdpr_and_ads_in_europe/) +- [Project Nitrogen becomes Unified Test Platform + Gradle Managed Devices](https://www.reddit.com/r/androiddev/comments/nggq9j/project_nitrogen_becomes_unified_test_platform/) +- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/nggbfl/is_there_any_appgame_that_you_found_that_uses/) +- [Flutter Labs on Qwiklabs](https://www.reddit.com/r/androiddev/comments/ngfzpf/flutter_labs_on_qwiklabs/) +- [Material You — Google's New Design System is Here!](https://www.reddit.com/r/androiddev/comments/ngaoap/material_you_googles_new_design_system_is_here/) +- [hilt-lifecycle-viewmodel 1.0.0 failing to resolve with gradle](https://www.reddit.com/r/androiddev/comments/nga3su/hiltlifecycleviewmodel_100_failing_to_resolve/) ### *InfoWorld posts* From 52ff40dc32ea8dea0380cd6d69485fa589ddc97c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 21 May 2021 00:43:27 +0000 Subject: [PATCH 0486/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index d40ac51c5b..e1585f7644 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 34 Performance From 85a6d81406346d9d383aba5e46d02044d4ee8648 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 21 May 2021 02:06:49 +0000 Subject: [PATCH 0487/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a474600249..6ecd2b4655 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Where to store JSON file for parsing](https://www.reddit.com/r/androiddev/comments/nglzmv/where_to_store_json_file_for_parsing/) -- [Which virtual devices should you install?](https://www.reddit.com/r/androiddev/comments/ngkblm/which_virtual_devices_should_you_install/) -- [Intercept and disable power button](https://www.reddit.com/r/androiddev/comments/ngj2pt/intercept_and_disable_power_button/) -- [How many of the presented changes in Android 12 will be available for everyone with AOSP ?](https://www.reddit.com/r/androiddev/comments/nghggx/how_many_of_the_presented_changes_in_android_12/) -- [Current state of GDPR and Ads in Europe?](https://www.reddit.com/r/androiddev/comments/ngh0gj/current_state_of_gdpr_and_ads_in_europe/) -- [Project Nitrogen becomes Unified Test Platform + Gradle Managed Devices](https://www.reddit.com/r/androiddev/comments/nggq9j/project_nitrogen_becomes_unified_test_platform/) -- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/nggbfl/is_there_any_appgame_that_you_found_that_uses/) -- [Flutter Labs on Qwiklabs](https://www.reddit.com/r/androiddev/comments/ngfzpf/flutter_labs_on_qwiklabs/) -- [Material You — Google's New Design System is Here!](https://www.reddit.com/r/androiddev/comments/ngaoap/material_you_googles_new_design_system_is_here/) -- [hilt-lifecycle-viewmodel 1.0.0 failing to resolve with gradle](https://www.reddit.com/r/androiddev/comments/nga3su/hiltlifecycleviewmodel_100_failing_to_resolve/) +- [Learn Android: Design or Development?](https://www.reddit.com/r/androiddev/comments/nhhfi8/learn_android_design_or_development/) +- [Useful Kotlin Extensions for Android](https://www.reddit.com/r/androiddev/comments/nheyes/useful_kotlin_extensions_for_android/) +- [What’s New in Android 12 For Developers?](https://www.reddit.com/r/androiddev/comments/nheuzm/whats_new_in_android_12_for_developers/) +- [Good Open Source native App to learn](https://www.reddit.com/r/androiddev/comments/nhc06q/good_open_source_native_app_to_learn/) +- [How did Medium block custom text selection?](https://www.reddit.com/r/androiddev/comments/nhaugi/how_did_medium_block_custom_text_selection/) +- [APP TESTING AUTOMATION](https://www.reddit.com/r/androiddev/comments/nh8nxo/app_testing_automation/) +- [Emulator for Firebase](https://www.reddit.com/r/androiddev/comments/nh7qu7/emulator_for_firebase/) +- [Comparing the performance of two identical android apps](https://www.reddit.com/r/androiddev/comments/nh4tf4/comparing_the_performance_of_two_identical/) +- [Firebase + Spring + Tomcat for large files](https://www.reddit.com/r/androiddev/comments/nh4cbt/firebase_spring_tomcat_for_large_files/) +- [Beginners Guide to learn android dev step by step.](https://www.reddit.com/r/androiddev/comments/nh4b17/beginners_guide_to_learn_android_dev_step_by_step/) ### *InfoWorld posts* From 721b7ed01bd5844507eeae7eb90d1f894b6a7810 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 22 May 2021 00:42:56 +0000 Subject: [PATCH 0488/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..f2949c0d49 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 57 + + 48 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e1585f7644..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 26 Performance From 1db5cd973a285f740296981078404e97a950e5ce Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 22 May 2021 02:06:13 +0000 Subject: [PATCH 0489/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6ecd2b4655..a3a5a94bb7 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Learn Android: Design or Development?](https://www.reddit.com/r/androiddev/comments/nhhfi8/learn_android_design_or_development/) -- [Useful Kotlin Extensions for Android](https://www.reddit.com/r/androiddev/comments/nheyes/useful_kotlin_extensions_for_android/) -- [What’s New in Android 12 For Developers?](https://www.reddit.com/r/androiddev/comments/nheuzm/whats_new_in_android_12_for_developers/) -- [Good Open Source native App to learn](https://www.reddit.com/r/androiddev/comments/nhc06q/good_open_source_native_app_to_learn/) -- [How did Medium block custom text selection?](https://www.reddit.com/r/androiddev/comments/nhaugi/how_did_medium_block_custom_text_selection/) -- [APP TESTING AUTOMATION](https://www.reddit.com/r/androiddev/comments/nh8nxo/app_testing_automation/) -- [Emulator for Firebase](https://www.reddit.com/r/androiddev/comments/nh7qu7/emulator_for_firebase/) -- [Comparing the performance of two identical android apps](https://www.reddit.com/r/androiddev/comments/nh4tf4/comparing_the_performance_of_two_identical/) -- [Firebase + Spring + Tomcat for large files](https://www.reddit.com/r/androiddev/comments/nh4cbt/firebase_spring_tomcat_for_large_files/) -- [Beginners Guide to learn android dev step by step.](https://www.reddit.com/r/androiddev/comments/nh4b17/beginners_guide_to_learn_android_dev_step_by_step/) +- [Some questions about Play Billing](https://www.reddit.com/r/androiddev/comments/ni88uq/some_questions_about_play_billing/) +- [Releasing Open Source Lib via Jitpack vs MavenCentral](https://www.reddit.com/r/androiddev/comments/ni5n9g/releasing_open_source_lib_via_jitpack_vs/) +- [Anyone else experience completely broken deep links on Android 12?](https://www.reddit.com/r/androiddev/comments/ni33zr/anyone_else_experience_completely_broken_deep/) +- [Suggested alternative App Stores](https://www.reddit.com/r/androiddev/comments/ni1977/suggested_alternative_app_stores/) +- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/ni0xj2/is_there_any_appgame_that_you_found_that_uses/) +- [Invalid Warning? Updating an androidx lib to an alpha version.](https://www.reddit.com/r/androiddev/comments/nhzl66/invalid_warning_updating_an_androidx_lib_to_an/) +- [[Study] How you validate fields in MVVM architecture and notify the user?](https://www.reddit.com/r/androiddev/comments/nhzgk2/study_how_you_validate_fields_in_mvvm/) +- [Are there any launchers other than Taskbar which can be configured to force-open all apps in freeform mode?](https://www.reddit.com/r/androiddev/comments/nhyhtb/are_there_any_launchers_other_than_taskbar_which/) +- [Speed performance](https://www.reddit.com/r/androiddev/comments/nhy4fe/speed_performance/) +- [How to add new item in an existing navigation drawer activity?](https://www.reddit.com/r/androiddev/comments/nhy2m9/how_to_add_new_item_in_an_existing_navigation/) ### *InfoWorld posts* From df357f1c77e5c63d5ba2b0f316908f5a9e64a14c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 23 May 2021 00:48:45 +0000 Subject: [PATCH 0490/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f2949c0d49..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 48 + + 62 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..754afbbe4c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 23 Performance From 206c301e7091c7691844ac3e2dca7d8f1fc1ef7b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 23 May 2021 02:17:46 +0000 Subject: [PATCH 0491/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a3a5a94bb7..4cdb77777f 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Some questions about Play Billing](https://www.reddit.com/r/androiddev/comments/ni88uq/some_questions_about_play_billing/) -- [Releasing Open Source Lib via Jitpack vs MavenCentral](https://www.reddit.com/r/androiddev/comments/ni5n9g/releasing_open_source_lib_via_jitpack_vs/) -- [Anyone else experience completely broken deep links on Android 12?](https://www.reddit.com/r/androiddev/comments/ni33zr/anyone_else_experience_completely_broken_deep/) -- [Suggested alternative App Stores](https://www.reddit.com/r/androiddev/comments/ni1977/suggested_alternative_app_stores/) -- [Is there any app/game that you found that uses fast-follow asset delivery? Did you notice any app let's you play before it fully installs?](https://www.reddit.com/r/androiddev/comments/ni0xj2/is_there_any_appgame_that_you_found_that_uses/) -- [Invalid Warning? Updating an androidx lib to an alpha version.](https://www.reddit.com/r/androiddev/comments/nhzl66/invalid_warning_updating_an_androidx_lib_to_an/) -- [[Study] How you validate fields in MVVM architecture and notify the user?](https://www.reddit.com/r/androiddev/comments/nhzgk2/study_how_you_validate_fields_in_mvvm/) -- [Are there any launchers other than Taskbar which can be configured to force-open all apps in freeform mode?](https://www.reddit.com/r/androiddev/comments/nhyhtb/are_there_any_launchers_other_than_taskbar_which/) -- [Speed performance](https://www.reddit.com/r/androiddev/comments/nhy4fe/speed_performance/) -- [How to add new item in an existing navigation drawer activity?](https://www.reddit.com/r/androiddev/comments/nhy2m9/how_to_add_new_item_in_an_existing_navigation/) +- [Looking for AdMob alternatives](https://www.reddit.com/r/androiddev/comments/nix27l/looking_for_admob_alternatives/) +- [Marketing in Google Play](https://www.reddit.com/r/androiddev/comments/niv96g/marketing_in_google_play/) +- [Should I disable ads for users that live with me?](https://www.reddit.com/r/androiddev/comments/nircc3/should_i_disable_ads_for_users_that_live_with_me/) +- [I've build an app in Java and I need an IOs version of this, do I need to write it all over again?](https://www.reddit.com/r/androiddev/comments/nipv22/ive_build_an_app_in_java_and_i_need_an_ios/) +- [Android 12 features and which devices are compatible with Android 12.](https://www.reddit.com/r/androiddev/comments/nimvw1/android_12_features_and_which_devices_are/) +- [How is the Android Basics in Kotlin Course from Android? Anyone learn using this source?](https://www.reddit.com/r/androiddev/comments/nilw8x/how_is_the_android_basics_in_kotlin_course_from/) +- [App Feedback Thread - May 22, 2021](https://www.reddit.com/r/androiddev/comments/nii4lz/app_feedback_thread_may_22_2021/) +- [LocalBroadcastManager not working in Kotlin?](https://www.reddit.com/r/androiddev/comments/niggnq/localbroadcastmanager_not_working_in_kotlin/) +- [CoinCurrently - I´d love some more feedback on the new widgets](https://www.reddit.com/r/androiddev/comments/nigfuy/coincurrently_id_love_some_more_feedback_on_the/) +- [Any really free screenshot generator for the play store?](https://www.reddit.com/r/androiddev/comments/nielvq/any_really_free_screenshot_generator_for_the_play/) ### *InfoWorld posts* From a96aebb86ffe0a7ec87d29dee5d15173d6a0fa21 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 24 May 2021 00:46:00 +0000 Subject: [PATCH 0492/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..53d34f597e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 754afbbe4c..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 23 + + 30 Performance From 1e9fa3ed8f4bfae35f95324b0bc94a1b87853b1b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 24 May 2021 02:14:51 +0000 Subject: [PATCH 0493/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4cdb77777f..fe988c5573 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Looking for AdMob alternatives](https://www.reddit.com/r/androiddev/comments/nix27l/looking_for_admob_alternatives/) -- [Marketing in Google Play](https://www.reddit.com/r/androiddev/comments/niv96g/marketing_in_google_play/) -- [Should I disable ads for users that live with me?](https://www.reddit.com/r/androiddev/comments/nircc3/should_i_disable_ads_for_users_that_live_with_me/) -- [I've build an app in Java and I need an IOs version of this, do I need to write it all over again?](https://www.reddit.com/r/androiddev/comments/nipv22/ive_build_an_app_in_java_and_i_need_an_ios/) -- [Android 12 features and which devices are compatible with Android 12.](https://www.reddit.com/r/androiddev/comments/nimvw1/android_12_features_and_which_devices_are/) -- [How is the Android Basics in Kotlin Course from Android? Anyone learn using this source?](https://www.reddit.com/r/androiddev/comments/nilw8x/how_is_the_android_basics_in_kotlin_course_from/) -- [App Feedback Thread - May 22, 2021](https://www.reddit.com/r/androiddev/comments/nii4lz/app_feedback_thread_may_22_2021/) -- [LocalBroadcastManager not working in Kotlin?](https://www.reddit.com/r/androiddev/comments/niggnq/localbroadcastmanager_not_working_in_kotlin/) -- [CoinCurrently - I´d love some more feedback on the new widgets](https://www.reddit.com/r/androiddev/comments/nigfuy/coincurrently_id_love_some_more_feedback_on_the/) -- [Any really free screenshot generator for the play store?](https://www.reddit.com/r/androiddev/comments/nielvq/any_really_free_screenshot_generator_for_the_play/) +- [How to make a step counter with the Android Sensor.TYPE_ACCELEROMETER?](https://www.reddit.com/r/androiddev/comments/njkdfa/how_to_make_a_step_counter_with_the_android/) +- [I expect better from google. God forbid you have a postal code that starts with 0.](https://www.reddit.com/r/androiddev/comments/njixpt/i_expect_better_from_google_god_forbid_you_have_a/) +- [A schedule calendar implemented with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/njhvus/a_schedule_calendar_implemented_with_jetpack/) +- [Professional deformation and Compose](https://www.reddit.com/r/androiddev/comments/njfwuq/professional_deformation_and_compose/) +- [Can I submit an update, while the previous one still under review?](https://www.reddit.com/r/androiddev/comments/njejqu/can_i_submit_an_update_while_the_previous_one/) +- [Android Jobs Job Board maintained by Donn Felker](https://www.reddit.com/r/androiddev/comments/njcyz4/android_jobs_job_board_maintained_by_donn_felker/) +- [How can I do this? Server + android as front end?](https://www.reddit.com/r/androiddev/comments/njattf/how_can_i_do_this_server_android_as_front_end/) +- [What are some examples of unnecessarily making Android app development complex?](https://www.reddit.com/r/androiddev/comments/njaj3o/what_are_some_examples_of_unnecessarily_making/) +- [[AMA]In 2019 I made a vector design app for android and never really released it on the play store. I gained some skills during this which I never used again, so if anyone wants to know anything about such an app just leave a comment down below, and I will try to answer IF I CAN.](https://www.reddit.com/r/androiddev/comments/nj8ptc/amain_2019_i_made_a_vector_design_app_for_android/) +- [Just a vlog explaining how I built a Instagram clone sort of](https://www.reddit.com/r/androiddev/comments/nj8fzh/just_a_vlog_explaining_how_i_built_a_instagram/) ### *InfoWorld posts* From df186ed68c0ef4ccd95a55828a5000a8696ac0cd Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 25 May 2021 00:44:48 +0000 Subject: [PATCH 0494/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 53d34f597e..83ba8cacd8 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 62 Performance From 2d1b510d93ccafab3737f7309ea91a63a2461ce6 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 25 May 2021 02:16:35 +0000 Subject: [PATCH 0495/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fe988c5573..c95fba76e3 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to make a step counter with the Android Sensor.TYPE_ACCELEROMETER?](https://www.reddit.com/r/androiddev/comments/njkdfa/how_to_make_a_step_counter_with_the_android/) -- [I expect better from google. God forbid you have a postal code that starts with 0.](https://www.reddit.com/r/androiddev/comments/njixpt/i_expect_better_from_google_god_forbid_you_have_a/) -- [A schedule calendar implemented with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/njhvus/a_schedule_calendar_implemented_with_jetpack/) -- [Professional deformation and Compose](https://www.reddit.com/r/androiddev/comments/njfwuq/professional_deformation_and_compose/) -- [Can I submit an update, while the previous one still under review?](https://www.reddit.com/r/androiddev/comments/njejqu/can_i_submit_an_update_while_the_previous_one/) -- [Android Jobs Job Board maintained by Donn Felker](https://www.reddit.com/r/androiddev/comments/njcyz4/android_jobs_job_board_maintained_by_donn_felker/) -- [How can I do this? Server + android as front end?](https://www.reddit.com/r/androiddev/comments/njattf/how_can_i_do_this_server_android_as_front_end/) -- [What are some examples of unnecessarily making Android app development complex?](https://www.reddit.com/r/androiddev/comments/njaj3o/what_are_some_examples_of_unnecessarily_making/) -- [[AMA]In 2019 I made a vector design app for android and never really released it on the play store. I gained some skills during this which I never used again, so if anyone wants to know anything about such an app just leave a comment down below, and I will try to answer IF I CAN.](https://www.reddit.com/r/androiddev/comments/nj8ptc/amain_2019_i_made_a_vector_design_app_for_android/) -- [Just a vlog explaining how I built a Instagram clone sort of](https://www.reddit.com/r/androiddev/comments/nj8fzh/just_a_vlog_explaining_how_i_built_a_instagram/) +- [little off topic](https://www.reddit.com/r/androiddev/comments/nkbhfg/little_off_topic/) +- [Brave and Kiwi browser give this when rying to upload a video to bitchute...why is this happening? Thanks.](https://www.reddit.com/r/androiddev/comments/nkanhe/brave_and_kiwi_browser_give_this_when_rying_to/) +- [Is there a way I can skip these bluetooth popups and just pair immediately? One is from NFC to pair and other is right after](https://www.reddit.com/r/androiddev/comments/nk47u9/is_there_a_way_i_can_skip_these_bluetooth_popups/) +- [A historical introduction to the Compose reactive state model](https://www.reddit.com/r/androiddev/comments/nk3vai/a_historical_introduction_to_the_compose_reactive/) +- [Is StrictMode broken on Android?](https://www.reddit.com/r/androiddev/comments/nk2tjs/is_strictmode_broken_on_android/) +- [StateFlow & SharedFlow, What are the disadvantages ?](https://www.reddit.com/r/androiddev/comments/nk2mur/stateflow_sharedflow_what_are_the_disadvantages/) +- [Why did Android choose Java to be its language?](https://www.reddit.com/r/androiddev/comments/nk2f4a/why_did_android_choose_java_to_be_its_language/) +- [Creating A Google Play Developer account for a Company?](https://www.reddit.com/r/androiddev/comments/nk268t/creating_a_google_play_developer_account_for_a/) +- [Jake Wharton Debates in DevProdEng Showdown! S1E4: Android Architecture and Developer Productivity at Scale on Wednesday May 26th @ 10AM PST](https://www.reddit.com/r/androiddev/comments/nk1qj4/jake_wharton_debates_in_devprodeng_showdown_s1e4/) +- [Open source podcast app built with kotlin jetpack core libraries](https://www.reddit.com/r/androiddev/comments/nk0epz/open_source_podcast_app_built_with_kotlin_jetpack/) ### *InfoWorld posts* From e68c2226297755a37af7bd133c330c8ec17ff6e9 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 26 May 2021 00:55:05 +0000 Subject: [PATCH 0496/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 28 insertions(+), 233 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 83ba8cacd8..4949923277 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 62 + + 43 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 30 - Performance - - - - - 71 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From df51c03ea960d62261bedbd6a4f2f74257ecfe57 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 26 May 2021 02:43:23 +0000 Subject: [PATCH 0497/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c95fba76e3..d3846df4dd 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [little off topic](https://www.reddit.com/r/androiddev/comments/nkbhfg/little_off_topic/) -- [Brave and Kiwi browser give this when rying to upload a video to bitchute...why is this happening? Thanks.](https://www.reddit.com/r/androiddev/comments/nkanhe/brave_and_kiwi_browser_give_this_when_rying_to/) -- [Is there a way I can skip these bluetooth popups and just pair immediately? One is from NFC to pair and other is right after](https://www.reddit.com/r/androiddev/comments/nk47u9/is_there_a_way_i_can_skip_these_bluetooth_popups/) -- [A historical introduction to the Compose reactive state model](https://www.reddit.com/r/androiddev/comments/nk3vai/a_historical_introduction_to_the_compose_reactive/) -- [Is StrictMode broken on Android?](https://www.reddit.com/r/androiddev/comments/nk2tjs/is_strictmode_broken_on_android/) -- [StateFlow & SharedFlow, What are the disadvantages ?](https://www.reddit.com/r/androiddev/comments/nk2mur/stateflow_sharedflow_what_are_the_disadvantages/) -- [Why did Android choose Java to be its language?](https://www.reddit.com/r/androiddev/comments/nk2f4a/why_did_android_choose_java_to_be_its_language/) -- [Creating A Google Play Developer account for a Company?](https://www.reddit.com/r/androiddev/comments/nk268t/creating_a_google_play_developer_account_for_a/) -- [Jake Wharton Debates in DevProdEng Showdown! S1E4: Android Architecture and Developer Productivity at Scale on Wednesday May 26th @ 10AM PST](https://www.reddit.com/r/androiddev/comments/nk1qj4/jake_wharton_debates_in_devprodeng_showdown_s1e4/) -- [Open source podcast app built with kotlin jetpack core libraries](https://www.reddit.com/r/androiddev/comments/nk0epz/open_source_podcast_app_built_with_kotlin_jetpack/) +- [How does the Geocoder class in Android works?](https://www.reddit.com/r/androiddev/comments/nl5bs4/how_does_the_geocoder_class_in_android_works/) +- [Android Studio 4.2 Broken](https://www.reddit.com/r/androiddev/comments/nl4kua/android_studio_42_broken/) +- [Building Android Widgets from Scratch ( Learn 8 Widgets) - free course from udemy](https://www.reddit.com/r/androiddev/comments/nl4bny/building_android_widgets_from_scratch_learn_8/) +- [New Dangerous Permission from Android12!](https://www.reddit.com/r/androiddev/comments/nl1d0d/new_dangerous_permission_from_android12/) +- [Android Project picture sizes](https://www.reddit.com/r/androiddev/comments/nkzzpf/android_project_picture_sizes/) +- [How do Play Console reviews affect the update flow](https://www.reddit.com/r/androiddev/comments/nkzqbq/how_do_play_console_reviews_affect_the_update_flow/) +- [Hello fellow devs! Is there anyone who wants to help reverse engineering an apk to hack a DJI drone?](https://www.reddit.com/r/androiddev/comments/nky85m/hello_fellow_devs_is_there_anyone_who_wants_to/) +- [Database inspector force close app after update Android Studio to 4.2](https://www.reddit.com/r/androiddev/comments/nku2z0/database_inspector_force_close_app_after_update/) +- [Java vs Kotlin for Android Development in 2021](https://www.reddit.com/r/androiddev/comments/nkt17m/java_vs_kotlin_for_android_development_in_2021/) +- [App One-Off Promo Pricing](https://www.reddit.com/r/androiddev/comments/nks980/app_oneoff_promo_pricing/) ### *InfoWorld posts* From 83795cc6e9a9411340d84386b026b19006e34ade Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Wed, 26 May 2021 21:28:09 +0300 Subject: [PATCH 0498/2080] docs: updates on workflows Added information on documentation --- .dockerignore | 6 ++ .env | 4 ++ CHANGELOG.md | 2 +- .github/CONTRIBUTING.md => CONTRIBUTING.md | 0 Dockerfile | 80 ++++++++++++++++++++++ README.md | 72 +++++++++++-------- docker-compose.yml | 48 +++++++++++++ package.json | 1 + scripts/build-docs.sh | 4 +- 9 files changed, 187 insertions(+), 30 deletions(-) create mode 100644 .dockerignore create mode 100644 .env rename .github/CONTRIBUTING.md => CONTRIBUTING.md (100%) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..687544c95b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +/.dependabot +/.github +/.husky +/.idea +/node_modules +npm-debug.log diff --git a/.env b/.env new file mode 100644 index 0000000000..eafa9168b7 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +##################################################### +###### General settings +##################################################### +APP_HOSTNAME=android-patterns diff --git a/CHANGELOG.md b/CHANGELOG.md index 19a31bc422..a63a53fbf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-04-27) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-05-26) diff --git a/.github/CONTRIBUTING.md b/CONTRIBUTING.md similarity index 100% rename from .github/CONTRIBUTING.md rename to CONTRIBUTING.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..57d854c316 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,80 @@ +## Setting image source variables +ARG IMAGE_SOURCE=node +ARG IMAGE_TAG=12-buster + +## Setting base image +FROM ${IMAGE_SOURCE}:${IMAGE_TAG} + +MAINTAINER Alexander Rogalskiy + +## Setting argument variables +ARG PYTHON_VERSION=3.8.2 +ARG LC_ALL="en_US.UTF-8" +ARG VERSION="0.0.0-dev" +ARG BUILD_DATE="$(git rev-parse --short HEAD)" +ARG VCS_REF="$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")" + +ARG APP_DIR="/usr/src/app" +ARG DATA_DIR="/usr/src/data" + +## Setting metadata labels +LABEL "com.github.repository"="https://github.com/AlexRogalskiy/android-patterns" +LABEL "com.github.homepage"="https://github.com/AlexRogalskiy/android-patterns" +LABEL "com.github.maintainer"="Sensiblemetrics, Inc. (https://sensiblemetrics.io)" + +LABEL "com.github.version"="$VERSION" +LABEL "com.github.build-date"="$BUILD_DATE" +LABEL "com.github.vcs-ref"="$VCS_REF" + +LABEL "com.github.name"="android-patterns" +LABEL "com.github.description"="Android Design Patterns" + +## Setting environment variables +ENV APP_DIR $APP_DIR +ENV DATA_DIR $DATA_DIR +ENV LC_ALL $LC_ALL +ENV LANG $LC_ALL +ENV PYTHON_VERSION $PYTHON_VERSION + +## Mounting volumes +VOLUME ["$APP_DIR"] + +## Creating work directory +WORKDIR $APP_DIR + +# (workaround) Install cookiecutter and mkdocs to avoid the need to run docker in docker +RUN cd /tmp && curl -O https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz && \ + tar -xvf Python-${PYTHON_VERSION}.tar.xz && \ + cd Python-${PYTHON_VERSION} && \ + ./configure --enable-optimizations && \ + make -j 4 && \ + make altinstall + +RUN apt update + +RUN pip3.8 install --upgrade pip + +RUN pip3.8 install mkdocs --no-cache-dir +RUN pip3.8 install mkdocs-material --no-cache-dir +RUN pip3.8 install markdown-include --no-cache-dir +RUN pip3.8 install mkdocs-techdocs-core --no-cache-dir +RUN pip3.8 install click-man --no-cache-dir +## click-man --target path/to/man/pages mkdocs + +RUN pip3.8 install cookiecutter --no-cache-dir && \ + apt remove -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev g++ python-pip python-dev && \ + rm -rf /var/cache/apt/* /tmp/Python-${PYTHON_VERSION} + +COPY . ./ + +## Install dependencies +RUN npm install + +## Run format checking & linting +RUN npm run all + +## Expose port +EXPOSE 8000 + +## Running package bundle +ENTRYPOINT [ "sh", "-c", "mkdocs serve --verbose --dirtyreload" ] diff --git a/README.md b/README.md index c95fba76e3..070e141c2d 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -198,10 +200,8 @@ with community support please contact with us if you have some question or propo [![Contributors Display](https://badges.pufler.dev/contributors/AlexRogalskiy/android-patterns?size=50\&padding=5\&bots=true)](https://badges.pufler.dev) -Please read -[CONTRIBUTING.md](https://github.com/AlexRogalskiy/android-patterns/blob/master/.github/CONTRIBUTING.md) -for details on our code of conduct, and the process for submitting pull requests to us -([emoji key](https://allcontributors.org/docs/en/emoji-key)). +Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests +to us ([emoji key](https://allcontributors.org/docs/en/emoji-key)). This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome! @@ -250,6 +250,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [little off topic](https://www.reddit.com/r/androiddev/comments/nkbhfg/little_off_topic/) - [Brave and Kiwi browser give this when rying to upload a video to bitchute...why is this happening? Thanks.](https://www.reddit.com/r/androiddev/comments/nkanhe/brave_and_kiwi_browser_give_this_when_rying_to/) - [Is there a way I can skip these bluetooth popups and just pair immediately? One is from NFC to pair and other is right after](https://www.reddit.com/r/androiddev/comments/nk47u9/is_there_a_way_i_can_skip_these_bluetooth_popups/) @@ -260,11 +261,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Creating A Google Play Developer account for a Company?](https://www.reddit.com/r/androiddev/comments/nk268t/creating_a_google_play_developer_account_for_a/) - [Jake Wharton Debates in DevProdEng Showdown! S1E4: Android Architecture and Developer Productivity at Scale on Wednesday May 26th @ 10AM PST](https://www.reddit.com/r/androiddev/comments/nk1qj4/jake_wharton_debates_in_devprodeng_showdown_s1e4/) - [Open source podcast app built with kotlin jetpack core libraries](https://www.reddit.com/r/androiddev/comments/nk0epz/open_source_podcast_app_built_with_kotlin_jetpack/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -275,21 +278,25 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* + - [Android SPKI Pinning with TrustKit](https://developers.redhat.com/blog/2017/10/26/android-spki-pinning-trustkit/) - [Server-side Kotlin with Eclipse Vert.x at JavaOne](https://developers.redhat.com/blog/2017/10/13/server-side-kotlin-eclipse-vert-x-javaone/) - [Testing your Android App’s UI with Espresso](https://developers.redhat.com/blog/2017/07/13/testing-your-android-apps-ui-with-espresso/) - [Installing Linux on an Android Phone](https://developers.redhat.com/blog/2017/03/16/installing-linux-on-an-android-phone/) - [A step-by-step tutorial for continuous integration with Jenkins on a Red Hat Mobile Native Android application: Part 2](https://developers.redhat.com/blog/2016/08/11/a-step-by-step-tutorial-for-continuous-integration-with-jenkins-on-a-red-hat-mobile-native-android-application-part-2/) + ### *Android Authority posts* + - [15 best Android emulators for PC and Mac of 2021](https://www.androidauthority.com/best-android-emulators-for-pc-655308/) - [Google I/O 2021: Here’s what to expect](https://www.androidauthority.com/google-io/) - [How to make a game in Python: An introduction to Pygame](https://www.androidauthority.com/how-to-make-a-game-in-python-1136589/) @@ -300,11 +307,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [How to define a function in Python](https://www.androidauthority.com/how-to-define-a-function-in-python-1141219/) - [Python beginner’s guide – Everything you need to know to get started](https://www.androidauthority.com/learn-python-beginner-1142688/) - [Kotlin tutorial for Android for beginners: Build a simple quiz](https://www.androidauthority.com/kotlin-tutorial-1134289/) + ### *Android Arsenal posts* + - [locus](http://android-arsenal.com/details/1/8244) - [SSImagePicker](http://android-arsenal.com/details/1/8243) - [Comparing Performance Bar](http://android-arsenal.com/details/1/8242) @@ -315,11 +324,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [MaterialPreferences](http://android-arsenal.com/details/1/8237) - [MaterialDialogFragments](http://android-arsenal.com/details/1/8236) - [Android BLE Made Easy](http://android-arsenal.com/details/1/8235) + ### *Medium posts* + - [Every student needs to install this FREE android app NOW!](https://lydia22.medium.com/every-student-needs-to-install-this-free-android-app-now-563fed9189d1?source=rss------android-5) - [Digital Signature Android Demo.](https://info-anikdey003.medium.com/digital-signature-android-demo-a38f1342b880?source=rss------android-5) - [Augmented Reality(AR) in Android](https://mothegoat.medium.com/augmented-reality-ar-in-android-1af62f6a207e?source=rss------android-5) @@ -330,11 +341,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Un’organizzazione che vuole aiutare e dare privilegi a chi ha meno privilegi e anche aumentare il…](https://wemovekel01.medium.com/unorganizzazione-che-vuole-aiutare-e-dare-privilegi-a-chi-ha-meno-privilegi-e-anche-aumentare-il-13ec5ea12f09?source=rss------android-5) - [Getting started: Android CameraX](https://thewerner.medium.com/getting-started-android-camerax-a84e138e2c00?source=rss------android-5) - [Maintain View from Resizing while use `ADJUST_RESIZE`](https://mahmoud-mabrok.medium.com/maintain-view-from-resizing-while-use-adjust-resize-915676c1c5e5?source=rss------android-5) + ### *Gizmodo posts* + - [The Asus Zenfone 8 Is an Affordable, Compelling Option If You Love Small Phones](https://gizmodo.com/the-asus-zenfone-8-is-an-affordable-compelling-option-1846854210) - [My Kingdom for an Android Tablet That Doubles As a Portable Monitor](https://gizmodo.com/my-kingdom-for-an-android-tablet-that-doubles-as-a-port-1846850182) - [Google, You Should Already Know How People Feel About Wear OS](https://gizmodo.com/google-you-should-already-know-how-people-feel-about-w-1846866808) @@ -345,11 +358,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Is Bringing a Google TV-Like Experience to Android Tablets](https://gizmodo.com/google-is-bringing-a-google-tv-like-experience-to-andro-1846824566) - [Google May Have Inadvertently Just Spilled the Beans About the Pixel Buds A on Twitter](https://gizmodo.com/google-may-have-inadvertently-just-spilled-the-beans-ab-1846823832) - [60% of School Apps Are Sharing Your Kids' Data With Third Parties](https://gizmodo.com/60-of-school-apps-are-sharing-your-kids-data-with-thir-1846819024) + ### *Mobile Dev Memo posts* + - [Apple robbed the mob’s bank](https://mobiledevmemo.com/apple-robbed-the-mobs-bank/) - [iOS 14: How to prevail in Q2 2021](https://mobiledevmemo.com/ios-14-prevailing-in-q2-2021/) - [“Mobile advertising spend can’t just disappear”](https://mobiledevmemo.com/mobile-advertising-spend-cant-just-disappear/) @@ -360,16 +375,19 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Unpacking Tim Cook’s comments about ATT](https://mobiledevmemo.com/unpacking-tim-cooks-comments-about-att/) - [What is differential privacy in digital advertising?](https://mobiledevmemo.com/what-is-differential-privacy/) - [Dear App Developers: fingerprinting is not a viable workaround to ATT](https://mobiledevmemo.com/dear-app-developers-fingerprinting-is-not-a-viable-workaround-to-att/) + ### *Infinum posts* + - [Android Studio 4.2 is now available](https://androidsweets.ongoodbits.com/android-studio-4-2-is-now-available) - [Be careful with you Google ads!](https://androidsweets.ongoodbits.com/be-careful-with-you-google-ads) - [How to have Modular Navigation with Jetpack Compose?](https://androidsweets.ongoodbits.com/how-to-have-modular-navigation-with-jetpack-compose) - [How Dalvik and ART work?](https://androidsweets.ongoodbits.com/how-dalvik-and-art-work) - [Tools to help developers provide a positive user experience](https://androidsweets.ongoodbits.com/tools-to-help-developers-provide-a-positive-user-experience) + *** diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..3374d4aaae --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +version: '3.9' + +services: + app: + container_name: android-patterns + hostname: '$APP_HOSTNAME' + build: + context: './' + dockerfile: Dockerfile + restart: always + volumes: + - type: volume + source: appvolume + target: /usr/src/app + volume: + nocopy: true + - type: bind + source: ./data + target: /usr/src/data + healthcheck: + test: ['CMD-SHELL', 'nc', '-vz', 'localhost', '8000'] + interval: 3s + retries: 15 + start_period: 30s + networks: + - default + ports: + - '${IP_ADDRESS:-127.0.0.1}:${APP_SERVER_PORT:-8000}:8000' + deploy: + mode: global + logging: + options: + max-size: '100m' + max-file: '10' + +networks: + default: + driver: bridge + driver_opts: + com.docker.network.driver.mtu: 1450 + +volumes: + appvolume: + driver: local + driver_opts: + o: bind + type: none + device: ./ diff --git a/package.json b/package.json index 31f005c329..b9be424b52 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "license": "license-checker --json > licenses.json", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "markdown": "markdown-link-check ./README.md ./SECURITY.md", + "build-image": "docker build -f Dockerfile --tag android-patterns .", "lint:all": "npm run lint:md && npm run lint:json", "format:all": "npm run format && npm run format:md", "check:all": "npm run format:check", diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index a9d0f48f55..fc6b7962c3 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -6,8 +6,8 @@ set -o pipefail set -o nounset ## Change working directory -base_dir=$(dirname $0)/.. -cd $base_dir +BASE_DIR=$(dirname $0)/.. +cd $BASE_DIR ## Install pip module wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get-pip.py From 4b4541d1cd278f9d9534be942151b4c9d12b59be Mon Sep 17 00:00:00 2001 From: "ADMSK\\AVROGAL1" Date: Wed, 26 May 2021 21:31:15 +0300 Subject: [PATCH 0499/2080] docs: updates on workflows Added information on documentation --- CONTRIBUTING.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b789a1767a..5950fa9188 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,21 +32,21 @@ orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ### Our Responsibilities @@ -73,7 +73,7 @@ further defined and clarified by project maintainers. ### Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [INSERT EMAIL ADDRESS]. All +reported by contacting the project team at \[INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. @@ -89,4 +89,5 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], versi available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org + [version]: http://contributor-covenant.org/version/1/4/ From afa19cfd9c1efed037275e3a952c7bc4d31b0a34 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Wed, 26 May 2021 18:40:50 +0000 Subject: [PATCH 0500/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 8bd6b6cca4..5f828791f6 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From 97f009d16c8b3056a7590315ebbf52313002a11b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 27 May 2021 00:57:58 +0000 Subject: [PATCH 0501/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 233 insertions(+), 28 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 4949923277..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 43 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 30 + Performance + + + + + 71 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 139debda59d5dd134c840242295dfc93d45d88ce Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 27 May 2021 03:03:53 +0000 Subject: [PATCH 0502/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5f828791f6..78e59c8217 100644 --- a/README.md +++ b/README.md @@ -248,18 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [How does the Geocoder class in Android works?](https://www.reddit.com/r/androiddev/comments/nl5bs4/how_does_the_geocoder_class_in_android_works/) -- [Android Studio 4.2 Broken](https://www.reddit.com/r/androiddev/comments/nl4kua/android_studio\_42\_broken/) -- [Building Android Widgets from Scratch ( Learn 8 Widgets) - free course from udemy](https://www.reddit.com/r/androiddev/comments/nl4bny/building_android_widgets_from_scratch_learn\_8/) -- [New Dangerous Permission from Android12!](https://www.reddit.com/r/androiddev/comments/nl1d0d/new_dangerous_permission_from_android12/) -- [Android Project picture sizes](https://www.reddit.com/r/androiddev/comments/nkzzpf/android_project_picture_sizes/) -- [How do Play Console reviews affect the update flow](https://www.reddit.com/r/androiddev/comments/nkzqbq/how_do_play_console_reviews_affect_the_update_flow/) -- [Hello fellow devs! Is there anyone who wants to help reverse engineering an apk to hack a DJI drone?](https://www.reddit.com/r/androiddev/comments/nky85m/hello_fellow_devs_is_there_anyone_who_wants_to/) -- [Database inspector force close app after update Android Studio to 4.2](https://www.reddit.com/r/androiddev/comments/nku2z0/database_inspector_force_close_app_after_update/) -- [Java vs Kotlin for Android Development in 2021](https://www.reddit.com/r/androiddev/comments/nkt17m/java_vs_kotlin_for_android_development_in\_2021/) -- [App One-Off Promo Pricing](https://www.reddit.com/r/androiddev/comments/nks980/app_oneoff_promo_pricing/) - +- [Mobile Developers Cafe - Weekly Issue #26 is out now with curated Android Developer blogs around the world. Read now for free.](https://www.reddit.com/r/androiddev/comments/nly53a/mobile_developers_cafe_weekly_issue_26_is_out_now/) +- [Issues with background services on Cat S42](https://www.reddit.com/r/androiddev/comments/nlt9n1/issues_with_background_services_on_cat_s42/) +- [Android Library for easing Slider insertion to your apps with support for Images with a beautiful sample app.](https://www.reddit.com/r/androiddev/comments/nlso6y/android_library_for_easing_slider_insertion_to/) +- [Android Library for easing up the onboarding process to apps with a beautiful sample app.](https://www.reddit.com/r/androiddev/comments/nls1ym/android_library_for_easing_up_the_onboarding/) +- [What kills my store conversion rate?](https://www.reddit.com/r/androiddev/comments/nlpvja/what_kills_my_store_conversion_rate/) +- [Android Studio Bumblebee Canary 1 available](https://www.reddit.com/r/androiddev/comments/nlncx9/android_studio_bumblebee_canary_1_available/) +- [A primitive implementation of a line chart in Jetpack Compose, featuring animations and popups when hovering.](https://www.reddit.com/r/androiddev/comments/nlmbpi/a_primitive_implementation_of_a_line_chart_in/) +- [Best practices for subscriptions in Play Billing](https://www.reddit.com/r/androiddev/comments/nlj70s/best_practices_for_subscriptions_in_play_billing/) +- [ANDROID : IMPLICIT INTENT](https://www.reddit.com/r/androiddev/comments/nliygh/android_implicit_intent/) +- [What are some of the best mobile testing tools for UI testing of Android apps?](https://www.reddit.com/r/androiddev/comments/nlgmh3/what_are_some_of_the_best_mobile_testing_tools/) ### *InfoWorld posts* From ffd65c6d98ae2441222cd8ce029266c66d09de8e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 27 May 2021 03:03:56 +0000 Subject: [PATCH 0503/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 78e59c8217..37403da565 100644 --- a/README.md +++ b/README.md @@ -263,7 +263,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -274,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From 27976d45499d012eaa306260f7655d4899dd637b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 28 May 2021 01:04:19 +0000 Subject: [PATCH 0504/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index b4ea1a4f39..f12ea38eb6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..740f93a8c0 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 21 Performance From 910e4d2a7a0cb7850082deecf97149e027b391e3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 28 May 2021 03:23:57 +0000 Subject: [PATCH 0505/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 37403da565..1dbdcccb12 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Mobile Developers Cafe - Weekly Issue #26 is out now with curated Android Developer blogs around the world. Read now for free.](https://www.reddit.com/r/androiddev/comments/nly53a/mobile_developers_cafe_weekly_issue_26_is_out_now/) -- [Issues with background services on Cat S42](https://www.reddit.com/r/androiddev/comments/nlt9n1/issues_with_background_services_on_cat_s42/) -- [Android Library for easing Slider insertion to your apps with support for Images with a beautiful sample app.](https://www.reddit.com/r/androiddev/comments/nlso6y/android_library_for_easing_slider_insertion_to/) -- [Android Library for easing up the onboarding process to apps with a beautiful sample app.](https://www.reddit.com/r/androiddev/comments/nls1ym/android_library_for_easing_up_the_onboarding/) -- [What kills my store conversion rate?](https://www.reddit.com/r/androiddev/comments/nlpvja/what_kills_my_store_conversion_rate/) -- [Android Studio Bumblebee Canary 1 available](https://www.reddit.com/r/androiddev/comments/nlncx9/android_studio_bumblebee_canary_1_available/) -- [A primitive implementation of a line chart in Jetpack Compose, featuring animations and popups when hovering.](https://www.reddit.com/r/androiddev/comments/nlmbpi/a_primitive_implementation_of_a_line_chart_in/) -- [Best practices for subscriptions in Play Billing](https://www.reddit.com/r/androiddev/comments/nlj70s/best_practices_for_subscriptions_in_play_billing/) -- [ANDROID : IMPLICIT INTENT](https://www.reddit.com/r/androiddev/comments/nliygh/android_implicit_intent/) -- [What are some of the best mobile testing tools for UI testing of Android apps?](https://www.reddit.com/r/androiddev/comments/nlgmh3/what_are_some_of_the_best_mobile_testing_tools/) +- [Alien Space invaders 👾👾👾 in Jetpack Compose 🚀](https://www.reddit.com/r/androiddev/comments/nmhsov/alien_space_invaders_in_jetpack_compose/) +- [Quick question, going from closed testing to production in Google Play Store](https://www.reddit.com/r/androiddev/comments/nmhpkx/quick_question_going_from_closed_testing_to/) +- [The Effect of a Lunar Eclipse on Install Rates (of a Moon position app)](https://www.reddit.com/r/androiddev/comments/nmgnha/the_effect_of_a_lunar_eclipse_on_install_rates_of/) +- [admob ad serving is limited](https://www.reddit.com/r/androiddev/comments/nmg6dn/admob_ad_serving_is_limited/) +- [Users don't know Google Play Store email when getting new device](https://www.reddit.com/r/androiddev/comments/nmf3v9/users_dont_know_google_play_store_email_when/) +- [Meeting reminder for Zoom meetings](https://www.reddit.com/r/androiddev/comments/nmbdcr/meeting_reminder_for_zoom_meetings/) +- [What's play-bd@google.com? Google play Bangladesh? Or Business development?](https://www.reddit.com/r/androiddev/comments/nm7ql4/whats_playbdgooglecom_google_play_bangladesh_or/) +- [Tech stack recommendations and resources](https://www.reddit.com/r/androiddev/comments/nm7ehs/tech_stack_recommendations_and_resources/) +- [Use Conductor with Hilt! conductor-hilt extension](https://www.reddit.com/r/androiddev/comments/nm6zkn/use_conductor_with_hilt_conductorhilt_extension/) +- [I love native but what are your thoughts on other developing options like React Native, Flutter, even Kotlin?](https://www.reddit.com/r/androiddev/comments/nm6v9h/i_love_native_but_what_are_your_thoughts_on_other/) ### *InfoWorld posts* From 5148372bbc2b875229ca1c9324f27008fddd705d Mon Sep 17 00:00:00 2001 From: Alexander Rogalsky Date: Fri, 28 May 2021 09:14:27 +0300 Subject: [PATCH 0506/2080] docs: updates on documents Added information on project structure --- .github/workflows/link-check-all.yml | 22 +++++++++++ .github/workflows/link-check-deploy.yml | 51 +++++++++++++++++++++++++ .gitignore | 1 + config/config.yml | 15 ++++++++ config/excluded-files.yml | 4 ++ config/excluded-links.yml | 19 +++++++++ package.json | 11 +++++- 7 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/link-check-all.yml create mode 100644 .github/workflows/link-check-deploy.yml create mode 100644 config/config.yml create mode 100644 config/excluded-files.yml create mode 100644 config/excluded-links.yml diff --git a/.github/workflows/link-check-all.yml b/.github/workflows/link-check-all.yml new file mode 100644 index 0000000000..2e447ee83c --- /dev/null +++ b/.github/workflows/link-check-all.yml @@ -0,0 +1,22 @@ +name: Check all links in the repository + +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * *' + +jobs: + run: + name: Link Check All + runs-on: ubuntu-latest + env: + NODE_OPTIONS: '--max-http-header-size=65536' + + steps: + - uses: actions/checkout@v2 + + - name: Run Link Check + uses: 'iterative/link-check.action@v0.7' + with: + configFile: './config/config.yml' + output: consoleLog diff --git a/.github/workflows/link-check-deploy.yml b/.github/workflows/link-check-deploy.yml new file mode 100644 index 0000000000..aa1d42c6aa --- /dev/null +++ b/.github/workflows/link-check-deploy.yml @@ -0,0 +1,51 @@ +name: Check new links against deployment + +# This workflow "triggers" and skips on deployment because GitHub Actions / +# Checks refuses to show the check on deployment_status +on: + - deployment + - deployment_status + +jobs: + run: + name: Initialize + runs-on: ubuntu-latest + if: github.event.deployment.ref != 'master' && github.event.deployment_status.state == 'success' + + steps: + - uses: actions/checkout@v2 + + - id: build_check + uses: LouisBrunner/checks-action@v1.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: Report + status: queued + + - name: Run Link Check + id: check + uses: 'iterative/link-check.action@v0.7' + with: + diff: true + configFile: './config/config.yml' + rootURL: '${{ github.event.deployment.payload.web_url }}' + output: checksAction + + - uses: LouisBrunner/checks-action@v1.0.0 + if: ${{ success() }} + with: + token: ${{ secrets.GITHUB_TOKEN }} + check_id: ${{ steps.build_check.outputs.check_id }} + status: completed + conclusion: ${{ steps.check.outputs.conclusion }} + output: ${{ steps.check.outputs.output }} + + - uses: LouisBrunner/checks-action@v1.0.0 + if: ${{ failure() }} + with: + token: ${{ secrets.GITHUB_TOKEN }} + check_id: ${{ steps.build_check.outputs.check_id }} + status: completed + conclusion: failure + output: >- + {"summary": "The Link Check script had an error!"} diff --git a/.gitignore b/.gitignore index 8123371e16..7db57f06df 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ lerna-debug.log* # BlueJ files *.ctxt +*.iml # Cache files .npm diff --git a/config/config.yml b/config/config.yml new file mode 100644 index 0000000000..2c145c62dc --- /dev/null +++ b/config/config.yml @@ -0,0 +1,15 @@ +rootURL: https://github.com/AlexRogalskiy/android-patterns + +fileIncludePatterns: '{.github,content,src}/**/*!(.test).{css,js,jsx,md,tsx,ts,json}' + +fileExcludePatternFile: ./config/excluded-files.yml +linkExcludePatternFile: ./config/excluded-links.yml + +linkOptions: + '*.wikipedia.org': + minTime: 2000 + maxConcurrent: 1 + + '(*.)?github.com': + minTime: 1000 + maxConcurrent: 1 diff --git a/config/excluded-files.yml b/config/excluded-files.yml new file mode 100644 index 0000000000..eb065074ae --- /dev/null +++ b/config/excluded-files.yml @@ -0,0 +1,4 @@ +- 'src/consts.js' +- '**/*.test.js' +- 'src/server/**/*' +- '.github/workflows/**/*' diff --git a/config/excluded-links.yml b/config/excluded-links.yml new file mode 100644 index 0000000000..997bcb42be --- /dev/null +++ b/config/excluded-links.yml @@ -0,0 +1,19 @@ +- 'http://localhost:8000**' +- 'http://millionsongdataset.com/pages/getting-dataset/#subset' +- 'https://marketplace.visualstudio.com/items?itemName=stkb.rewrap' +- 'https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml' +- 'https://remote.dvc.org/get-started' +- 'https://sweedom.us10.list-manage.com/subscribe/post?u=a08bf93caae4063c4e6a351f6&id=24c0ecc49a' +- 'https://www.meetup.com/San-Francisco-Machine-Learning-Meetup/events/264846847/' +- 'https://www.reddit.com/r/MachineLearning/comments/bx0apm/d_how_do_you_manage_your_machine_learning/' +- 'https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations-ebook/dp/B01M9ASFQ3' +- '**linkedin.com/in/**' +- '**linkedin.com/company/**' +- 'link' +- '/img/.gif' +- '/uploads/images/2020-02-10/image.png' +- 'https://portal.aws.amazon.com/gp/aws/developer/registration/index.html' +- 'https://github.com/iterative/dvc/releases/download/' +- 'https://www.kaggle.com/kurianbenoy/introduction-to-data-version-control-dvc' +- 'https://timheuer.com/blog/skipping-ci-github-actions-workflows/' +- 'https://www.zazzle.com/t_shirt-235920696568133954' diff --git a/package.json b/package.json index b9be424b52..b813df7c03 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,10 @@ "license": "license-checker --json > licenses.json", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "markdown": "markdown-link-check ./README.md ./SECURITY.md", + "link-check": "repo-link-check -c config/config.yml -s filesystem -u", + "link-check-diff": "repo-link-check -c config/config.yml", + "link-check-dev-server": "repo-link-check -c config/config.yml -r http://localhost:3000", + "link-check-exclude": "repo-link-check -c config/config.yml -s filesystem -u only", "build-image": "docker build -f Dockerfile --tag android-patterns .", "lint:all": "npm run lint:md && npm run lint:json", "format:all": "npm run format && npm run format:md", @@ -36,7 +40,8 @@ "remark-lint-code-block-style": "^2.0.1", "remark-lint-ordered-list-marker-value": "^2.0.1", "remark-preset-davidtheclark": "^0.12.0", - "remark-validate-links": "^10.0.2" + "remark-validate-links": "^10.0.2", + "repo-link-check": "^0.7.1" }, "repository": { "type": "git", @@ -48,7 +53,9 @@ "engines": { "node": ">= 12.x" }, - "keywords": ["java patterns"], + "keywords": [ + "android patterns" + ], "maintainers": [ { "name": "Alexander Rogalskiy", From 32f9faf5ada77c8b31fbcc64654b28e80b6e741c Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 28 May 2021 06:15:22 +0000 Subject: [PATCH 0507/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a63a53fbf4..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-05-26) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 347c3b8c0899eaa11a0a22860825e68c27d992c8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 29 May 2021 01:16:25 +0000 Subject: [PATCH 0508/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f12ea38eb6..b4ea1a4f39 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 740f93a8c0..a1bf33fdb4 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 21 + + 29 Performance From b3888ffeef62e12202d7b43ba6000c4d142a5c2f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 29 May 2021 03:47:46 +0000 Subject: [PATCH 0509/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1dbdcccb12..7942ef8ceb 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Alien Space invaders 👾👾👾 in Jetpack Compose 🚀](https://www.reddit.com/r/androiddev/comments/nmhsov/alien_space_invaders_in_jetpack_compose/) -- [Quick question, going from closed testing to production in Google Play Store](https://www.reddit.com/r/androiddev/comments/nmhpkx/quick_question_going_from_closed_testing_to/) -- [The Effect of a Lunar Eclipse on Install Rates (of a Moon position app)](https://www.reddit.com/r/androiddev/comments/nmgnha/the_effect_of_a_lunar_eclipse_on_install_rates_of/) -- [admob ad serving is limited](https://www.reddit.com/r/androiddev/comments/nmg6dn/admob_ad_serving_is_limited/) -- [Users don't know Google Play Store email when getting new device](https://www.reddit.com/r/androiddev/comments/nmf3v9/users_dont_know_google_play_store_email_when/) -- [Meeting reminder for Zoom meetings](https://www.reddit.com/r/androiddev/comments/nmbdcr/meeting_reminder_for_zoom_meetings/) -- [What's play-bd@google.com? Google play Bangladesh? Or Business development?](https://www.reddit.com/r/androiddev/comments/nm7ql4/whats_playbdgooglecom_google_play_bangladesh_or/) -- [Tech stack recommendations and resources](https://www.reddit.com/r/androiddev/comments/nm7ehs/tech_stack_recommendations_and_resources/) -- [Use Conductor with Hilt! conductor-hilt extension](https://www.reddit.com/r/androiddev/comments/nm6zkn/use_conductor_with_hilt_conductorhilt_extension/) -- [I love native but what are your thoughts on other developing options like React Native, Flutter, even Kotlin?](https://www.reddit.com/r/androiddev/comments/nm6v9h/i_love_native_but_what_are_your_thoughts_on_other/) +- [How to programmatically identify whether a device supports seperate volume levels for ringtones and notifications?](https://www.reddit.com/r/androiddev/comments/nnegpp/how_to_programmatically_identify_whether_a_device/) +- [How to make an English to Tamil Transliteration EditText in Android](https://www.reddit.com/r/androiddev/comments/nne34c/how_to_make_an_english_to_tamil_transliteration/) +- [How do I fork a android app on github?](https://www.reddit.com/r/androiddev/comments/nnd6io/how_do_i_fork_a_android_app_on_github/) +- [How do I build a CryFS encrypted file system app?](https://www.reddit.com/r/androiddev/comments/nn98r9/how_do_i_build_a_cryfs_encrypted_file_system_app/) +- [MutableSharedFlow is kind of complicated](https://www.reddit.com/r/androiddev/comments/nn6t21/mutablesharedflow_is_kind_of_complicated/) +- [Category rankings are missing on play store. Is permanent or some kind of glitch?](https://www.reddit.com/r/androiddev/comments/nn5ly3/category_rankings_are_missing_on_play_store_is/) +- [How do I restore WebView contents after my Activity restarts?](https://www.reddit.com/r/androiddev/comments/nn4v84/how_do_i_restore_webview_contents_after_my/) +- [[HELP] Guidance developing a simple app for Covid19 volunteers.](https://www.reddit.com/r/androiddev/comments/nn3ey3/help_guidance_developing_a_simple_app_for_covid19/) +- [How have you utilized Rxjava2 Subjects in your Android production apps?](https://www.reddit.com/r/androiddev/comments/nn37z3/how_have_you_utilized_rxjava2_subjects_in_your/) +- [Suggestions for any YT channels that teach through mini-projects?](https://www.reddit.com/r/androiddev/comments/nn2ikd/suggestions_for_any_yt_channels_that_teach/) ### *InfoWorld posts* From 1b8bb85a69286aa828903ee406648e02ca017b93 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 30 May 2021 01:25:19 +0000 Subject: [PATCH 0510/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index b4ea1a4f39..f4440b6d57 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 64 Performance From efb9037c868fb0463dcdc7b6ab896ca20e2dabd0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 30 May 2021 04:01:44 +0000 Subject: [PATCH 0511/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7942ef8ceb..d40a3324db 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to programmatically identify whether a device supports seperate volume levels for ringtones and notifications?](https://www.reddit.com/r/androiddev/comments/nnegpp/how_to_programmatically_identify_whether_a_device/) -- [How to make an English to Tamil Transliteration EditText in Android](https://www.reddit.com/r/androiddev/comments/nne34c/how_to_make_an_english_to_tamil_transliteration/) -- [How do I fork a android app on github?](https://www.reddit.com/r/androiddev/comments/nnd6io/how_do_i_fork_a_android_app_on_github/) -- [How do I build a CryFS encrypted file system app?](https://www.reddit.com/r/androiddev/comments/nn98r9/how_do_i_build_a_cryfs_encrypted_file_system_app/) -- [MutableSharedFlow is kind of complicated](https://www.reddit.com/r/androiddev/comments/nn6t21/mutablesharedflow_is_kind_of_complicated/) -- [Category rankings are missing on play store. Is permanent or some kind of glitch?](https://www.reddit.com/r/androiddev/comments/nn5ly3/category_rankings_are_missing_on_play_store_is/) -- [How do I restore WebView contents after my Activity restarts?](https://www.reddit.com/r/androiddev/comments/nn4v84/how_do_i_restore_webview_contents_after_my/) -- [[HELP] Guidance developing a simple app for Covid19 volunteers.](https://www.reddit.com/r/androiddev/comments/nn3ey3/help_guidance_developing_a_simple_app_for_covid19/) -- [How have you utilized Rxjava2 Subjects in your Android production apps?](https://www.reddit.com/r/androiddev/comments/nn37z3/how_have_you_utilized_rxjava2_subjects_in_your/) -- [Suggestions for any YT channels that teach through mini-projects?](https://www.reddit.com/r/androiddev/comments/nn2ikd/suggestions_for_any_yt_channels_that_teach/) +- [Security ROMS and features to make android more secure and prevent location tracking?](https://www.reddit.com/r/androiddev/comments/no1n11/security_roms_and_features_to_make_android_more/) +- [Explanation of notNull built-in Delegate](https://www.reddit.com/r/androiddev/comments/nnzgce/explanation_of_notnull_builtin_delegate/) +- [App reviews take forever now?...](https://www.reddit.com/r/androiddev/comments/nnytf7/app_reviews_take_forever_now/) +- [Huawei Mate 40 Pro 1080p@30fps only...](https://www.reddit.com/r/androiddev/comments/nnw40z/huawei_mate_40_pro_1080p30fps_only/) +- [Create customizable timer](https://www.reddit.com/r/androiddev/comments/nnw29f/create_customizable_timer/) +- [Android tools for radio broadcasting/signal propagation.](https://www.reddit.com/r/androiddev/comments/nnujbi/android_tools_for_radio_broadcastingsignal/) +- [Google maps activity in android project (On macbook pro M1)](https://www.reddit.com/r/androiddev/comments/nntlj0/google_maps_activity_in_android_project_on/) +- [A comprehensive guide to coroutines](https://www.reddit.com/r/androiddev/comments/nntjqv/a_comprehensive_guide_to_coroutines/) +- [Anyone else having problems with Lint and Studio? Ever since the new update, it's been extremely buggy and slow](https://www.reddit.com/r/androiddev/comments/nnt99j/anyone_else_having_problems_with_lint_and_studio/) +- [What are the recommended alternative to achieve the same effect of `NetworkBoundResource` class?](https://www.reddit.com/r/androiddev/comments/nnsxw3/what_are_the_recommended_alternative_to_achieve/) ### *InfoWorld posts* From e55f38b5896cd93f2d578f3935f5ff46a4573d10 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 31 May 2021 01:37:48 +0000 Subject: [PATCH 0512/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f4440b6d57..20dfc76971 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 64 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a1bf33fdb4..2acd42204c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 26 Performance From 1a6a0e41c860c5e64820b1032de96dc9d9293654 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 31 May 2021 04:10:11 +0000 Subject: [PATCH 0513/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d40a3324db..9249e14d3b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Security ROMS and features to make android more secure and prevent location tracking?](https://www.reddit.com/r/androiddev/comments/no1n11/security_roms_and_features_to_make_android_more/) -- [Explanation of notNull built-in Delegate](https://www.reddit.com/r/androiddev/comments/nnzgce/explanation_of_notnull_builtin_delegate/) -- [App reviews take forever now?...](https://www.reddit.com/r/androiddev/comments/nnytf7/app_reviews_take_forever_now/) -- [Huawei Mate 40 Pro 1080p@30fps only...](https://www.reddit.com/r/androiddev/comments/nnw40z/huawei_mate_40_pro_1080p30fps_only/) -- [Create customizable timer](https://www.reddit.com/r/androiddev/comments/nnw29f/create_customizable_timer/) -- [Android tools for radio broadcasting/signal propagation.](https://www.reddit.com/r/androiddev/comments/nnujbi/android_tools_for_radio_broadcastingsignal/) -- [Google maps activity in android project (On macbook pro M1)](https://www.reddit.com/r/androiddev/comments/nntlj0/google_maps_activity_in_android_project_on/) -- [A comprehensive guide to coroutines](https://www.reddit.com/r/androiddev/comments/nntjqv/a_comprehensive_guide_to_coroutines/) -- [Anyone else having problems with Lint and Studio? Ever since the new update, it's been extremely buggy and slow](https://www.reddit.com/r/androiddev/comments/nnt99j/anyone_else_having_problems_with_lint_and_studio/) -- [What are the recommended alternative to achieve the same effect of `NetworkBoundResource` class?](https://www.reddit.com/r/androiddev/comments/nnsxw3/what_are_the_recommended_alternative_to_achieve/) +- [Android 12 native game mode revealed](https://www.reddit.com/r/androiddev/comments/not5db/android_12_native_game_mode_revealed/) +- [Best android version from 2012 to 2020](https://www.reddit.com/r/androiddev/comments/nosup4/best_android_version_from_2012_to_2020/) +- [Is it possible to run an android device headless and access remotely (physical screen disabled)](https://www.reddit.com/r/androiddev/comments/noqpxt/is_it_possible_to_run_an_android_device_headless/) +- [Getting back into Android Development](https://www.reddit.com/r/androiddev/comments/noqp8s/getting_back_into_android_development/) +- [Is there a way to integrate After Effects animations in the app?](https://www.reddit.com/r/androiddev/comments/noq9ot/is_there_a_way_to_integrate_after_effects/) +- [Writing Apache Parquet Files](https://www.reddit.com/r/androiddev/comments/none9r/writing_apache_parquet_files/) +- [Android Flipper Debugging Plugins](https://www.reddit.com/r/androiddev/comments/nokno7/android_flipper_debugging_plugins/) +- [Invoice library](https://www.reddit.com/r/androiddev/comments/noh4gl/invoice_library/) +- [Can I use Android Studio in a VM?](https://www.reddit.com/r/androiddev/comments/noecif/can_i_use_android_studio_in_a_vm/) +- [setOnLongClickListener uses which sensors on the phone?](https://www.reddit.com/r/androiddev/comments/nod3bg/setonlongclicklistener_uses_which_sensors_on_the/) ### *InfoWorld posts* From 42651ff766f5ccd800a1b3b381cf2870886a8616 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 1 Jun 2021 01:55:28 +0000 Subject: [PATCH 0514/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2acd42204c..e2cb29fe92 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 30 Performance From ffdfc5bb6bc2e00eaec8fe939437d247148fbe18 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 1 Jun 2021 04:32:14 +0000 Subject: [PATCH 0515/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9249e14d3b..f1d05f6596 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android 12 native game mode revealed](https://www.reddit.com/r/androiddev/comments/not5db/android_12_native_game_mode_revealed/) -- [Best android version from 2012 to 2020](https://www.reddit.com/r/androiddev/comments/nosup4/best_android_version_from_2012_to_2020/) -- [Is it possible to run an android device headless and access remotely (physical screen disabled)](https://www.reddit.com/r/androiddev/comments/noqpxt/is_it_possible_to_run_an_android_device_headless/) -- [Getting back into Android Development](https://www.reddit.com/r/androiddev/comments/noqp8s/getting_back_into_android_development/) -- [Is there a way to integrate After Effects animations in the app?](https://www.reddit.com/r/androiddev/comments/noq9ot/is_there_a_way_to_integrate_after_effects/) -- [Writing Apache Parquet Files](https://www.reddit.com/r/androiddev/comments/none9r/writing_apache_parquet_files/) -- [Android Flipper Debugging Plugins](https://www.reddit.com/r/androiddev/comments/nokno7/android_flipper_debugging_plugins/) -- [Invoice library](https://www.reddit.com/r/androiddev/comments/noh4gl/invoice_library/) -- [Can I use Android Studio in a VM?](https://www.reddit.com/r/androiddev/comments/noecif/can_i_use_android_studio_in_a_vm/) -- [setOnLongClickListener uses which sensors on the phone?](https://www.reddit.com/r/androiddev/comments/nod3bg/setonlongclicklistener_uses_which_sensors_on_the/) +- [Ageism in Android?](https://www.reddit.com/r/androiddev/comments/nplgx5/ageism_in_android/) +- [Can somebody help me to get data like in this app? I tried to scan BLE devices and filter them based on manufacturer data. It seems ionic doesn’t get me any manufacturer specific data. Any idea? Is it possible with react native?](https://www.reddit.com/r/androiddev/comments/npidta/can_somebody_help_me_to_get_data_like_in_this_app/) +- [My thoughts and experience on edge to edge displaying apps. (as a comment)](https://www.reddit.com/r/androiddev/comments/nphmcg/my_thoughts_and_experience_on_edge_to_edge/) +- [Actual footage of different kinds of Gradle Configurations](https://www.reddit.com/r/androiddev/comments/npe405/actual_footage_of_different_kinds_of_gradle/) +- [No reviews showing in the playstore.](https://www.reddit.com/r/androiddev/comments/npcwo5/no_reviews_showing_in_the_playstore/) +- [Would it be possible to replace the notification LED by addressing a tiny portion of an OLED screen while the screen is off?](https://www.reddit.com/r/androiddev/comments/npbra0/would_it_be_possible_to_replace_the_notification/) +- [How to use signature pad library with jetpack compose using Android and Kotlin?](https://www.reddit.com/r/androiddev/comments/np88mj/how_to_use_signature_pad_library_with_jetpack/) +- [Create Android app from open source C++ code](https://www.reddit.com/r/androiddev/comments/np7yeu/create_android_app_from_open_source_c_code/) +- [How many of you all are indie developers that maintain your own backend for your app? How’s it going?](https://www.reddit.com/r/androiddev/comments/np40ig/how_many_of_you_all_are_indie_developers_that/) +- [Android Studio AVD not running the app in Macbook air M1. Emulator (API S) is opening up but it's not running the application.](https://www.reddit.com/r/androiddev/comments/np2vp6/android_studio_avd_not_running_the_app_in_macbook/) ### *InfoWorld posts* From ea5bbddb9d33d51595cb76058d5a8a76d574066f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 2 Jun 2021 02:03:57 +0000 Subject: [PATCH 0516/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 8 ++++---- reports/pagespeedresultmobile.svg | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 20dfc76971..09cff492fa 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,14 +121,14 @@ - - 57 + + 64 Performance - - 72 + + 58 Accessibility diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e2cb29fe92..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,14 +121,14 @@ - - 30 + + 32 Performance - - 71 + + 58 Accessibility From f1c85ec8085b284076bf4962feb27ff2c9bafb53 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 2 Jun 2021 04:27:40 +0000 Subject: [PATCH 0517/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f1d05f6596..0d3acc069e 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Ageism in Android?](https://www.reddit.com/r/androiddev/comments/nplgx5/ageism_in_android/) -- [Can somebody help me to get data like in this app? I tried to scan BLE devices and filter them based on manufacturer data. It seems ionic doesn’t get me any manufacturer specific data. Any idea? Is it possible with react native?](https://www.reddit.com/r/androiddev/comments/npidta/can_somebody_help_me_to_get_data_like_in_this_app/) -- [My thoughts and experience on edge to edge displaying apps. (as a comment)](https://www.reddit.com/r/androiddev/comments/nphmcg/my_thoughts_and_experience_on_edge_to_edge/) -- [Actual footage of different kinds of Gradle Configurations](https://www.reddit.com/r/androiddev/comments/npe405/actual_footage_of_different_kinds_of_gradle/) -- [No reviews showing in the playstore.](https://www.reddit.com/r/androiddev/comments/npcwo5/no_reviews_showing_in_the_playstore/) -- [Would it be possible to replace the notification LED by addressing a tiny portion of an OLED screen while the screen is off?](https://www.reddit.com/r/androiddev/comments/npbra0/would_it_be_possible_to_replace_the_notification/) -- [How to use signature pad library with jetpack compose using Android and Kotlin?](https://www.reddit.com/r/androiddev/comments/np88mj/how_to_use_signature_pad_library_with_jetpack/) -- [Create Android app from open source C++ code](https://www.reddit.com/r/androiddev/comments/np7yeu/create_android_app_from_open_source_c_code/) -- [How many of you all are indie developers that maintain your own backend for your app? How’s it going?](https://www.reddit.com/r/androiddev/comments/np40ig/how_many_of_you_all_are_indie_developers_that/) -- [Android Studio AVD not running the app in Macbook air M1. Emulator (API S) is opening up but it's not running the application.](https://www.reddit.com/r/androiddev/comments/np2vp6/android_studio_avd_not_running_the_app_in_macbook/) +- [Pangle Ad Network](https://www.reddit.com/r/androiddev/comments/nqd156/pangle_ad_network/) +- [Harmony Crypto: Multi-process Encrypted SharedPreferences](https://www.reddit.com/r/androiddev/comments/nqcjsi/harmony_crypto_multiprocess_encrypted/) +- [image picker from gallery for Jetpack compose - Android/Kotlin](https://www.reddit.com/r/androiddev/comments/nq88d4/image_picker_from_gallery_for_jetpack_compose/) +- [Get notified for every app purchase](https://www.reddit.com/r/androiddev/comments/nq87w5/get_notified_for_every_app_purchase/) +- [Anyone know of a non convoluted way to impliment Play Billing 4 for standard Android Studio apps?](https://www.reddit.com/r/androiddev/comments/nq6pdf/anyone_know_of_a_non_convoluted_way_to_impliment/) +- [What is your step by step process when making your apps?](https://www.reddit.com/r/androiddev/comments/nq2wuy/what_is_your_step_by_step_process_when_making/) +- [Introducing HiltBinder: An annotation processing library that automatically generates Dagger Hilt's @Binds methods.](https://www.reddit.com/r/androiddev/comments/nq2j33/introducing_hiltbinder_an_annotation_processing/) +- [Is "nobody" the name of an android dev tool/app?](https://www.reddit.com/r/androiddev/comments/nq1fwh/is_nobody_the_name_of_an_android_dev_toolapp/) +- [Simple Compose runtime mental model](https://www.reddit.com/r/androiddev/comments/nq0hri/simple_compose_runtime_mental_model/) +- [How to compile/run a project using sdk 8-15](https://www.reddit.com/r/androiddev/comments/nptue5/how_to_compilerun_a_project_using_sdk_815/) ### *InfoWorld posts* From b80da16920617afd28801028d4788d1e6baf3089 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 3 Jun 2021 01:42:12 +0000 Subject: [PATCH 0518/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 09cff492fa..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 64 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..16a1aed88b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 33 Performance From 60d87f3430a506e587f6ef14222bf71452bea39a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 3 Jun 2021 04:07:57 +0000 Subject: [PATCH 0519/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0d3acc069e..6d49bca62b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Pangle Ad Network](https://www.reddit.com/r/androiddev/comments/nqd156/pangle_ad_network/) -- [Harmony Crypto: Multi-process Encrypted SharedPreferences](https://www.reddit.com/r/androiddev/comments/nqcjsi/harmony_crypto_multiprocess_encrypted/) -- [image picker from gallery for Jetpack compose - Android/Kotlin](https://www.reddit.com/r/androiddev/comments/nq88d4/image_picker_from_gallery_for_jetpack_compose/) -- [Get notified for every app purchase](https://www.reddit.com/r/androiddev/comments/nq87w5/get_notified_for_every_app_purchase/) -- [Anyone know of a non convoluted way to impliment Play Billing 4 for standard Android Studio apps?](https://www.reddit.com/r/androiddev/comments/nq6pdf/anyone_know_of_a_non_convoluted_way_to_impliment/) -- [What is your step by step process when making your apps?](https://www.reddit.com/r/androiddev/comments/nq2wuy/what_is_your_step_by_step_process_when_making/) -- [Introducing HiltBinder: An annotation processing library that automatically generates Dagger Hilt's @Binds methods.](https://www.reddit.com/r/androiddev/comments/nq2j33/introducing_hiltbinder_an_annotation_processing/) -- [Is "nobody" the name of an android dev tool/app?](https://www.reddit.com/r/androiddev/comments/nq1fwh/is_nobody_the_name_of_an_android_dev_toolapp/) -- [Simple Compose runtime mental model](https://www.reddit.com/r/androiddev/comments/nq0hri/simple_compose_runtime_mental_model/) -- [How to compile/run a project using sdk 8-15](https://www.reddit.com/r/androiddev/comments/nptue5/how_to_compilerun_a_project_using_sdk_815/) +- [Your suggestions about a recipe app](https://www.reddit.com/r/androiddev/comments/nr3hm4/your_suggestions_about_a_recipe_app/) +- [Starting in late 2021, when a user opts out of interest-based advertising or ads personalization, the advertising identifier will not be available. You will receive a string of zeros in place of the identifier.](https://www.reddit.com/r/androiddev/comments/nr1dy2/starting_in_late_2021_when_a_user_opts_out_of/) +- [React native Expo for multiplatform mobile app development - free course from udemy](https://www.reddit.com/r/androiddev/comments/nr0kh7/react_native_expo_for_multiplatform_mobile_app/) +- [Firestore](https://www.reddit.com/r/androiddev/comments/nqzqby/firestore/) +- [Compose is the future: my experience, why I love it and tips on getting started](https://www.reddit.com/r/androiddev/comments/nqu478/compose_is_the_future_my_experience_why_i_love_it/) +- [On Android is there an equivalent to this drag-down-to-dismiss modal view on iOS?](https://www.reddit.com/r/androiddev/comments/nqsozk/on_android_is_there_an_equivalent_to_this/) +- [Library for translations](https://www.reddit.com/r/androiddev/comments/nqs7uq/library_for_translations/) +- [Bubble Chat idea](https://www.reddit.com/r/androiddev/comments/nqs709/bubble_chat_idea/) +- [Buying a Mac M1 with 8gb RAM for android dev is enough?](https://www.reddit.com/r/androiddev/comments/nqqo97/buying_a_mac_m1_with_8gb_ram_for_android_dev_is/) +- [How to boot the ADT-3 image into AVD?](https://www.reddit.com/r/androiddev/comments/nqpekl/how_to_boot_the_adt3_image_into_avd/) ### *InfoWorld posts* From 788905c68e496b50689f5a777b2ac05d96215b4a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 4 Jun 2021 01:26:06 +0000 Subject: [PATCH 0520/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 16a1aed88b..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 33 + + 26 Performance From 06bc8d08f71a7e16d9a081ae78d946bc9ed8dbbd Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 4 Jun 2021 03:11:03 +0000 Subject: [PATCH 0521/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6d49bca62b..6df42d8e2a 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Your suggestions about a recipe app](https://www.reddit.com/r/androiddev/comments/nr3hm4/your_suggestions_about_a_recipe_app/) -- [Starting in late 2021, when a user opts out of interest-based advertising or ads personalization, the advertising identifier will not be available. You will receive a string of zeros in place of the identifier.](https://www.reddit.com/r/androiddev/comments/nr1dy2/starting_in_late_2021_when_a_user_opts_out_of/) -- [React native Expo for multiplatform mobile app development - free course from udemy](https://www.reddit.com/r/androiddev/comments/nr0kh7/react_native_expo_for_multiplatform_mobile_app/) -- [Firestore](https://www.reddit.com/r/androiddev/comments/nqzqby/firestore/) -- [Compose is the future: my experience, why I love it and tips on getting started](https://www.reddit.com/r/androiddev/comments/nqu478/compose_is_the_future_my_experience_why_i_love_it/) -- [On Android is there an equivalent to this drag-down-to-dismiss modal view on iOS?](https://www.reddit.com/r/androiddev/comments/nqsozk/on_android_is_there_an_equivalent_to_this/) -- [Library for translations](https://www.reddit.com/r/androiddev/comments/nqs7uq/library_for_translations/) -- [Bubble Chat idea](https://www.reddit.com/r/androiddev/comments/nqs709/bubble_chat_idea/) -- [Buying a Mac M1 with 8gb RAM for android dev is enough?](https://www.reddit.com/r/androiddev/comments/nqqo97/buying_a_mac_m1_with_8gb_ram_for_android_dev_is/) -- [How to boot the ADT-3 image into AVD?](https://www.reddit.com/r/androiddev/comments/nqpekl/how_to_boot_the_adt3_image_into_avd/) +- [What will you do if your account on Google Play got banned?](https://www.reddit.com/r/androiddev/comments/nrtqfb/what_will_you_do_if_your_account_on_google_play/) +- [Making an Android game in Golang (includes example)](https://www.reddit.com/r/androiddev/comments/nrrt62/making_an_android_game_in_golang_includes_example/) +- [Welcome Fruit Ninja 🥝 on Jetpack Compose Desktop 🚀, using Canvas API 🎨](https://www.reddit.com/r/androiddev/comments/nrqzz3/welcome_fruit_ninja_on_jetpack_compose_desktop/) +- [Account banned from Google Play](https://www.reddit.com/r/androiddev/comments/nrqabz/account_banned_from_google_play/) +- [How do I figure out the monthly fee I should charge my users for premium access in order to make my app profitable?](https://www.reddit.com/r/androiddev/comments/nrpbrb/how_do_i_figure_out_the_monthly_fee_i_should/) +- [What is the best way to save app data?](https://www.reddit.com/r/androiddev/comments/nriq9w/what_is_the_best_way_to_save_app_data/) +- [Android GridLayout with CardView, Image and OnclickListener](https://www.reddit.com/r/androiddev/comments/nri51c/android_gridlayout_with_cardview_image_and/) +- [WhatsApp folder location changed](https://www.reddit.com/r/androiddev/comments/nrhrj0/whatsapp_folder_location_changed/) +- [App having FIS_AUTH_ERROR issues for some - we can't replicate in house - need help](https://www.reddit.com/r/androiddev/comments/nrhdda/app_having_fis_auth_error_issues_for_some_we_cant/) +- [Android Resource Manager tool](https://www.reddit.com/r/androiddev/comments/nrftnd/android_resource_manager_tool/) ### *InfoWorld posts* From 2b14c6d1bb51bc75ba2bc9afc13a9bbed351a8a5 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 5 Jun 2021 01:07:06 +0000 Subject: [PATCH 0522/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..16a1aed88b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 33 Performance From d1a02c0d6d94f79ff9dd817727a464f085409970 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 5 Jun 2021 02:58:45 +0000 Subject: [PATCH 0523/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6df42d8e2a..66964672d0 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What will you do if your account on Google Play got banned?](https://www.reddit.com/r/androiddev/comments/nrtqfb/what_will_you_do_if_your_account_on_google_play/) -- [Making an Android game in Golang (includes example)](https://www.reddit.com/r/androiddev/comments/nrrt62/making_an_android_game_in_golang_includes_example/) -- [Welcome Fruit Ninja 🥝 on Jetpack Compose Desktop 🚀, using Canvas API 🎨](https://www.reddit.com/r/androiddev/comments/nrqzz3/welcome_fruit_ninja_on_jetpack_compose_desktop/) -- [Account banned from Google Play](https://www.reddit.com/r/androiddev/comments/nrqabz/account_banned_from_google_play/) -- [How do I figure out the monthly fee I should charge my users for premium access in order to make my app profitable?](https://www.reddit.com/r/androiddev/comments/nrpbrb/how_do_i_figure_out_the_monthly_fee_i_should/) -- [What is the best way to save app data?](https://www.reddit.com/r/androiddev/comments/nriq9w/what_is_the_best_way_to_save_app_data/) -- [Android GridLayout with CardView, Image and OnclickListener](https://www.reddit.com/r/androiddev/comments/nri51c/android_gridlayout_with_cardview_image_and/) -- [WhatsApp folder location changed](https://www.reddit.com/r/androiddev/comments/nrhrj0/whatsapp_folder_location_changed/) -- [App having FIS_AUTH_ERROR issues for some - we can't replicate in house - need help](https://www.reddit.com/r/androiddev/comments/nrhdda/app_having_fis_auth_error_issues_for_some_we_cant/) -- [Android Resource Manager tool](https://www.reddit.com/r/androiddev/comments/nrftnd/android_resource_manager_tool/) +- [Goofle Play Inappropriate Ads Policy](https://www.reddit.com/r/androiddev/comments/nsjerh/goofle_play_inappropriate_ads_policy/) +- [Emulator is working fine on my Mac M1 but won’t launch the app](https://www.reddit.com/r/androiddev/comments/nshfk3/emulator_is_working_fine_on_my_mac_m1_but_wont/) +- [SmplrAlarm - An Android convenience library to make setting an alarm way simpler than it is.](https://www.reddit.com/r/androiddev/comments/nsg9nz/smplralarm_an_android_convenience_library_to_make/) +- [Drawing music sheets](https://www.reddit.com/r/androiddev/comments/nsd3tj/drawing_music_sheets/) +- [Kotlin](https://www.reddit.com/r/androiddev/comments/nsc6fc/kotlin/) +- [Simplifying the setup for multi-module navigation with Jetpack Navigation Compose](https://www.reddit.com/r/androiddev/comments/nsbe8o/simplifying_the_setup_for_multimodule_navigation/) +- [IDE Live coding interview](https://www.reddit.com/r/androiddev/comments/ns9l5y/ide_live_coding_interview/) +- [APK directory/file structure changes between gradle 4.1.x and 4.2.x](https://www.reddit.com/r/androiddev/comments/ns8g4m/apk_directoryfile_structure_changes_between/) +- [Synthetic "file system" with or without root](https://www.reddit.com/r/androiddev/comments/ns8571/synthetic_file_system_with_or_without_root/) +- [TimeRangePicker - A circular time range picker similar to iOS bedtime](https://www.reddit.com/r/androiddev/comments/ns6kig/timerangepicker_a_circular_time_range_picker/) ### *InfoWorld posts* From f2120e7980fb93e1d5c1d1ec2aeb7cde6058827b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 6 Jun 2021 00:59:54 +0000 Subject: [PATCH 0524/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 16a1aed88b..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 33 + + 30 Performance From 3c91c4e6294bab9fa63ad0c44c09d922c9781362 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 6 Jun 2021 02:52:27 +0000 Subject: [PATCH 0525/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 66964672d0..e590550b8e 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Goofle Play Inappropriate Ads Policy](https://www.reddit.com/r/androiddev/comments/nsjerh/goofle_play_inappropriate_ads_policy/) -- [Emulator is working fine on my Mac M1 but won’t launch the app](https://www.reddit.com/r/androiddev/comments/nshfk3/emulator_is_working_fine_on_my_mac_m1_but_wont/) -- [SmplrAlarm - An Android convenience library to make setting an alarm way simpler than it is.](https://www.reddit.com/r/androiddev/comments/nsg9nz/smplralarm_an_android_convenience_library_to_make/) -- [Drawing music sheets](https://www.reddit.com/r/androiddev/comments/nsd3tj/drawing_music_sheets/) -- [Kotlin](https://www.reddit.com/r/androiddev/comments/nsc6fc/kotlin/) -- [Simplifying the setup for multi-module navigation with Jetpack Navigation Compose](https://www.reddit.com/r/androiddev/comments/nsbe8o/simplifying_the_setup_for_multimodule_navigation/) -- [IDE Live coding interview](https://www.reddit.com/r/androiddev/comments/ns9l5y/ide_live_coding_interview/) -- [APK directory/file structure changes between gradle 4.1.x and 4.2.x](https://www.reddit.com/r/androiddev/comments/ns8g4m/apk_directoryfile_structure_changes_between/) -- [Synthetic "file system" with or without root](https://www.reddit.com/r/androiddev/comments/ns8571/synthetic_file_system_with_or_without_root/) -- [TimeRangePicker - A circular time range picker similar to iOS bedtime](https://www.reddit.com/r/androiddev/comments/ns6kig/timerangepicker_a_circular_time_range_picker/) +- [Will google ban an app thats built with ionic?](https://www.reddit.com/r/androiddev/comments/ntajyz/will_google_ban_an_app_thats_built_with_ionic/) +- [UI Not Loading From XML File](https://www.reddit.com/r/androiddev/comments/nta85s/ui_not_loading_from_xml_file/) +- [Some thoughts on minimalistic launchers in general & A selecfion of minimalistic launchers that have wallpaper support.](https://www.reddit.com/r/androiddev/comments/nt7xj1/some_thoughts_on_minimalistic_launchers_in/) +- [Save Jetpack Compose Canvas to Image](https://www.reddit.com/r/androiddev/comments/nt587s/save_jetpack_compose_canvas_to_image/) +- [Working on a game inspired by fruit ninja](https://www.reddit.com/r/androiddev/comments/nt3uqy/working_on_a_game_inspired_by_fruit_ninja/) +- [PROCESS_TEXT Not visible in text selection menu in most apps after Android 11](https://www.reddit.com/r/androiddev/comments/nt2v81/process_text_not_visible_in_text_selection_menu/) +- [In-depth look at gRPC for Android](https://www.reddit.com/r/androiddev/comments/nt2j6h/indepth_look_at_grpc_for_android/) +- [Updated Jitpack library publishing tutorial for 2021?](https://www.reddit.com/r/androiddev/comments/nszgex/updated_jitpack_library_publishing_tutorial_for/) +- [Android CodeView: Highlight search result in List Items](https://www.reddit.com/r/androiddev/comments/nswmyt/android_codeview_highlight_search_result_in_list/) +- [App Feedback Thread - June 05, 2021](https://www.reddit.com/r/androiddev/comments/nsv8e4/app_feedback_thread_june_05_2021/) ### *InfoWorld posts* From 34a0ef7ad01276bb6f9596adf582abb2955b2b5d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 7 Jun 2021 01:00:04 +0000 Subject: [PATCH 0526/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 58 Performance From 8b2e014b370951f9bb081fee58c4fe8a82af7500 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 7 Jun 2021 03:03:47 +0000 Subject: [PATCH 0527/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e590550b8e..18a9dba150 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Will google ban an app thats built with ionic?](https://www.reddit.com/r/androiddev/comments/ntajyz/will_google_ban_an_app_thats_built_with_ionic/) -- [UI Not Loading From XML File](https://www.reddit.com/r/androiddev/comments/nta85s/ui_not_loading_from_xml_file/) -- [Some thoughts on minimalistic launchers in general & A selecfion of minimalistic launchers that have wallpaper support.](https://www.reddit.com/r/androiddev/comments/nt7xj1/some_thoughts_on_minimalistic_launchers_in/) -- [Save Jetpack Compose Canvas to Image](https://www.reddit.com/r/androiddev/comments/nt587s/save_jetpack_compose_canvas_to_image/) -- [Working on a game inspired by fruit ninja](https://www.reddit.com/r/androiddev/comments/nt3uqy/working_on_a_game_inspired_by_fruit_ninja/) -- [PROCESS_TEXT Not visible in text selection menu in most apps after Android 11](https://www.reddit.com/r/androiddev/comments/nt2v81/process_text_not_visible_in_text_selection_menu/) -- [In-depth look at gRPC for Android](https://www.reddit.com/r/androiddev/comments/nt2j6h/indepth_look_at_grpc_for_android/) -- [Updated Jitpack library publishing tutorial for 2021?](https://www.reddit.com/r/androiddev/comments/nszgex/updated_jitpack_library_publishing_tutorial_for/) -- [Android CodeView: Highlight search result in List Items](https://www.reddit.com/r/androiddev/comments/nswmyt/android_codeview_highlight_search_result_in_list/) -- [App Feedback Thread - June 05, 2021](https://www.reddit.com/r/androiddev/comments/nsv8e4/app_feedback_thread_june_05_2021/) +- [Functional Interfaces (SAM) in Kotlin](https://www.reddit.com/r/androiddev/comments/nu225e/functional_interfaces_sam_in_kotlin/) +- [Keeping up to date with the Android Topics](https://www.reddit.com/r/androiddev/comments/nu0zvx/keeping_up_to_date_with_the_android_topics/) +- [How to set up SDL 2 for Android?](https://www.reddit.com/r/androiddev/comments/nu0rj0/how_to_set_up_sdl_2_for_android/) +- [someone managed to run full windows on these devices (links)](https://www.reddit.com/r/androiddev/comments/ntub87/someone_managed_to_run_full_windows_on_these/) +- [Architecture questions. I am expected to be in charge of app development coordination...](https://www.reddit.com/r/androiddev/comments/ntsqz7/architecture_questions_i_am_expected_to_be_in/) +- [No Content Provider error accessing Google Drive URI with targetSdkVersion=30](https://www.reddit.com/r/androiddev/comments/ntq2ye/no_content_provider_error_accessing_google_drive/) +- [Developer survey for project](https://www.reddit.com/r/androiddev/comments/ntoo37/developer_survey_for_project/) +- [Good enough to make apps but not good enough to contribute to open source?](https://www.reddit.com/r/androiddev/comments/nto00v/good_enough_to_make_apps_but_not_good_enough_to/) +- [PSA: Android Studio running great on M1 Apple Silicon](https://www.reddit.com/r/androiddev/comments/ntnwu4/psa_android_studio_running_great_on_m1_apple/) +- [Advice for the future?](https://www.reddit.com/r/androiddev/comments/ntn3x4/advice_for_the_future/) ### *InfoWorld posts* From 44251e10bc0b4b09d1b63a13f28c4a51570f70ff Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 8 Jun 2021 00:59:01 +0000 Subject: [PATCH 0528/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 26 Performance From dc6d284ee77be9c83723dbdd65319e05d805ee12 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 8 Jun 2021 02:42:21 +0000 Subject: [PATCH 0529/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 18a9dba150..8975761659 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Functional Interfaces (SAM) in Kotlin](https://www.reddit.com/r/androiddev/comments/nu225e/functional_interfaces_sam_in_kotlin/) -- [Keeping up to date with the Android Topics](https://www.reddit.com/r/androiddev/comments/nu0zvx/keeping_up_to_date_with_the_android_topics/) -- [How to set up SDL 2 for Android?](https://www.reddit.com/r/androiddev/comments/nu0rj0/how_to_set_up_sdl_2_for_android/) -- [someone managed to run full windows on these devices (links)](https://www.reddit.com/r/androiddev/comments/ntub87/someone_managed_to_run_full_windows_on_these/) -- [Architecture questions. I am expected to be in charge of app development coordination...](https://www.reddit.com/r/androiddev/comments/ntsqz7/architecture_questions_i_am_expected_to_be_in/) -- [No Content Provider error accessing Google Drive URI with targetSdkVersion=30](https://www.reddit.com/r/androiddev/comments/ntq2ye/no_content_provider_error_accessing_google_drive/) -- [Developer survey for project](https://www.reddit.com/r/androiddev/comments/ntoo37/developer_survey_for_project/) -- [Good enough to make apps but not good enough to contribute to open source?](https://www.reddit.com/r/androiddev/comments/nto00v/good_enough_to_make_apps_but_not_good_enough_to/) -- [PSA: Android Studio running great on M1 Apple Silicon](https://www.reddit.com/r/androiddev/comments/ntnwu4/psa_android_studio_running_great_on_m1_apple/) -- [Advice for the future?](https://www.reddit.com/r/androiddev/comments/ntn3x4/advice_for_the_future/) +- [How to implement in app update with FLEXIBLE or IMMEDIATE update](https://www.reddit.com/r/androiddev/comments/nutpgr/how_to_implement_in_app_update_with_flexible_or/) +- [Android Studio 2020.1.1 Bumblebee Canary 2 Released](https://www.reddit.com/r/androiddev/comments/nut40k/android_studio_202011_bumblebee_canary_2_released/) +- [How to opt-in to 15% cut below 1m in revenue on google play?](https://www.reddit.com/r/androiddev/comments/nurnyb/how_to_optin_to_15_cut_below_1m_in_revenue_on/) +- [June update seems to break custom fonts in widgets](https://www.reddit.com/r/androiddev/comments/nuqtpl/june_update_seems_to_break_custom_fonts_in_widgets/) +- [Multiple back stacks. A deep dive | by Ian Lake](https://www.reddit.com/r/androiddev/comments/nuq0f4/multiple_back_stacks_a_deep_dive_by_ian_lake/) +- [Lookng for app devs needing beta-testers..](https://www.reddit.com/r/androiddev/comments/nuna3n/lookng_for_app_devs_needing_betatesters/) +- [MutableLiveData/ViewModel - Saving after multiple sources?](https://www.reddit.com/r/androiddev/comments/nun346/mutablelivedataviewmodel_saving_after_multiple/) +- [Navigating in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/num1lc/navigating_in_jetpack_compose/) +- [Android Tutorials: Mobile Touch Scripts](https://www.reddit.com/r/androiddev/comments/nuj64a/android_tutorials_mobile_touch_scripts/) +- [Speech-to-Text from a File](https://www.reddit.com/r/androiddev/comments/nuge47/speechtotext_from_a_file/) ### *InfoWorld posts* From 94c5e335f8e7eec0e8ec0dcacbaa000a3c5d1e05 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 9 Jun 2021 00:40:40 +0000 Subject: [PATCH 0530/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 25 Performance From 8a5d167c3c175e0d7f06c1c9a46fc42c2416f811 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 9 Jun 2021 02:12:02 +0000 Subject: [PATCH 0531/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8975761659..b624efbdb9 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to implement in app update with FLEXIBLE or IMMEDIATE update](https://www.reddit.com/r/androiddev/comments/nutpgr/how_to_implement_in_app_update_with_flexible_or/) -- [Android Studio 2020.1.1 Bumblebee Canary 2 Released](https://www.reddit.com/r/androiddev/comments/nut40k/android_studio_202011_bumblebee_canary_2_released/) -- [How to opt-in to 15% cut below 1m in revenue on google play?](https://www.reddit.com/r/androiddev/comments/nurnyb/how_to_optin_to_15_cut_below_1m_in_revenue_on/) -- [June update seems to break custom fonts in widgets](https://www.reddit.com/r/androiddev/comments/nuqtpl/june_update_seems_to_break_custom_fonts_in_widgets/) -- [Multiple back stacks. A deep dive | by Ian Lake](https://www.reddit.com/r/androiddev/comments/nuq0f4/multiple_back_stacks_a_deep_dive_by_ian_lake/) -- [Lookng for app devs needing beta-testers..](https://www.reddit.com/r/androiddev/comments/nuna3n/lookng_for_app_devs_needing_betatesters/) -- [MutableLiveData/ViewModel - Saving after multiple sources?](https://www.reddit.com/r/androiddev/comments/nun346/mutablelivedataviewmodel_saving_after_multiple/) -- [Navigating in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/num1lc/navigating_in_jetpack_compose/) -- [Android Tutorials: Mobile Touch Scripts](https://www.reddit.com/r/androiddev/comments/nuj64a/android_tutorials_mobile_touch_scripts/) -- [Speech-to-Text from a File](https://www.reddit.com/r/androiddev/comments/nuge47/speechtotext_from_a_file/) +- [Handling the time zone issue in Material Date Picker & Date Range Picker](https://www.reddit.com/r/androiddev/comments/nvkqee/handling_the_time_zone_issue_in_material_date/) +- [nfc tag bluetooth speaker pairing](https://www.reddit.com/r/androiddev/comments/nvj0x4/nfc_tag_bluetooth_speaker_pairing/) +- [Can't install Intel HAXM, please help!](https://www.reddit.com/r/androiddev/comments/nvg0r1/cant_install_intel_haxm_please_help/) +- [Rust/C++ interop in the Android Platform](https://www.reddit.com/r/androiddev/comments/nvex12/rustc_interop_in_the_android_platform/) +- [This sub is pointless if you can't ask general questions about Android programming .](https://www.reddit.com/r/androiddev/comments/nvdyc7/this_sub_is_pointless_if_you_cant_ask_general/) +- [Difference in implementation of VPN on Android vs iOS](https://www.reddit.com/r/androiddev/comments/nvdjug/difference_in_implementation_of_vpn_on_android_vs/) +- [Jetpack compose and viewmodel](https://www.reddit.com/r/androiddev/comments/nvclry/jetpack_compose_and_viewmodel/) +- [Writing Firebase Firestore Rules](https://www.reddit.com/r/androiddev/comments/nvbodu/writing_firebase_firestore_rules/) +- [Room vs Services vs SharedPreferences? Which one to choose for a Timer App?](https://www.reddit.com/r/androiddev/comments/nvb5xj/room_vs_services_vs_sharedpreferences_which_one/) +- ["compileSdkVersion vs. targetSdkVersion - what's the difference?" - new video on my YouTube channel :)](https://www.reddit.com/r/androiddev/comments/nvay3e/compilesdkversion_vs_targetsdkversion_whats_the/) ### *InfoWorld posts* From 88e987c442123a8565f6124f5aae180e045e2118 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 10 Jun 2021 00:39:07 +0000 Subject: [PATCH 0532/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 31 Performance From 32cde0038566c5d6bbc42d6f5778a8331c9102f2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 10 Jun 2021 02:08:36 +0000 Subject: [PATCH 0533/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b624efbdb9..c5bd69aeaa 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Handling the time zone issue in Material Date Picker & Date Range Picker](https://www.reddit.com/r/androiddev/comments/nvkqee/handling_the_time_zone_issue_in_material_date/) -- [nfc tag bluetooth speaker pairing](https://www.reddit.com/r/androiddev/comments/nvj0x4/nfc_tag_bluetooth_speaker_pairing/) -- [Can't install Intel HAXM, please help!](https://www.reddit.com/r/androiddev/comments/nvg0r1/cant_install_intel_haxm_please_help/) -- [Rust/C++ interop in the Android Platform](https://www.reddit.com/r/androiddev/comments/nvex12/rustc_interop_in_the_android_platform/) -- [This sub is pointless if you can't ask general questions about Android programming .](https://www.reddit.com/r/androiddev/comments/nvdyc7/this_sub_is_pointless_if_you_cant_ask_general/) -- [Difference in implementation of VPN on Android vs iOS](https://www.reddit.com/r/androiddev/comments/nvdjug/difference_in_implementation_of_vpn_on_android_vs/) -- [Jetpack compose and viewmodel](https://www.reddit.com/r/androiddev/comments/nvclry/jetpack_compose_and_viewmodel/) -- [Writing Firebase Firestore Rules](https://www.reddit.com/r/androiddev/comments/nvbodu/writing_firebase_firestore_rules/) -- [Room vs Services vs SharedPreferences? Which one to choose for a Timer App?](https://www.reddit.com/r/androiddev/comments/nvb5xj/room_vs_services_vs_sharedpreferences_which_one/) -- ["compileSdkVersion vs. targetSdkVersion - what's the difference?" - new video on my YouTube channel :)](https://www.reddit.com/r/androiddev/comments/nvay3e/compilesdkversion_vs_targetsdkversion_whats_the/) +- [Test SIM Card from Google Repair Depot](https://www.reddit.com/r/androiddev/comments/nw8tlw/test_sim_card_from_google_repair_depot/) +- [Developing an Android app from iOS](https://www.reddit.com/r/androiddev/comments/nw5pnl/developing_an_android_app_from_ios/) +- [Any good ads platform without SDK to promote Android mobile app besides Google Ads?](https://www.reddit.com/r/androiddev/comments/nw4m3w/any_good_ads_platform_without_sdk_to_promote/) +- [How to query my app feed based on location?](https://www.reddit.com/r/androiddev/comments/nw4du6/how_to_query_my_app_feed_based_on_location/) +- [Why would Google suspend a digital scales app that works?](https://www.reddit.com/r/androiddev/comments/nw35bw/why_would_google_suspend_a_digital_scales_app/) +- [Is it possible to make a custom navigation•bar app that doesn't zoom•in while using triple•tap magnification•gestures?](https://www.reddit.com/r/androiddev/comments/nw1wd6/is_it_possible_to_make_a_custom_navigationbar_app/) +- [Have any of you been contacted randomly to sell your apps, and how did it go? Place was apps-sbd](https://www.reddit.com/r/androiddev/comments/nvzhmq/have_any_of_you_been_contacted_randomly_to_sell/) +- [Love the new Splash window for Bumblebee!](https://www.reddit.com/r/androiddev/comments/nvz5xd/love_the_new_splash_window_for_bumblebee/) +- [How to manage image resources in Android?](https://www.reddit.com/r/androiddev/comments/nvvr3l/how_to_manage_image_resources_in_android/) +- [How difficult and time consuming will It be to change the AOSP Window Manager?](https://www.reddit.com/r/androiddev/comments/nvuz8c/how_difficult_and_time_consuming_will_it_be_to/) ### *InfoWorld posts* From e792eded5837277de6f49494140b64d54d73b29a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 11 Jun 2021 00:36:42 +0000 Subject: [PATCH 0534/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..493179d254 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 27 Performance From a229034269988bdaf91d71791c66e31a2a547c2f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 11 Jun 2021 01:58:14 +0000 Subject: [PATCH 0535/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c5bd69aeaa..24098a8878 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Test SIM Card from Google Repair Depot](https://www.reddit.com/r/androiddev/comments/nw8tlw/test_sim_card_from_google_repair_depot/) -- [Developing an Android app from iOS](https://www.reddit.com/r/androiddev/comments/nw5pnl/developing_an_android_app_from_ios/) -- [Any good ads platform without SDK to promote Android mobile app besides Google Ads?](https://www.reddit.com/r/androiddev/comments/nw4m3w/any_good_ads_platform_without_sdk_to_promote/) -- [How to query my app feed based on location?](https://www.reddit.com/r/androiddev/comments/nw4du6/how_to_query_my_app_feed_based_on_location/) -- [Why would Google suspend a digital scales app that works?](https://www.reddit.com/r/androiddev/comments/nw35bw/why_would_google_suspend_a_digital_scales_app/) -- [Is it possible to make a custom navigation•bar app that doesn't zoom•in while using triple•tap magnification•gestures?](https://www.reddit.com/r/androiddev/comments/nw1wd6/is_it_possible_to_make_a_custom_navigationbar_app/) -- [Have any of you been contacted randomly to sell your apps, and how did it go? Place was apps-sbd](https://www.reddit.com/r/androiddev/comments/nvzhmq/have_any_of_you_been_contacted_randomly_to_sell/) -- [Love the new Splash window for Bumblebee!](https://www.reddit.com/r/androiddev/comments/nvz5xd/love_the_new_splash_window_for_bumblebee/) -- [How to manage image resources in Android?](https://www.reddit.com/r/androiddev/comments/nvvr3l/how_to_manage_image_resources_in_android/) -- [How difficult and time consuming will It be to change the AOSP Window Manager?](https://www.reddit.com/r/androiddev/comments/nvuz8c/how_difficult_and_time_consuming_will_it_be_to/) +- [Navigate from Jetpack Compose to Fragment and from Fragment to Jetpack Compose Screen](https://www.reddit.com/r/androiddev/comments/nx3w1t/navigate_from_jetpack_compose_to_fragment_and/) +- [Issues uploading game](https://www.reddit.com/r/androiddev/comments/nx2wkz/issues_uploading_game/) +- [HELP !!! AR App with Arcore Kotlin not possible?😱🤔](https://www.reddit.com/r/androiddev/comments/nx0crb/help_ar_app_with_arcore_kotlin_not_possible/) +- [Android development advanced book](https://www.reddit.com/r/androiddev/comments/nwy7yh/android_development_advanced_book/) +- [App suspended with the non-existent appeal process](https://www.reddit.com/r/androiddev/comments/nwxe51/app_suspended_with_the_nonexistent_appeal_process/) +- [Help! Google service fee for service marketplace apps.](https://www.reddit.com/r/androiddev/comments/nwwrle/help_google_service_fee_for_service_marketplace/) +- [Create an application CoroutineScope using Hilt](https://www.reddit.com/r/androiddev/comments/nwu46d/create_an_application_coroutinescope_using_hilt/) +- [A simple Android Tag EditText](https://www.reddit.com/r/androiddev/comments/nwt9bp/a_simple_android_tag_edittext/) +- [Questionnaire from Google on OEM battery savers killing apps](https://www.reddit.com/r/androiddev/comments/nwsjm9/questionnaire_from_google_on_oem_battery_savers/) +- [Help us improve Android Virtual Devices for automated testing!](https://www.reddit.com/r/androiddev/comments/nws7el/help_us_improve_android_virtual_devices_for/) ### *InfoWorld posts* From 89bbbabe2719458c75ad5802310ce8e4f7c43ed3 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 12 Jun 2021 00:32:22 +0000 Subject: [PATCH 0536/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 493179d254..f48561a8fa 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 61 + + 38 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 30 Performance From 203fd72968a4760bb40eb14ec603d01033e26958 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 12 Jun 2021 01:47:24 +0000 Subject: [PATCH 0537/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 24098a8878..8be5487933 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Navigate from Jetpack Compose to Fragment and from Fragment to Jetpack Compose Screen](https://www.reddit.com/r/androiddev/comments/nx3w1t/navigate_from_jetpack_compose_to_fragment_and/) -- [Issues uploading game](https://www.reddit.com/r/androiddev/comments/nx2wkz/issues_uploading_game/) -- [HELP !!! AR App with Arcore Kotlin not possible?😱🤔](https://www.reddit.com/r/androiddev/comments/nx0crb/help_ar_app_with_arcore_kotlin_not_possible/) -- [Android development advanced book](https://www.reddit.com/r/androiddev/comments/nwy7yh/android_development_advanced_book/) -- [App suspended with the non-existent appeal process](https://www.reddit.com/r/androiddev/comments/nwxe51/app_suspended_with_the_nonexistent_appeal_process/) -- [Help! Google service fee for service marketplace apps.](https://www.reddit.com/r/androiddev/comments/nwwrle/help_google_service_fee_for_service_marketplace/) -- [Create an application CoroutineScope using Hilt](https://www.reddit.com/r/androiddev/comments/nwu46d/create_an_application_coroutinescope_using_hilt/) -- [A simple Android Tag EditText](https://www.reddit.com/r/androiddev/comments/nwt9bp/a_simple_android_tag_edittext/) -- [Questionnaire from Google on OEM battery savers killing apps](https://www.reddit.com/r/androiddev/comments/nwsjm9/questionnaire_from_google_on_oem_battery_savers/) -- [Help us improve Android Virtual Devices for automated testing!](https://www.reddit.com/r/androiddev/comments/nws7el/help_us_improve_android_virtual_devices_for/) +- [Virtual Cam on Android](https://www.reddit.com/r/androiddev/comments/nxv2ek/virtual_cam_on_android/) +- [How can I translate Android's Developer Guides into different languages?](https://www.reddit.com/r/androiddev/comments/nxs5g7/how_can_i_translate_androids_developer_guides/) +- [💥 The Story of My First A-ha Moment With Jetpack Compose](https://www.reddit.com/r/androiddev/comments/nxq58u/the_story_of_my_first_aha_moment_with_jetpack/) +- [Android Project Error](https://www.reddit.com/r/androiddev/comments/nxp4ap/android_project_error/) +- [SquircleView - A library with support for Squircle buttons, images and layouts](https://www.reddit.com/r/androiddev/comments/nxnl0g/squircleview_a_library_with_support_for_squircle/) +- [Easy way to create a tarot app](https://www.reddit.com/r/androiddev/comments/nxmcvn/easy_way_to_create_a_tarot_app/) +- [Backend/DevOps suggestion for a Flutter App](https://www.reddit.com/r/androiddev/comments/nxm25y/backenddevops_suggestion_for_a_flutter_app/) +- [Creating mobile app that can allow login with phone number or email](https://www.reddit.com/r/androiddev/comments/nxjg8r/creating_mobile_app_that_can_allow_login_with/) +- [local stored lyrics on mobile app counts as copyright infringement?](https://www.reddit.com/r/androiddev/comments/nxgssb/local_stored_lyrics_on_mobile_app_counts_as/) +- [Is there an easier way to designing frontend XML](https://www.reddit.com/r/androiddev/comments/nxgohl/is_there_an_easier_way_to_designing_frontend_xml/) ### *InfoWorld posts* From 58bdbf828dbc3c287ac02dcb8c13e1ae4194a677 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 13 Jun 2021 00:38:24 +0000 Subject: [PATCH 0538/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 28 insertions(+), 233 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f48561a8fa..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 38 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 30 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 28ff3b6b78055c58f661b7026c4bd6936e231646 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 13 Jun 2021 01:55:38 +0000 Subject: [PATCH 0539/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8be5487933..a4f4a1f3d1 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Virtual Cam on Android](https://www.reddit.com/r/androiddev/comments/nxv2ek/virtual_cam_on_android/) -- [How can I translate Android's Developer Guides into different languages?](https://www.reddit.com/r/androiddev/comments/nxs5g7/how_can_i_translate_androids_developer_guides/) -- [💥 The Story of My First A-ha Moment With Jetpack Compose](https://www.reddit.com/r/androiddev/comments/nxq58u/the_story_of_my_first_aha_moment_with_jetpack/) -- [Android Project Error](https://www.reddit.com/r/androiddev/comments/nxp4ap/android_project_error/) -- [SquircleView - A library with support for Squircle buttons, images and layouts](https://www.reddit.com/r/androiddev/comments/nxnl0g/squircleview_a_library_with_support_for_squircle/) -- [Easy way to create a tarot app](https://www.reddit.com/r/androiddev/comments/nxmcvn/easy_way_to_create_a_tarot_app/) -- [Backend/DevOps suggestion for a Flutter App](https://www.reddit.com/r/androiddev/comments/nxm25y/backenddevops_suggestion_for_a_flutter_app/) -- [Creating mobile app that can allow login with phone number or email](https://www.reddit.com/r/androiddev/comments/nxjg8r/creating_mobile_app_that_can_allow_login_with/) -- [local stored lyrics on mobile app counts as copyright infringement?](https://www.reddit.com/r/androiddev/comments/nxgssb/local_stored_lyrics_on_mobile_app_counts_as/) -- [Is there an easier way to designing frontend XML](https://www.reddit.com/r/androiddev/comments/nxgohl/is_there_an_easier_way_to_designing_frontend_xml/) +- [Android Emulator and Intel HAXM issues](https://www.reddit.com/r/androiddev/comments/nyka7h/android_emulator_and_intel_haxm_issues/) +- [Entry-Level Android Dev or something else?](https://www.reddit.com/r/androiddev/comments/nyjlne/entrylevel_android_dev_or_something_else/) +- [It's possible to put a fragment into a RecyclerView ?](https://www.reddit.com/r/androiddev/comments/nyj9ra/its_possible_to_put_a_fragment_into_a_recyclerview/) +- [How to implement ListenableWorker for an async task?](https://www.reddit.com/r/androiddev/comments/nyh8pr/how_to_implement_listenableworker_for_an_async/) +- [Should one get a 256GB or a 512GB ssd for a new m1 macbook for Android development?](https://www.reddit.com/r/androiddev/comments/nyh6md/should_one_get_a_256gb_or_a_512gb_ssd_for_a_new/) +- [What are your must have libraries or frameworks for every new project?](https://www.reddit.com/r/androiddev/comments/nyg5rm/what_are_your_must_have_libraries_or_frameworks/) +- [RecyclerView view glitching with viewbinding](https://www.reddit.com/r/androiddev/comments/nyegk5/recyclerview_view_glitching_with_viewbinding/) +- [Translation services that do a good job with Android apps?](https://www.reddit.com/r/androiddev/comments/nycn0q/translation_services_that_do_a_good_job_with/) +- [Observable loading view?](https://www.reddit.com/r/androiddev/comments/nybwdh/observable_loading_view/) +- [How to Show an Activity on Lock Screen instead of a Notification](https://www.reddit.com/r/androiddev/comments/ny81y4/how_to_show_an_activity_on_lock_screen_instead_of/) ### *InfoWorld posts* From f628732e3aaae48232d3e999973260455dfa1c72 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 14 Jun 2021 00:34:27 +0000 Subject: [PATCH 0540/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 30 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 214d7a1c79d7ec1ffc36e64bff2b0804111642e7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 14 Jun 2021 01:55:02 +0000 Subject: [PATCH 0541/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a4f4a1f3d1..dc90499c61 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android Emulator and Intel HAXM issues](https://www.reddit.com/r/androiddev/comments/nyka7h/android_emulator_and_intel_haxm_issues/) -- [Entry-Level Android Dev or something else?](https://www.reddit.com/r/androiddev/comments/nyjlne/entrylevel_android_dev_or_something_else/) -- [It's possible to put a fragment into a RecyclerView ?](https://www.reddit.com/r/androiddev/comments/nyj9ra/its_possible_to_put_a_fragment_into_a_recyclerview/) -- [How to implement ListenableWorker for an async task?](https://www.reddit.com/r/androiddev/comments/nyh8pr/how_to_implement_listenableworker_for_an_async/) -- [Should one get a 256GB or a 512GB ssd for a new m1 macbook for Android development?](https://www.reddit.com/r/androiddev/comments/nyh6md/should_one_get_a_256gb_or_a_512gb_ssd_for_a_new/) -- [What are your must have libraries or frameworks for every new project?](https://www.reddit.com/r/androiddev/comments/nyg5rm/what_are_your_must_have_libraries_or_frameworks/) -- [RecyclerView view glitching with viewbinding](https://www.reddit.com/r/androiddev/comments/nyegk5/recyclerview_view_glitching_with_viewbinding/) -- [Translation services that do a good job with Android apps?](https://www.reddit.com/r/androiddev/comments/nycn0q/translation_services_that_do_a_good_job_with/) -- [Observable loading view?](https://www.reddit.com/r/androiddev/comments/nybwdh/observable_loading_view/) -- [How to Show an Activity on Lock Screen instead of a Notification](https://www.reddit.com/r/androiddev/comments/ny81y4/how_to_show_an_activity_on_lock_screen_instead_of/) +- [Guide to upgrade app from Android Wear to Wear OS?](https://www.reddit.com/r/androiddev/comments/nz29q3/guide_to_upgrade_app_from_android_wear_to_wear_os/) +- [Aurora - Building modern, elegant and fast Compose Desktop applications](https://www.reddit.com/r/androiddev/comments/nz1pyn/aurora_building_modern_elegant_and_fast_compose/) +- [Career jump, back to being android dev again.](https://www.reddit.com/r/androiddev/comments/nz1fr6/career_jump_back_to_being_android_dev_again/) +- [Notification help](https://www.reddit.com/r/androiddev/comments/nz1dyz/notification_help/) +- [Confused on getting started with android development.Help me please.](https://www.reddit.com/r/androiddev/comments/nyzpsq/confused_on_getting_started_with_android/) +- [How do you progress as a dev after your first few apps?](https://www.reddit.com/r/androiddev/comments/nyywj3/how_do_you_progress_as_a_dev_after_your_first_few/) +- [What is a good starting point for Android Fragments ?](https://www.reddit.com/r/androiddev/comments/nyxm6t/what_is_a_good_starting_point_for_android/) +- [is there an API to know if a Composable is currently visible on the screen?](https://www.reddit.com/r/androiddev/comments/nyxjy7/is_there_an_api_to_know_if_a_composable_is/) +- [How can I extract a samsung system img file?](https://www.reddit.com/r/androiddev/comments/nyx13y/how_can_i_extract_a_samsung_system_img_file/) +- [Navigator Compose - A navigation library for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/nyw8vx/navigator_compose_a_navigation_library_for/) ### *InfoWorld posts* From bd861ba6e0c519f2bc1da4c705b8e40e2455d8c2 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 15 Jun 2021 00:36:17 +0000 Subject: [PATCH 0542/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 29 Performance From 0389f7633cde02aa12ca830ec6db9e61551a89b2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 15 Jun 2021 02:00:17 +0000 Subject: [PATCH 0543/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dc90499c61..3a09c2721b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Guide to upgrade app from Android Wear to Wear OS?](https://www.reddit.com/r/androiddev/comments/nz29q3/guide_to_upgrade_app_from_android_wear_to_wear_os/) -- [Aurora - Building modern, elegant and fast Compose Desktop applications](https://www.reddit.com/r/androiddev/comments/nz1pyn/aurora_building_modern_elegant_and_fast_compose/) -- [Career jump, back to being android dev again.](https://www.reddit.com/r/androiddev/comments/nz1fr6/career_jump_back_to_being_android_dev_again/) -- [Notification help](https://www.reddit.com/r/androiddev/comments/nz1dyz/notification_help/) -- [Confused on getting started with android development.Help me please.](https://www.reddit.com/r/androiddev/comments/nyzpsq/confused_on_getting_started_with_android/) -- [How do you progress as a dev after your first few apps?](https://www.reddit.com/r/androiddev/comments/nyywj3/how_do_you_progress_as_a_dev_after_your_first_few/) -- [What is a good starting point for Android Fragments ?](https://www.reddit.com/r/androiddev/comments/nyxm6t/what_is_a_good_starting_point_for_android/) -- [is there an API to know if a Composable is currently visible on the screen?](https://www.reddit.com/r/androiddev/comments/nyxjy7/is_there_an_api_to_know_if_a_composable_is/) -- [How can I extract a samsung system img file?](https://www.reddit.com/r/androiddev/comments/nyx13y/how_can_i_extract_a_samsung_system_img_file/) -- [Navigator Compose - A navigation library for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/nyw8vx/navigator_compose_a_navigation_library_for/) +- [So about Google requiring me to make public my home address to sell my app for a fixed price...](https://www.reddit.com/r/androiddev/comments/o02rrm/so_about_google_requiring_me_to_make_public_my/) +- [Need help building a Specialized Tablet/ MP4 player](https://www.reddit.com/r/androiddev/comments/o02ojz/need_help_building_a_specialized_tablet_mp4_player/) +- [am i the only one experiencing this? after may 19 my ANR rate on google play console doubled. plus when i want to view the anr all of them has this warning "Stack trace not available" how can i fix this if i dont know what it is? my app anr rate is now twice the "bad behaviour threshold".](https://www.reddit.com/r/androiddev/comments/o02kgy/am_i_the_only_one_experiencing_this_after_may_19/) +- [am i the only one experiencing this? after may 19 my ANR rate on google play console doubled. plus when i want to view the anr all of them has this warning "Stack trace not available" how can i fix this if i dont know what it is? my app anr rate is now twice the "bad behaviour threshold".](https://www.reddit.com/r/androiddev/comments/o02kgx/am_i_the_only_one_experiencing_this_after_may_19/) +- [How to get in contact with Google Play store to challenge an app rejection](https://www.reddit.com/r/androiddev/comments/nzzax4/how_to_get_in_contact_with_google_play_store_to/) +- [Awesome Book! Someone recommend me another!](https://www.reddit.com/r/androiddev/comments/nzwif8/awesome_book_someone_recommend_me_another/) +- [Nearby Places](https://www.reddit.com/r/androiddev/comments/nzw2rt/nearby_places/) +- [Should I post my android application's source code on github?](https://www.reddit.com/r/androiddev/comments/nzv9q9/should_i_post_my_android_applications_source_code/) +- [No more SMS & Call Log permissions, Now What ?Google restricting the apps that access unnecessary SMS, Call Logs permission groups from the users and 80 percent rejection rate for applications?](https://www.reddit.com/r/androiddev/comments/nzug55/no_more_sms_call_log_permissions_now_what_google/) +- [Screen Tracker is a library that helps you identify Activites and Fragments much easier at runtime](https://www.reddit.com/r/androiddev/comments/nzrky8/screen_tracker_is_a_library_that_helps_you/) ### *InfoWorld posts* From d5dd583ea3fc7c77023d12e226ce7472c0cbb3da Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 16 Jun 2021 00:37:14 +0000 Subject: [PATCH 0544/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 9fbc069d37694efababa26473dd556fa7a2573cf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 16 Jun 2021 01:55:34 +0000 Subject: [PATCH 0545/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3a09c2721b..878db01065 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [So about Google requiring me to make public my home address to sell my app for a fixed price...](https://www.reddit.com/r/androiddev/comments/o02rrm/so_about_google_requiring_me_to_make_public_my/) -- [Need help building a Specialized Tablet/ MP4 player](https://www.reddit.com/r/androiddev/comments/o02ojz/need_help_building_a_specialized_tablet_mp4_player/) -- [am i the only one experiencing this? after may 19 my ANR rate on google play console doubled. plus when i want to view the anr all of them has this warning "Stack trace not available" how can i fix this if i dont know what it is? my app anr rate is now twice the "bad behaviour threshold".](https://www.reddit.com/r/androiddev/comments/o02kgy/am_i_the_only_one_experiencing_this_after_may_19/) -- [am i the only one experiencing this? after may 19 my ANR rate on google play console doubled. plus when i want to view the anr all of them has this warning "Stack trace not available" how can i fix this if i dont know what it is? my app anr rate is now twice the "bad behaviour threshold".](https://www.reddit.com/r/androiddev/comments/o02kgx/am_i_the_only_one_experiencing_this_after_may_19/) -- [How to get in contact with Google Play store to challenge an app rejection](https://www.reddit.com/r/androiddev/comments/nzzax4/how_to_get_in_contact_with_google_play_store_to/) -- [Awesome Book! Someone recommend me another!](https://www.reddit.com/r/androiddev/comments/nzwif8/awesome_book_someone_recommend_me_another/) -- [Nearby Places](https://www.reddit.com/r/androiddev/comments/nzw2rt/nearby_places/) -- [Should I post my android application's source code on github?](https://www.reddit.com/r/androiddev/comments/nzv9q9/should_i_post_my_android_applications_source_code/) -- [No more SMS & Call Log permissions, Now What ?Google restricting the apps that access unnecessary SMS, Call Logs permission groups from the users and 80 percent rejection rate for applications?](https://www.reddit.com/r/androiddev/comments/nzug55/no_more_sms_call_log_permissions_now_what_google/) -- [Screen Tracker is a library that helps you identify Activites and Fragments much easier at runtime](https://www.reddit.com/r/androiddev/comments/nzrky8/screen_tracker_is_a_library_that_helps_you/) +- [Sites para enviar seu aplicativo para iOS](https://www.reddit.com/r/androiddev/comments/o0t0rl/sites_para_enviar_seu_aplicativo_para_ios/) +- [searching tool to access android RAM from pc (like Cheat Engine)](https://www.reddit.com/r/androiddev/comments/o0r7lk/searching_tool_to_access_android_ram_from_pc_like/) +- [Why should one upgrade to newer android gradle version?](https://www.reddit.com/r/androiddev/comments/o0oz38/why_should_one_upgrade_to_newer_android_gradle/) +- [Google release AppSearch: search engine library for Android (offline - on device)](https://www.reddit.com/r/androiddev/comments/o0mlja/google_release_appsearch_search_engine_library/) +- [I make an Android base Webview App to read Medium unlimited](https://www.reddit.com/r/androiddev/comments/o0mfdk/i_make_an_android_base_webview_app_to_read_medium/) +- [Multi-tenancy support for Android SDKs](https://www.reddit.com/r/androiddev/comments/o0l5zj/multitenancy_support_for_android_sdks/) +- [Is a career in android development possible after 24?](https://www.reddit.com/r/androiddev/comments/o0ke6h/is_a_career_in_android_development_possible_after/) +- [DashedView Library: Easily create views with a background of repeating dashes](https://www.reddit.com/r/androiddev/comments/o0jmvq/dashedview_library_easily_create_views_with_a/) +- [The UK's Competition and Markets Authority (CMA) (CMA) has confirmed it is investigating Apple & Google and looking for feedback from developers](https://www.reddit.com/r/androiddev/comments/o0jld0/the_uks_competition_and_markets_authority_cma_cma/) +- [Why are these screenshots just a waste of time? (Until you have at least 4000 downloads per month)](https://www.reddit.com/r/androiddev/comments/o0jl9i/why_are_these_screenshots_just_a_waste_of_time/) ### *InfoWorld posts* From 4a625fb4976cf69d8e60287b353b8c7c4f9b3f12 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 17 Jun 2021 00:35:14 +0000 Subject: [PATCH 0546/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 27 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From fbc36d605214e3baf4b832133d8d6836fbe10aa3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 17 Jun 2021 01:53:53 +0000 Subject: [PATCH 0547/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 878db01065..da579db557 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Sites para enviar seu aplicativo para iOS](https://www.reddit.com/r/androiddev/comments/o0t0rl/sites_para_enviar_seu_aplicativo_para_ios/) -- [searching tool to access android RAM from pc (like Cheat Engine)](https://www.reddit.com/r/androiddev/comments/o0r7lk/searching_tool_to_access_android_ram_from_pc_like/) -- [Why should one upgrade to newer android gradle version?](https://www.reddit.com/r/androiddev/comments/o0oz38/why_should_one_upgrade_to_newer_android_gradle/) -- [Google release AppSearch: search engine library for Android (offline - on device)](https://www.reddit.com/r/androiddev/comments/o0mlja/google_release_appsearch_search_engine_library/) -- [I make an Android base Webview App to read Medium unlimited](https://www.reddit.com/r/androiddev/comments/o0mfdk/i_make_an_android_base_webview_app_to_read_medium/) -- [Multi-tenancy support for Android SDKs](https://www.reddit.com/r/androiddev/comments/o0l5zj/multitenancy_support_for_android_sdks/) -- [Is a career in android development possible after 24?](https://www.reddit.com/r/androiddev/comments/o0ke6h/is_a_career_in_android_development_possible_after/) -- [DashedView Library: Easily create views with a background of repeating dashes](https://www.reddit.com/r/androiddev/comments/o0jmvq/dashedview_library_easily_create_views_with_a/) -- [The UK's Competition and Markets Authority (CMA) (CMA) has confirmed it is investigating Apple & Google and looking for feedback from developers](https://www.reddit.com/r/androiddev/comments/o0jld0/the_uks_competition_and_markets_authority_cma_cma/) -- [Why are these screenshots just a waste of time? (Until you have at least 4000 downloads per month)](https://www.reddit.com/r/androiddev/comments/o0jl9i/why_are_these_screenshots_just_a_waste_of_time/) +- [Do you guys always use Material Design in your projects?](https://www.reddit.com/r/androiddev/comments/o1kctr/do_you_guys_always_use_material_design_in_your/) +- [MVC | Model View Controller | Android MVC Login Example with Validation](https://www.reddit.com/r/androiddev/comments/o1kcme/mvc_model_view_controller_android_mvc_login/) +- [What the minimum SDK version do you guys use?](https://www.reddit.com/r/androiddev/comments/o1kbq6/what_the_minimum_sdk_version_do_you_guys_use/) +- [Android RecyclerView with EditText Example + Expense sum calculation](https://www.reddit.com/r/androiddev/comments/o1kbhd/android_recyclerview_with_edittext_example/) +- [Compose tests can now be run on Robolectric](https://www.reddit.com/r/androiddev/comments/o1ioif/compose_tests_can_now_be_run_on_robolectric/) +- [Google Play's automatic sales tax settings](https://www.reddit.com/r/androiddev/comments/o1gvtu/google_plays_automatic_sales_tax_settings/) +- [Android Distribution Chart as of 16.06.2021.](https://www.reddit.com/r/androiddev/comments/o1dool/android_distribution_chart_as_of_16062021/) +- [Do you guys feel like Jetpack Paging3 library messes with your Architecture a lot?](https://www.reddit.com/r/androiddev/comments/o1da2f/do_you_guys_feel_like_jetpack_paging3_library/) +- [Best Mediation for Android app ??](https://www.reddit.com/r/androiddev/comments/o1casd/best_mediation_for_android_app/) +- [Marketing Tips in the Games Industry](https://www.reddit.com/r/androiddev/comments/o1axy0/marketing_tips_in_the_games_industry/) ### *InfoWorld posts* From 31b2e183c5f6d7d435383e7ca5093e79af94c79e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 18 Jun 2021 00:35:42 +0000 Subject: [PATCH 0548/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 52 Performance From 66be9ce65d3a0368bd8c8e8b61112957c95476fc Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 18 Jun 2021 01:59:26 +0000 Subject: [PATCH 0549/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index da579db557..608ef3dd07 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Do you guys always use Material Design in your projects?](https://www.reddit.com/r/androiddev/comments/o1kctr/do_you_guys_always_use_material_design_in_your/) -- [MVC | Model View Controller | Android MVC Login Example with Validation](https://www.reddit.com/r/androiddev/comments/o1kcme/mvc_model_view_controller_android_mvc_login/) -- [What the minimum SDK version do you guys use?](https://www.reddit.com/r/androiddev/comments/o1kbq6/what_the_minimum_sdk_version_do_you_guys_use/) -- [Android RecyclerView with EditText Example + Expense sum calculation](https://www.reddit.com/r/androiddev/comments/o1kbhd/android_recyclerview_with_edittext_example/) -- [Compose tests can now be run on Robolectric](https://www.reddit.com/r/androiddev/comments/o1ioif/compose_tests_can_now_be_run_on_robolectric/) -- [Google Play's automatic sales tax settings](https://www.reddit.com/r/androiddev/comments/o1gvtu/google_plays_automatic_sales_tax_settings/) -- [Android Distribution Chart as of 16.06.2021.](https://www.reddit.com/r/androiddev/comments/o1dool/android_distribution_chart_as_of_16062021/) -- [Do you guys feel like Jetpack Paging3 library messes with your Architecture a lot?](https://www.reddit.com/r/androiddev/comments/o1da2f/do_you_guys_feel_like_jetpack_paging3_library/) -- [Best Mediation for Android app ??](https://www.reddit.com/r/androiddev/comments/o1casd/best_mediation_for_android_app/) -- [Marketing Tips in the Games Industry](https://www.reddit.com/r/androiddev/comments/o1axy0/marketing_tips_in_the_games_industry/) +- [Splitting strings to get correct tree](https://www.reddit.com/r/androiddev/comments/o2d0cs/splitting_strings_to_get_correct_tree/) +- [Hello devs!](https://www.reddit.com/r/androiddev/comments/o2a1hx/hello_devs/) +- [Incentivize ad viewing question](https://www.reddit.com/r/androiddev/comments/o25yna/incentivize_ad_viewing_question/) +- [Announcing requireKTX - zsmb.co](https://www.reddit.com/r/androiddev/comments/o24yep/announcing_requirektx_zsmbco/) +- [What does one do about Sceneform and ARCore?](https://www.reddit.com/r/androiddev/comments/o230ew/what_does_one_do_about_sceneform_and_arcore/) +- [I don't understand Covid-19 app guidelines](https://www.reddit.com/r/androiddev/comments/o22vv1/i_dont_understand_covid19_app_guidelines/) +- [Why does Android INSIST on creating two new fragments with a new basic activity?](https://www.reddit.com/r/androiddev/comments/o20k8z/why_does_android_insist_on_creating_two_new/) +- [Disabling push notifications from google play services](https://www.reddit.com/r/androiddev/comments/o1z3wm/disabling_push_notifications_from_google_play/) +- [Learn To Build Android Attendance Application Using Kotlin](https://www.reddit.com/r/androiddev/comments/o1ynau/learn_to_build_android_attendance_application/) +- [Add-on architecture](https://www.reddit.com/r/androiddev/comments/o1ykv6/addon_architecture/) ### *InfoWorld posts* From b8255d82d2eeaf570c1f0d1acabb175bf165c2f1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 19 Jun 2021 00:35:42 +0000 Subject: [PATCH 0550/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..79b7d73372 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 52 + + 40 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From aae4d47b7fd88ea60c2b10ffc3b7786f001e29ca Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 19 Jun 2021 01:57:47 +0000 Subject: [PATCH 0551/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 608ef3dd07..960975cb83 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Splitting strings to get correct tree](https://www.reddit.com/r/androiddev/comments/o2d0cs/splitting_strings_to_get_correct_tree/) -- [Hello devs!](https://www.reddit.com/r/androiddev/comments/o2a1hx/hello_devs/) -- [Incentivize ad viewing question](https://www.reddit.com/r/androiddev/comments/o25yna/incentivize_ad_viewing_question/) -- [Announcing requireKTX - zsmb.co](https://www.reddit.com/r/androiddev/comments/o24yep/announcing_requirektx_zsmbco/) -- [What does one do about Sceneform and ARCore?](https://www.reddit.com/r/androiddev/comments/o230ew/what_does_one_do_about_sceneform_and_arcore/) -- [I don't understand Covid-19 app guidelines](https://www.reddit.com/r/androiddev/comments/o22vv1/i_dont_understand_covid19_app_guidelines/) -- [Why does Android INSIST on creating two new fragments with a new basic activity?](https://www.reddit.com/r/androiddev/comments/o20k8z/why_does_android_insist_on_creating_two_new/) -- [Disabling push notifications from google play services](https://www.reddit.com/r/androiddev/comments/o1z3wm/disabling_push_notifications_from_google_play/) -- [Learn To Build Android Attendance Application Using Kotlin](https://www.reddit.com/r/androiddev/comments/o1ynau/learn_to_build_android_attendance_application/) -- [Add-on architecture](https://www.reddit.com/r/androiddev/comments/o1ykv6/addon_architecture/) +- [Is authentication supposed to be this difficult?](https://www.reddit.com/r/androiddev/comments/o33s5e/is_authentication_supposed_to_be_this_difficult/) +- [Better physical stories with Google’s Nearby APIs](https://www.reddit.com/r/androiddev/comments/o321rh/better_physical_stories_with_googles_nearby_apis/) +- [Cannot resolve class android.support.design](https://www.reddit.com/r/androiddev/comments/o2yqkc/cannot_resolve_class_androidsupportdesign/) +- [jetpack compose list change animations](https://www.reddit.com/r/androiddev/comments/o2wtq5/jetpack_compose_list_change_animations/) +- [Good introduction to Android Development for beginners](https://www.reddit.com/r/androiddev/comments/o2rvci/good_introduction_to_android_development_for/) +- [Is strandhogg a real security thread to Android Apps?](https://www.reddit.com/r/androiddev/comments/o2rr47/is_strandhogg_a_real_security_thread_to_android/) +- [Creating Google Play game - worth it?](https://www.reddit.com/r/androiddev/comments/o2r203/creating_google_play_game_worth_it/) +- [Does anyone know how to verify number of install origin from Google Mobile App Install ads?](https://www.reddit.com/r/androiddev/comments/o2prr6/does_anyone_know_how_to_verify_number_of_install/) +- [Weekly Anything Goes Thread - June 18, 2021](https://www.reddit.com/r/androiddev/comments/o2ok69/weekly_anything_goes_thread_june_18_2021/) +- [Issues with Android App and Deep Linking](https://www.reddit.com/r/androiddev/comments/o2nswv/issues_with_android_app_and_deep_linking/) ### *InfoWorld posts* From 1a37d7bf2569cb29340723066122267679a71f28 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 20 Jun 2021 00:38:07 +0000 Subject: [PATCH 0552/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 79b7d73372..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 40 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..e5f8facab5 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 22 Performance From 1a28b05faeb43b2a96c76664c65a38367a9b27d8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 20 Jun 2021 02:00:37 +0000 Subject: [PATCH 0553/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 960975cb83..46f69435ee 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is authentication supposed to be this difficult?](https://www.reddit.com/r/androiddev/comments/o33s5e/is_authentication_supposed_to_be_this_difficult/) -- [Better physical stories with Google’s Nearby APIs](https://www.reddit.com/r/androiddev/comments/o321rh/better_physical_stories_with_googles_nearby_apis/) -- [Cannot resolve class android.support.design](https://www.reddit.com/r/androiddev/comments/o2yqkc/cannot_resolve_class_androidsupportdesign/) -- [jetpack compose list change animations](https://www.reddit.com/r/androiddev/comments/o2wtq5/jetpack_compose_list_change_animations/) -- [Good introduction to Android Development for beginners](https://www.reddit.com/r/androiddev/comments/o2rvci/good_introduction_to_android_development_for/) -- [Is strandhogg a real security thread to Android Apps?](https://www.reddit.com/r/androiddev/comments/o2rr47/is_strandhogg_a_real_security_thread_to_android/) -- [Creating Google Play game - worth it?](https://www.reddit.com/r/androiddev/comments/o2r203/creating_google_play_game_worth_it/) -- [Does anyone know how to verify number of install origin from Google Mobile App Install ads?](https://www.reddit.com/r/androiddev/comments/o2prr6/does_anyone_know_how_to_verify_number_of_install/) -- [Weekly Anything Goes Thread - June 18, 2021](https://www.reddit.com/r/androiddev/comments/o2ok69/weekly_anything_goes_thread_june_18_2021/) -- [Issues with Android App and Deep Linking](https://www.reddit.com/r/androiddev/comments/o2nswv/issues_with_android_app_and_deep_linking/) +- [Flocking Boids 🐜 in Jetpack Compose Canvas 🚀| Flocking Algorithm [Cohesion, Alignment and Separation]](https://www.reddit.com/r/androiddev/comments/o3t9y7/flocking_boids_in_jetpack_compose_canvas_flocking/) +- [ui setup in android studio](https://www.reddit.com/r/androiddev/comments/o3rsqe/ui_setup_in_android_studio/) +- [Dagger Hilt Implementation Tests on AWS Device Farm](https://www.reddit.com/r/androiddev/comments/o3qoos/dagger_hilt_implementation_tests_on_aws_device/) +- [Can you use an Accessibility service to auto-click buttons in the quick access panel?](https://www.reddit.com/r/androiddev/comments/o3pfdg/can_you_use_an_accessibility_service_to_autoclick/) +- [Jetpack - passing function from parent Composable to child Composable](https://www.reddit.com/r/androiddev/comments/o3nqno/jetpack_passing_function_from_parent_composable/) +- [Caching data from a single API endpoint into multiple room tables. Would it be bad practice to not normalise and instead store the data as is?](https://www.reddit.com/r/androiddev/comments/o3ndjk/caching_data_from_a_single_api_endpoint_into/) +- [The magic of open source](https://www.reddit.com/r/androiddev/comments/o3mprs/the_magic_of_open_source/) +- [Developing for Android Enterprise and individual user](https://www.reddit.com/r/androiddev/comments/o3lfai/developing_for_android_enterprise_and_individual/) +- [Kotlin maybe more Android friendly but Android studio/IntelliJ is not Kotlin friendly enough](https://www.reddit.com/r/androiddev/comments/o3il52/kotlin_maybe_more_android_friendly_but_android/) +- [Implement Achievements feature in App](https://www.reddit.com/r/androiddev/comments/o3gtna/implement_achievements_feature_in_app/) ### *InfoWorld posts* From de84928bd201e80515be5561d7a2f4fb50f1579c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 21 Jun 2021 00:37:48 +0000 Subject: [PATCH 0554/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..8fb0643046 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e5f8facab5..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 22 + + 29 Performance From eb9905eb6c46c0bf70a142acdafd7eb153d1bff0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 21 Jun 2021 02:00:23 +0000 Subject: [PATCH 0555/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 46f69435ee..3f50d30b29 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Flocking Boids 🐜 in Jetpack Compose Canvas 🚀| Flocking Algorithm [Cohesion, Alignment and Separation]](https://www.reddit.com/r/androiddev/comments/o3t9y7/flocking_boids_in_jetpack_compose_canvas_flocking/) -- [ui setup in android studio](https://www.reddit.com/r/androiddev/comments/o3rsqe/ui_setup_in_android_studio/) -- [Dagger Hilt Implementation Tests on AWS Device Farm](https://www.reddit.com/r/androiddev/comments/o3qoos/dagger_hilt_implementation_tests_on_aws_device/) -- [Can you use an Accessibility service to auto-click buttons in the quick access panel?](https://www.reddit.com/r/androiddev/comments/o3pfdg/can_you_use_an_accessibility_service_to_autoclick/) -- [Jetpack - passing function from parent Composable to child Composable](https://www.reddit.com/r/androiddev/comments/o3nqno/jetpack_passing_function_from_parent_composable/) -- [Caching data from a single API endpoint into multiple room tables. Would it be bad practice to not normalise and instead store the data as is?](https://www.reddit.com/r/androiddev/comments/o3ndjk/caching_data_from_a_single_api_endpoint_into/) -- [The magic of open source](https://www.reddit.com/r/androiddev/comments/o3mprs/the_magic_of_open_source/) -- [Developing for Android Enterprise and individual user](https://www.reddit.com/r/androiddev/comments/o3lfai/developing_for_android_enterprise_and_individual/) -- [Kotlin maybe more Android friendly but Android studio/IntelliJ is not Kotlin friendly enough](https://www.reddit.com/r/androiddev/comments/o3il52/kotlin_maybe_more_android_friendly_but_android/) -- [Implement Achievements feature in App](https://www.reddit.com/r/androiddev/comments/o3gtna/implement_achievements_feature_in_app/) +- [A simple app showing how to make a YouTube Shorts/TikTok style video pager](https://www.reddit.com/r/androiddev/comments/o4i7km/a_simple_app_showing_how_to_make_a_youtube/) +- [Linking static libraries to Android.mk - ld undefined symbol is found in the static lib?](https://www.reddit.com/r/androiddev/comments/o4g3r1/linking_static_libraries_to_androidmk_ld/) +- [Android Development: Android App Development From Scratch - free course from udemy](https://www.reddit.com/r/androiddev/comments/o4f0la/android_development_android_app_development_from/) +- [Learn keyboard shortcuts using this plugin HOTKEYS | Jetbrains Link | https://plugins.jetbrains.com/plugin/17027-hotkeys | Open Source | https://github.com/SachinKasaraddi/Hotkeys](https://www.reddit.com/r/androiddev/comments/o4e15j/learn_keyboard_shortcuts_using_this_plugin/) +- [Sharing my podcast with fellow android devs](https://www.reddit.com/r/androiddev/comments/o49pqr/sharing_my_podcast_with_fellow_android_devs/) +- [What concepts should I know to qualify as an beginner level android developer?](https://www.reddit.com/r/androiddev/comments/o49p8v/what_concepts_should_i_know_to_qualify_as_an/) +- [Part 2 - Building Simple Attendance App using Kotlin - Jetpack Navigation Component](https://www.reddit.com/r/androiddev/comments/o45zy7/part_2_building_simple_attendance_app_using/) +- [a wired problem when using Navigation Component](https://www.reddit.com/r/androiddev/comments/o45tbo/a_wired_problem_when_using_navigation_component/) +- [I built this JetQuotes Desktop Client using Compose for Desktop](https://www.reddit.com/r/androiddev/comments/o43gd9/i_built_this_jetquotes_desktop_client_using/) +- [Migrating from AndroidX paging 2 to 3 lets you remove so much boilerplate code, 😳](https://www.reddit.com/r/androiddev/comments/o433oa/migrating_from_androidx_paging_2_to_3_lets_you/) ### *InfoWorld posts* From 490708e665e95ed7c8a4fe7a42e9914f0a965617 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 22 Jun 2021 00:34:13 +0000 Subject: [PATCH 0556/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8fb0643046..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 51 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 27 Performance From cb847ad05793bceae6138e46dfc9064ce8a4372e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 22 Jun 2021 01:50:21 +0000 Subject: [PATCH 0557/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3f50d30b29..8dc5abbe92 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [A simple app showing how to make a YouTube Shorts/TikTok style video pager](https://www.reddit.com/r/androiddev/comments/o4i7km/a_simple_app_showing_how_to_make_a_youtube/) -- [Linking static libraries to Android.mk - ld undefined symbol is found in the static lib?](https://www.reddit.com/r/androiddev/comments/o4g3r1/linking_static_libraries_to_androidmk_ld/) -- [Android Development: Android App Development From Scratch - free course from udemy](https://www.reddit.com/r/androiddev/comments/o4f0la/android_development_android_app_development_from/) -- [Learn keyboard shortcuts using this plugin HOTKEYS | Jetbrains Link | https://plugins.jetbrains.com/plugin/17027-hotkeys | Open Source | https://github.com/SachinKasaraddi/Hotkeys](https://www.reddit.com/r/androiddev/comments/o4e15j/learn_keyboard_shortcuts_using_this_plugin/) -- [Sharing my podcast with fellow android devs](https://www.reddit.com/r/androiddev/comments/o49pqr/sharing_my_podcast_with_fellow_android_devs/) -- [What concepts should I know to qualify as an beginner level android developer?](https://www.reddit.com/r/androiddev/comments/o49p8v/what_concepts_should_i_know_to_qualify_as_an/) -- [Part 2 - Building Simple Attendance App using Kotlin - Jetpack Navigation Component](https://www.reddit.com/r/androiddev/comments/o45zy7/part_2_building_simple_attendance_app_using/) -- [a wired problem when using Navigation Component](https://www.reddit.com/r/androiddev/comments/o45tbo/a_wired_problem_when_using_navigation_component/) -- [I built this JetQuotes Desktop Client using Compose for Desktop](https://www.reddit.com/r/androiddev/comments/o43gd9/i_built_this_jetquotes_desktop_client_using/) -- [Migrating from AndroidX paging 2 to 3 lets you remove so much boilerplate code, 😳](https://www.reddit.com/r/androiddev/comments/o433oa/migrating_from_androidx_paging_2_to_3_lets_you/) +- [Is it possible to use MPI on Android?](https://www.reddit.com/r/androiddev/comments/o58sf2/is_it_possible_to_use_mpi_on_android/) +- [My personal helper library for easy Android development](https://www.reddit.com/r/androiddev/comments/o579b9/my_personal_helper_library_for_easy_android/) +- [Any one facing issues with Android S on Android Studio's emulator?](https://www.reddit.com/r/androiddev/comments/o55odq/any_one_facing_issues_with_android_s_on_android/) +- [Android for Cars [All official development resources]](https://www.reddit.com/r/androiddev/comments/o54kpx/android_for_cars_all_official_development/) +- [Documentation error, ConstraintLayout?](https://www.reddit.com/r/androiddev/comments/o532vk/documentation_error_constraintlayout/) +- [Using Cordova and cant find out how to use Splashscreen without action bar. I was able to remove titlebar but not ActionBar](https://www.reddit.com/r/androiddev/comments/o52ov5/using_cordova_and_cant_find_out_how_to_use/) +- [What are some popular APIs and libraries?](https://www.reddit.com/r/androiddev/comments/o52j2k/what_are_some_popular_apis_and_libraries/) +- [Which of Google's courses should I do, and in what order?](https://www.reddit.com/r/androiddev/comments/o51w56/which_of_googles_courses_should_i_do_and_in_what/) +- [How to import my main app classes into my library module?](https://www.reddit.com/r/androiddev/comments/o506o3/how_to_import_my_main_app_classes_into_my_library/) +- [Google for Games Developer Summit 2021](https://www.reddit.com/r/androiddev/comments/o4zvzv/google_for_games_developer_summit_2021/) ### *InfoWorld posts* From d8e56df5137b090e79b528d9a43081aae19efbeb Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 23 Jun 2021 00:34:22 +0000 Subject: [PATCH 0558/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 31 Performance From f21dac06e723e975b971f270fc44fee707f74126 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 23 Jun 2021 01:41:31 +0000 Subject: [PATCH 0559/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8dc5abbe92..9711104b04 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is it possible to use MPI on Android?](https://www.reddit.com/r/androiddev/comments/o58sf2/is_it_possible_to_use_mpi_on_android/) -- [My personal helper library for easy Android development](https://www.reddit.com/r/androiddev/comments/o579b9/my_personal_helper_library_for_easy_android/) -- [Any one facing issues with Android S on Android Studio's emulator?](https://www.reddit.com/r/androiddev/comments/o55odq/any_one_facing_issues_with_android_s_on_android/) -- [Android for Cars [All official development resources]](https://www.reddit.com/r/androiddev/comments/o54kpx/android_for_cars_all_official_development/) -- [Documentation error, ConstraintLayout?](https://www.reddit.com/r/androiddev/comments/o532vk/documentation_error_constraintlayout/) -- [Using Cordova and cant find out how to use Splashscreen without action bar. I was able to remove titlebar but not ActionBar](https://www.reddit.com/r/androiddev/comments/o52ov5/using_cordova_and_cant_find_out_how_to_use/) -- [What are some popular APIs and libraries?](https://www.reddit.com/r/androiddev/comments/o52j2k/what_are_some_popular_apis_and_libraries/) -- [Which of Google's courses should I do, and in what order?](https://www.reddit.com/r/androiddev/comments/o51w56/which_of_googles_courses_should_i_do_and_in_what/) -- [How to import my main app classes into my library module?](https://www.reddit.com/r/androiddev/comments/o506o3/how_to_import_my_main_app_classes_into_my_library/) -- [Google for Games Developer Summit 2021](https://www.reddit.com/r/androiddev/comments/o4zvzv/google_for_games_developer_summit_2021/) +- [Creating a mini Board Game (Sudoku). which library and language should I go with](https://www.reddit.com/r/androiddev/comments/o62htl/creating_a_mini_board_game_sudoku_which_library/) +- [Need Some App Reviews](https://www.reddit.com/r/androiddev/comments/o60tj1/need_some_app_reviews/) +- [Is there a way to wrap textview breaking at a specific word?](https://www.reddit.com/r/androiddev/comments/o60bbp/is_there_a_way_to_wrap_textview_breaking_at_a/) +- [What's the difference between MoShi (Reflect) and MoShi (Codegen) and which one is better?](https://www.reddit.com/r/androiddev/comments/o5znuy/whats_the_difference_between_moshi_reflect_and/) +- [An effective testing strategy for Android (I)](https://www.reddit.com/r/androiddev/comments/o5yq8j/an_effective_testing_strategy_for_android_i/) +- [How to protect level data from access](https://www.reddit.com/r/androiddev/comments/o5ucv1/how_to_protect_level_data_from_access/) +- [How does google verify developer ID, if an account is created using non-personal company email?](https://www.reddit.com/r/androiddev/comments/o5tyoo/how_does_google_verify_developer_id_if_an_account/) +- [View Model Doesn’t Have To Depend on ViewModel](https://www.reddit.com/r/androiddev/comments/o5t2me/view_model_doesnt_have_to_depend_on_viewmodel/) +- [What's the best JSON to Moshi converter?](https://www.reddit.com/r/androiddev/comments/o5ov7p/whats_the_best_json_to_moshi_converter/) +- [How should I expose a Manager/Controller to other classes?](https://www.reddit.com/r/androiddev/comments/o5nnf7/how_should_i_expose_a_managercontroller_to_other/) ### *InfoWorld posts* From f91c87f9fd3b11593751bed38d3c575b3db5f111 Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Wed, 23 Jun 2021 16:43:46 +0300 Subject: [PATCH 0560/2080] Added info on workflows Updates on github-actions --- .github/workflows/mkdocs.yml | 44 +++++++ .husky/prepare-commit-msg | 4 + .stylelintignore | 9 ++ .stylelintrc.json | 24 ++++ CHANGELOG.md | 67 +---------- Dockerfile | 5 +- README.md | 52 ++++---- default_rules.yaml | 226 +++++++++++++++++++++++++++++++++++ package.json | 34 +++++- 9 files changed, 369 insertions(+), 96 deletions(-) create mode 100644 .github/workflows/mkdocs.yml create mode 100644 .husky/prepare-commit-msg create mode 100644 .stylelintignore create mode 100644 .stylelintrc.json create mode 100644 default_rules.yaml diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml new file mode 100644 index 0000000000..02afdaa859 --- /dev/null +++ b/.github/workflows/mkdocs.yml @@ -0,0 +1,44 @@ +name: Publish docs via GitHub Pages + +on: + push: + branches: + - master + +jobs: + deploy: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + + - name: Upgrade pip + run: | + # install pip=>20.1 to use "pip cache dir" + python3 -m pip install --upgrade pip + - name: Get pip cache dir + id: pip-cache + run: echo "::set-output name=dir::$(pip cache dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ runner.os }}-pip-${{ hashFiles('**/docs/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Install dependencies + run: python3 -m pip install mkdocs mkdocs-material fontawesome_markdown mkdocs-redirects markdown-include + + - run: mkdocs build + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./site diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg new file mode 100644 index 0000000000..1170ca003e --- /dev/null +++ b/.husky/prepare-commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +git cz --hook --non-interactive --type=feat --subject="added new features" || true diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000000..92c6cdf2d6 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,9 @@ +.dependabot +.github +.husky +.idea +docs +images +node_modules +reports +scripts diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000000..5058a90588 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,24 @@ +{ + "extends": "stylelint-config-standard", + "plugins": ["stylelint-order", "stylelint-scss"], + "rules": { + "indentation": 4, + "at-rule-empty-line-before": null, + "color-hex-length": null, + "no-descending-specificity": null, + "rule-empty-line-before": null, + "selector-list-comma-newline-after": null, + "declaration-block-trailing-semicolon": null, + "block-closing-brace-empty-line-before": null, + "number-no-trailing-zeros": null, + "number-leading-zero": null, + "comment-empty-line-before": null, + "length-zero-no-unit": null, + "value-keyword-case": null, + "comment-whitespace-inside": null, + "declaration-empty-line-before": null, + "max-empty-lines": null, + "no-duplicate-selectors": null, + "selector-pseudo-element-colon-notation": null + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 566ba98259..d906abb7a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,71 +1,8 @@ -# Changelog +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-06-23) -## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -**Merged pull requests:** +## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) -- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) -## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) - -## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) - -## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) - -## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) - -**Merged pull requests:** - -- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) -- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) -- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) -- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) -- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) -- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) -- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) -- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/Dockerfile b/Dockerfile index 57d854c316..41a76baf66 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,6 @@ ARG IMAGE_TAG=12-buster ## Setting base image FROM ${IMAGE_SOURCE}:${IMAGE_TAG} -MAINTAINER Alexander Rogalskiy - ## Setting argument variables ARG PYTHON_VERSION=3.8.2 ARG LC_ALL="en_US.UTF-8" @@ -18,6 +16,9 @@ ARG APP_DIR="/usr/src/app" ARG DATA_DIR="/usr/src/data" ## Setting metadata labels +LABEL "name"="android-patterns" +LABEL "version"="$VERSION" + LABEL "com.github.repository"="https://github.com/AlexRogalskiy/android-patterns" LABEL "com.github.homepage"="https://github.com/AlexRogalskiy/android-patterns" LABEL "com.github.maintainer"="Sensiblemetrics, Inc. (https://sensiblemetrics.io)" diff --git a/README.md b/README.md index 9711104b04..181b8e60be 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -248,6 +250,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [Creating a mini Board Game (Sudoku). which library and language should I go with](https://www.reddit.com/r/androiddev/comments/o62htl/creating_a_mini_board_game_sudoku_which_library/) - [Need Some App Reviews](https://www.reddit.com/r/androiddev/comments/o60tj1/need_some_app_reviews/) - [Is there a way to wrap textview breaking at a specific word?](https://www.reddit.com/r/androiddev/comments/o60bbp/is_there_a_way_to_wrap_textview_breaking_at_a/) @@ -258,11 +261,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [View Model Doesn’t Have To Depend on ViewModel](https://www.reddit.com/r/androiddev/comments/o5t2me/view_model_doesnt_have_to_depend_on_viewmodel/) - [What's the best JSON to Moshi converter?](https://www.reddit.com/r/androiddev/comments/o5ov7p/whats_the_best_json_to_moshi_converter/) - [How should I expose a Manager/Controller to other classes?](https://www.reddit.com/r/androiddev/comments/o5nnf7/how_should_i_expose_a_managercontroller_to_other/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -273,6 +278,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* diff --git a/default_rules.yaml b/default_rules.yaml new file mode 100644 index 0000000000..ad03c3370d --- /dev/null +++ b/default_rules.yaml @@ -0,0 +1,226 @@ +--- +profile: + name: 'Default' + description: 'Default Profile. Checks basic syntax.' + includes: + #- recommended_label_rules.yaml +line_rules: + LABEL: + paramSyntaxRegex: /.+/ + # Use defined_label_rules to defined a set of labels for your dockerfile + # In this example, the labels "Vendor","Authoritative_Registry","BZComponent" + # have been defined. A label value is 'valid' if matches the regular + # expression 'valueRegex', otherwise an warn is logged with the string "message" + # at level 'level'. 'reference_url' provides a web link where the user can + # get more information about the rule. + # + defined_namevals: + Name: + valueRegex: /[\w]+/ + message: "Label 'Name' is missing or has invalid format" + level: 'warn' + required: true + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Version: + valueRegex: /[\w.${}()"'\\\/~<>\-?\%:]+/ + message: "Label 'Version' is missing or has invalid format" + level: 'warn' + required: true + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Release: + valueRegex: /[\w.${}()"'\\\/~<>\-?\%:]+/ + message: "Label 'Release' is missing or has invalid format" + level: 'warn' + required: false + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Architecture: + valueRegex: /[\w]*[6,8][4,6]|[.]*86[.]*64/ + message: + "Label 'Architecture' is missing or has invalid format: x86, i386, + x86_64" + level: 'info' + required: false + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Vendor: + valueRegex: /([\w]+).+/ + message: "Label 'Vendor' is missing or has invalid format" + level: 'warn' + required: false + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Url: + valueRegex: /([\w]+).+/ + message: "Label 'Url' is missing or has invalid format" + level: 'warn' + required: false + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + Help: + valueRegex: /([\w]+).+/ + message: "Label 'Help' is missing or has invalid format" + level: 'warn' + required: false + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_recommended_labels_for_your_project' + + FROM: + paramSyntaxRegex: /^[${}\w./\-:]+(:[${}\w.]+)?(-[${}\w.]+)?( as \w+)?$/i + rules: + - label: 'is_latest_tag' + regex: /latest/ + level: 'error' + message: "base image uses 'latest' tag" + description: + "using the 'latest' tag may cause unpredictable builds. It is + recommended that a specific tag is used in the FROM line or *-released + which is the latest supported release." + reference_url: + - 'https://docs.docker.com/engine/reference/builder/' + - '#from' + - label: 'no_tag' + regex: /^[:]/ + level: 'error' + message: 'No tag is used' + description: 'lorem ipsum tar' + reference_url: + - 'https://docs.docker.com/engine/reference/builder/' + - '#from' + MAINTAINER: + paramSyntaxRegex: /.+/ + rules: [] + RUN: + paramSyntaxRegex: /.+/ + rules: + - label: 'no_yum_clean_all' + regex: /yum(?!.+clean all|.+\.repo|-config|\.conf)/ + level: 'warn' + message: 'yum clean all is not used' + description: + 'the yum cache will remain in this layer making the layer + unnecessarily large' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'yum_update_all' + regex: /yum(.+update all|.+upgrade|.+update)/ + level: 'info' + message: + 'updating the entire base image may add unnecessary size to the + container' + description: + 'update the entire base image may add unnecessary size to the + container' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'no_dnf_clean_all' + regex: /dnf(?!.+clean all|.+\.repo)/g + level: 'warn' + message: 'dnf clean all is not used' + description: + 'the dnf cache will remain in this layer making the layer + unnecessarily large' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'no_rvm_cleanup_all' + regex: /rvm install(?!.+cleanup all)/g + level: 'warn' + message: 'rvm cleanup is not used' + description: + 'the rvm cache will remain in this layer making the layer + unnecessarily large' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'no_gem_clean_all' + regex: /gem install(?!.+cleanup|.+\rvm cleanup all)/g + level: 'warn' + message: 'gem cleanup all is not used' + description: + 'the gem cache will remain in this layer making the layer + unnecessarily large' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'no_apt-get_clean' + regex: /apt-get install(?!.+clean)/g + level: 'info' + message: 'apt-get clean is not used' + description: + 'the apt-get cache will remain in this layer making the layer + unnecessarily large' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '_clear_packaging_caches_and_temporary_package_downloads' + - label: 'privileged_run_container' + regex: /privileged/ + level: 'warn' + message: 'a privileged run container is allowed access to host devices' + description: 'Does this run need to be privileged?' + reference_url: + - 'http://docs.docker.com/engine/reference/run/#' + - 'runtime-privilege-and-linux-capabilities' + - label: 'installing_ssh' + regex: /openssh-server/ + level: 'warn' + message: 'installing SSH in a container is not recommended' + description: 'Do you really need SSH in this image?' + reference_url: 'https://github.com/jpetazzo/nsenter' + - label: 'no_ampersand_usage' + regex: / ; / + level: 'info' + message: 'using ; instead of &&' + description: + 'RUN do_1 && do_2: The ampersands change the resulting evaluation into + do_1 and then do_2 only if do_1 was successful.' + reference_url: + - 'http://docs.projectatomic.io/container-best-practices/#' + - '#_using_semi_colons_vs_double_ampersands' + EXPOSE: + paramSyntaxRegex: /^[\d-\s\w/\\]+$/ + rules: [] + ENV: + paramSyntaxRegex: /^[\w-$/\\=\"[\]{}@:,'`\t. ]+$/ + rules: [] + ADD: + paramSyntaxRegex: /^~?([\w-.~:/?#\[\]\\\/*@!$&'()*+,;=.{}"]+[\s]*)+$/ + COPY: + paramSyntaxRegex: /.+/ + rules: [] + ENTRYPOINT: + paramSyntaxRegex: /.+/ + rules: [] + VOLUME: + paramSyntaxRegex: /.+/ + rules: [] + USER: + paramSyntaxRegex: /^[a-z0-9_][a-z0-9_-]{0,40}$/ + rules: [] + WORKDIR: + paramSyntaxRegex: /^~?[\w\d-\/.{}$\/:]+[\s]*$/ + rules: [] + ONBUILD: + paramSyntaxRegex: /.+/ + rules: [] +required_instructions: + - instruction: 'EXPOSE' + count: 1 + level: 'info' + message: "There is no 'EXPOSE' instruction" + description: + 'Without exposed ports how will the service of the container be accessed?' + reference_url: + - 'https://docs.docker.com/engine/reference/builder/' + - '#expose' diff --git a/package.json b/package.json index b813df7c03..254ec52724 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,14 @@ "husky:install": "husky install", "postinstall": "npm run husky:install", "remark": "remark -q -f .", + "commit": "git-cz", "format": "prettier --single-quote --write **/*.{json,yaml,yml}", "format:md": "remark-preset-davidtheclark --format", "format:check": "prettier --check **/*.{json,yaml,yml}", "lint:md": "remark-preset-davidtheclark", "lint:json": "jsonlint ./package.json --quiet", + "lint:style": "stylelint --color --disable-default-ignores --allow-empty-input verbose **/*.{css,scss,sass}", + "lint:docker": "dockerfile_lint -r default_rules.yaml", "lint:staged": "lint-staged --no-stash --allow-empty", "pretty": "pretty-quick --staged --pattern '!test/tests/lint/**'", "license": "license-checker --json > licenses.json", @@ -22,18 +25,30 @@ "link-check-dev-server": "repo-link-check -c config/config.yml -r http://localhost:3000", "link-check-exclude": "repo-link-check -c config/config.yml -s filesystem -u only", "build-image": "docker build -f Dockerfile --tag android-patterns .", - "lint:all": "npm run lint:md && npm run lint:json", + "postversion": "git push --follow-tags && npm publish --access public", + "bump:patch": "npm version patch --no-git-tag-version", + "bump:minor": "npm version minor --no-git-tag-version", + "bump:major": "npm version major --no-git-tag-version", + "test:license": "license-checker --production --summary --unknown --onlyAllow=\"Apache-2.0;BSD;ISC;MIT;GPL-3.0;CC-BY-3.0;CC0-1.0;\"", + "lint:all": "npm run lint:md && npm run lint:json && npm run lint:style && npm run lint:docker", "format:all": "npm run format && npm run format:md", - "check:all": "npm run format:check", - "all": "npm run format:all && npm run lint:all && npm run pretty" + "check:all": "npm run pretty && npm run format:check", + "test:all": "npm run test:license", + "all": "npm run format:all && npm run lint:all && npm run check:all && npm run test:all" }, "devDependencies": { "conventional-changelog-cli": "^2.0.0", + "dockerfile_lint": "0.3.4", "husky": "^5.0.8", + "git-cz": "^4.1.0", "jsonlint": "^1.6.3", "license-checker": "^25.0.1", "lint-staged": "^10.1.6", "markdown-link-check": "^3.8.6", + "stylelint": "~13.13.1", + "stylelint-config-standard": "~22.0.0", + "stylelint-order": "^4.0.0", + "stylelint-scss": "^3.18.0", "prettier": "^2.1.2", "pretty-quick": "^3.1.0", "remark-cli": "^9.0.0", @@ -48,14 +63,14 @@ "url": "git+https://github.com/AlexRogalskiy/spark-patterns.git" }, "publishConfig": { + "registry": "https://registry.npmjs.org/", + "tag": "latest", "access": "public" }, "engines": { "node": ">= 12.x" }, - "keywords": [ - "android patterns" - ], + "keywords": ["android patterns"], "maintainers": [ { "name": "Alexander Rogalskiy", @@ -68,6 +83,13 @@ "email": "hi@nullables.io" } ], + "husky": { + "hooks": { + "pre-push": "npm run check:all", + "prepare-commit-msg": "git cz --hook --non-interactive --type=feat --subject=\"added new features\" || true", + "pre-commit": "npm run lint:staged && npm run all" + } + }, "bugs": { "url": "https://github.com/AlexRogalskiy/spark-patterns/issues" }, From c1c4af5a2acf3829e60a21f6d232f7d2fc6c8746 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Wed, 23 Jun 2021 13:45:11 +0000 Subject: [PATCH 0561/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 181b8e60be..33496d9261 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From a8c212f70905f36ce8654c97705354b8718c87cd Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 24 Jun 2021 00:28:35 +0000 Subject: [PATCH 0562/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 25 Performance From e28022b9ea034d2acda244513a6c9a60351183cb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 24 Jun 2021 01:40:44 +0000 Subject: [PATCH 0563/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 33496d9261..3aef0cec2e 100644 --- a/README.md +++ b/README.md @@ -248,18 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [Creating a mini Board Game (Sudoku). which library and language should I go with](https://www.reddit.com/r/androiddev/comments/o62htl/creating_a_mini_board_game_sudoku_which_library/) -- [Need Some App Reviews](https://www.reddit.com/r/androiddev/comments/o60tj1/need_some_app_reviews/) -- [Is there a way to wrap textview breaking at a specific word?](https://www.reddit.com/r/androiddev/comments/o60bbp/is_there_a_way_to_wrap_textview_breaking_at_a/) -- [What's the difference between MoShi (Reflect) and MoShi (Codegen) and which one is better?](https://www.reddit.com/r/androiddev/comments/o5znuy/whats_the_difference_between_moshi_reflect_and/) -- [An effective testing strategy for Android (I)](https://www.reddit.com/r/androiddev/comments/o5yq8j/an_effective_testing_strategy_for_android_i/) -- [How to protect level data from access](https://www.reddit.com/r/androiddev/comments/o5ucv1/how_to_protect_level_data_from_access/) -- [How does google verify developer ID, if an account is created using non-personal company email?](https://www.reddit.com/r/androiddev/comments/o5tyoo/how_does_google_verify_developer_id_if_an_account/) -- [View Model Doesn’t Have To Depend on ViewModel](https://www.reddit.com/r/androiddev/comments/o5t2me/view_model_doesnt_have_to_depend_on_viewmodel/) -- [What's the best JSON to Moshi converter?](https://www.reddit.com/r/androiddev/comments/o5ov7p/whats_the_best_json_to_moshi_converter/) -- [How should I expose a Manager/Controller to other classes?](https://www.reddit.com/r/androiddev/comments/o5nnf7/how_should_i_expose_a_managercontroller_to_other/) - +- [The dangers of JSON + default values](https://www.reddit.com/r/androiddev/comments/o6qgb0/the_dangers_of_json_default_values/) +- [Android Ad blocker that blocks ads in chrome?](https://www.reddit.com/r/androiddev/comments/o6q5ly/android_ad_blocker_that_blocks_ads_in_chrome/) +- [How to Handle Errors in MVVM?](https://www.reddit.com/r/androiddev/comments/o6nnlg/how_to_handle_errors_in_mvvm/) +- [Android 12 SplashScreen api - Compatible below Android 12?](https://www.reddit.com/r/androiddev/comments/o6kkzk/android_12_splashscreen_api_compatible_below/) +- [FYI - Latest emulator update (30.7.4) seems to have broken things on macOS Catalina](https://www.reddit.com/r/androiddev/comments/o6k4dz/fyi_latest_emulator_update_3074_seems_to_have/) +- [Soon we can add multi-quantity purchases inside apps](https://www.reddit.com/r/androiddev/comments/o6gudo/soon_we_can_add_multiquantity_purchases_inside/) +- [Soon we can add multi-quantity purchases inside apps using Play Billing](https://www.reddit.com/r/androiddev/comments/o6go2f/soon_we_can_add_multiquantity_purchases_inside/) +- [Create a wait-timeout with MutableSharedFlow](https://www.reddit.com/r/androiddev/comments/o6fyx8/create_a_waittimeout_with_mutablesharedflow/) +- [Are you supposed to load an online image again when using a shared element transition?](https://www.reddit.com/r/androiddev/comments/o6fdxo/are_you_supposed_to_load_an_online_image_again/) +- [ANR metric is fallen drastically on June 14 on Play console without any change.](https://www.reddit.com/r/androiddev/comments/o6dv7f/anr_metric_is_fallen_drastically_on_june_14_on/) ### *InfoWorld posts* From a0b275525cc17956f826927051e31442736e157f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 24 Jun 2021 01:40:47 +0000 Subject: [PATCH 0564/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3aef0cec2e..37e9e70a5b 100644 --- a/README.md +++ b/README.md @@ -263,7 +263,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -274,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From cb009841e7492a4543fb9dfa319796eecd0984aa Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 25 Jun 2021 00:39:10 +0000 Subject: [PATCH 0565/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 55 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 31 Performance From 456c6a8983fef096184a7d07d5c2b13caf78ddf0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 25 Jun 2021 01:56:23 +0000 Subject: [PATCH 0566/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 37e9e70a5b..f762177f8c 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [The dangers of JSON + default values](https://www.reddit.com/r/androiddev/comments/o6qgb0/the_dangers_of_json_default_values/) -- [Android Ad blocker that blocks ads in chrome?](https://www.reddit.com/r/androiddev/comments/o6q5ly/android_ad_blocker_that_blocks_ads_in_chrome/) -- [How to Handle Errors in MVVM?](https://www.reddit.com/r/androiddev/comments/o6nnlg/how_to_handle_errors_in_mvvm/) -- [Android 12 SplashScreen api - Compatible below Android 12?](https://www.reddit.com/r/androiddev/comments/o6kkzk/android_12_splashscreen_api_compatible_below/) -- [FYI - Latest emulator update (30.7.4) seems to have broken things on macOS Catalina](https://www.reddit.com/r/androiddev/comments/o6k4dz/fyi_latest_emulator_update_3074_seems_to_have/) -- [Soon we can add multi-quantity purchases inside apps](https://www.reddit.com/r/androiddev/comments/o6gudo/soon_we_can_add_multiquantity_purchases_inside/) -- [Soon we can add multi-quantity purchases inside apps using Play Billing](https://www.reddit.com/r/androiddev/comments/o6go2f/soon_we_can_add_multiquantity_purchases_inside/) -- [Create a wait-timeout with MutableSharedFlow](https://www.reddit.com/r/androiddev/comments/o6fyx8/create_a_waittimeout_with_mutablesharedflow/) -- [Are you supposed to load an online image again when using a shared element transition?](https://www.reddit.com/r/androiddev/comments/o6fdxo/are_you_supposed_to_load_an_online_image_again/) -- [ANR metric is fallen drastically on June 14 on Play console without any change.](https://www.reddit.com/r/androiddev/comments/o6dv7f/anr_metric_is_fallen_drastically_on_june_14_on/) +- [Why we need both flutter and jetpack compose?](https://www.reddit.com/r/androiddev/comments/o79toz/why_we_need_both_flutter_and_jetpack_compose/) +- [Dumb, dumb question. Does anyone have a clear guide on how to set up a proper Mvvm?](https://www.reddit.com/r/androiddev/comments/o78y4q/dumb_dumb_question_does_anyone_have_a_clear_guide/) +- [Vertical Recycler view of variable height items issues](https://www.reddit.com/r/androiddev/comments/o784gy/vertical_recycler_view_of_variable_height_items/) +- [Setting up "United States tax info"](https://www.reddit.com/r/androiddev/comments/o7733w/setting_up_united_states_tax_info/) +- [Open source apps that use Android architecture components?](https://www.reddit.com/r/androiddev/comments/o76vm2/open_source_apps_that_use_android_architecture/) +- [Want to develop (or use existing) custom video streaming app. Cost? Advice?](https://www.reddit.com/r/androiddev/comments/o75gad/want_to_develop_or_use_existing_custom_video/) +- [Hey guys, checkout this android library that animates your text like its being hand written. https://github.com/sarnavakonar/TextWriter Dont forget to give it a star ⭐](https://www.reddit.com/r/androiddev/comments/o75aq3/hey_guys_checkout_this_android_library_that/) +- [Microsoft is bringing Android apps to Windows 11 with Amazon’s Appstore](https://www.reddit.com/r/androiddev/comments/o74732/microsoft_is_bringing_android_apps_to_windows_11/) +- [Microsoft is bringing Android apps to Windows 11 with Amazon’s Appstore - The Verge](https://www.reddit.com/r/androiddev/comments/o73t2k/microsoft_is_bringing_android_apps_to_windows_11/) +- [Kotlin 1.5.20 Released](https://www.reddit.com/r/androiddev/comments/o73mu7/kotlin_1520_released/) ### *InfoWorld posts* From 2d69c4256631dfd50f89e186ba09757f8b884af1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 26 Jun 2021 00:34:41 +0000 Subject: [PATCH 0567/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..62dd326fa6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 60 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 25 Performance From a626571922becb2c02dd2790713abcc33a6794f5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 26 Jun 2021 01:45:00 +0000 Subject: [PATCH 0568/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f762177f8c..b10b053380 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Why we need both flutter and jetpack compose?](https://www.reddit.com/r/androiddev/comments/o79toz/why_we_need_both_flutter_and_jetpack_compose/) -- [Dumb, dumb question. Does anyone have a clear guide on how to set up a proper Mvvm?](https://www.reddit.com/r/androiddev/comments/o78y4q/dumb_dumb_question_does_anyone_have_a_clear_guide/) -- [Vertical Recycler view of variable height items issues](https://www.reddit.com/r/androiddev/comments/o784gy/vertical_recycler_view_of_variable_height_items/) -- [Setting up "United States tax info"](https://www.reddit.com/r/androiddev/comments/o7733w/setting_up_united_states_tax_info/) -- [Open source apps that use Android architecture components?](https://www.reddit.com/r/androiddev/comments/o76vm2/open_source_apps_that_use_android_architecture/) -- [Want to develop (or use existing) custom video streaming app. Cost? Advice?](https://www.reddit.com/r/androiddev/comments/o75gad/want_to_develop_or_use_existing_custom_video/) -- [Hey guys, checkout this android library that animates your text like its being hand written. https://github.com/sarnavakonar/TextWriter Dont forget to give it a star ⭐](https://www.reddit.com/r/androiddev/comments/o75aq3/hey_guys_checkout_this_android_library_that/) -- [Microsoft is bringing Android apps to Windows 11 with Amazon’s Appstore](https://www.reddit.com/r/androiddev/comments/o74732/microsoft_is_bringing_android_apps_to_windows_11/) -- [Microsoft is bringing Android apps to Windows 11 with Amazon’s Appstore - The Verge](https://www.reddit.com/r/androiddev/comments/o73t2k/microsoft_is_bringing_android_apps_to_windows_11/) -- [Kotlin 1.5.20 Released](https://www.reddit.com/r/androiddev/comments/o73mu7/kotlin_1520_released/) +- [I remember i was able to backup my memos but for some reason i can't now. How can i backup my memos ? It's important for me and i'm going to format my phone a short time later](https://www.reddit.com/r/androiddev/comments/o80qxi/i_remember_i_was_able_to_backup_my_memos_but_for/) +- [Been out of Android dev for a few years. What's the most important things for me to read up on?](https://www.reddit.com/r/androiddev/comments/o7zao5/been_out_of_android_dev_for_a_few_years_whats_the/) +- [I made a free. open source note taking application!](https://www.reddit.com/r/androiddev/comments/o7z6yd/i_made_a_free_open_source_note_taking_application/) +- [There appear to be ways to circumvent the user-controlled accessibility settings of font size and display size. Do you all do this?](https://www.reddit.com/r/androiddev/comments/o7xw31/there_appear_to_be_ways_to_circumvent_the/) +- [Google to Android devs: Support more form factors, get a higher sales cut](https://www.reddit.com/r/androiddev/comments/o7vzl0/google_to_android_devs_support_more_form_factors/) +- [Is it possible to create an app like ( OnePlus's ZenMode)?](https://www.reddit.com/r/androiddev/comments/o7us1o/is_it_possible_to_create_an_app_like_onepluss/) +- [What is Google's policy on accepting in app payments that aren't via the play store](https://www.reddit.com/r/androiddev/comments/o7u9lq/what_is_googles_policy_on_accepting_in_app/) +- [clean architecture _without_ using reactive streams](https://www.reddit.com/r/androiddev/comments/o7s009/clean_architecture_without_using_reactive_streams/) +- [Isn't filtering app reviews against Google Play policy? Like prompting a user "Do you like the app", if yes redirect to Play Store page, if no do nothing/show a form?](https://www.reddit.com/r/androiddev/comments/o7rm5k/isnt_filtering_app_reviews_against_google_play/) +- [What's the best way to learn about the Canvas?](https://www.reddit.com/r/androiddev/comments/o7pedv/whats_the_best_way_to_learn_about_the_canvas/) ### *InfoWorld posts* From a7b3d395044285ff24bfac04d4d47e5ea3715e7d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 27 Jun 2021 00:41:07 +0000 Subject: [PATCH 0569/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 62dd326fa6..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 26 Performance From f4e12d487cf7b221bd791c1a802f87a55d14b44f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 27 Jun 2021 01:55:48 +0000 Subject: [PATCH 0570/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b10b053380..6b277d665b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I remember i was able to backup my memos but for some reason i can't now. How can i backup my memos ? It's important for me and i'm going to format my phone a short time later](https://www.reddit.com/r/androiddev/comments/o80qxi/i_remember_i_was_able_to_backup_my_memos_but_for/) -- [Been out of Android dev for a few years. What's the most important things for me to read up on?](https://www.reddit.com/r/androiddev/comments/o7zao5/been_out_of_android_dev_for_a_few_years_whats_the/) -- [I made a free. open source note taking application!](https://www.reddit.com/r/androiddev/comments/o7z6yd/i_made_a_free_open_source_note_taking_application/) -- [There appear to be ways to circumvent the user-controlled accessibility settings of font size and display size. Do you all do this?](https://www.reddit.com/r/androiddev/comments/o7xw31/there_appear_to_be_ways_to_circumvent_the/) -- [Google to Android devs: Support more form factors, get a higher sales cut](https://www.reddit.com/r/androiddev/comments/o7vzl0/google_to_android_devs_support_more_form_factors/) -- [Is it possible to create an app like ( OnePlus's ZenMode)?](https://www.reddit.com/r/androiddev/comments/o7us1o/is_it_possible_to_create_an_app_like_onepluss/) -- [What is Google's policy on accepting in app payments that aren't via the play store](https://www.reddit.com/r/androiddev/comments/o7u9lq/what_is_googles_policy_on_accepting_in_app/) -- [clean architecture _without_ using reactive streams](https://www.reddit.com/r/androiddev/comments/o7s009/clean_architecture_without_using_reactive_streams/) -- [Isn't filtering app reviews against Google Play policy? Like prompting a user "Do you like the app", if yes redirect to Play Store page, if no do nothing/show a form?](https://www.reddit.com/r/androiddev/comments/o7rm5k/isnt_filtering_app_reviews_against_google_play/) -- [What's the best way to learn about the Canvas?](https://www.reddit.com/r/androiddev/comments/o7pedv/whats_the_best_way_to_learn_about_the_canvas/) +- [Are there any tips or tricks to make sure your google account does not get banned?](https://www.reddit.com/r/androiddev/comments/o8nlku/are_there_any_tips_or_tricks_to_make_sure_your/) +- [How can I detect if a bluetooth device is a PC?](https://www.reddit.com/r/androiddev/comments/o8nj6k/how_can_i_detect_if_a_bluetooth_device_is_a_pc/) +- [I'd like to disconnect the camera on my Nokia 8 from the power button. Is this possible?](https://www.reddit.com/r/androiddev/comments/o8m1fi/id_like_to_disconnect_the_camera_on_my_nokia_8/) +- [Android UI idea 💡](https://www.reddit.com/r/androiddev/comments/o8lwey/android_ui_idea/) +- [[LOOKING FOR MENTOR] Back at coding...again](https://www.reddit.com/r/androiddev/comments/o8lhza/looking_for_mentor_back_at_codingagain/) +- [Is Raccoon better than wireMock for Android UI test?](https://www.reddit.com/r/androiddev/comments/o8laht/is_raccoon_better_than_wiremock_for_android_ui/) +- [CircleCI Gradle Plug-in?](https://www.reddit.com/r/androiddev/comments/o8kz84/circleci_gradle_plugin/) +- [Do you use SharedPreferences?](https://www.reddit.com/r/androiddev/comments/o8iak5/do_you_use_sharedpreferences/) +- [Need help from an experienced android developer.](https://www.reddit.com/r/androiddev/comments/o8fjek/need_help_from_an_experienced_android_developer/) +- [Heyy everyone, if someone is looking for offline database solution in Flutter, sqfentity is working really well for me, so here is an example on how to set it up 😊](https://www.reddit.com/r/androiddev/comments/o8f3pr/heyy_everyone_if_someone_is_looking_for_offline/) ### *InfoWorld posts* From a4e4905abc21bf4f8368ac39f971b46119efe932 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 28 Jun 2021 00:38:34 +0000 Subject: [PATCH 0571/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 27 Performance From c982e0114c70c8d2f352f938e2dd617b79199b58 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 28 Jun 2021 01:52:32 +0000 Subject: [PATCH 0572/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6b277d665b..1998a8b48b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Are there any tips or tricks to make sure your google account does not get banned?](https://www.reddit.com/r/androiddev/comments/o8nlku/are_there_any_tips_or_tricks_to_make_sure_your/) -- [How can I detect if a bluetooth device is a PC?](https://www.reddit.com/r/androiddev/comments/o8nj6k/how_can_i_detect_if_a_bluetooth_device_is_a_pc/) -- [I'd like to disconnect the camera on my Nokia 8 from the power button. Is this possible?](https://www.reddit.com/r/androiddev/comments/o8m1fi/id_like_to_disconnect_the_camera_on_my_nokia_8/) -- [Android UI idea 💡](https://www.reddit.com/r/androiddev/comments/o8lwey/android_ui_idea/) -- [[LOOKING FOR MENTOR] Back at coding...again](https://www.reddit.com/r/androiddev/comments/o8lhza/looking_for_mentor_back_at_codingagain/) -- [Is Raccoon better than wireMock for Android UI test?](https://www.reddit.com/r/androiddev/comments/o8laht/is_raccoon_better_than_wiremock_for_android_ui/) -- [CircleCI Gradle Plug-in?](https://www.reddit.com/r/androiddev/comments/o8kz84/circleci_gradle_plugin/) -- [Do you use SharedPreferences?](https://www.reddit.com/r/androiddev/comments/o8iak5/do_you_use_sharedpreferences/) -- [Need help from an experienced android developer.](https://www.reddit.com/r/androiddev/comments/o8fjek/need_help_from_an_experienced_android_developer/) -- [Heyy everyone, if someone is looking for offline database solution in Flutter, sqfentity is working really well for me, so here is an example on how to set it up 😊](https://www.reddit.com/r/androiddev/comments/o8f3pr/heyy_everyone_if_someone_is_looking_for_offline/) +- [Is there a Apple Media Service alternative in android?](https://www.reddit.com/r/androiddev/comments/o98vck/is_there_a_apple_media_service_alternative_in/) +- [Guys, should I include the previous version (APK) of an app in the latest release? What happens if I don't include it?](https://www.reddit.com/r/androiddev/comments/o95kl2/guys_should_i_include_the_previous_version_apk_of/) +- [How to deal with an App requires Root access getting negative reviews by users who don't have Root?](https://www.reddit.com/r/androiddev/comments/o93nd7/how_to_deal_with_an_app_requires_root_access/) +- [How much time is it taking for app reviews nowadays?](https://www.reddit.com/r/androiddev/comments/o93h1m/how_much_time_is_it_taking_for_app_reviews/) +- [Is there any way to have a secure storage for an app, that can be read and written only by the app, and cannot be read/written to by anyone else, including root?](https://www.reddit.com/r/androiddev/comments/o916hy/is_there_any_way_to_have_a_secure_storage_for_an/) +- [Asking to Android Developers](https://www.reddit.com/r/androiddev/comments/o8sx21/asking_to_android_developers/) +- [Is there a way to read Heart Rate history data similarly to how one reads steps count on Wear OS?](https://www.reddit.com/r/androiddev/comments/o8s8ry/is_there_a_way_to_read_heart_rate_history_data/) +- [Level up your espresso tests with Raccoon!](https://www.reddit.com/r/androiddev/comments/o8s21x/level_up_your_espresso_tests_with_raccoon/) +- [Fling behaviour adjustment are now so much simpler with flinger 🙌](https://www.reddit.com/r/androiddev/comments/o8r9cb/fling_behaviour_adjustment_are_now_so_much/) +- [Admob estimated revenue not showing after account being assessed](https://www.reddit.com/r/androiddev/comments/o8pxfk/admob_estimated_revenue_not_showing_after_account/) ### *InfoWorld posts* From dfb38cde7d16223fa3d7998c4293c816e497951d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 29 Jun 2021 00:36:05 +0000 Subject: [PATCH 0573/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..ac8d8f5dfe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 34 Performance From 3088a8b48b86e16cd47e262375a7e744f2b90a3f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 29 Jun 2021 01:47:21 +0000 Subject: [PATCH 0574/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1998a8b48b..5047e854b3 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is there a Apple Media Service alternative in android?](https://www.reddit.com/r/androiddev/comments/o98vck/is_there_a_apple_media_service_alternative_in/) -- [Guys, should I include the previous version (APK) of an app in the latest release? What happens if I don't include it?](https://www.reddit.com/r/androiddev/comments/o95kl2/guys_should_i_include_the_previous_version_apk_of/) -- [How to deal with an App requires Root access getting negative reviews by users who don't have Root?](https://www.reddit.com/r/androiddev/comments/o93nd7/how_to_deal_with_an_app_requires_root_access/) -- [How much time is it taking for app reviews nowadays?](https://www.reddit.com/r/androiddev/comments/o93h1m/how_much_time_is_it_taking_for_app_reviews/) -- [Is there any way to have a secure storage for an app, that can be read and written only by the app, and cannot be read/written to by anyone else, including root?](https://www.reddit.com/r/androiddev/comments/o916hy/is_there_any_way_to_have_a_secure_storage_for_an/) -- [Asking to Android Developers](https://www.reddit.com/r/androiddev/comments/o8sx21/asking_to_android_developers/) -- [Is there a way to read Heart Rate history data similarly to how one reads steps count on Wear OS?](https://www.reddit.com/r/androiddev/comments/o8s8ry/is_there_a_way_to_read_heart_rate_history_data/) -- [Level up your espresso tests with Raccoon!](https://www.reddit.com/r/androiddev/comments/o8s21x/level_up_your_espresso_tests_with_raccoon/) -- [Fling behaviour adjustment are now so much simpler with flinger 🙌](https://www.reddit.com/r/androiddev/comments/o8r9cb/fling_behaviour_adjustment_are_now_so_much/) -- [Admob estimated revenue not showing after account being assessed](https://www.reddit.com/r/androiddev/comments/o8pxfk/admob_estimated_revenue_not_showing_after_account/) +- [Scope Storage Myths](https://www.reddit.com/r/androiddev/comments/o9wyuj/scope_storage_myths/) +- [How much to pay a musician whose music I'm using on my app?](https://www.reddit.com/r/androiddev/comments/o9wvya/how_much_to_pay_a_musician_whose_music_im_using/) +- [Google releases WifiRttLocator App as Wifi-RTT demo on Play Store](https://www.reddit.com/r/androiddev/comments/o9v4rj/google_releases_wifirttlocator_app_as_wifirtt/) +- [ViewModel as a variable in XML](https://www.reddit.com/r/androiddev/comments/o9s0fy/viewmodel_as_a_variable_in_xml/) +- [How to cancel slow emission when using RxJava](https://www.reddit.com/r/androiddev/comments/o9r5yv/how_to_cancel_slow_emission_when_using_rxjava/) +- [Play Dev ID requirements + 2-Step Verification [Google's Android Developers Blog]](https://www.reddit.com/r/androiddev/comments/o9qjtq/play_dev_id_requirements_2step_verification/) +- [Compose: Displaying Snackbars](https://www.reddit.com/r/androiddev/comments/o9lc6w/compose_displaying_snackbars/) +- [Weekly Who's Hiring Thread - June 28, 2021](https://www.reddit.com/r/androiddev/comments/o9jrpv/weekly_whos_hiring_thread_june_28_2021/) +- [How feasible is it to be able to display tweets or Reddit posts in a mobile app?](https://www.reddit.com/r/androiddev/comments/o9jn80/how_feasible_is_it_to_be_able_to_display_tweets/) +- [New Android Dev Sanity Check](https://www.reddit.com/r/androiddev/comments/o9j7ai/new_android_dev_sanity_check/) ### *InfoWorld posts* From 0001a879c8d5382ccf9c1bf6dfc131f59d8d0318 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 30 Jun 2021 00:39:39 +0000 Subject: [PATCH 0575/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ac8d8f5dfe..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 30 Performance From 6805c22d25d4cc6dacbe8c1aa36e03c25e1f2ee4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 30 Jun 2021 01:53:48 +0000 Subject: [PATCH 0576/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5047e854b3..f98849e96b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Scope Storage Myths](https://www.reddit.com/r/androiddev/comments/o9wyuj/scope_storage_myths/) -- [How much to pay a musician whose music I'm using on my app?](https://www.reddit.com/r/androiddev/comments/o9wvya/how_much_to_pay_a_musician_whose_music_im_using/) -- [Google releases WifiRttLocator App as Wifi-RTT demo on Play Store](https://www.reddit.com/r/androiddev/comments/o9v4rj/google_releases_wifirttlocator_app_as_wifirtt/) -- [ViewModel as a variable in XML](https://www.reddit.com/r/androiddev/comments/o9s0fy/viewmodel_as_a_variable_in_xml/) -- [How to cancel slow emission when using RxJava](https://www.reddit.com/r/androiddev/comments/o9r5yv/how_to_cancel_slow_emission_when_using_rxjava/) -- [Play Dev ID requirements + 2-Step Verification [Google's Android Developers Blog]](https://www.reddit.com/r/androiddev/comments/o9qjtq/play_dev_id_requirements_2step_verification/) -- [Compose: Displaying Snackbars](https://www.reddit.com/r/androiddev/comments/o9lc6w/compose_displaying_snackbars/) -- [Weekly Who's Hiring Thread - June 28, 2021](https://www.reddit.com/r/androiddev/comments/o9jrpv/weekly_whos_hiring_thread_june_28_2021/) -- [How feasible is it to be able to display tweets or Reddit posts in a mobile app?](https://www.reddit.com/r/androiddev/comments/o9jn80/how_feasible_is_it_to_be_able_to_display_tweets/) -- [New Android Dev Sanity Check](https://www.reddit.com/r/androiddev/comments/o9j7ai/new_android_dev_sanity_check/) +- [Google Play developers will need to enable 2-Step Verification and meet identity requirements](https://www.reddit.com/r/androiddev/comments/oajtge/google_play_developers_will_need_to_enable_2step/) +- [Continue Kotlin or start React Native?](https://www.reddit.com/r/androiddev/comments/oahwuf/continue_kotlin_or_start_react_native/) +- [Kotlin Features Survey Edition #2](https://www.reddit.com/r/androiddev/comments/oahv68/kotlin_features_survey_edition_2/) +- [Beginning to work on Android game/app that grabs wearable data from Samsung health and gamifies metrics. As a new developer who just downloaded the Android dev kit from Google, what is a good place to learn on making my app? Solid documentation?](https://www.reddit.com/r/androiddev/comments/oad32v/beginning_to_work_on_android_gameapp_that_grabs/) +- [Suggestion to handle translations](https://www.reddit.com/r/androiddev/comments/oac2ov/suggestion_to_handle_translations/) +- [I want to implement Achievements features like Nike Run club app. Any suggestions or tutorial which can be followed.](https://www.reddit.com/r/androiddev/comments/oabb41/i_want_to_implement_achievements_features_like/) +- [Getting device width info for lots of devices](https://www.reddit.com/r/androiddev/comments/oaan4p/getting_device_width_info_for_lots_of_devices/) +- [Whatsapp image picker replica on Github](https://www.reddit.com/r/androiddev/comments/oaal33/whatsapp_image_picker_replica_on_github/) +- [Providing AssistedInject supported ViewModel for Composable using Hilt](https://www.reddit.com/r/androiddev/comments/oa9x2m/providing_assistedinject_supported_viewmodel_for/) +- [Data Binding](https://www.reddit.com/r/androiddev/comments/oa8pua/data_binding/) ### *InfoWorld posts* From 10a76eeeced1899fee88d16a566aaf783befca52 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 1 Jul 2021 00:38:28 +0000 Subject: [PATCH 0577/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 29 Performance From 9b0fa790bf6661c50341b27b191c6276ee4c9490 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 1 Jul 2021 01:52:42 +0000 Subject: [PATCH 0578/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f98849e96b..ad350cf12f 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Google Play developers will need to enable 2-Step Verification and meet identity requirements](https://www.reddit.com/r/androiddev/comments/oajtge/google_play_developers_will_need_to_enable_2step/) -- [Continue Kotlin or start React Native?](https://www.reddit.com/r/androiddev/comments/oahwuf/continue_kotlin_or_start_react_native/) -- [Kotlin Features Survey Edition #2](https://www.reddit.com/r/androiddev/comments/oahv68/kotlin_features_survey_edition_2/) -- [Beginning to work on Android game/app that grabs wearable data from Samsung health and gamifies metrics. As a new developer who just downloaded the Android dev kit from Google, what is a good place to learn on making my app? Solid documentation?](https://www.reddit.com/r/androiddev/comments/oad32v/beginning_to_work_on_android_gameapp_that_grabs/) -- [Suggestion to handle translations](https://www.reddit.com/r/androiddev/comments/oac2ov/suggestion_to_handle_translations/) -- [I want to implement Achievements features like Nike Run club app. Any suggestions or tutorial which can be followed.](https://www.reddit.com/r/androiddev/comments/oabb41/i_want_to_implement_achievements_features_like/) -- [Getting device width info for lots of devices](https://www.reddit.com/r/androiddev/comments/oaan4p/getting_device_width_info_for_lots_of_devices/) -- [Whatsapp image picker replica on Github](https://www.reddit.com/r/androiddev/comments/oaal33/whatsapp_image_picker_replica_on_github/) -- [Providing AssistedInject supported ViewModel for Composable using Hilt](https://www.reddit.com/r/androiddev/comments/oa9x2m/providing_assistedinject_supported_viewmodel_for/) -- [Data Binding](https://www.reddit.com/r/androiddev/comments/oa8pua/data_binding/) +- [How do you get paid for your app / game?](https://www.reddit.com/r/androiddev/comments/ob4dmt/how_do_you_get_paid_for_your_app_game/) +- [Setting multiple icon on app & can change from with dark mode](https://www.reddit.com/r/androiddev/comments/ob3wu1/setting_multiple_icon_on_app_can_change_from_with/) +- [New Core Splashscreen 1.0.0-alpha01 release - backwards compability for the new Splash Screen APIs down to API 23](https://www.reddit.com/r/androiddev/comments/ob3o5j/new_core_splashscreen_100alpha01_release/) +- [I Created a Clone of the Tesla App](https://www.reddit.com/r/androiddev/comments/ob2wpr/i_created_a_clone_of_the_tesla_app/) +- [Android Studio 4.2.2 available](https://www.reddit.com/r/androiddev/comments/ob2uuk/android_studio_422_available/) +- [How to publish update to playstore while not forcing autoupdate for exiting users?](https://www.reddit.com/r/androiddev/comments/ob2dhz/how_to_publish_update_to_playstore_while_not/) +- [Signing a previously signed application with a new keystore file?](https://www.reddit.com/r/androiddev/comments/ob08la/signing_a_previously_signed_application_with_a/) +- [SUGGEST A COURSE!](https://www.reddit.com/r/androiddev/comments/oaydr1/suggest_a_course/) +- [Is there a way to have an animated launch / splash screen using SVGs](https://www.reddit.com/r/androiddev/comments/oav6qa/is_there_a_way_to_have_an_animated_launch_splash/) +- [Why simple app with Jetpack Compose is 5x times slower than without?](https://www.reddit.com/r/androiddev/comments/oatiur/why_simple_app_with_jetpack_compose_is_5x_times/) ### *InfoWorld posts* From e288c4a3566fd4b611efd021062cd6d7b191013d Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Fri, 2 Jul 2021 00:13:31 +0300 Subject: [PATCH 0579/2080] Added info on workflows Updates on github-actions --- .env | 6 +++++- .github/workflows/mkdocs.yml | 8 ++++---- CHANGELOG.md | 2 +- Dockerfile | 22 +++++++++++++--------- appveyor.yml | 17 +++++++++++++++++ docker-compose.yml | 7 ++++--- package.json | 6 +++++- scripts/build-docs.sh | 6 +++--- 8 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 appveyor.yml diff --git a/.env b/.env index eafa9168b7..ffcb1b1946 100644 --- a/.env +++ b/.env @@ -1,4 +1,8 @@ ##################################################### ###### General settings ##################################################### -APP_HOSTNAME=android-patterns +APP_HOST_NAME=android-patterns +APP_CONTAINER_NAME=android-patterns +APP_IMAGE_NAME=android-patterns + +APP_DATA_DIR=./data diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index 02afdaa859..c542b588e6 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -11,15 +11,15 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Setup Python + - name: Setup Python 3.9 uses: actions/setup-python@v2 with: - python-version: '3.8' + python-version: '3.9' - name: Upgrade pip run: | # install pip=>20.1 to use "pip cache dir" - python3 -m pip install --upgrade pip + python3 -m pip install --upgrade pip --quiet - name: Get pip cache dir id: pip-cache run: echo "::set-output name=dir::$(pip cache dir)" @@ -33,7 +33,7 @@ jobs: ${{ runner.os }}-pip- - name: Install dependencies - run: python3 -m pip install mkdocs mkdocs-material fontawesome_markdown mkdocs-redirects markdown-include + run: python3 -m pip install mkdocs mkdocs-material fontawesome_markdown mkdocs-redirects markdown-include --quiet - run: mkdocs build diff --git a/CHANGELOG.md b/CHANGELOG.md index d906abb7a9..f53162210e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-06-23) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-01) diff --git a/Dockerfile b/Dockerfile index 41a76baf66..dcd390734d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,12 @@ FROM ${IMAGE_SOURCE}:${IMAGE_TAG} ## Setting argument variables ARG PYTHON_VERSION=3.8.2 + ARG LC_ALL="en_US.UTF-8" + +ARG NAME="android-patterns" ARG VERSION="0.0.0-dev" + ARG BUILD_DATE="$(git rev-parse --short HEAD)" ARG VCS_REF="$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")" @@ -16,7 +20,7 @@ ARG APP_DIR="/usr/src/app" ARG DATA_DIR="/usr/src/data" ## Setting metadata labels -LABEL "name"="android-patterns" +LABEL "name"="$NAME" LABEL "version"="$VERSION" LABEL "com.github.repository"="https://github.com/AlexRogalskiy/android-patterns" @@ -27,7 +31,7 @@ LABEL "com.github.version"="$VERSION" LABEL "com.github.build-date"="$BUILD_DATE" LABEL "com.github.vcs-ref"="$VCS_REF" -LABEL "com.github.name"="android-patterns" +LABEL "com.github.name"="$NAME" LABEL "com.github.description"="Android Design Patterns" ## Setting environment variables @@ -53,16 +57,16 @@ RUN cd /tmp && curl -O https://www.python.org/ftp/python/${PYTHON_VERSION}/Pytho RUN apt update -RUN pip3.8 install --upgrade pip +RUN pip3.8 install --upgrade pip --quiet -RUN pip3.8 install mkdocs --no-cache-dir -RUN pip3.8 install mkdocs-material --no-cache-dir -RUN pip3.8 install markdown-include --no-cache-dir -RUN pip3.8 install mkdocs-techdocs-core --no-cache-dir -RUN pip3.8 install click-man --no-cache-dir +RUN pip3.8 install mkdocs --no-cache-dir --quiet +RUN pip3.8 install mkdocs-material --no-cache-dir --quiet +RUN pip3.8 install markdown-include --no-cache-dir --quiet +RUN pip3.8 install mkdocs-techdocs-core --no-cache-dir --quiet +RUN pip3.8 install click-man --no-cache-dir --quiet ## click-man --target path/to/man/pages mkdocs -RUN pip3.8 install cookiecutter --no-cache-dir && \ +RUN pip3.8 install cookiecutter --no-cache-dir --quiet && \ apt remove -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev g++ python-pip python-dev && \ rm -rf /var/cache/apt/* /tmp/Python-${PYTHON_VERSION} diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000000..66f71b623a --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,17 @@ +environment: + matrix: + - nodejs_version: '14' + +install: + - ps: Install-Product node $env:nodejs_version + - npm i -g npm@latest + - npm ci + +build: false + +test_script: + - node --version + - npm --version + - npm run all + +version: '{build}' diff --git a/docker-compose.yml b/docker-compose.yml index 3374d4aaae..8d16a1aaba 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,8 +2,9 @@ version: '3.9' services: app: - container_name: android-patterns - hostname: '$APP_HOSTNAME' + container_name: ${APP_CONTAINER_NAME:-'android-patterns'} + image: ${APP_IMAGE_NAME:-'android-patterns'} + hostname: ${APP_HOST_NAME:-'android-patterns'} build: context: './' dockerfile: Dockerfile @@ -15,7 +16,7 @@ services: volume: nocopy: true - type: bind - source: ./data + source: ${APP_DATA_DIR:-./data} target: /usr/src/data healthcheck: test: ['CMD-SHELL', 'nc', '-vz', 'localhost', '8000'] diff --git a/package.json b/package.json index 254ec52724..6effefb841 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,10 @@ "license": "license-checker --json > licenses.json", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "markdown": "markdown-link-check ./README.md ./SECURITY.md", + "git:diff": "git --no-pager diff --exit-code --stat HEAD", + "git:log": "git log -1 --format='format:%H' HEAD", + "git:clean": "git stash && git clean -fdX", + "git:ls": "git cat-file -p HEAD && git ls-tree -r HEAD", "link-check": "repo-link-check -c config/config.yml -s filesystem -u", "link-check-diff": "repo-link-check -c config/config.yml", "link-check-dev-server": "repo-link-check -c config/config.yml -r http://localhost:3000", @@ -70,7 +74,7 @@ "engines": { "node": ">= 12.x" }, - "keywords": ["android patterns"], + "keywords": ["android design patterns"], "maintainers": [ { "name": "Alexander Rogalskiy", diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index fc6b7962c3..43bb949531 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -14,9 +14,9 @@ wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get- python $TMPDIR/get-pip.py ## Install project dependencies -python -m pip install mkdocs -python -m pip install mkdocs-material -python -m pip install markdown-include +python -m pip install mkdocs --quiet +python -m pip install mkdocs-material --quiet +python -m pip install markdown-include --quiet ## Start server locally python -m mkdocs serve --verbose --dirtyreload From 5b2767df0ad2c800bce5dff3272e209195d02399 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 1 Jul 2021 21:15:30 +0000 Subject: [PATCH 0580/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f53162210e..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-01) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 98a0d52cf4459c84c15b11776d5642d6b8c19888 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 2 Jul 2021 00:36:04 +0000 Subject: [PATCH 0581/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 30 Performance From bd9955cf9aaa637ffc55953cc84351923ef012b3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 2 Jul 2021 01:51:38 +0000 Subject: [PATCH 0582/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ad350cf12f..b169650828 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do you get paid for your app / game?](https://www.reddit.com/r/androiddev/comments/ob4dmt/how_do_you_get_paid_for_your_app_game/) -- [Setting multiple icon on app & can change from with dark mode](https://www.reddit.com/r/androiddev/comments/ob3wu1/setting_multiple_icon_on_app_can_change_from_with/) -- [New Core Splashscreen 1.0.0-alpha01 release - backwards compability for the new Splash Screen APIs down to API 23](https://www.reddit.com/r/androiddev/comments/ob3o5j/new_core_splashscreen_100alpha01_release/) -- [I Created a Clone of the Tesla App](https://www.reddit.com/r/androiddev/comments/ob2wpr/i_created_a_clone_of_the_tesla_app/) -- [Android Studio 4.2.2 available](https://www.reddit.com/r/androiddev/comments/ob2uuk/android_studio_422_available/) -- [How to publish update to playstore while not forcing autoupdate for exiting users?](https://www.reddit.com/r/androiddev/comments/ob2dhz/how_to_publish_update_to_playstore_while_not/) -- [Signing a previously signed application with a new keystore file?](https://www.reddit.com/r/androiddev/comments/ob08la/signing_a_previously_signed_application_with_a/) -- [SUGGEST A COURSE!](https://www.reddit.com/r/androiddev/comments/oaydr1/suggest_a_course/) -- [Is there a way to have an animated launch / splash screen using SVGs](https://www.reddit.com/r/androiddev/comments/oav6qa/is_there_a_way_to_have_an_animated_launch_splash/) -- [Why simple app with Jetpack Compose is 5x times slower than without?](https://www.reddit.com/r/androiddev/comments/oatiur/why_simple_app_with_jetpack_compose_is_5x_times/) +- [How do I create non-rectangular views](https://www.reddit.com/r/androiddev/comments/obzl63/how_do_i_create_nonrectangular_views/) +- [Question about naming my mobile game](https://www.reddit.com/r/androiddev/comments/obyvc4/question_about_naming_my_mobile_game/) +- [Navigation Component fragment artifact now contains a prebuilt implementation of a two pane layout](https://www.reddit.com/r/androiddev/comments/obyi4c/navigation_component_fragment_artifact_now/) +- [repeatOnLifecycle API design story](https://www.reddit.com/r/androiddev/comments/oby5h8/repeatonlifecycle_api_design_story/) +- [Should I drop $4K on my game advertisement? Or will it be just money burnt on nothing.](https://www.reddit.com/r/androiddev/comments/obxdzl/should_i_drop_4k_on_my_game_advertisement_or_will/) +- [Device Verification methods?](https://www.reddit.com/r/androiddev/comments/obwtqd/device_verification_methods/) +- [Mac M1 Android Emulator](https://www.reddit.com/r/androiddev/comments/obvqxg/mac_m1_android_emulator/) +- [Were Support libraries e.g. v4 all replaced by AndroidX?](https://www.reddit.com/r/androiddev/comments/obv1z0/were_support_libraries_eg_v4_all_replaced_by/) +- [Released Jetpack Compose first release candidate (v1.0.0-rc01)](https://www.reddit.com/r/androiddev/comments/obqitv/released_jetpack_compose_first_release_candidate/) +- [I would like advice from the members here on the subject of publishing and having an app searchable in the Google store.](https://www.reddit.com/r/androiddev/comments/obq2zv/i_would_like_advice_from_the_members_here_on_the/) ### *InfoWorld posts* From 013b1296d0c2a386961ea0db2b077a2fc9ba0a90 Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Fri, 2 Jul 2021 17:09:12 +0300 Subject: [PATCH 0583/2080] Added info on workflows Updates on github-actions --- .github/codeql/codeql-config.yml | 7 ++++ .github/workflows/codeql-analysis.yml | 34 ++++++++++++++++ .github/workflows/lint.yml | 37 +++++++++++++++++ .github/workflows/mkdocs.yml | 21 +++++++++- CHANGELOG.md | 2 +- Dockerfile | 17 ++++++-- README.md | 58 +++++++++++++++------------ 7 files changed, 143 insertions(+), 33 deletions(-) create mode 100644 .github/codeql/codeql-config.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/lint.yml diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 0000000000..de726199f6 --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,7 @@ +name: "CodeQL config" + +paths-ignore: + - '**/config/**' + - '**/vendor/**' + - '**/reports/**' + - '**/scripts/**' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000000..4421b061ef --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,34 @@ +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + schedule: + - cron: '43 1 * * 2' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'python', 'javascript' ] + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + config-file: ./.github/codeql/codeql-config.yml + queries: security-extended + setup-python-dependencies: false + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..1cceab0955 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,37 @@ +name: Run linters + +on: + workflow_dispatch: + push: + +env: + MAX_LINE_LENGTH: 110 + +jobs: + lint: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + submodules: true + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: 3.9 + architecture: x64 + + - name: Install flake8 + run: | + pip install flake8 pycodestyle + + - name: Lint with flake8 + run: | + cd archivebox + # one pass for show-stopper syntax errors or undefined names + flake8 . --count --show-source --statistics + # flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude ./ckan/include/rjsmin.py,./contrib/cookiecutter/* + # one pass for small stylistic things + flake8 . --count --max-line-length="$MAX_LINE_LENGTH" --statistics + # flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics diff --git a/.github/workflows/mkdocs.yml b/.github/workflows/mkdocs.yml index c542b588e6..0efd8fa3c2 100644 --- a/.github/workflows/mkdocs.yml +++ b/.github/workflows/mkdocs.yml @@ -5,24 +5,35 @@ on: branches: - master +env: + PYTHONIOENCODING: utf-8 + PYTHONLEGACYWINDOWSSTDIO: utf-8 + USE_COLOR: False + jobs: deploy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 + with: + submodules: true + fetch-depth: 1 - name: Setup Python 3.9 uses: actions/setup-python@v2 with: python-version: '3.9' + architecture: x64 - name: Upgrade pip run: | # install pip=>20.1 to use "pip cache dir" python3 -m pip install --upgrade pip --quiet + - name: Get pip cache dir id: pip-cache - run: echo "::set-output name=dir::$(pip cache dir)" + run: | + echo "::set-output name=dir::$(pip cache dir)" - name: Cache dependencies uses: actions/cache@v2 @@ -35,7 +46,13 @@ jobs: - name: Install dependencies run: python3 -m pip install mkdocs mkdocs-material fontawesome_markdown mkdocs-redirects markdown-include --quiet - - run: mkdocs build + - name: Build mkdocs + run: mkdocs build + + - name: Directory listing for debugging + run: | + pwd + ls - name: Deploy uses: peaceiris/actions-gh-pages@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index f53162210e..18910acc15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-01) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-02) diff --git a/Dockerfile b/Dockerfile index dcd390734d..d45db1c618 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,12 +35,21 @@ LABEL "com.github.name"="$NAME" LABEL "com.github.description"="Android Design Patterns" ## Setting environment variables -ENV APP_DIR $APP_DIR -ENV DATA_DIR $DATA_DIR -ENV LC_ALL $LC_ALL -ENV LANG $LC_ALL ENV PYTHON_VERSION $PYTHON_VERSION +ENV APP_DIR=$APP_DIR \ + DATA_DIR=$DATA_DIR + +# System-level base config +ENV TZ=UTC \ + LANGUAGE=en_US:en \ + LC_ALL=$LC_ALL \ + LANG=$LC_ALL \ + PYTHONIOENCODING=UTF-8 \ + PYTHONUNBUFFERED=1 \ + DEBIAN_FRONTEND=noninteractive \ + APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 + ## Mounting volumes VOLUME ["$APP_DIR"] diff --git a/README.md b/README.md index ad350cf12f..5ed9104488 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -248,21 +250,24 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [How do you get paid for your app / game?](https://www.reddit.com/r/androiddev/comments/ob4dmt/how_do_you_get_paid_for_your_app_game/) - [Setting multiple icon on app & can change from with dark mode](https://www.reddit.com/r/androiddev/comments/ob3wu1/setting_multiple_icon_on_app_can_change_from_with/) -- [New Core Splashscreen 1.0.0-alpha01 release - backwards compability for the new Splash Screen APIs down to API 23](https://www.reddit.com/r/androiddev/comments/ob3o5j/new_core_splashscreen_100alpha01_release/) +- [New Core Splashscreen 1.0.0-alpha01 release - backwards compability for the new Splash Screen APIs down to API 23](https://www.reddit.com/r/androiddev/comments/ob3o5j/new_core_splashscreen\_100alpha01\_release/) - [I Created a Clone of the Tesla App](https://www.reddit.com/r/androiddev/comments/ob2wpr/i_created_a_clone_of_the_tesla_app/) -- [Android Studio 4.2.2 available](https://www.reddit.com/r/androiddev/comments/ob2uuk/android_studio_422_available/) +- [Android Studio 4.2.2 available](https://www.reddit.com/r/androiddev/comments/ob2uuk/android_studio\_422\_available/) - [How to publish update to playstore while not forcing autoupdate for exiting users?](https://www.reddit.com/r/androiddev/comments/ob2dhz/how_to_publish_update_to_playstore_while_not/) - [Signing a previously signed application with a new keystore file?](https://www.reddit.com/r/androiddev/comments/ob08la/signing_a_previously_signed_application_with_a/) - [SUGGEST A COURSE!](https://www.reddit.com/r/androiddev/comments/oaydr1/suggest_a_course/) - [Is there a way to have an animated launch / splash screen using SVGs](https://www.reddit.com/r/androiddev/comments/oav6qa/is_there_a_way_to_have_an_animated_launch_splash/) -- [Why simple app with Jetpack Compose is 5x times slower than without?](https://www.reddit.com/r/androiddev/comments/oatiur/why_simple_app_with_jetpack_compose_is_5x_times/) +- [Why simple app with Jetpack Compose is 5x times slower than without?](https://www.reddit.com/r/androiddev/comments/oatiur/why_simple_app_with_jetpack_compose_is\_5x_times/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -273,6 +278,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* From 7c18654a5dc6b2a7c1a1259104d4dd833d9095b4 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Fri, 2 Jul 2021 14:14:45 +0000 Subject: [PATCH 0584/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index f74b6a7c8d..14d02796ca 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From a96734616aaaddc815d884e125971344916e48be Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Fri, 2 Jul 2021 18:03:41 +0300 Subject: [PATCH 0585/2080] Added info on workflows Updates on github-actions --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/enforce-labels.yml | 3 ++- .github/workflows/lint.yml | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4421b061ef..5a38c79e51 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'python', 'javascript' ] + language: [ 'javascript' ] steps: - name: Checkout repository diff --git a/.github/workflows/enforce-labels.yml b/.github/workflows/enforce-labels.yml index 17274a6f52..654bd92e6c 100644 --- a/.github/workflows/enforce-labels.yml +++ b/.github/workflows/enforce-labels.yml @@ -3,11 +3,12 @@ name: Enforce PR labels for release drafter on: pull_request: types: [ labeled, unlabeled, opened, edited, synchronize ] + jobs: enforce-label: runs-on: ubuntu-latest steps: - uses: yogevbd/enforce-label-action@2.2.1 with: - REQUIRED_LABELS_ANY: "bug,enhancement,internal,no-changelog" + REQUIRED_LABELS_ANY: "bug,enhancement,internal,no-changelog,sync" REQUIRED_LABELS_ANY_DESCRIPTION: "Select at least one label ['bug','enhancement','internal','no-changelog'] for the PR" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1cceab0955..9e351326a0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -28,7 +28,6 @@ jobs: - name: Lint with flake8 run: | - cd archivebox # one pass for show-stopper syntax errors or undefined names flake8 . --count --show-source --statistics # flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude ./ckan/include/rjsmin.py,./contrib/cookiecutter/* From c5d46cb4b07b56f77657489687a22e365ac9466b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 2 Jul 2021 15:05:05 +0000 Subject: [PATCH 0586/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18910acc15..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-02) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 2908e7a2c6c9d41aae94af64488b8a8c0bddc763 Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Fri, 2 Jul 2021 18:48:16 +0300 Subject: [PATCH 0587/2080] Added info on workflows Updates on github-actions --- README.md | 48 +++++++++++++++++++++++++----------------------- lgtm.yml | 15 +++++++++++++++ 2 files changed, 40 insertions(+), 23 deletions(-) create mode 100644 lgtm.yml diff --git a/README.md b/README.md index 14d02796ca..f74b6a7c8d 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* diff --git a/lgtm.yml b/lgtm.yml new file mode 100644 index 0000000000..634eb7238b --- /dev/null +++ b/lgtm.yml @@ -0,0 +1,15 @@ +extraction: + javascript: + index: + exclude: + - .dependabot + - .github + - .husky + - config + - docs + - images + - node_modules + - reports + - scripts + filters: + - exclude: '**/*.bundle.js' From f21c65c6a3f8b7fa5a5cda448b137278884bd021 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Fri, 2 Jul 2021 15:49:38 +0000 Subject: [PATCH 0588/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index f74b6a7c8d..14d02796ca 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From f892aae4fbdd3180870237d997ea28a84d689baf Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 3 Jul 2021 00:36:16 +0000 Subject: [PATCH 0589/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..5578a5bfb7 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 62 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 25 Performance From 89e5049805cc2d318b9d75c25a38f5d3444a3cfe Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 3 Jul 2021 01:43:46 +0000 Subject: [PATCH 0590/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 14d02796ca..e7b5a8e81c 100644 --- a/README.md +++ b/README.md @@ -248,18 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [How do I create non-rectangular views](https://www.reddit.com/r/androiddev/comments/obzl63/how_do_i_create_nonrectangular_views/) -- [Question about naming my mobile game](https://www.reddit.com/r/androiddev/comments/obyvc4/question_about_naming_my_mobile_game/) -- [Navigation Component fragment artifact now contains a prebuilt implementation of a two pane layout](https://www.reddit.com/r/androiddev/comments/obyi4c/navigation_component_fragment_artifact_now/) -- [repeatOnLifecycle API design story](https://www.reddit.com/r/androiddev/comments/oby5h8/repeatonlifecycle_api_design_story/) -- [Should I drop $4K on my game advertisement? Or will it be just money burnt on nothing.](https://www.reddit.com/r/androiddev/comments/obxdzl/should_i_drop\_4k_on_my_game_advertisement_or_will/) -- [Device Verification methods?](https://www.reddit.com/r/androiddev/comments/obwtqd/device_verification_methods/) -- [Mac M1 Android Emulator](https://www.reddit.com/r/androiddev/comments/obvqxg/mac_m1\_android_emulator/) -- [Were Support libraries e.g. v4 all replaced by AndroidX?](https://www.reddit.com/r/androiddev/comments/obv1z0/were_support_libraries_eg_v4\_all_replaced_by/) -- [Released Jetpack Compose first release candidate (v1.0.0-rc01)](https://www.reddit.com/r/androiddev/comments/obqitv/released_jetpack_compose_first_release_candidate/) -- [I would like advice from the members here on the subject of publishing and having an app searchable in the Google store.](https://www.reddit.com/r/androiddev/comments/obq2zv/i_would_like_advice_from_the_members_here_on_the/) - +- [Google Play Publishing](https://www.reddit.com/r/androiddev/comments/oco6mi/google_play_publishing/) +- [I want to become an android dev](https://www.reddit.com/r/androiddev/comments/ocn3au/i_want_to_become_an_android_dev/) +- [Does Lens Studio use ARKit/ARCore?](https://www.reddit.com/r/androiddev/comments/oclwu6/does_lens_studio_use_arkitarcore/) +- [Android Jetpack Compose (Conditional Navigation)](https://www.reddit.com/r/androiddev/comments/ochklq/android_jetpack_compose_conditional_navigation/) +- [Wireless debugging: Are you repeatedly typing the full addresses in the console?](https://www.reddit.com/r/androiddev/comments/ochju8/wireless_debugging_are_you_repeatedly_typing_the/) +- [Here is a beginner guide to learn Reactivate Programing with kotlin](https://www.reddit.com/r/androiddev/comments/ocgz7f/here_is_a_beginner_guide_to_learn_reactivate/) +- [Fatal Exception: androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching](https://www.reddit.com/r/androiddev/comments/ocgkvz/fatal_exception/) +- [I’m using “managed publishing.” I submitted a build to production for review. I have not published the build. Why are my subsequent Closed Beta submissions saying “superseded”?](https://www.reddit.com/r/androiddev/comments/ocgea4/im_using_managed_publishing_i_submitted_a_build/) +- [What technologies should my team learn in order to implement an in-app messaging system?](https://www.reddit.com/r/androiddev/comments/ocg710/what_technologies_should_my_team_learn_in_order/) +- [[noob] Do I need android studio if I am going to run the app on a physical device (my smartphone)? I already have installed VSvode & node.js. (react native)](https://www.reddit.com/r/androiddev/comments/ocf56r/noob_do_i_need_android_studio_if_i_am_going_to/) ### *InfoWorld posts* From 79c1f2da9c82c49d4f09d243727945a6ba1b5741 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 3 Jul 2021 01:43:49 +0000 Subject: [PATCH 0591/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index e7b5a8e81c..9ef0c65718 100644 --- a/README.md +++ b/README.md @@ -263,7 +263,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -274,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From d8d3e79d7a7d74c1e77c3b7441a89701f6c28dcc Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Sat, 3 Jul 2021 09:10:36 +0300 Subject: [PATCH 0592/2080] Added info on workflows Updates on github-actions --- .github/workflows/repo-traffic.yml | 35 ++++++++++++++++ CHANGELOG.md | 67 +----------------------------- mkdocs.yml | 14 ++++--- scripts/build-docs.sh | 20 +++++++-- 4 files changed, 61 insertions(+), 75 deletions(-) create mode 100644 .github/workflows/repo-traffic.yml diff --git a/.github/workflows/repo-traffic.yml b/.github/workflows/repo-traffic.yml new file mode 100644 index 0000000000..c9ff50025a --- /dev/null +++ b/.github/workflows/repo-traffic.yml @@ -0,0 +1,35 @@ +name: Repository Traffic + +on: + workflow_dispatch: + schedule: + # runs once a week on sunday + - cron: "55 23 * * 0" + +jobs: + # This workflow contains a single job called "traffic" + traffic: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + with: + ref: "master" + + # Calculates traffic and clones and stores in CSV file + - name: GitHub traffic + uses: sangonzal/repository-traffic-action@v0.1.4 + env: + TRAFFIC_ACTION_TOKEN: ${{ secrets.TRAFFIC_ACTION_TOKEN }} + + # Commits files to repository + - name: Commit changes + uses: EndBug/add-and-commit@v4 + with: + author_name: AccTextBot + message: "GitHub traffic" + add: "./traffic/*" + ref: "master" diff --git a/CHANGELOG.md b/CHANGELOG.md index 566ba98259..c82cdd5856 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,71 +1,8 @@ -# Changelog +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-03) -## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -**Merged pull requests:** +## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) -- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) -## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) - -## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) - -## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) - -## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) - -[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) - -**Merged pull requests:** - -- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) -- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) -- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) -- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) -- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) -- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) -- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) -- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) -- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) -- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) -- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) -- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) -- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/mkdocs.yml b/mkdocs.yml index 3c33c8d6ba..fb0668e4b9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -39,14 +39,16 @@ extra: link: 'https://github.com/AlexRogalskiy/android-patterns' markdown_extensions: - - markdown.extensions.admonition - - markdown.extensions.codehilite: + - admonition + - codehilite: linenums: true use_pygments: false - - markdown.extensions.def_list - - markdown.extensions.footnotes - - markdown.extensions.meta - - markdown.extensions.toc: + guess_lang: false + - def_list + - footnotes + - tables + - meta + - toc: permalink: true pages: diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index 43bb949531..6aabdb3d91 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -1,9 +1,21 @@ #!/usr/bin/env bash -set -e -set -o errexit -set -o pipefail -set -o nounset +umask 0077 + +TRUE_REG='^([tT][rR][uU][eE]|[yY]|[yY][eE][sS]|1)$' +FALSE_REG='^([fF][aA][lL][sS][eE]|[nN]|[nN][oO]|0)$' + +DEBUG_SCRIPT=${DEBUG_SCRIPT:-false} +if [[ $DEBUG_SCRIPT =~ $TRUE_REG ]]; then + set -o xtrace +fi + +STRICT_SCRIPT=${STRICT_SCRIPT:-false} +if [[ $STRICT_SCRIPT =~ $TRUE_REG ]]; then + set -o errexit + set -o nounset + set -o pipefail +fi ## Change working directory BASE_DIR=$(dirname $0)/.. From b61449c3bd211d578512d16afbd368c066233718 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Sat, 3 Jul 2021 06:12:23 +0000 Subject: [PATCH 0593/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c82cdd5856..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-03) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 440d8daf7d3086d9a1b37502cd8c672733c9c5d9 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sat, 3 Jul 2021 06:22:03 +0000 Subject: [PATCH 0594/2080] GitHub traffic --- traffic/clones.csv | 16 ++++++++++++++++ traffic/plots.png | Bin 0 -> 44906 bytes traffic/views.csv | 9 +++++++++ 3 files changed, 25 insertions(+) create mode 100644 traffic/clones.csv create mode 100644 traffic/plots.png create mode 100644 traffic/views.csv diff --git a/traffic/clones.csv b/traffic/clones.csv new file mode 100644 index 0000000000..5e2f5ebe9f --- /dev/null +++ b/traffic/clones.csv @@ -0,0 +1,16 @@ +_date,total_clones,unique_clones +2021-06-19,18,17 +2021-06-20,87,32 +2021-06-21,83,31 +2021-06-22,85,32 +2021-06-23,189,41 +2021-06-24,92,37 +2021-06-25,108,38 +2021-06-26,66,35 +2021-06-27,96,30 +2021-06-28,86,26 +2021-06-29,100,35 +2021-06-30,110,32 +2021-07-01,233,49 +2021-07-02,288,46 +2021-07-03,86,15 diff --git a/traffic/plots.png b/traffic/plots.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3e646a31fb4f06fc9592fb8985046d12efa162 GIT binary patch literal 44906 zcmb@ubyQYc^e&8g00j|)20=tA=`KM*8bw0s?w0OQN&sq`SMjL%QLc?>YDW z#`lf!{c-=ep22{_yIFg$wdS1bnR7nR_WAfh7z2#}4G9SeLsaCQG!oKnHzcH6b9YhT zH>~|rOYn`;N>JWP#!T1BR>MLE>Ai;47h^LkV*|}+HaZrT24<$rbnqX|Gkq(oFP2>N z^d|pv0iBtJ9(`LxSu6~4?~90nB@z;*2IA{h24A`X5>oD{=)1SFcClO2wstbsxb=Hx zmA2yIsGi~BD#u>Z;rFAc6KSNp?(1NhCw_ZIdCv7vDyrl0KW`sNv5Dz~*HEQcF;pg6 z?Jm{2dI+H*i^&bFIK`(2vQ@C3ECrEM)MZLz3BJ8c>hX{t595h5>NEJ^E~!{JmK%KY zcqk-<_6G6UT{1G{M8qc^!NIpbB0gzo6S+l+_(Vhd7ZMiY69y(}B(#4A!ly#=L|pvi z$N%MFS|ny~VTB5%%#Y+KjZIFbNM{~C4M5!KT@s})zqIt@`1tt9NGvl#l}uVBv*}9D zh=_>V#($riQhGE`EnPZQtl7a|S_x@la`Mi^3r-G>HBJJ=Gk=c(<#G{X^r`h(Vhr&?qA8XR0)Od1XUID5SKccoYkrICnv?1FGr?Ys!D`a78zauiE6d*fd#*E-?54W>&Lx!$-`T5qNWenE^vO1z%lI8SrN z?vdePIYbf;?fXJn)Z{2>D?t6lA7v0!mg<}P#IJztP6U}H~pe$VdgEu$^#n@suAS&E*Xe#ZGkr6u5LR+ULl zEa&CnpyWTOsH^rLRB7E*RaIZSc)`PhE-!`k{Q2{?jt=VJW-P(+prZ2fiVDt|nVG`+ za##@F*+*TrHy(X8@u;(yhSJ%iVz86_{fxa6X&LLO$gm(sNy%M9Lx%-9*5Tpd@`{Qp zn|nn?MWXNDHxCXzAta39Z>Ij?mzDLZ%yjxWH#ecBrKPhs8LV|6mY~MwI3-f$FfE}< z9VhG_@5z*<)8$^Poui{n`iG|<;(6NT)SR1*@@hW62+aGOb?XuWaJ7yyP77i!T9yav!JmBW$cJ@Zx z8!Ia3q|&u&nAUN+?isBciWc1Y9~2ZO*J~$PYHaE--~4=r+js65%v5v2s>^14{AxSv z9I>^v)f%7jISZfHi34FHN=hrKs0ZG@_WkNINDx=R9!!DH$$u`(2GU0w3h($cM&8bUXJLU!pq z)z{fMIp*f(Nw7=5e*MB)J43`QNef!GsJV<6T@tcZxhlt%u75-nk+20xX~lCQjFe(x zR*ZDlFV7AtoX(i6H%FFJ0(oy2iw9fn&cr1Nco!NDQ-5=J$LF+o@%i)Tu2@dyUQ1;a zm41B|+26807=&zd3kwZ@+)?pa4Y9DPWfRrvTqLnwXKS7D`CNEzE)OuDa@+j#jE*i~ zd$OzuhUe*3DAL7X*6o^`G^C^0A1?jKQxZHpk+c2f z@hV&T62swzwf+=s9i9H)pI$vDBg5zT^6chf_GWFmid|GxbZfE<^L4fw9Ykl5C99j# z-=B#oVhSsM#Y$nh87LSU_Kqb*7^$6RptIpfeke*wA;ZDJ85^05<9K_L*?i%hrj`~X zGxK7DC%QxeZ(NPz$$kr=S-$PAYBZ~nm%l&8pFe-J_4L3?NT}s<@4u;WIEvrk{C5wv zE^2P)JK}F&Bd_0P)5oP(ZJM3slS9{h^9HHCy?v_Oe6e8F=yvPQ{*)&D%a@)(K@Yt!NpcAZ_4V{xV>vDF-n(}z z5$4aq&HV%qudUYkLVqaZ(QC)!7Yqy!`%3SYn#~fspKU!Z?>s84`;x&Ko0389JvSL9C}vNC;)MCvI`>kGn)1*C*SaT$L&gyT8x4ZFjW)d_%6j zxxV-Z8F_wlQz>y35#o3{N-ZbaNocb;7LAqIs=y=A-h_#T<(bMm7v<;onP{QTt**A_ z)m=ltuKZko2lauvnVDp&SlB)f#cJf|97RUmF1%?I&Kxsj4ILf91YT!(uxhzH)l}W? zXcp5cj$WFK@0!=;H5qx%FbYr%ozxhmY@bSl27sV_-fFB!?n$%{=U!{Ho^{qf`e z?c2AlT7Sz@!}q&)@2a=_z?aQcj(Q)%#;DT~dYg{|y!bgiXO*iJt(M~rZ`j_nKX%h>pEV$fTAMi;Ve15;oqOO z#tQDJsi}R=Q|<0g5k?=@WYh0^=5V~#es-{GzZ@nEXlT#b z*l_sx>TdJl{`>Uoi-R22uZhFZDu<|Iid-$*@ZQ{Eg5WFh{(YuO6TRG<|a(|KlYHVCw z1x%T~?s8u%@F}C_Kb_&US`a;kvg877wkHZSn|+m$^}(CISXd-$G65MfgtPj-efqyX%ky1_s{!4I%E{*9lQ9Z{G4U9I@+j;~$|%T&vXQK?9h zF)}_978ZW|_%Zx>o3)yQ16NW~(&_oRrp~9*n_GhYKSu%C;N?Z&5HHD}s_62{#U$N& z$=7pfUh-Zl1m|CLiB|(qCcx83E{bw<@#YQMn-ttfkAjUV!ckq(Dy@EiLrFz%apY}Z zn@Cp>5eMkhp^A`y#p9Hel>89Kbu@MX80LFnZuaig#WN}-|JbM~eAwSXTRdYNes~TJ5j(z;Uu>wkl!TbNcd=Wy$$cMeK!}`_)$fj+*`1c6OYsK^C~5Z%hJRxR2L}UQ z+~5vPe~gbWT4Aw#_|yxYm8@t}lVzO1Q<3;s*1TlUmgA)uT0K)!L&I&%z=0EtG?o?` zkB7;JlW9tqmEZv$28+0AB_!sJx{G&ds~85u!fbJ}GyJlZ(Ksj1kS^^MY5TV@M!eU^W&uZfqgN{R2q+HcBL^qv{MJ?%I(_vUd3ih}u;a$2CXcZ(d8CDf1qMb&je56R zl?SU`Q34PzZeHlLR9wV$(G@pRqvCcc`0hbmfq zmF@21hY#HVC{C7|AkG;?tZg2}$e;|0N=_gVq#8&E>`HTfwAl(ke{H6Q8^(T4M@QGI z<^Js(!rvBK{1?Hkc@DamyP}v^GxIoYca$OGH75)DakyUdgiuJXz$%k6F#Ii8jf#w9 z_%ioqBv&P7^O)6W%1*(`6D&7vd<`4bR9ZUX3J^}+!kAKz)eodN-Sy zTwh%%RNFCbPn0-roxxfybkf(oc>eshnVA`EHEhr#B0V}dJ=z>i>DQMBtD+7=b6f6= zSX^3anyGQLKOWaJm@K7*=(3y|p{fa1b)S&!hfZhsBO)RRa9B>ezll4X!tdVoWk``l zvzegjD=8p6JGREv-(YX`0EZNp{mE4Kl zQ!cAMY)|1p;+L?=Zcq^r3MB4^Oih0*pVX}GiVYQ$*y;Bw{W~c!iQa`AjCA|!$txnv z-l}EQyHc0ZOojKVv!9A-)4)L{LQm^9nyaD(-Xamjg)h{zpjXlU@5v_;}q zyW+Sb05M{3eOqCh2YBZyrZTxwCgmE3-leXtc`(r3DEpF`9^P&$`wdaEv9WCaaBoDsIoDERe%H3PSbWbrTTKe z6HZiAB0iT`fUbr5{mH__ljY`GBYA3pF)@UY}hI9kY+R zk~3q@a}}WGAZSH7T2_wT$n$qMz|?d|O-E^BHCUAhpRJUl$UEHvH2p^>kLNgiN(2L@syY7eJ> z=QD;4<6W=Mgo(KU6?H_=_d<}ahX8gL0|Nm#B_bKV60(~jO?>VxHJL2b?IutukgIcX zW@2I*E7Ft9<+ldpW;|0Jl_i&FaeZljeR&`WJF_3dPm1=Enlw%>9C`07KpYmTm;LWj z-aV63myb_sH%5^N(PbW}`K3%=I&blir0#z4WI!{BGQ55;@*r-*)T6U*sZabC-ouCW zsp1i^uYhcL^gIbdASCp|ssVZv4J3ZOHk^g~2@;sUizUY6KjBJ5PKr2~dg8cAqMiCv z#c|Ul6M7)id0(X4Eg~kS`FHM5ML^VRM>a%SzB5&EdUn=dVk8F`JTE=E911DVJ|ytI zhj|y2x>$*OLw*7{njR_;5Fbz>J%!}qgM))ZZgL$s0xX@%EqzT*eu&^wnX;98u8Asy z=3v1?d1?u;TAGH29S|h;pO!sDF1g@mnO?c+Ofs^~FJM?ch}d9ueIr1WU7WM&Odz)a z3zMPL|Mhf;Mkt53=STOdNU!uJrv+(8X?-W-FP+Rx*`DZ1>`qlJX_w4UR8+SxH;5Vo zkQ+|_Bo_`K(pYK>rco&L0Iy%(WQ3?@Ze{g?lyp96r2g>GieErr@93zxqvJP6Jbz}1 zW-}TTcVst8{a#V+PdxGri%(q{H2IUwfrs+usU#}SedEJ66%?i-R;OCB$kdDC#@B}S zV@2xfWGTww{NH~vfU94cpW~!Ve4ek_@fs#OEdQ_mk`F=4c%s-R!Sy-{rp@GdYzzQ> z(+SrVYKPx*TVC{UR^6#wFnedD=0Z5QQJ^HD5E=E?C2%6!DTi};o91qS*g}QbNf8_6 zLef1&M4_%%x@c9CMcoMzH_f=e9&U|?fIs|KJ4A^owq(;!qB|lTC_aY@HUkNs1;^N?# zTUq(s@CZAg+NNnxOr&$6X0~U4v_?>8QkK3q;)-BSS1o@uP$=bZRN;-1H%qYcJXo9UMYp&bSOL4C%MC_*7J94Z5Ws$2b z`YS({tWasR3Y2X8&39)}*K^S2q0alNL`dUL{HsGHr$`u3)}}yXaqV;UOs-*)Z{5Xk z-cnP-lZn1`b3qogu1V*pui}`NuXuArh}G_DS^nL4`g5Sjyr}F~fi0)AcZ#h}B@#_) z%_M)|5-VB!3no(khzR19PDga^6T`LkgheIXPP^ya;>_UXLH1XK>P8wJ!5_DyzfShH z!_)EPz%gGnd_-ADZ}OxcJ*|+-;nN8iRWmndO8-l`dh)g z!`d0$bai#1>hX|}&=1fdIk`?@54NC0Nspln_PP>=vtNn5AXPdud2uq%Ma&co zcTqt4W`mv&0A8Fu-;Ns6(g95xq;0#tgh1uh6u#b&_|&B8IApbBBateC-17(irL4;1 zyqOqg*A~(Bodps%S40_+jF40%GASW_D`gcPv3LUe zbUGw4b9F>Bx$CSC&e9R#OgLv~mbuz?Ei=>eb6Fr}Z}IC#-bv!FfP?m);fT z?4M?n?j^|?`X?K;?~?oRtv-i7N5k5*ujJx#>RYFp3p4`cbC%pT@Pm(aKSOE-I@y)L zhSw(D&h8Ls>KU{Y{H?M|s0%bX8R31>fcF%$PTW`;<-up&;@^s@v-5aZh*pS@$wh@o zW%q1rFvIqQ%fUJOT$ank^WQ8ENg9HsAM^$8&{I4fEW)o@`Df6DTU;?M8=vxrWY0ox zoRQ<2&Ppw5h%scW(qND$>~YKf2_J%j!Uf&M0*vFvyk`8V*SU-N4-lS9c>Tjv4Lc0Y zh4=9v%h{b(P3`1bfhWmL`YgVtqeSBuCmM((_eW1^#*6qH8$P3N&ynnERIu5q`+Ym; zUY6xsnlrPr&d24J$X_Xv^Cehk6@MB~+_2T61 zzoU62Q)crL^&G(cz(gTlE4;4e9IQMG8{bJ98SX4{)+CJ2To=(oWwsbL-$`pD z$V@iw#J`#7@5K;j9-ldQt8?&F5*iy16QbKUvjUl~PAs*xjr48J7?;_GkLuvTEDMU3 zT9djX`-|9c(#W@J@!mrm;J~sFhTW5*fxtdlvomX2cxoAsXhwzFgAXPlFhuo3e<*lk zI-C|b=`(js;?GRDG$T@RMI$vfe-lA$Ii=*sgZB308nsjQq9gaQbb7{P?oIuWY;0)= zJ!b8^j;Q{I$oi#pb+T9ymPb$jT0)zj3(Rqxh1~6t$$eLox&`T0nJQiNy0oy5Sn_{Q zKAqF@HXU&&Fn|%E;Ho7=6k@n$hElV>M z6n6Gbvt`54z1&Sjp}`xw>nP6r;a$_+#I>c(}k= z8t=a}t=1b98SfvLicfNq+lh|xYJ;1`{XqGSB!L4bqsFx82cafr({0gXwTkW^tA<)y zq$HThR+SH}R9oR6cW5>9X{IOgE=a-Ee z>GLj_ccKh4Wb=2{tmBpP6VS`FyWdE0EpJ^-)_M_^rdqu{`S}bSCt0E#FRBe;d#hxR zGGrMloj>*uQ;E z3hNdB7RxQc<(vvS2%;h6>(D`ZN0mZ}mi54MufZ0zoFL>!OwCI^46{GnDn=Tnh7Zlm zQ-!jAFORbo(8gU(waFSqRxIBp`%Fys0roSsX?aaMclyI02&NB8rl4E+cJQKV5ej~Y zTozJQsLk+ymnMfgPjFTMv(|w<0354~<(5((le-z@S=YFsMLEdgsO&l;2iExv%o>tk z?yJ;YN4U$GZE~}a##5#r<(XK^ZRKn;z~U;x;IdWg|i)Z0ud zyKf?;@>|f{eEMDNiGggk0QZ- zAy?^|Ad-iSfb#48DX4K=)&qKYFz5^MoO!>e5qQNk-`AS%|1O^>G%$YUg?ySUjlT-x zrk1APQEDmERkx(aLav=9} zzqYpanv0}FD83;-Ud*O>ri8NX&nJ)ekPgi@n!S5Ff4*#PZ)x~Z;k+?e8U1Sa+Qv&} zba9>6m4xIZv-JRj=jdttLoUuD*E_$%TKg5@`QIV3+dMVBg(e>;siM4kmE{!248;_p zr%$c&=y|!^w_+=DO=-5g>7>kwcCQ6I!ao z+&8^-xWE6Ll=K!Vs`q0*mAg`fFi6xxvn-+a z%LyPichU=kPzcf~yVW>bV(M!o$UO^+L;p^7_!a@5r-^0AuF@8-_sZjG$)?2xuUcDL zML0$3Df63UV_Nxr!za3Ri7L#06T}OwV(J2~%PHD ztqw6iMdAmSjJd4zWq*aF)TPw#($jLiJB`C~_9pKr&w&%-D}uMsmjz~hsABbf_rxoa zk|DnW7n~)nG`(ww-Xxn=;_R30Yn%s$KitFc)AL#f7h|rBd97t;lYE#qK06UmkS$1M zCW=3$LQ3#L5FBd8oi@m)S9ceOj_e>3obD{QbZwIvU4+?8Z+udp{8h?wKqYJ;#P(z~ zZlPQ4Lr5&C5sGhe*x=PB{po=Wb0Le}X5f{P`{`OZ4Me_cx)8{XXkN z=ym9CMk@!dE{gv>Nbd?t$(QaD)YS3SmrPRGamW|gyc193QF_80MWvX=dSb1+*~Dg* zx%eSmaegre7r%6YvOpAHl2_ro@R&I-nqdFVgQa!toZT;CPwhvs`LU`d+wrU6BFpPa zk#NN%OA}jgY7f<#Hv~surQPUEd)UCO5eJ{%_1dc^4ihtIM3<^ z=R4vU)hyZdJ$Ana+mnxsVz}_+qOmXWF&@?S0C&$T&h8>vRFoNj0BZccZyBy%?yDD>Zff>TErY$pX(ujcQ0pFNLdPbuPcWMOYN2#k{Swox%KD98}di zbIUk02qP@v(Kg{r($O*P*iyAtxHNo1l+(>=N%oa^c5AWh3H#yGXi8-5W3zct!~oKD z3Du&3X2+K2Lbm}x(m13tCLHE^mw0Bv7NcZ{KgC1@K}$6~X{KR`vt^c$(S)C@cbdtj z-?uNRw>?Fw6g@Hf`tL}O+wsTY3apSFXFK)-s@76blXdFZzUC)(GfK=~#8wF+Gt>v$ zV-8PsNx;0}Ak%QOQTZ;EBbA}@=T^dgDX;^E{xwK_J+l{m2LM8B7Rbq|A(!Oh3p5rL zREU1N6q4!Vd+%x1LFeYRtW_cTV_pZXNX2;Ak%6uy0&%}9BX|~qOO#z5T3E51c+9$R8_kzP`ErU zR`k8CW9bjG?nIn09TH| zR*i<-&d>jMF!8l*ELCN@pqDp>qsNXVIy!8D=!srcHE_L7Tv!EFk!nWgz@PW#g^a6H z-S41+(c7}f{t+wcnI_Hkg8)*QoFv~YTGpx5i?V;m+#p?I)81g}%(0QHE)z9NoW;(nZ922W<6||Cy>g$vfo0ibptyu$Wk{ z=Ki@1!q}*y45Kf&icB;KD~E!YaXnn@I1~$XAr|l|-H~~M9V0oNe8GOffp0DcQBpJX zXK?q7cma}C$g-NR2VyLqxLRV#UgV2$E9t7z+0Y)=Q+sW39$2d+y)<&_7VC^2`aGl2 z=xX8!p;D7t=M z!NsFu@>}}|rB&AEpOJee`YRB(?=>#zoAi|3A>4y}IG>GO=Vo})Dy}Zj^_xz2ec^Lj znVgH0&}ly30C=3cNY@ou0%dt81-l(40H`A;(}{tF^drT;0=#yi0PN{1#=c0$3CRVU z=(~8k_Ly%<*Mx;COz+NZ`qrP(nQ6%(tVh()_lso`phupYs<1>fl8=v%f#lSmB}Wg< zqhEm^Js2GD#|?FF?7xCRT2QH+VI5 z+#=s$%D=D5PK&&&DX>X_)Asf2*B?*0!yCOZi;PC;3JVMEpd|yek$zzge!Lu`g7(9+ z>t}phn8@niU3FYY2;W#MOiG4Ie_l!Ja;km6ci%valhBgx9r?gP%+;mEVI_=@ma3OI zZYebhxBH0ZPJIpOD$ru=dpxC*x8QawK4uGDhh)DgPx4Qq_+hc)rZE=s# z>9o~ent7OGJo2Cpck>{dX7_nV&{~rfc^+T$pCE3e!)&#$lIKH>f5g04LvgC;-!W?r zGx88+bDWx@N_3pQEB={n(&c;9e?SF*4oPoS7?Y*9t?d~ZnE;|opjpsbLQWaW_hFj) zc=P*$Ued3{U}yBeEhW3(W^?cp#mlb}vk!*0uTe^mKb$`(XnK*Vw|AXpd17xPWblAp)ZM`*Lj=L_fXsKl=?xr=`&3rt#3TCf?Zbf z-Y3EN6yJuEnZQ6%ENofxKpy%>gmmR~ZnkCZcIQJhf4+;)w12OXkhlH0X>Jf1oe}w8 z114ly1?|-~-BiV~T5$TSWBzAkq^^M)nkdUo*RRmxvfRX3w{N&*Z$F7DlEeF-7EYG) zw&c39JNv{Z+QGc5LmF1s*xKg63xRt9Vjb3M-ioI8(f=k{m+Yf(=h87N350M~K|ooF z7`-ysQ970*qin}{Q-g~rPU}KZd~3EYK`e~=^?rG^B2rCtwJ)nEF4>a`oL7sFF?_^A zJl}U<7>6_#h~8^u<0P6~VnF=QhZ;{`;ksC6S|ZVcBhuy>Z>-6V7uuN_4-0S63r;>x z`z#wID%FtBe%C>k9^IzUBTdtuHEeFaNl$)vPjjt<9&q%_Y<6t#se=dbaj9-WqCol4$kl zdCjuwW|=EC?#hvw{EA|o*5kpm^)DPyODPZedCx7Z;$98mrx)am?ypa1gJs~{(YRH6 zXej^42)%J)VlP3Q@xGD^mYk#b1IbPKG`}MvAsM6qLiT{}81{qRx|@Z~%?sJp4!n9M zi4-r7&6|?MshhWs>_nlhG@I({K^N|9>B!9$Xk$FeTlzzWJ;QPX3v7?}B&*o08COzl* z-s*(?lw-}OiahMR-=$xeT^n|&2rynupXb2|iMPQ2_8_vxwA*AyW%ui5rR<%_eQ6@z zXL^^L(25Z4l$PmfiS1Q0e3L!_gu9-+L+ccdk9OTJ_J=Bur%t%CC1DU3VTD=EFSX_(ddey!hUSQAie zOEpplT;^t4d|u65Wz0C=UVdGTc36IXX#0glhCP;)?&T9;V(Id##kjn$xnJ6u{!Uv@ zUrh_srK0@FZ69_L*WCAKQ#odp&+~jsKjm>`6qTrbU*NYWI+j}H==D9XA+fG*d z5I-bnOdCq^KM%@^7u&r{_vfcgOY)i6vp?rkw0|}lvnP!vIq|ljxvaYiijk#j%|{}s z9NMd&V%eSf;ZaP(MpV_~>#l)lkLs6=Z>r|qZoKVu$n}9qJSS#lT&j;(J>ft1J@6_jgyMvCx z_A5Fj7}C%luhYNPYL53t-}dvIE5B-W6dbsd$Gu9ezAdXMNvbxaF!6cs!mlBgpK+dx zM_1&Zk!4~!G|TwBF!SnkUG1#1*<H+1?vUVg4IJ`suz-pHan&ft;NbzqWt=9USUPBg!!Y}oVb*FZx@PhA4-rE%|9Chcd#1mij zk@e+cn5b?~Yr`c6k-vnO|#8iK954gj~%3Q4wBd1kNONjei+_tmjiNR3N zm&JLUC2rD*1<8=BHA~tpV#=MJi#&hJ@in$?vAWR#d)AZLrMQPCn-_~?l{0ex$hBXw z8)_&$pO5(E`b{gca-PLjnyG+^U1P=4dTq9gL8&9JCx!;$hWt& z)%K}6I#W;4*yHygXMReaS{#~LL3WuECa2*pp`$<}Cj$l%PfJ=4RI*pP0bG)&s z7{Iw2PbRLnv78V-ywU59{jV*@*JcvDO5mUHe(w(hD!O(1TkC1Kd&1 z$r=Tx!Yu?mK>s8V}s@J=->EYh5!NTp5G@75^e8Y_i{S%$|#f6LL z&$jmVKN8~1PY`8xun9w~Ma?}!fBu6&TT8$>pYmAKO)y3^tHP6lZ!?hmLZU&zZ^v}% zn~~dkZ4*v5p+miYo=7W)-$f%%e*O5NC39#{j+)HoN?xcyRW`q`W;5p~v7Jra4>{H= zCzy0+|Th~=zXA8S{GoYNkX9 za+7;erOIzZ^armou^Ff7sT%@`K-VrG>M#2a>e3B0H@5q9*g3*N??-)OMm_S3 zg2K+%EZ=uoN}g8Upr_TO&nTLQ3>2Ntomd*zmJ!OLtLfDe_vMd;ivWUq^2ioq6y9X7 zU{bA|hCTNrLva|UbIj+4nKz~RRm2g$X+H+4Qc$UIkBrO={J8F}#vABBrC6nDoOEK)beQ`>UNE0Z=Wt_`18@c_~ns+ zyiD98WWq3;t}d0Wd&gS>VZzue88 z;FcpjI$rFx&WJoIe6j4*G4%14If-C@z+#t?Nptzfk9rW&nO|*hF8@(Qjrgs;s=Bqv zfh{->)rhFtGv$KqsJN&c5Iu-MKw3WZziE-VkTchicf)*oHHDGKdJ`Y|!`S7uxjQy$ zL%EGomBBY3G_Fyb)ehV-kR`F*ByM|>2NuXn{02i zXt0x}t6^f=Axu9spGqF)YeVz#bEVDCW_Q{)bJ7XSgVq9TN4xd-*phu3v6JM9P{nwSk2B||<~eXs0cDJTR0Ea)-E39u&qmZwU=!Kpl+gFGW(4i> zn~sDZ(C|GJN)W<6`|aAO={xpC^j0LMP8w46&E(#dk=^pe_+=Zupz&Mts~^ zy`uez^IeLmxjmycPCkdX+GGj>AFzrV4lU%lR<2$)rTW@jHQsLP8u@z`pdP+6n2RqD zB`{=qc887e{6A7YG_xcvX)^5XT_e1x06rS*II6N?ojb5~aZ_o}Lbj|NJtnqSD9Y@fNjCZChN-cu2S4g_A=@h?+> zlhNBwP}}aNaLxLxC&1s-=s1c%SfdHme(&OqmfPtb^Y<1q?t7aVu2m&i#nD#v8lbGeY^zisp*i3Ry2Ds=&39R1%cspj@8nSc4`X8J2UhUquyl z>BRDF*t@|;qHo92M8lB37X{mnwmt${!X#X)@0wK3om?L(q00nF?kXRT&~>9C?DZLX zJ&#_SigSlT0A_9&MG;Zw&q=A#iozqp-@=#t_6xT}hq67!Y9A_!_&&aWnp}02 zt)s<4tD3G_Rr^9mKeBZFzEZEyEwtCp?<1!td@a^TcQJ6wk7vKNjjspRMrJNMFTUNK zG-j*cxcJ!LULM}vVZPzO(~0S^KN=-cxZ7=!3;A5%XWm1j z6+tMNnlG9XK;2kkv=aM}D91$veDCGYU*8)ax;(QjIFZd-nyq{ITQXDir5YBdV9NYL zaGdtmMfiF91>+}!8=|}{o^i7Qtcx!F-xP@@Gv?e$F$t zroSh(gjPNooXkY}ST0w$>X8>}+J~@m7xuVV$*sjLa4-Aa`MIB8OI23uXS?-wU+lOPi}nbydt0xoZPr4^?PZ{_F7#ka*!b?EP3~? zpeVs5s;q&WF{av2MjysUdfHQz&jN#2_%{l~Ao^K>}Z zJIt}$5&gLwO3}~p?<#lA1I3U_=_W{aaVmCYutWkzus!A6dxLOn{W|E_UKWw-;U^_R zY4)vzCdwxjlY#<0cXr!OWqa+avlcQv=;9V~Uw&3K1Ycsu{`dDtQ?X343dFtUMXu34{O@7HvZcBI`%8YTAI1M?D%j+q_MV;*+q}Ck<;2}Jj<-y8(AhZjo2>Hv`I3Q#VpORBj&K3jtIGoRmoz5uTfaeQJ4WzSJ z))ztwNIlW4e$=0S{{@w6f1RrDV3QH+v=w_K%X4i@Tf|q#u}hiKrn0n{{7^Hp3_dWY-9N3M=5Smz^4bu?#d#!ZG41!b#gjp@s_6H*3;)Ax| zQ5LWHq`}OpYibbuTyz|oIbdKTXp_ao(31$ee9Jd??Sv5i)i~O^oX(?8l$!W?dLq-; zo<0Yn1Q6lZ7{wZ`U9Y>kx`6Nf9O_Bw_6IAm9OmE3W?f?PYR`Q^w-gc|pW7;e(R)?l z=j*Epf;@!e5cc9{RFn@aB9wxe9xz~XR&<{2roE5(dwBQ@RL_yo(fbYP^nKO#mI(RN zsG4isrhG6r?)dmPLev?^d;T3{T*0t4`C6?HpsM@}yYEft`fY~Q=8Vr-);A?(WvzpQ zA+TT5Wo1A+MexkoXPpG>?8;{rSYJd%MO9XRJr=M7HSB#n1~(vl_vI+DKOo|$hZVSG zFj6<`UU2~Wv0*v2RFEPeHMO=ftJfm|)A$tB!sEpTAx__?R{vZsJAKbqtBZ$nd0&;S z87MUs3N(>Hr=YpN)c&*1k+^FbSlW0D>PU&sHy~}RpPr5bUi94D+%x+sSP_{_*%uTP zA#rj3uo8%eTI}lX21S4tSQ$j4cE{P*@Y{<0B@nEf?kys?7zl>-xL(3CNcUDiC~}T2 zy(F!RUXRdBJt7lAQa3d86-xOtG!zQ7dJAw(1UnuIIFTUm087_8KU_y>+g^%?Beh)R zn1aJ0WFZJ`I5IlULtI>MvD5}|ornm~x@s60w1eGLSa0H}PjPkz%k6+JfKo1(2nivj z0bBc(mbO3RxEuWQX9LKLdW#JP4~Z%?>=;~acc$K^O3&}^_JS1PgR(La(6+TfBms^G{^!o#xwe=qJ3G@=8M4$WQXvPPW$?*6A)&`aL^REvuQ@9=hqEGby&HRa z0>BL(gDP@syr{zYf(@ZyjWMg8uQ{1%93NLuwLJlCYzPSS55Q{jwc8&fv^>nrjosbv z**{poET^jNLqKL0cY10E4s!T`N~fjB~=l_pz$r4()VX@a8mWzN{ko`8wzrzSFDCZ9}$sBPzozmt2Lkl7V!wL=2}Nb zhYFnZw{(sos}97>4hUvpAi1Y}?Qqy;t=u!a0vCoUmKah&{d{m*FFOI>E3pgPO+13` z6Y%uybznz3K=T;}>;4KDJif{LYT2AHk5JGMuW*%tPOc-AN=A%DRUkMt^cO-JiqJTQ z!X8X-gRt=H{*+}eLccmZZF56n3{3Yh)fxvXiVv|L*-WQ05ITvM_@!^#%yx*KQaaC^ z=jy+T!5)MT4aufBF*`|L!zN=1+H<&a3aY~k1HwSg9Hv~4vSe^=YWXWQl?rr`9UuV3 z7CfU5Y*`Vl0HQ50zG4zUyRqEl^Q5BZWPe|Jr6*1)nUOHsXf&4!q|VaUr;C`=CZJrE z1u=IRERUG2QjZZZbty3jSUw{5Ub)KV{n^#YY#4YqjhPs4Iee$3G<{#Wd#? zC>kM+Mw%4QWEWKml zWr83D&(FVw!`o^Vp**m&v+ILXxu(gK5~3Nj_r{L44J>Wf2VO$NZiUwg*sVnAWhfMp!VepW&~pG_v7F|$*^&ooRurFW?GA^Gj7&pg;~9iNL}-H9zTo1D-dk+l zB(u5|xz6pjkW7gNJSl`8pNP}K1JpqX-H)>C5aJPpgb;`J_4S1r=*5y+zaNQ9g(_FH zQ)NiTa=ZnT5MJsYRG6Xd8?&HUxeix+1!BvopSZ1r%L_?bspoZYVO1C(#{+<2e zGj7Y3`+S#w?-&>u7*CeIzcx*HZVQKIWK`51ysks~KQ$8K+P&fmnXF;N^MH(@5YSGF z{d99n3qtnC<46IJAQRT|?c28=o}TlIi|%lyfE5E!D^mY+oA>%u3to*eT+ ztc!yaFrQaIzm(&>*eX(9rB^6?hY0U=VX zYf`uv=%h_8EgP#oYj34iazT~?Z{JV{eJjXR4-Y)VA5I<;|nB-XPOpRwK zBE9^7XF@xE^tB&BIu;7R;T45sylkoQcru8~lsLg-au?xk8_7U1paN8y4FE6`#HLdA z+a;q|Fa@2%wf+u}&tpLxoW8H7r97R;LW%t^2{jBb7!|w>0QCXUNAeG`8BTDTiGee~ zj$7xz3kdRPluEafO6ox{l_Q&{s*?FRC%Vw}=K67<$}Cz)72;Xol^p=AWNfy^q!tP` zW0rEiyl_RP_&2Ni0~qX;N~M*Q%jKT%v0#3(L!?m+)!{OzTuv zkh^tcNTq~Apr&*@-l8fP6a16$|FHJn@m%-q|NonYiqb%~XvvnD(GbdrC_5Swva+(J zVI-rhQbsn(-dkiu5-HiF%xq=r`*@w_bzPt9bA7Mx?e_cQ_s4lV&$D>HU*q{ap2zVx zj^lpN)MO?Km~5?0~hvebMGr|nbtQHP^lWe{sI2%DULc;ac$p(1YPcbAC}6JekD!Z5Xs zsx$l!xTAZ}j|TJPggQ^Vx`PJ~UbV7{9(IbI7f2?b21A5HSU3bxmH+}C*eP^`5uJzV zDh<8)`IR6%*(jIEV<;0rKlL{_mIMyNINI%Z%-$HmGR{X54z;rQx}b`C!QDi#dW-da zGyx9Pz-l(I%p5;VCqb3$|66!rPXQrpmqn-BEYrO&$ zV#B*GW?r+jO#j;1$pu4FJjZvr{53!^=ix7VmdmtD{xgmyLS*7wKg7*G&9S)o!LckN zyakws(pH?QmlhsozuA}gU=63Qi7+E!_z`F{f~^4713{V~{7b@@#|efvSm?HrKUs<^ z0&Yj?`t^9$xOV>k@;zc`)WgE@S4@ye(;P4M!m-tWPzJU?ITxt^Qd)wL?ge6Sn0q4!|#*Ny4gnFbcR8;YxJz*iAz8o_i`JXbu;S){?rXB`tLCD#$qR^AD|S$un<0f|dQ^kH_zX&u;dc`OaM9!m`>~MLSUE}~oGis%RaI3XFqGVIJTyK;N$Uj-Fw*?zlT&e@ zTNq7>9x7hLGW=^#z^`K1pj{iHP4=vva(G?j0Z!di;hSw|ANu<@*(*Py;|;;7cw$!2 z@9uwIauVmPv2xdD#?))$7jpO;pO8wWS9-uk1?q}3>GES3O;|Cm6T69dJ3F8QYvsR0|x&DG6 zAUC*0MMaCx#Xp5rg6?o`v^C)ok?A%<^rq;!jWz^L>ojMcZC3cFr#7Ne>MTN`j9hr(!cQSRk?Zx5fsi-5~;T3T8*Ut~t--*c8A5Sl9Le+W2sW?enM=PfWt{bsC ze<0S^04%_l>-K#d2LGu6J`DPeMs>spzJY;(vpo)dM?hB5N>mPyefHu7w^A67T5D@7 zx?FbfeKrwR)YW~ij(%w)_z+IV2?a0|n|yDxkif~mjc&mA4CtDFFURPQ-rn0PBNB(< zvK&D~s&-UJ$bP|}K}g=TGdIQZw^{%sFRtUqj}wN4R<1?#s%n%}k@%qK+5h%gN#2L< ze*ekth?DS@W|}WrAa!(fNH`xUxVgDSt$LL&UJRLxfVCU^@k0(f?-|ZXs1}Fd`oDh7 z6B4U$-1+jqJX4vB+mqcXerzWU!o{qjcGJ+rr&1A{8JNED&Cx@yLOR*kAF9KE{y-xz zj-i$9iB^5(iol%EU|%H=0V-TtrSu1%_y3oDL%$m+oe=afAAwG&LG+FAHz4*sLd&gr z5y4P8B5gCeC*I!PN3D9L5L@FEmK*KJLFc9VL8G2x`-AHn=Lu+_BCvX)5#2bZRBfKB z{x1m_hQ!MUq35VOu^Nt=e-$7;M^I1=ec}0pkA-N9(|5Md(Gza|k^S<1A0r*W5ZX

zOasyj@Krkzpbv#A_@sds=*nX?FjmYUvPRw()g?n_3frX_8m zq#O)4jv{*r!UP@>A$ohr$6X~@2|ztrSe(OQ{uQd)LuoPg2adb{>UtebE9m7w88AG! z9NS@)-;+I!5BD6lVF?ZmtwCf)#7+oVB?0a#=4ftge02HF+Fy#+E+{F$@R2=}bl^+X zOuN<+D@QnB?}87{HE?I_q^H-8ZB|3OsN8RIIvM&%D9e{FU0Q?#G}2YTPk6-ykPiyf z3^-ZCPQ73snV_N?(J1aS3l9W@I)=&KvPZ$edq~jA#3dzj5OlAut=SI;&N zUbiY*QlsiY90guffpY6scDO$9Xh$q(@Wqlv?No;z%(N<4*%V(mV zMnq6m;(5q{!erZHY-+0WT9A@m)}45(0uq2*)O2@8ynMM2;=o^ABn07!Ku?eW&xE7M za(r$6LTPC!$zt#H8iZmJPS)bCo9*fTupjuE;=0{3TTT<#Q8hv^)8PK}I*;?>Dc-WR z9fU_;_x5{*lQpy!Fg!D%GW0qQZU;Q04sXp?S_S$fqL@|GDg%wk0u~d%l>eZL$j7yO zEVeg;@JNu3;1U7(7at#;4$z$J4Khl0zgB{C2e;mFvS@e&dJZxriHOUKSM>Gu3BjI8 z)chsvtLyS;62UVmVvPf`>^<^SfJg3iaBx6|iJ}sh5e^X@cUsfj9Ee29EV2>=)9xSZ zg7_wED0&7{vVYq|4e>rcTj0O2F74U1D`sjZ*g{tEpdhFnGBP&aLr3?!e#OnzRX`}% z>6Xlv!2|!|-SS=eYfJwBPQV2~5#gvOs32@m2N9@GFDw{CW-4C!^yw3W3R-T0GNwE6thEqS^beqwPT74cd#wIlQDh9gIgKz6jn^+MvrdI+9;1{G&uVj_*3 zM9m^0ixbeUhVA52K7D#=XW`-I=p^jxrQ-a5M*we|6aMQ7%ph0Tj$0Spl zWRjH2Z=Ut__4uSDLx3F-5+nn#hsX^<75U-ANtfzMN=o+7(r!9=@#4kwZ~VjS5i6_* z_wTFIu)wneP`#$mTU2s(v}S}+nc!?md3_=t}BzdqaOlme9n zchHU-{_>|m!onxMfq4L~a%8duvN3i%9`c5M0_4P#~ zOG-Ws1{on~8o2$^SYN3418Q;&1)FOn@}*h1xjeIn|6)axJ${l_+xq@u-&OhtNqi*3 zYuD(d90mRc-x2OGB%xFApvgeIWQF5Wy7=u8T6YN>S^j6;rDrKIF_ADkeyq}rz>=9; zSP&1M&23(-MVgz~q&_ZHmPrD(jZSE-nKkO$Ja2lbbPtc>eGVOp^K8)Y{=vU_((?v+ zSQy&f0m>mFaCe?PZxEBm?OU`S{mj$t5-NAM9WAdUv<;l=*P9R&5-IJuHFu$lCR8SE zgGoKyZ)lowaV;Z~G-{g(h~2;dyP3*1G^%Hf%Ltg_RKksc-ko%ty&i|B5rrr|q8jvlF^r;goi@Xt!$Nfm#U6YT z+YOM(nMYiF&H=i28m^NedrNlx@>R9#HsxoLdH&0x*gQ1VZ*pVZ`mRsmMUt)-ck}z< z@$*eheC^hJx5G-?;&-DFLc4hCIgN)=sG!({Z|uR0gD41*Y9CY&&-+1M!r$9(yI9!pyEDBTFv~UtKeyVE1o2*4jYsJ@TjMI1jxg1da%#A<_))EU8v4B zC(swWuJK=R+<)~^@=tUEcD z{5QemA5T)TNQA&b1Bo0684R%i9i9A@EBoL?)j{goM$0u#z`i3R*S^|9X+|?w-QVOz zLYjcrM9KUD#_`Ud6*eICs#{xkgU^Q~!QdIzKZVaub=^D$rd+T4iUp)d2!mGui7sM= zuilTfqNeKeWlBnMCT0pfMq#bbcH3rO94YB+jy>N3GJ zo9Efi>l)c1k+prwexaH#x~D9#H6eh);KP^hb4}LLPmXy zuKHWn)&oej`7w(4;(2_`xLlFszJo}qLp6H;LM#x0-X0({0VIv8L#|*hOK@1b$mSr- zCOapm57vnwD3%0i)ea6Pt zO8K0haScTrC+SmmTU%7tY5w-|X|=sQ{2Y%)1Mp;FQIw z@kY<8Ob!GCyFhHBSi8o0%^dT~oPFzVp}9OFXxl_p_f_?zv9EfxYfo3p&vDOuPH%kB zqhQqTX;S>T`K=%G|wy!jZKxW1Rz`?7F}c{3-l3o4vyH9 zf`q+?$IjtjgafqbL+bgMdzK}6NHZcm=m+H+N!#LRF9P;L)PXU@Kehr>ArYj zGZ4q;Tyk3hWj-wUs2>1Zf+@|0Jm~R1tG4&<-HTezvdKTieUtijJJ7@kstM9GQTzfS z{J32d5l0YV0N%$CNXggW!?`XFctdXwz{$B+sT2#ww=Qi_cxcuBZklmkPZv(F|W^Jh>&|kZ-=Md7Xrd~NsSl-s`HuQ;~~JP=HN`mz)GM|FgR&76__+>ZShs)T~Y_2>bBnCES+hW0330 zHEFpAS@-+R?XJ4Sy&+9O6sr+bL8L=^9Lp#)UTe=h6g=@zG2t5W0|fsXA|^K7_RUoE zCmkKd;XOkNwLvJinVMA@vEv9z8DJ+HMP?AjKNxtZc-FYPa}Sj+oh&#ySWb)CRvSc1 z2UIOoDavXzs(Yf0Zx+XL60Eth8nqx|+`{sX*nR(UfygMlyZN90I|NWsb(e3ptic65 zsarZXw-d#-zb3ikZ`>?#p;$31abZc@Zn!lA2#>kh?0sl-7N55~)6k(C;z$*kYT^5Q zfZC7nAZ1hR1-^^2Ssrf=eRiG1=preIUcNC$iLqnZ-K(j^=j%S*1^a~Pm>iT0oA^-^ zPx-YT`Ks@_H-Ef|zQ@Bt#4@sn6NLa1EG-rG;TC*X_*Hj$N$FR|qCEF~?)7~Ozi*)k zIygOP`vFDYToU8|hCr{P3R>Gqz|X0KFW4rdWFa&x)G5dI9J2*gT*-o3aeHc|ao4?~ z(8nK!E{Kixz1IV~h3P+u(G4Ee?UMqAbI173;I^57QA)xsXbP9oRg^w^@q8NSDD2}W z2`e(AU2iFaj}}Wu{4J_*(&Whx0Q#4`{?(oY#@U=@fo?*!$5`L{M@uCcw?qzwmpwHc zIp3&{Z>40|KsdxcGE0-usjpAmW(nQ4Id6I>I%NWvRnkU#hxA)>h{`->Vp)IIs-uTh zzF5)dT zUFT(3+`KQw%jeE)>d(k|f zUtNySp`WXqsg0iLQMO1%Za~uhwA9cuX=-RPQ0^O`IY!{IalS$5c^GFn`plA_I9?=J zS?h)+`N#z3mL%F{KlU9juQ`%Ldke_M-L2X4%;#Ey$TO+3P`OuKy&?3~d{Z$3R5gjW zNjE^5z3?|l^g4P?ana_TpKm23mPi9y;C@^^|8{K<`A3h%#l>kt5Gqc?RztF7&qvD( zIp!Tl30e@ae~^TSK^OkW@g6B&G8p;fd%XX}|l z0DJvF)(+R0F7!NB&ewfDGfo>M`6M<5i>dzjgUBft02+O;G*Et!PCd5 zJ)R;6{sfZb8N0s4kfn^OpVKo(%i=23XU0_>zYoSzb~L z;c(-E7ZD5mHj$zwlE+Y=QNA@RB?{*V=2i&Qe#r4PaQ&+BBT>uGiI^7NBoWTf4L1wn z%rJ2JL5l*BXvazTr3BR(4#X;iBLb$|Zs2lG%TIa)ROun;GDJBWQHP3bH^{3`y`u&R zdyN4S?_jfW9u4NT8+__1u=I2D>#t4wvBuq%UIB3W+%L2(J!sPg~UIxP$P7 z6KO z_cX9adct(2mp3z$H`|+7xhPTE*dMHVe1IrnM4XKh%wI8vc#Eni2ylY0M1~TB&4f0B zGLNNl1BBPnuCrTF>{kmH!2=FyCcG#*egkEw&8#l#kg2@kNW!RBcXwafd&YpMv4R81 zt@-*T{0kB)JVGGU&A=U-hJrI1u(miDXx~l@tRPBCQIMdmqaz3~IZI?uXhcx=Vm^aC% zF$4MGpy$sO5y)rdg0E+u-+~bn*yG4?njLdnI!6&$ec2tmG&Pv%+UO^lM_dWr6Gz=G+L%r+_ zWD6T)!ptr5c=ZXOJK?{f+zlZ9qu2&0(XGC_fr8LaiRS=49R9}H>(>w5r=YHd!~#-v zyh${>N0ER2K^3<57PD^2sPk^vpkJ$_Q)J8{t$j8H{^Ij{feMZUk2{aa`43DGYR?7R zt+8WNU0u!0#>wk`qnw0&_=UC#Yfx}-ICebz2&WM#1V0dQiNZfDw;NcGDD(G10Y*e+ zWu+_aE4+1O6hn1d8KXlpLH(H7ahDYLa1$~Y#sJZwd9$$^bfNMrEihWVDjAcEmvI>* zpMEo0jf@#UwYA9p6Wey{)~!T24Kd&e)iI<@*CiWZn#Elg1$g!Huj36~D!g@<$OTSL zs^GB@h~%l#xgGF!-&V!?6g*Z-@y%t*FDxuB#>|406=^}iCm%n4BtH=q9nFS{wIWMN z*Tw16?NWffrFX%oByd0Y9~oNp=VX%-3RiUyn;{3O%9BncBoPpyw&y0g^@dP5oFE|+GBQ1+QerX=q8ei0NMAc)7czgJ-FPSR;aePv zK(pS;75%{9P_4I;J$9acCB1v-+I0?hTE&G{G0&)tL62Yd>~HSqVDNyRh1`T3wwGO9 z+ba!9gwA*>8!HiPC2M7{!YL~@EVdh!0qzYJg5UgXf+i$Zv|5P3I1J+Zi2w|Ri{vMI zA8g(8wcJhevg^zyt@KL+U`@LvdrW2cR*@O>LLQxOP2;@5Ceoe(xB~M~!9(W~`~fq-gi5&Q4t|JB0Ngi*Ip1 z(b3~0O{=u)3eWN-4g1X3HFjVmSnlb7unBI*LBANzi)6_yCeJW>iKu%?)7$HjoXiP% z*M?VwydTSiNFP62c~lXxVmsNW^iME~Of$iJ6mhN}Z^*8wUWMgA{ii=_(J!O~-QF;Q{1A~{ zMgxNlOBcE-h;$UnAca7@mxJpsdHd(bp6KV#Q4G&ZG@dk(%KC8h!z_F`U2yoof&Tu- zB@Cj{(vb*)UESQWva`8HK5++YzSe$&eWLjJwzbzu!i_gXsVn#&O^Lx`Gq*CYfzu}5 zMK?43TK!eux6{m9{RjPTYd96?rE$3ZM7A0!^|{v;zPfkyNOk^9b;Kh<156zEIte0l z{rmT>$(23<0kzfDrybtk&$(yo-h6E66kM16?Chr&Z1IThd1367j8ENH$JNa*RC?c{ zWBlGzCWRS?=qC%hWbGS0gCo?OwH~ATl3=pOmR`glti})Vf5g=5c9`+ zCZKH>A3QaJB@-TPbO zWFa>{(*JsQ^Wl`A=GCBPS?ArEE%w1VQh&qZSTjhefc`GMx_tV`I%|yTpf6ZPyD_Zj z>uo;YVa5^Df-D)%wgWre8dND?1_r8T@yhb}DWS!S$luac8eX+7E#)~|An3?T?eZmX zwyvdCyd8PQ5O=V_u74}O0D9~VM@n4{?u@C&RGq6mTF(krjsko&TUY48p~GBqQJGxu z`Z2R%qZ>EIj_p>{MB1LbljW?;wP1#s3`#36@QU>3zEMXAG?l} zE_CUTY8{gKYAzoy9lOkc(Bng|@;**smA(O~yrfBTzU`3uGqbYTF^37W{gjm(u19h! zdc<<#D~Q5g=r`6W9aQ@64;I^az|GD2{y7n|5L@rOV^;wJq3xC7s(3Dg=FrhYU^GfV zmu4s#+KAXfcTqwp%g`PH2bXx4?zDQa;_I!xS4Jz^O>`3M(hlk!D)BhgwY-;+Q8(Gm z#=I7?QT9vwwgSIq-2^^P?;k+hoV@Yrmi!o$?+7t)3NLdw{9__}kPG4ePwPoM=f&epy2Bi!Rr`+{gYyFPxV|26yi|1HGDwZ|wA&so}4C znC~ZqZ*BAvt}ZB@I9<1-Wq-AW`y74I7(L#4)t6SkK$p+FL3iIEQfmVnboO_KG08Db zU!${K_yaA=HZuUv!Dw!>I&3vNlp~_llrg!g8N#_v-ci^nzpiu0Zo=2Xz5KG_L)7iUgPQb;68gnIDjvt{kkhh zc`6sS8m}6kw6!`uGC)zeSCT*H+ewqGx5Ou!EqI!QO|+LEc3W3>1E8YCRyLt8$6jjs zc0T)Ykw^Y@N_D?)A!qQ!TS-lUcyBs4Jz0NoO&d5s+V%qkeI)F{GjNTW0{b|}1Uz?s zOX>DiH5`+l*xN;P(dT~%b`g0S9R56+zE`*FY^M1g&YS)N)N7d4>O(>3DdtPN&_ZrH zbRmF$MTB$OyjLOe)m&#;SapF|)Qzr=`dBKBE$p+rdTCb);D>5cESl(hCp4ANw|Rs> zTmVWkEt&GOcqc}3L}5f6`($uPRL#d9XCS7ifTA6?!%{a{E>eSw_LIwUONQw|;cWzX z3}|^d`Yg<{Y}P8_v*lUk`yFwx`8~j41cy9n>Sqgt@{>}Z0sDUppreQ5 zD%O9~`=Cfee+qTl-)U0kHdVM&?&}1N^qDymtb(|O#+LE-eYTrCj+KqI#DuwI={I&( zg|K-EC*Zw+63YPUGXS6SxL?bs{`6;B~ROIQ9b@@|oLqurx^9wyq0YFG^=B4D25G?ze!HwZO z-ZGN{cbXwHP3k{=m44efpx)8XJXN3Gxq4>2``o)WTVW@VH0jf9#rDw8eX_=l;lUjJ z)$#n`?FpNFx>e!WO}!sPVMJ%gs84NPIfUG*o8@6+0qY(G;cfH4p8v(IKM?ora*Zb_ z3}>5Lr#}tca`O&8jGd}h%n)5`#vKp@d#ItY_qa>eaW0KFUzWK!9VocJ_?g@-xqlGE z3Wn^}EefML2O010jQ!bSLX)^^^ZZ#n)vJ;Y!EsNCFv*e0?irA8~UpE-1>lUK#N&GaClmanKF`!quSccmw%RStbC0mYITo6^DYK{ z+Y5UPN(!XATix0}(trKSCd9?GaF*r`P@Rgg{;Kml%T-%QD)RL&7CMqWx5VsV<_+!e z7nuv{Jix(n(Yh#XW2dU?2~h@@Y&YacPp>FMf(cWP{S5xxFu*nJ+Wn&H#M5i@EGm4& zHP2MAJY5`|=fy-+9@hjxFe>L+)cKlRBLJ(t@cx{}s=a8?g1h9S*t5GhA2=SBQ*#82 z#qwbMpk8lSpi4XVjCIqutB@*-KOYR6EJ++Tu_2a)=V$L~9h&5x&7+_8j(oqQySO*0KxSY}R$^&PKkCLYvagkcWQ z;Cp{Z=qadF;+zAacBr~(nDnf*XfwZv;LjgBi$6op<^MuKK<8Y`R(zxO@0Ov@{?tCW zWY;A}N?e$Z3rLE?A15XB&+VGx?J*XoJgr2=*^molIm4g1t-{-=OonO}cYMZu zm(N>_)x00h)e~*%v-LFE{KbCX0|Bb7raFErOB-R3E$yWp!R&JLJ}@irtv5&j91OpVTP0=>HJ%OXG`3Gm^k?#-rCK7-NQg-~-C4(Il?j z_5za8@tEFR3hNgk+NBF!pYDG7+z|JL6BwDqsavEYBsm7!r$O%s0~;Kqfblzom}>i} zb-{+MJ%%xE(&EVcq?K`p&2rdZH|-mJkK?Pe=r-F6w0%3w{o?Z6pXTlke3~QOy&Sje zK>X;PmOrfv4>{lNA)J@2S^i zR^#P)6&=`^FbaUluk!v1jL}jKpKITgA01d#)%GCa{tNY{H1pT@tT0fu(S18;+4?2xY^GxS=5koJ!o-z%>6k){A=`gkd^@~A&edNpSb(Wb+ZM?|o;?(ki zVO!pzAhn57Xb-rCWVw{5$896E@UFr$f0-X(v-+HVUnEVBx97Q%kw2ilO5VZ=F;Dl* zr0A5+p5A%2-~w^$u^TU8-b*c8r^vZJ*Zj>OApc^1!s&CWiQCZdsv_nR;fVU8$BZ?l zK4qfK9Q-9(M(s-G9iyJt9oY?-ya7i}t+6@^C@I2TA7ww+cXcbfuR^|V^{>K~Ll_z@SU{}PoR`~AV& zLv!D%?n6j#Daw}wNabG2Lu)_phYE^GeX*yJ&rQH&f{N0~z(@5|?o>q)$*^dEV^$+YO?(F%5Jk@^DBO98^RBwVgMDVMZ z)aMKMSZ_=7h2D<-b6@_h#h$K_---P1I)_r)YZuYIv$Q(bd<=z^s0t$Z2WUecoz$Ws z#FEEEK+eXdiYziZJK~YdE;fX4O^^A?L~xGLk;Lpd^pc?1OY4BDB0WLe^5Q!o<9d^B zds)Qdjg$N1j;xcqf2J*(%2Fa)E@qL}Hb?m$zwY(xiFUXX3*n+nos&Bq% zVVA1@d08U_0n=!~$WAZ_O?8WyQ@zCMYGqE0vjWVx^`XLmx*Z1ss7sisrG9ZYhUCmi z^|r}+CI!>B53Y|_5#U?gC#JM(h4*k$X#!fWw$*e&cXE>Z=VT9E=ra}9o9lEddBQ?5 z_u^<-12iwfR4iQPmSSFC>8bfbzGwgPJu@nm%Ynn5Q#-EQh`rV)*^J#-ENk{c#-1$o z;;T!WUdD1dIy=t}y|5x?-jYx$ddtDV7+OC8e}L>y6p=ymQ-roaMkr`RnLOkIN9Q4{ z>2ey6T5kBLZDWJ0EX?;YnWG}W(i3<&H}3?kVXK1zSKeJE+}sOgQV2O;2j! zMCwZZ)=0!=8=J&`hY(;NF1Kc_uAB_bMK ztnj;R&aAjg=#>R60)>a3;Z$052Qix&`6yPCw33X>k_Gs9kr{P4Spo@F_dO%iD{~U@ zU{pkhW{v93{?c>x0c^gsH+>s15T}=X8dZ}Q({w{2G`D76J>6rC%yJx&jY91o!O#E} zBN$Te*ktpE54A{zqfrPfiz%s$P(=FZ(V1L;QUggC)lNqdfUQprYctW@MF4gp@TP*{ zl+E&v#(m7xfrFt&XU;aNe@Y0D>?`Z0&*AvGKB;2km0w@d{(LWU@%aU;uvaE1>bJ`@|y9)(_vwXP8|;Hy5e zQpWyzyYI<_dziRH=t+k{BXuMSk7T5YH(Do9$xns(y@)Cax^C;RKxq3NkZ)AN! z@^!dp-bL|+pk^FzB4be#u&n%W%l&B))Y`2s8jKsT!^4Mc~#2&gi~;{!zJ?m z>ZrU?%zcE<7lkoN1Syps^Pd2Zd{~yiAQYVuoVu@3(`-vga6^L2o};-n2D^7zr%1gz zQQ6fY-){fn!pKrcK~3ovUHZ9ifR&H@)^JM8qkf^_^)*E=?qVyQ%bf_BPCZ|LAp3V6QcYYQ!GM_%I(j#3i4fQk9GJ zH}KIYch)P zhg0k1I}FO2^q5pP2xR;7pWbkNs_~3degMVg`LyQmzmjyEIGH!WZ%H%jC}DiDS})D1 zZ_dlgn4|^Y*@~AX>_#GhU^PnTxZuH1J^HhKz~rkwCcAuCHf$gLKKy}c;uU?-V5I4{0Oh@Zz`^AvSH@w(S}OVG;^*_pq@w6KNQzpCpW}5kp29IW!t0@mRk?n$Wix zgcY2iIiglU4&yN@dEkC~iQ2)SPdUIeN?{n%3A>8Cq9d?cHi4gP3+g`i3RGMVf0jIQ zu`5y~ujd%6`_qGeyfWuxgiH8u-a#S8jC08=yWh6_wn7I#<+K52Xw=nl_V*>fcOpwK z5o_y@7k^5#+$6=E#v1j|x$l5iVTdxSWIDsL>wdB#yE=RFu8Dod$=q_W@HgA`N;Y28 zu~A4Y@<&j?iCV7yp-$IxVSvB8Kb86Ih+b9Ue2p7OxA8NO{(yWg9vyZODWXGygi@53F`{8zu-uv)5D zIEzT(&$-INjIWd>!OQhuOh3|6VU9IAFUr z?(TJr(h;;3V#qXg&vA@&g^nMix5fEg&_UE!d_pe;QTcqcEjdO~l#ed}>5Ct_Tb7Zm zc6#Oca(fZUPwCzF$ji-{7>G%C_XTW6o`pbO?WWb;_?Gw`_zeRJ-uo+u=<#`^- z4@=Yz4-Z?Wo?bB(-loI2z2l}QPo5V~o(!YvDo2@id51kEM)zB}1uxe1;Dtd;n5^C}9~pLc1_!dZUb<-Gt7t}f!JPN~Bsb@u zzTPr#F%7o$4R;QksykP-P<~9LInQUK_V}8{w4L|kx{-6<?zbHEY-&}qMrg6K`P#tI-u0o_rMI7=7-`)_ z)E{k%i~HEvSN(45i`3+_>bp5LiyU#Jl;Lz8f1^iR<|{+qNDDZfrKX}>2yW_q;Cz2q zJNK_IeU@rh%jB|>W9jU@zG(5rlur)LI41HsyWKBq`P5gPP~PHQe_+a)ws!3o<@bsP z@~>P)v?t@#`qQlVzWpdWCP2Sw*>0hVJI6bwq(Ji3ugw?7$JOG*&K8VQC4c!Gr)zcc zT%_IQyk3u+_?Q2vvD=_qVqL!d*geUI@(HqzFDVRGez?)^o*e!u-X_<^;P=&OnX6a1 z%;#s-3sSrlbGYd1!@Fze1@8bAxjmIPH$ptc= z)Gvce)T&qSB?r80prv0ylxw+To)ZwzgHE%7rQGSd}&+%%&NLn$~ylR(}uWOO^cZ z!sw+C-m(%G`}vGhvJUigCnd#GNm1qMUT>S~te51sw{dOKTs7Z`53qU4ueSGMoLGO{ ze52#|3#spY$(u=qB}W8T*0-$Qwxi*=Z~io&JK^)!;3F2Jl2Mm$*!Q{V-ce@g-Y|2& z+VQ)@t~^RyJTvipzB+zCv+6XgGqPR&0fl3~{~v~cn1S`k^-kHgA}aa2(&3(tb00TF zl&kMJDG}K7{f+cvfkbLAxy8Y{Ag-Suc-~I>kw@HoMnR(4*1uj)QnuuDlQwcJX5biO z)Fw^z*L&LK3LLmP8sud}gl47gN!SBzS}@=b)<&}iAJ z^z;QC|0UxDa-V>0Z$sFncRHxj%ea*s+t0VF=PGlDMa10pDgCowKHD6yln78d`1#fa zuE$bNBswYP8vSxvhkc$hcb}D?@)>1%@Uv>$>hMQ7*W0sP#L7}kIjJ1IPnmVM*Vj{5 zv)6jBb8xuaqP#-+VCQ20h|%k1DavK%{m#qwKpq;4dzo#JSk3b}Tb>^Fx&Qs=ZB&6& zCtvQZ@O|tfL0v$S&J*RB>8?@gHx zBdT6#=N@6%o33#x;o=pYOLq={>1cYn9EGy7-%WTt=#ER>X82=u=FrV?zb$hUUcYQ7 ztLuC3eh5G@sBBw|HiS)jF%V&P<;0z7W7uEMsqO0tb*kFL?$i`eoMRLrv+G()z z*-a{A@2*`>5;|>Cx^=?JzL{6PG&`Olv(?1aV_A26#gi;KHHc57iS0|u#Ywt^%oiaU z&Ei+4d0w_}8BKM)6w*jr`KX=iN#WAQ4|Eq##*o~_2KZJjzv-X1e#*aVR}mMxN49H9 zKdq6d`R7JbgL|%YMJ>gaGKwus;>LSki(9{a++&$>v^agB zxIBNxMshAZshw2y_1UMF!F*wEdE%7fvl9Ione+Si z4LGYdI+FRuZ~P4VS`q=2~#(V@`#xBt-c$cZL9 z<`T~vbm*>IJcnbma>`eU6sp-0kBN^_p7E(-{mqii*9Lcu1}ocL-1p^#J6lCXaJ<-q z29Ew4yUy#FsQui=n@CHh(N40PzC)X!7py*Fs!uP{+te6WeAW5UC&s9_{hReE$>_JY zPBMMU6AGceO zag}@V>B-WCO{6O=h2`4I^*y&PSR2`#`J^SrZ!Jd2SkS8>x_art%|EtW7d;#}`}b^f z^d>ugwY7QM!Iv2u$6h70r=^n5YtR*>GEJt2STc=EOf872y<#djSzIJWBWf7D+gRuA za}^;w_uAj;uXs0m6$q0`)7}gg2uxo}xLu@wx@{A~_DX*#(}*aejuM?KF7AOIUTMy! znHmii*3*lOWwf?NbZxlqPX2vz1J!cvip=Db{B1j;Hf{VhG0(~4aXZtPec~O@+w4G< zfg2Xm-eW?7T4K#s3@|?Z#n6ZqwtVBSM8^-Zg1$-M~a`$kH|1>i^4(=k&0&Z zFg{;r?s>FLVN+ImaSW%XNZ1+MC%GbNc{UvaJux-s*h4QTD00;$nt4{$3Mb_Lvrb4^HLOs@s_1< zhTKly`J&rW^xS8GinP$=R%bc$Jax^^XE$c(eKhl_7|efe&i!i9Zr+*plhHi;*E_EJ zYFwMb^k#VK%yVm+s$<`a@ZP4=n~@@)^b?a|k5^4U*JxDsVcF_cN8jBsx^+5@0G%6N z&ZeXSr;iR4+vy8LE`OSli9Geg@{Epos|urQ&f?UUu8a5H#)`@5t&cB zZG|#X;H=?-B46duW10fX)GLVHWjn|h9paVr#yBp$WkdYq`gSp0(Ssqdi^1;P`F^Irqv&x`W= z4&4tZeO-4y-}#n$u&Iss)r_63zU^PMyA$jjJ1Q<(~H zgvuNWSL%m1#Efo`ccDxWAn%z9YKRi^7CP3{#F0XE0~;kxsU7FPA+ki&HX*= zIewY28aC`sj!uJ9F1FLrr}vVPsyS9?mLpbnvi6(y1#5%~_dR#uJ>zV9^P$7Di?hl` z&2|%?%Qm=6a&Ry`czkv_)^^&EVE?&It`JZ~vW`1Y-x88!KEn9Wya z_B+|fLXnOi+#Ap9be9rqVrkrrR4LXi-%_IIY|Ft>yr*s4Dn=^**1ij$HiYsxgp#!y z1SM9BJg1YKI&Z4Xtfr-YTSp>I`OEG8v6Uu>Tc(bD4$E78u>RznVlT<`f=j`NHHv*4#fDp3GAVO(JAaHa z90;`bl8u~@H#p6(Dl4JbC7ZH&`CLdX)$i!;*M@(8GVA4KjzeCW15clPo=&e1ZHQV= zoS--oa`NQGxt{!f|K+@GYC&xZl`-3;6#NCn{9j{Q2}q z8#W~HYkp{Mo|^ZxOO+2`e#qv&_@+Zp_uzt`O*2LPiMZ}Lve{v@j(pMZhVRj8lS`x};*SX!PRGzsuEvjT))K!&B-UszX59>1573LzUlAm-Z zaqk?(BKo%}_x<${8R;s!9tQ>8L(yy%;N@UiJ`*(DY-3~ddMG6=O%5fuX#4}j+#j4( z8aX++?1shYKdThz^0=Ro!B4YoQ$s@ob69hfpO|HLWlr<)N9$`V)#yyoO{1$=>6toj zV8Hjtl{5{EOdL2z=;A*KG$l|)0U+;qf6oz%d$^Mvc>ph&m`YUOa=maRK3OIvvzX^n z;YaqRpG{jx0Ea#kxJnMezaMQTf`+v(6BBDkmrxqpX1)~8hc?6UdDq|9H+oc6$*eB7 zSIBE?)8mH)fb$?4C$ir;pt7ClbU`!i^siq8bA@F&YAxf=8YLA%XTKm=B0(7?B_?PWyd#ytE9GUo?NRGWc9tCJmrv*4b9Aq7!{=AEeB|y@Qef6qA zs@b+#+8agb%($G>H*azgG&I!LzvD8rw-*6lYX%f(aULy~qe$e@qS>GZIglsdjT1Z% zP#ZxCq`dxwnk4T>e;4VFeq7_%5(o4H`S|;LzPa-FoP02dPp1Yd`I)U$%afvgG0D(mB3OcDlYh)qtSrHW~qg?rxJ-$d$UPCrd90^P`Dti?ciUV&Y=@!Ys zbWcLr+B%E0PyNCLqD?h4bZee2FEWBRqK0wPsri;1khe&mK=g`e*n#@ddMo%}vDBq5*^7j`sC+*)RS?6VRL4b2u3Q3#&>P7IA4 zS&lQ;lD=ovXx5^s@F8mc#RWC?yR7e+DqAp^`5vq)ArLB}$AH<3Z(XL!j72VAx$=@| z?_g%h&?!e#>o(B&8X6m$=7`Jmlwrp^AD(tSgo5vH6@S(;c-oKH(6X@bLeFkG!9=yW zCC6A5UEFfzmZgy7%i5V7_uZ|Nhcu{Lt2cq$kGvtP@E>)QPO4^ zYm`!9B1w^(Y?UO-IFwLP=v0JADWT1|;(i|8b6@A)*X#as`loGX{O0*R-|hK*Kksj; zJdTGefntq^5;VI<-^)wR_gT>lZ0TA;VuqMu^VY4#DvZOuaxpP6L(nIwsHzI12VTj{ z+*}XKM8wbqb*-Cm1t5U;x8%u}=$n4)Jl0kkpym7gCN1+34;|s@B_(rVoqqdG(>T+@ z&0GV7Jpjo|-@GtwcyN!dY(5CZo40IHR#UUIdzW-N@S0HLe7lRS?-KcZ-{RDywF{tf zZt2>$?>D2YV)r)*t`?2H>3O5*-xUC@s9`$VbJD{}E7mge*Ulr;1dzej!0;@<$^%$Y z$}!Jwvz?uhNp7W!)QW$$Hwnxom+$14cr~kGPn>Ho-q&L_6uDxoGI1zOs${X_iR!r( zCHkVu0`!=N+2zjBDf@U7yT-BpD>PJMn3_Rb`Dw7D!^>&H@&1{F1f{u)>|Mrh^-pN7 z_R{RYp|U2PQ>XyIsr~ZM#6dEAR?n|@ePrKm%^kQQloAwQHO7NwDu8{lKoesc$j6b9 z3e6)+K0jF8#Dh`>`>Ob~KBO(tFeBPZaB9fBJ_22G=+R=a=9ZV2leq)%9Bc8tqQMuT zt%T&kaMABT;DskACvUj2xvHtjX5d-zy6MX21MY(@5@wl6hv+1}?*4sgo8_OAAOMzu zLx$Rvz(%m|n9x|I7H~#Ez7eK|K;Cn(-d?ijEc(@bf4aN)siu#1HJ+?)Lbq>pS(yoL z3+ocl5bzM}g9i^rx+etCidy{LPn|reLh(RI9x*spsf76fX$4xYXuf9Z>u*G;Yd5iG zO*mNZaW7Jh6l$~kZFqPe9VP$|7w&v5Xm9D$5m3OQ@Gw6L{3ty<+9p&b+fAEPVq($J zFNF^ISpdoy*!bDe_Ppz8+c`1*o%4H~uU0n{cT*{{S960S#pRe#0Krdf3sQjfd9HcAvTDdgnhqJ-Ol7=3<3!sLAx*J&EN7**>Gd5_1t<93QF&PSz zH4V85-C0I;LBGEdcYG|EJJ6<=n3}o>j0H0KcV{8zdeGOL!l#<=H4isBW)}s?1nd&m zdRs8{BR=vc8B0K%L1E#W7cNj!BV#VOLtPfR{g>w0H?IiIv(p+MI)2Dd*R@_wd)aNO z|`n1E+;i!9Q?Z5*fxY#C-Y>8zM?Vu$DJLEAWMRE8x%7%tFoBbTTwKBcd z?`qDx1f+<0e1T7s{s73dPy%ql^+X8T@vO)zjel(cY{@8%GxuH6yVh&fF1ktv1})zE zJv}u<#l#d(WM~8E2cSZ}BL}Y|-$zFs9(~~Fh+oQvM8FyYm?;k4bw@|}!H1p(iZU0g zb9Sm9i+iyJs-{`chs~nM{sV!H4BcRwn!Z#%OVll|`ufx%oYN2$6@8HW_O17b3Hot|wauQV5b4?O3(yh#|KtjD#a$iu>lFGPg@G!*=6FW=!ns*RKiC&kf23 z=F+9D-u!q4Np9{a#>gm*Bmaqpwl4~O6t)VcA@*d%fv||kxmrI%<4o<6ahqjY+W`js z)_i_k71#l_;o)HcerJP%B|zqjl?7-cLQ{$s8=hXFAm!Q1L*0m3 zVu*!-gD+q7pM92Md#yDFh>9q9>liYg0wFmXZdVimg3;IeAOwo)M&m&q=C>q*|A{FI z8pM5Ka)j~nlr^B$1`o8t=UL!S8#HEjA)%RVhHUFG|3z-&^V}lDlvf`$jHz@KtGIV{IKr{$cv` z=~8??-wl+P3+d?x%$af^ElQ&FNl?}2!oxxz?4Jw$s zflIw3=d?dIQ`E(2ba-T>1}nuzu7H*u8RF3Z6e~1Rj4WJy4qSL1yu_>ieogFs0sO5> zZU{^WN1*g77hOZutp^tKje|HqxvdKe3!4rJGaxJvJ+i~O9_16?J0|92WMlyP9CQ0a z>AJGv`&w0=21csqA@4+dBrX^hM8_x+AjdsfhbC8QP9QA>6JMM?iycXVgf&2V%G<)) zmAC2HZLzjbXX3F&?&V_k85>-X7~#?_V@3cHWFW_=fbN+-Z{E9`dr>Q~$fhFdCNL{# zR=2kzFN29Eq^9oS44J*{*~A60kCYkp^XYV3bxb1Bgn&1asG#86?SUW3 z$;tVc(lI7-_*1~4@bK{7&p}90!2?Tw;_ZHLrsHaFA311k>ClB)AnQet;zAL9)uB*? z!C;`vWNmHun|zIBFI00%fW&{j(svEq*LB|)M!8;JUmnnb?EiI=$<7r&3No2$AuIgU z9yfa`3O{q3_~b{ukj~l&Zqt(@)EVko8DCt;66>14U!+k0<9C;;F#3UV;F#~0T$#+%=W zx_ub$xNHp(uqvT~6MXy`(}Sgj-4A`bCf~)Bss6cwtm?lP?ay)@`HC(wHxLPwkdI=3 z&Pom^{)tI(ak16<^_VOn1y?)tCiD1(%a`jyCXh#egh*V4$rQp}mNnd~WAQmuE~atQjgXWanJKN-*a^G9VxT^_0byEvJI{ef$G6A@5rT zCl`TK1!~AS-~s4&oagi76B4A#fDJ;XRfXJ?2b{1|n!aUrGlGmP6zmoGuGI>E7;jWz z2$M6028>^kK;djSl_)UpsY3c#5;P~Sw#Q9_SL-G)_qU*X?EzbSSGo8bY8^dOgppfU!Scd3n}nAkDr zYpdaOpNt^|1r)XLTp--@`cy+YI%@4f&{uKWWPE+{P$o>u3S;O{I*|~J^upoA3INLC zU|Zt4|vp9pyzu>Dkm{y@CGM1G{+away`~eW>^R4?=3#cdBY?ZkQ-SrjEf2 zJm~%d>g>)}uV?^wFS5_4fIzl@n?cMXLUyK_+HWDkd%aDJ(oCiUWY& zR*afZrP2!uq@nt)222%BQy1um+VRJ%*z6;qFELT~rZkgbW$2jpYtEu9G<6gNQ(fP*xq8fQK|`5ke*%i8!-Jtt6v5K{r|dCK5nLsm`;j{}016@XD+8yVPu5JWJ8U;j#8MwGtKllX& z4YoXBv%e5?Om4pM%XXMW$i(-r2vgKy;FnX4gJvR|n@WMxka_WfmqlOD}-x`qiI`kmAMZQT!cvJ!G5et^ynL$aAQEv~H$6$nn>%;U__Jtl2U}^6D ztN>U}6=n#8fm<9F5y8~doI&M-Pd$c;ij8do92XB`xljR%p}Ls)T``L1Sd~da4Z`D% zAIH7KYD!gJ_w@nNdAnv^XlQw%iZp$hL=bJ(BgHG_Z`tF5Fb?*8HT t_US#J4D Date: Sun, 4 Jul 2021 00:37:12 +0000 Subject: [PATCH 0595/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 5578a5bfb7..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 62 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 32 Performance From 29a9325c9c54acc35bf7abef210b48e0e4851104 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 4 Jul 2021 01:47:55 +0000 Subject: [PATCH 0596/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9ef0c65718..1864084bb5 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Google Play Publishing](https://www.reddit.com/r/androiddev/comments/oco6mi/google_play_publishing/) -- [I want to become an android dev](https://www.reddit.com/r/androiddev/comments/ocn3au/i_want_to_become_an_android_dev/) -- [Does Lens Studio use ARKit/ARCore?](https://www.reddit.com/r/androiddev/comments/oclwu6/does_lens_studio_use_arkitarcore/) -- [Android Jetpack Compose (Conditional Navigation)](https://www.reddit.com/r/androiddev/comments/ochklq/android_jetpack_compose_conditional_navigation/) -- [Wireless debugging: Are you repeatedly typing the full addresses in the console?](https://www.reddit.com/r/androiddev/comments/ochju8/wireless_debugging_are_you_repeatedly_typing_the/) -- [Here is a beginner guide to learn Reactivate Programing with kotlin](https://www.reddit.com/r/androiddev/comments/ocgz7f/here_is_a_beginner_guide_to_learn_reactivate/) -- [Fatal Exception: androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching](https://www.reddit.com/r/androiddev/comments/ocgkvz/fatal_exception/) -- [I’m using “managed publishing.” I submitted a build to production for review. I have not published the build. Why are my subsequent Closed Beta submissions saying “superseded”?](https://www.reddit.com/r/androiddev/comments/ocgea4/im_using_managed_publishing_i_submitted_a_build/) -- [What technologies should my team learn in order to implement an in-app messaging system?](https://www.reddit.com/r/androiddev/comments/ocg710/what_technologies_should_my_team_learn_in_order/) -- [[noob] Do I need android studio if I am going to run the app on a physical device (my smartphone)? I already have installed VSvode & node.js. (react native)](https://www.reddit.com/r/androiddev/comments/ocf56r/noob_do_i_need_android_studio_if_i_am_going_to/) +- [Android studio not opening - Java.io.file.InvalidPathException: Trailing char < > at index 80: C:/Users/Livin/AndroidtStudioProjects/LoginApplication/Studion/caches/trunk-system](https://www.reddit.com/r/androiddev/comments/odagos/android_studio_not_opening/) +- [Step3 - Learn how to use Room Database](https://www.reddit.com/r/androiddev/comments/oda35u/step3_learn_how_to_use_room_database/) +- [In a bit of a coding pickle](https://www.reddit.com/r/androiddev/comments/od9nsg/in_a_bit_of_a_coding_pickle/) +- [Best Courses in Kotlin For Beginner/Mid Level](https://www.reddit.com/r/androiddev/comments/od6xgm/best_courses_in_kotlin_for_beginnermid_level/) +- [ro.serialno Is it necessary???](https://www.reddit.com/r/androiddev/comments/od68rm/roserialno_is_it_necessary/) +- [Is there a NoSQL option for Android?](https://www.reddit.com/r/androiddev/comments/od489r/is_there_a_nosql_option_for_android/) +- [Is the age of mobile apps over?](https://www.reddit.com/r/androiddev/comments/od2d7v/is_the_age_of_mobile_apps_over/) +- [How do I get to the google developer portal?](https://www.reddit.com/r/androiddev/comments/od14e3/how_do_i_get_to_the_google_developer_portal/) +- [Pass Parcelable args in the routes navigation, e.g. Compose](https://www.reddit.com/r/androiddev/comments/od0xu4/pass_parcelable_args_in_the_routes_navigation_eg/) +- [Android Studio Arctic Fox Beta 5](https://www.reddit.com/r/androiddev/comments/od0ure/android_studio_arctic_fox_beta_5/) ### *InfoWorld posts* From ebb11633d2dd7805e67179cdf457d732756ca9e6 Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Sun, 4 Jul 2021 21:23:01 +0300 Subject: [PATCH 0597/2080] Added info on workflows Updates on github-actions --- .dependabot/config.yml | 6 +- .github/labeler.yml | 14 ++ .github/workflows/greetings.yml | 13 ++ .github/workflows/label.yml | 12 ++ .github/workflows/lint-pr.yml | 16 +++ .github/workflows/yaml-lint.yml | 18 +++ .markdownlint.yml | 3 + .markdownlintignore | 1 + .mergify.yml | 13 ++ .release-it.json | 15 +++ .textlint.terms.json | 209 +++++++++++++++++++++++++++++ .textlintrc.js | 50 +++++++ .yamllint.yml | 7 + CHANGELOG.md | 2 +- README.md | 54 ++++---- docs/contributing/info.md | 14 +- docs/user-guide/code_of_conduct.md | 4 +- docs/user-guide/troubleshooting.md | 10 +- docs/user-guide/upgrade.md | 2 +- package.json | 15 ++- pr-lint.config.js | 13 ++ 21 files changed, 449 insertions(+), 42 deletions(-) create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/greetings.yml create mode 100644 .github/workflows/label.yml create mode 100644 .github/workflows/lint-pr.yml create mode 100644 .github/workflows/yaml-lint.yml create mode 100644 .markdownlint.yml create mode 100644 .markdownlintignore create mode 100644 .release-it.json create mode 100644 .textlint.terms.json create mode 100644 .textlintrc.js create mode 100644 .yamllint.yml create mode 100644 pr-lint.config.js diff --git a/.dependabot/config.yml b/.dependabot/config.yml index 3ea4679c45..2f6ff0b910 100644 --- a/.dependabot/config.yml +++ b/.dependabot/config.yml @@ -10,6 +10,10 @@ update_configs: - package_manager: "javascript" directory: "/" update_schedule: "live" + automerged_updates: + - match: + dependency_type: "all" + update_type: "semver:minor" allowed_updates: - match: dependency_type: "development" @@ -38,4 +42,4 @@ update_configs: - package_manager: "python" directory: "/" - update_schedule: "weekly" \ No newline at end of file + update_schedule: "weekly" diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000000..3567bfde57 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,14 @@ +# https://github.com/actions/labeler/blob/master/README.md + +src: + - src/* + +repo: + - Dockerfile + - entrypoint.sh + +.github-actions: + - .github + +license: + - ./LICENSE diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 0000000000..dded9c13d9 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,13 @@ +name: Greetings + +on: [ pull_request, issues ] + +jobs: + greeting: + runs-on: ubuntu-latest + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: 'Message that will be displayed on users'' first issue' + pr-message: 'Message that will be displayed on users'' first pr' diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 0000000000..3da6b1561e --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,12 @@ +name: Labeler + +on: [ pull_request ] + +jobs: + label: + runs-on: ubuntu-latest + + steps: + - uses: actions/labeler@v2 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml new file mode 100644 index 0000000000..13ca0e1f8f --- /dev/null +++ b/.github/workflows/lint-pr.yml @@ -0,0 +1,16 @@ +name: Lint PR + +on: + pull_request: + types: [ labeled, unlabeled, opened, edited ] + +jobs: + lint-pr: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + with: + ref: ${{ secrets.GITHUB_REF }} + - uses: yogevbd/pr-lint-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/yaml-lint.yml b/.github/workflows/yaml-lint.yml new file mode 100644 index 0000000000..3ea6b5c398 --- /dev/null +++ b/.github/workflows/yaml-lint.yml @@ -0,0 +1,18 @@ +name: YAML Lint + +on: + push: + paths: + - '**.yml' + +jobs: + lint: + name: Lint + timeout-minutes: 3 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: ibiqlik/action-yamllint@v3.0.2 + with: + config_file: .yamllint.yml + strict: false diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000000..4f70a1de8c --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,3 @@ +--- +default: true +line_length: false diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1 @@ +node_modules diff --git a/.mergify.yml b/.mergify.yml index e63f450ece..c1f067d49d 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -12,6 +12,7 @@ pull_request_rules: merge: method: squash strict: smart + strict_method: merge # if there is a conflict in a backport PR, ping the author to send a proper backport PR - name: ping author on conflicts @@ -56,3 +57,15 @@ pull_request_rules: - merged actions: delete_head_branch: {} + + - name: Automatically approve Dependabot PRs + conditions: + - base=master + - author~=^dependabot(|-preview)\[bot\]$ + - -title~=(WIP|wip) + - -label~=(blocked|do-not-merge) + - -merged + - -closed + actions: + review: + type: APPROVE diff --git a/.release-it.json b/.release-it.json new file mode 100644 index 0000000000..d5a65e0985 --- /dev/null +++ b/.release-it.json @@ -0,0 +1,15 @@ +{ + "git": { + "commitMessage": "chore(release): v${version}", + "requireBranch": "main", + "requireCommits": true, + "tagName": "v${version}", + "push": true + }, + "github": { + "release": true + }, + "npm": { + "publish": false + } +} diff --git a/.textlint.terms.json b/.textlint.terms.json new file mode 100644 index 0000000000..c6fdb878f4 --- /dev/null +++ b/.textlint.terms.json @@ -0,0 +1,209 @@ +[ + "3D", + "API", + "Airbnb", + "Ajax", + "Algolia", + "Android", + "BrowserStack", + "Browsersync", + "CSS", + "CodePen", + "CodeSandbox", + "Codecov", + "DocSearch", + "ECMAScript", + "ESLint", + "EditorConfig", + "GIF", + "GitHub", + "GraphQL", + "HTML", + "HTTPS", + "ID", + "InstantSearch", + "IoT", + "I/O", + "JPEG", + "JavaScript", + "JetBrains", + "LinkedIn", + "Lodash", + "MIME", + "MacBook", + "Markdown", + "OK", + "OpenType", + "PDF", + "PNG", + "PaaS", + "SaaS", + "Sass", + "SemVer", + "TypeScript", + "URL", + "UglifyJS", + "WebStorm", + "WordPress", + "YouTube", + "advancedSyntax", + "allowCompressionOfIntegerArray", + "allowTyposOnNumericTokens", + "alternativesAsExact", + "analyticsTags", + "aroundLatLngViaIP", + "aroundLatLng", + "aroundPrecision", + "aroundRadius", + "aroundRadius", + "attributeForDistinct", + "attributesForFaceting", + "attributesToHighlight", + "attributesToRetrieve", + "attributesToSnippet", + "camelCaseAttributes", + "clickAnalytics", + "customRanking", + "decompoundedAttributes", + "disableExactOnAttributes", + "disablePrefixOnAttributes", + "disableTypoToleranceOnAttributes", + "disableTypoToleranceOnWords", + "enableRules", + "exactOnSingleWordQuery", + "e-commerce", + "facetFilters", + "facetingAfterDistinct", + "getRankingInfo", + "highlightPostTag", + "highlightPreTag", + "hitsPerPage", + "iOS", + "ignorePlurals", + "insideBoundingBox", + "insidePolygon", + "jQuery", + "maxFacetHits", + "maxValuesPerFacet", + "minProximity", + "minWordSizefor1Typo", + "minWordSizefor2Typos", + "minimumAroundRadius", + "npm", + "numericAttributesForFiltering", + "numericFilters", + "open source", + "optionalFilters", + "optionalWords", + "pagehitsPerPagepagination", + "paginationLimitedTo", + "percentileComputation", + "queryType", + "removeStopWords", + "removeWordsIfNoResults", + "replaceSynonymsInHighlight", + "responseFields", + "restrictHighlightAndSnippetArrays", + "restrictSearchableAttributes", + "ruleContexts", + "searchableAttributes", + "searchableAttributes", + "separatorsToIndex", + "snippetEllipsisText", + "sortFacetValuesBy", + "sumOrFiltersScores", + "tagFilters", + "typoTolerance", + "unretrievableAttributes", + ["3-D", "3D"], + ["Aloglia", "Algolia"], + ["CLI tool(s?)", "command-line tool$1"], + ["HTTP[ /]2(?:\\.0)?", "HTTP/2"], + ["I-O", "I/O"], + ["JSDocs?", "JSDoc"], + ["Mac ?OS", "macOS"], + ["Nodejs", "Node.js"], + ["OS X", "macOS"], + ["React[ .]js", "React"], + ["SauceLabs", "Sauce Labs"], + ["StackOverflow", "Stack Overflow"], + ["an URL", "a URL"], + ["auto[- ]complete", "autocomplete"], + ["auto[- ]fixing", "autofixing"], + ["auto[- ]fix", "autofix"], + ["auto[- ]format", "autoformat"], + ["a npm", "an npm"], + ["backwards compatible", "backward compatible"], + ["back[- ]end(\\w*)", "backend$1"], + ["bug[- ]fix(es?)", "bugfix$1"], + ["build system(s?)", "build tool$1"], + ["built ?in", "built-in"], + ["check[- ]box(es?)", "checkbox$1"], + ["client ?side", "client-side"], + ["code-?review(s?)", "code review$1"], + ["code-?splitting", "code splitting"], + ["code[- ]base(es?)", "codebase$1"], + ["command ?line", "command-line"], + ["co[- ]locate(d?)", "colocate$1"], + ["css-?in-?js", "CSS in JS"], + ["datas", "data"], + ["ecommerce", "e-commerce"], + ["end ?to ?end", "end-to-end"], + ["end-?user(s?)", "end user$1"], + ["end[- ]point(s?)", "endpoint$1"], + ["environemnt(s?)", "environment$1"], + ["error ?prone", "error-prone"], + ["e commerce", "e-commerce"], + ["e[- ]mail(s?)", "email$1"], + ["falsey", "falsy"], + ["feedbacks", "feedback"], + ["file-?type(s?)", "file type$1"], + ["file[- ]name(s?)", "filename$1"], + ["front[- ]end(\\w*)", "frontend$1"], + ["he or she", "they"], + ["he/she", "they"], + ["higher ?order", "higher-order"], + ["host[- ]name(s?)", "hostname$1"], + ["hot[- ]key(s?)", "hotkey$1"], + ["id(s?)", "ID$1"], + ["informations", "information"], + ["key[/ ]?value", "key-value"], + ["life[- ]cycle", "lifecycle"], + ["life[- ]stream(s?)", "lifestream$1"], + ["lock[- ]file(s?)", "lockfile$1"], + ["mark-up", "markup"], + ["meta[- ]data", "metadata"], + ["name[- ]space(s?)", "namespace$1"], + ["one URLs", "one URL"], + ["opensource([\\.,]?)", "open source$1"], + ["open-source([\\.,]?)", "open source$1"], + ["pacakge(s?)", "package$1"], + ["pre[- ]condition(s?)", "precondition$1"], + ["pre[- ]defined", "predefined"], + ["pre[- ]release(s?)", "prerelease$1"], + ["regexp?(s?)", "regular expression$1"], + ["repo\\b", "repository"], + ["run[- ]time", "runtime"], + ["screen[- ]shot(s?)", "screenshot$1"], + ["screen[- ]?snap(s?)", "screenshot$1"], + ["server ?side", "server-side"], + ["slave(s?)", "replica$1"], + ["smartphone(s?)", "mobile phone$1"], + ["source-?map(s?)", "source map$1"], + ["styled ?components", "styled-components"], + ["style-?guide(s?)", "style guide$1"], + ["style-?sheet(s?)", "style sheet$1"], + ["sub[- ]class((?:es|ing)?)", "subclass$1"], + ["sub[- ]tree(s?)", "subtree$1"], + ["tilda", "tilde"], + ["time[- ]stamp(s?)", "timestamp$1"], + ["touch[- ]screen(s?)", "touchscreen$1"], + ["tree-?shaking", "tree shaking"], + ["user-?base", "user base"], + ["user[- ]name(s?)", "username$1"], + ["walk[- ]through", "walkthrough"], + ["web-?page(s?)", "web page$1"], + ["white[- ]space", "whitespace"], + ["wild[- ]card(s?)", "wildcard$1"], + ["wi[- ]?fi", "Wi-Fi"] +] diff --git a/.textlintrc.js b/.textlintrc.js new file mode 100644 index 0000000000..dd59a01308 --- /dev/null +++ b/.textlintrc.js @@ -0,0 +1,50 @@ +/* eslint-disable import/no-commonjs */ +const textlintMode = process.env.TEXTLINT_MODE; + +const allRules = { + alex: { + allow: ['color', 'hook', 'host-hostess', 'itch'], + }, + 'common-misspellings': true, + 'en-capitalization': false, + 'stop-words': { + exclude: [ + 'relative to', // We need to talk about links "relative to the root", + 'pick out', // Needed word, not to clumsy + 'encounter', // Needed word, not to clumsy + 'proceed', + 'therefore', + 'this command', + 'Failure to', + 'frequently', + 'ALL of', + 'in addition to', + 'in addition', + 'Take a look at', + 'In addition to', + 'In addition', + 'simply', + 'deem' + ], + }, + terminology: { + defaultTerms: false, + terms: `${__dirname}/.textlint.terms.json`, + }, + 'write-good': { + passive: true, + severity: 'warning', + }, +}; + +// Not all rules are automatically fixable, so when running `yarn run +// lint:md:fix`, we only run the one that can be fixed. +const fixableRules = { + 'common-misspellings': allRules['common-misspellings'], + 'en-capitalization': allRules['en-capitalization'], + terminology: allRules['terminology'], +}; + +module.exports = { + rules: textlintMode === 'fix' ? fixableRules : allRules, +}; diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 0000000000..169fc32eda --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,7 @@ +--- +extends: default + +rules: + line-length: + max: 150 + level: warning diff --git a/CHANGELOG.md b/CHANGELOG.md index c82cdd5856..1fd9a5b406 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-03) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-04) diff --git a/README.md b/README.md index 9ef0c65718..a15b9fbd87 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -248,6 +250,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [Google Play Publishing](https://www.reddit.com/r/androiddev/comments/oco6mi/google_play_publishing/) - [I want to become an android dev](https://www.reddit.com/r/androiddev/comments/ocn3au/i_want_to_become_an_android_dev/) - [Does Lens Studio use ARKit/ARCore?](https://www.reddit.com/r/androiddev/comments/oclwu6/does_lens_studio_use_arkitarcore/) @@ -257,12 +260,14 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Fatal Exception: androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching](https://www.reddit.com/r/androiddev/comments/ocgkvz/fatal_exception/) - [I’m using “managed publishing.” I submitted a build to production for review. I have not published the build. Why are my subsequent Closed Beta submissions saying “superseded”?](https://www.reddit.com/r/androiddev/comments/ocgea4/im_using_managed_publishing_i_submitted_a_build/) - [What technologies should my team learn in order to implement an in-app messaging system?](https://www.reddit.com/r/androiddev/comments/ocg710/what_technologies_should_my_team_learn_in_order/) -- [[noob] Do I need android studio if I am going to run the app on a physical device (my smartphone)? I already have installed VSvode & node.js. (react native)](https://www.reddit.com/r/androiddev/comments/ocf56r/noob_do_i_need_android_studio_if_i_am_going_to/) +- [\[noob\] Do I need android studio if I am going to run the app on a physical device (my smartphone)? I already have installed VSvode & node.js. (react native)](https://www.reddit.com/r/androiddev/comments/ocf56r/noob_do_i_need_android_studio_if_i_am_going_to/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -273,6 +278,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* diff --git a/docs/contributing/info.md b/docs/contributing/info.md index 2db93a9e00..b6b784226b 100644 --- a/docs/contributing/info.md +++ b/docs/contributing/info.md @@ -2,7 +2,7 @@ Thanks for contributing to ObjectMappers! -This is a set of guidelines for contributing to IceCore Hashids. Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. +This is a set of guidelines for contributing to IceCore Hashids. Please take a moment to review this document to make the contribution process easy and effective for everyone involved. Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests. @@ -14,7 +14,7 @@ ObjectMappers is an open source project and we love to receive contributions fro The project development workflow and process uses [GitHub Issues](https://github.com/AlexRogalskiy/object-mappers-playground/issues)- and [Pull Requests](https://github.com/AlexRogalskiy/object-mappers-playground/pulls) management to track issues and pull requests. -Before you continue with this contribution guideslines we highly recommend to read the awesome GitHub [Open Source Guide](https://opensource.guide) on how to [making open source contributions](https://opensource.guide/how-to-contribute). +Before you continue with this contribution guideslines we highly recommend to read the awesome GitHub [Open source Guide](https://opensource.guide) on how to [making open source contributions](https://opensource.guide/how-to-contribute). ### *Bug Reports* @@ -35,7 +35,7 @@ When you are creating a bug report, please provide as much detail and context as If possible please provide more context by answering these questions: -- **Did the problem start happening recently** (e.g. after updating to a new version of IceCore Hashids) or was this always a problem? If the problem started happening recently, **can you reproduce the problem in an older version of IceCore Hashids**? What is the most recent version in which the problem does not happen? +- **Did the problem start happening recently** (for example after updating to a new version of IceCore Hashids) or was this always a problem? If the problem started happening recently, **can you reproduce the problem in an older version of IceCore Hashids**? What is the most recent version in which the problem does not happen? - **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. Please include details about your configuration and environment: @@ -69,7 +69,7 @@ Before creating enhancement suggestions, please check if your idea fits with the This section guides you through submitting an pull request. Following these guidelines helps maintainers and the community to better understand your code. -**Please** [**suggest an enhancement**](info.md#enhancement-suggestions) **or** [**report a bug**](info.md#bug-reports) **first before embarking on any significant pull request** (e.g. implementing features, refactoring code, fixing a bug), otherwise you risk spending a lot of time working on something that the core team members and project owner might not want to merge into the project. +**Please** [**suggest an enhancement**](info.md#enhancement-suggestions) **or** [**report a bug**](info.md#bug-reports) **first before embarking on any significant pull request** (for example implementing features, refactoring code, fixing a bug), otherwise you risk spending a lot of time working on something that the core team members and project owner might not want to merge into the project. When you are submitting an pull request, please provide as much detail and context as possible. Fill out [the required template](https://github.com/AlexRogalskiy/object-mappers-playground/blob/develop/.github/PULL_REQUEST_TEMPLATE.md) to help maintainers to understand your submitted code. @@ -111,7 +111,7 @@ We're always looking for more opinions on discussions in issues and pull request The [question](https://github.com/AlexRogalskiy/object-mappers-playground/labels/question) issue label is a good place to find ongoing discussions and questions. -## *Styleguides* +## *StyleguIDes* Every major open source project has its own style guide, a set of standards and conventions for the writing and design of code, documentations and Git commit messages. It is much easier to understand a large codebase when all the code in it is in a consistent style. @@ -156,7 +156,7 @@ The more code there is to go through, the less likely developers can understand #### *Minimal and readable* -Minimal does not mean terse – don't sacrifice communication to brevity. Use consistent naming and indentation following the [styleguide](info.md#styleguides), and include comments if needed to explain portions of the code. +Minimal does not mean terse – don't sacrifice communication to brevity. Use consistent naming and indentation following the [styleguIDe](info.md#styleguides), and include comments if needed to explain portions of the code. ### *Complete* @@ -178,4 +178,4 @@ Every significant change is documented in the [changelog](https://github.com/Ale ## *Credits* -Thanks for the inspirations and attributions to GitHub's [Open Source Guides](https://opensource.guide) and various contribution guides of large open source projects like [Atom](https://github.com/atom/atom/blob/master/CONTRIBUTING.md), [React](https://facebook.github.io/react/contributing/how-to-contribute.html) and [Ruby on Rails](http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html). +Thanks for the inspirations and attributions to GitHub's [Open source Guides](https://opensource.guide) and various contribution guides of large open source projects like [Atom](https://github.com/atom/atom/blob/master/CONTRIBUTING.md), [React](https://facebook.github.io/react/contributing/how-to-contribute.html) and [Ruby on Rails](http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html). diff --git a/docs/user-guide/code_of_conduct.md b/docs/user-guide/code_of_conduct.md index e5ffbae832..39131ca9e1 100644 --- a/docs/user-guide/code_of_conduct.md +++ b/docs/user-guide/code_of_conduct.md @@ -49,6 +49,6 @@ Decisions about consequences of violations of this Code of Conduct are made by t ## *Scope* -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -Thanks for the inspirations and attributions to GitHub's [Open Source Guides](https://opensource.guide), [Hoodie's Code of Conduct](http://hood.ie/code-of-conduct) and the [Contributor Covenant Version 1.4](http://contributor-covenant.org/version/1/4/). +Thanks for the inspirations and attributions to GitHub's [Open source Guides](https://opensource.guide), [Hoodie's Code of Conduct](http://hood.ie/code-of-conduct) and the [Contributor Covenant Version 1.4](http://contributor-covenant.org/version/1/4/). diff --git a/docs/user-guide/troubleshooting.md b/docs/user-guide/troubleshooting.md index 88c2b6044e..8b7b33e450 100644 --- a/docs/user-guide/troubleshooting.md +++ b/docs/user-guide/troubleshooting.md @@ -14,15 +14,15 @@ See the [Upgrading guide](https://github.com/AlexRogalsky/object-mappers-playgro ### Step 2: Search Relevant Places For Similar Issues -- \[ ] Search issues on the [repo](https://github.com/AlexRogalsky/object-mappers-playground/) for a similar problems? +- \[ ] Search issues on the [repository](https://github.com/AlexRogalsky/object-mappers-playground/) for a similar problems? - \[ ] Read the [README](https://github.com/AlexRogalsky/object-mappers-playground/blob/master/README.md) carefully ### Step 3: Observe Build Logs When Developing Locally - \[ ] Run the [fastpages blog server locally](https://github.com/AlexRogalskiy/object-mappers-playground/tree/411b3cc78f62a724d9d5eab4c09535e4ed36ceb3/docs/user-guide/DEVELOPMENT.md) - Pay attention to the emitted logs when you save your notebooks or files. Often, you will see errors here that will give you important clues. -- \[ ] When developing locally, you will notice that Jupyter notebooks are converted to corresponding markdown files in the `_posts` folder. Take a look at the problematic blog posts and see if you can spot the offending HTML or markdown in that code. -- Use your browser's developer tools to see if there are any errors. Common errors are (1) not able to find images because they have not been saved into the right folder, (2) javascript or other errors. +- \[ ] When developing locally, you will notice that Jupyter notebooks are converted to corresponding Markdown files in the `_posts` folder. Take a look at the problematic blog posts and see if you can spot the offending HTML or Markdown in that code. +- Use your browser's developer tools to see if there are any errors. Common errors are (1) not able to find images because they have not been saved into the right folder, (2) JavaScript or other errors. - If you receive a Jekyll build error or a Liquid error, search for this error on Stack Overflow to provide more insight on the problem. ### Step 4: See if there are errors in the build process of GitHub Actions. @@ -34,8 +34,8 @@ See the [Upgrading guide](https://github.com/AlexRogalsky/object-mappers-playgro - \[ ] If you cannot find a similar issue create a new thread instead of commenting on an unrelated one. - When reporting a bug, provide this information: 1. Steps to reproduce the problem - 2. **A link to the notebook or markdown file** where the error is occurring - 3. If the error is happening in GitHub Actions, a link to the specific error along with how you are able to reproduce this error. You must provide this **in addition to the link to the notebook or markdown file**. + 2. **A link to the notebook or Markdown file** where the error is occurring + 3. If the error is happening in GitHub Actions, a link to the specific error along with how you are able to reproduce this error. You must provide this **in addition to the link to the notebook or Markdown file**. 4. A screenshot / dump of relevant logs or error messages you are receiving from your local development environment. the local development server as indicated in the [development guide](https://github.com/fastai/fastpages/blob/master/\_fastpages_docs/DEVELOPMENT.md). **You must provide ALL of the above information**. diff --git a/docs/user-guide/upgrade.md b/docs/user-guide/upgrade.md index c72b429248..952c6fbbd6 100644 --- a/docs/user-guide/upgrade.md +++ b/docs/user-guide/upgrade.md @@ -43,7 +43,7 @@ There are two ways to upgrade. One is an automated way that assumes you have mad ### Easy Way (Recommended) -Create a new repo with the current project by following the [setup instructions](https://github.com/AlexRogalskiy/object-mappers-playground#setup-instructions) in the README. +Create a new repository with the current project by following the [setup instructions](https://github.com/AlexRogalskiy/object-mappers-playground#setup-instructions) in the README. ### Advanced diff --git a/package.json b/package.json index 6effefb841..18b91e9822 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,13 @@ "postinstall": "npm run husky:install", "remark": "remark -q -f .", "commit": "git-cz", + "release": "release-it", "format": "prettier --single-quote --write **/*.{json,yaml,yml}", "format:md": "remark-preset-davidtheclark --format", "format:check": "prettier --check **/*.{json,yaml,yml}", + "lint:text": "textlint docs", "lint:md": "remark-preset-davidtheclark", + "lint:markdown": "markdownlint --config .markdownlint.yml docs/*.md", "lint:json": "jsonlint ./package.json --quiet", "lint:style": "stylelint --color --disable-default-ignores --allow-empty-input verbose **/*.{css,scss,sass}", "lint:docker": "dockerfile_lint -r default_rules.yaml", @@ -49,18 +52,28 @@ "license-checker": "^25.0.1", "lint-staged": "^10.1.6", "markdown-link-check": "^3.8.6", + "markdownlint-cli": "^0.27.1", "stylelint": "~13.13.1", "stylelint-config-standard": "~22.0.0", "stylelint-order": "^4.0.0", "stylelint-scss": "^3.18.0", "prettier": "^2.1.2", "pretty-quick": "^3.1.0", + "release-it": "^14.10.0", "remark-cli": "^9.0.0", "remark-lint-code-block-style": "^2.0.1", "remark-lint-ordered-list-marker-value": "^2.0.1", "remark-preset-davidtheclark": "^0.12.0", "remark-validate-links": "^10.0.2", - "repo-link-check": "^0.7.1" + "repo-link-check": "^0.7.1", + "repo-link-check": "^0.7.1", + "textlint": "^11.3.1", + "textlint-rule-alex": "^1.3.1", + "textlint-rule-common-misspellings": "^1.0.1", + "textlint-rule-en-capitalization": "^2.0.2", + "textlint-rule-stop-words": "^1.0.17", + "textlint-rule-terminology": "^1.1.30", + "textlint-rule-write-good": "^1.6.2" }, "repository": { "type": "git", diff --git a/pr-lint.config.js b/pr-lint.config.js new file mode 100644 index 0000000000..bd9c29fd6d --- /dev/null +++ b/pr-lint.config.js @@ -0,0 +1,13 @@ +module.exports = { + validLabels: ['bug', 'skip-changelog', 'enhancement', 'feature'], + mandatorySections: [ + { + beginsWith: 'Changelog', + endsWith: 'End of changelog', + message: 'Changelog section is mandatory', + validate: section => { + return true + }, + }, + ], +} From cda7736ad35a55b677dafa381753c9c71406734f Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Sun, 4 Jul 2021 18:25:07 +0000 Subject: [PATCH 0598/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 3c06d53e4c..fa4b970440 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From 4a54b0ecd7c90e7dd9fd4fa6e6ddf1f03df868ec Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 4 Jul 2021 23:58:47 +0000 Subject: [PATCH 0599/2080] GitHub traffic --- traffic/clones.csv | 3 ++- traffic/plots.png | Bin 44906 -> 45104 bytes traffic/views.csv | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 5e2f5ebe9f..801d92a971 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -13,4 +13,5 @@ _date,total_clones,unique_clones 2021-06-30,110,32 2021-07-01,233,49 2021-07-02,288,46 -2021-07-03,86,15 +2021-07-03,178,40 +2021-07-04,238,41 diff --git a/traffic/plots.png b/traffic/plots.png index 2e3e646a31fb4f06fc9592fb8985046d12efa162..f8a62d1033d59d8e74b0c5a1f769b5b7c1c91ba3 100644 GIT binary patch literal 45104 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 t_US#J4D Date: Mon, 5 Jul 2021 00:34:01 +0000 Subject: [PATCH 0600/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 26 Performance From 7e15724aa1e643d464812af8d3fafee20c1ec361 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 5 Jul 2021 01:48:05 +0000 Subject: [PATCH 0601/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index fa4b970440..6bacd8eb81 100644 --- a/README.md +++ b/README.md @@ -248,18 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [Android studio not opening - Java.io.file.InvalidPathException: Trailing char < > at index 80: C:/Users/Livin/AndroidtStudioProjects/LoginApplication/Studion/caches/trunk-system](https://www.reddit.com/r/androiddev/comments/odagos/android_studio_not_opening/) -- [Step3 - Learn how to use Room Database](https://www.reddit.com/r/androiddev/comments/oda35u/step3\_learn_how_to_use_room_database/) -- [In a bit of a coding pickle](https://www.reddit.com/r/androiddev/comments/od9nsg/in_a_bit_of_a_coding_pickle/) -- [Best Courses in Kotlin For Beginner/Mid Level](https://www.reddit.com/r/androiddev/comments/od6xgm/best_courses_in_kotlin_for_beginnermid_level/) -- [ro.serialno Is it necessary???](https://www.reddit.com/r/androiddev/comments/od68rm/roserialno_is_it_necessary/) -- [Is there a NoSQL option for Android?](https://www.reddit.com/r/androiddev/comments/od489r/is_there_a_nosql_option_for_android/) -- [Is the age of mobile apps over?](https://www.reddit.com/r/androiddev/comments/od2d7v/is_the_age_of_mobile_apps_over/) -- [How do I get to the google developer portal?](https://www.reddit.com/r/androiddev/comments/od14e3/how_do_i_get_to_the_google_developer_portal/) -- [Pass Parcelable args in the routes navigation, e.g. Compose](https://www.reddit.com/r/androiddev/comments/od0xu4/pass_parcelable_args_in_the_routes_navigation_eg/) -- [Android Studio Arctic Fox Beta 5](https://www.reddit.com/r/androiddev/comments/od0ure/android_studio_arctic_fox_beta\_5/) - +- [How to improve my sudoku app](https://www.reddit.com/r/androiddev/comments/odwrrt/how_to_improve_my_sudoku_app/) +- [Android-programming a "simple" website](https://www.reddit.com/r/androiddev/comments/odvws9/androidprogramming_a_simple_website/) +- [I've been working on this Lottie animation editor to edit and export Lottie animations (supported by Android) without After Effects! A lot of people on here have given super useful feedback so far and here's the UI update I'm implementing based on it. Feel free to sign up on lottielab.io. Thanks!](https://www.reddit.com/r/androiddev/comments/odup0o/ive_been_working_on_this_lottie_animation_editor/) +- [Has anyone gotten rejected from the Play Store for not providing attribution to content creators?](https://www.reddit.com/r/androiddev/comments/ods17r/has_anyone_gotten_rejected_from_the_play_store/) +- [Intercept splash screen API](https://www.reddit.com/r/androiddev/comments/odr93i/intercept_splash_screen_api/) +- [How do i achieve this animation in native android (kotlin) ??](https://www.reddit.com/r/androiddev/comments/odr8mf/how_do_i_achieve_this_animation_in_native_android/) +- [Google's Associate Android Developer Certification vs Udacity's Android Developer Nanodegree](https://www.reddit.com/r/androiddev/comments/odqu19/googles_associate_android_developer_certification/) +- [Can I become an Android developer? How long will it take?](https://www.reddit.com/r/androiddev/comments/odqfru/can_i_become_an_android_developer_how_long_will/) +- [Gradle peace in multi module projects](https://www.reddit.com/r/androiddev/comments/odqe1b/gradle_peace_in_multi_module_projects/) +- [What should I add in the ”what's new" section for the first release in play store?](https://www.reddit.com/r/androiddev/comments/odp731/what_should_i_add_in_the_whats_new_section_for/) ### *InfoWorld posts* From cfb1c810ce897ff4d79476a28d162031e4ca4fd5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 5 Jul 2021 01:48:09 +0000 Subject: [PATCH 0602/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 6bacd8eb81..fd835813d9 100644 --- a/README.md +++ b/README.md @@ -263,7 +263,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -274,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) - ### *RedHat posts* From 0ad0db3e070bc9eb28eb9d40f8fc5467944f6f86 Mon Sep 17 00:00:00 2001 From: "BFT\\a.rogalskii" Date: Tue, 6 Jul 2021 00:06:22 +0300 Subject: [PATCH 0603/2080] Added info on workflows Updates on github-actions --- .alexignore | 2 ++ .alexrc.js | 14 ++++++++++++++ CHANGELOG.md | 2 +- package.json | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .alexignore create mode 100644 .alexrc.js diff --git a/.alexignore b/.alexignore new file mode 100644 index 0000000000..8b7e7e40b8 --- /dev/null +++ b/.alexignore @@ -0,0 +1,2 @@ +# We will handle the older blog posts later. +config/ diff --git a/.alexrc.js b/.alexrc.js new file mode 100644 index 0000000000..ffe03f6e66 --- /dev/null +++ b/.alexrc.js @@ -0,0 +1,14 @@ +exports.allow = [ + // We frequently refer to form props by their name "disabled". + // Ideally we would alex-ignore only the valid uses (PRs accepted). + "invalid", + + // Unfortunately "watchman" is a library name that we depend on. + "watchman-watchwoman", + + // ignore rehab rule, Detox is an e2e testing library + "rehab" +]; + +// Use a "maybe" level of profanity instead of the default "unlikely". +exports.profanitySureness = 1; diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fd9a5b406..e01ac2b7a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-04) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-05) diff --git a/package.json b/package.json index 18b91e9822..3080f597a5 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "format": "prettier --single-quote --write **/*.{json,yaml,yml}", "format:md": "remark-preset-davidtheclark --format", "format:check": "prettier --check **/*.{json,yaml,yml}", + "format:doc": "alex", "lint:text": "textlint docs", "lint:md": "remark-preset-davidtheclark", "lint:markdown": "markdownlint --config .markdownlint.yml docs/*.md", @@ -44,6 +45,7 @@ "all": "npm run format:all && npm run lint:all && npm run check:all && npm run test:all" }, "devDependencies": { + "alex": "^5.1.0", "conventional-changelog-cli": "^2.0.0", "dockerfile_lint": "0.3.4", "husky": "^5.0.8", From 1e1822cb32e84480c0ad05ecb7c35ee1ae666bb4 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 5 Jul 2021 21:08:37 +0000 Subject: [PATCH 0604/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e01ac2b7a8..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-05) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 4a0f73b7ea5f62b75267b4c32b0d00cca82919f6 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 6 Jul 2021 00:37:40 +0000 Subject: [PATCH 0605/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 28 Performance From 7ca461e8e953231e8a9296c5ecfc3275aac6ba79 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 6 Jul 2021 01:51:29 +0000 Subject: [PATCH 0606/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fd835813d9..6238fca4cc 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to improve my sudoku app](https://www.reddit.com/r/androiddev/comments/odwrrt/how_to_improve_my_sudoku_app/) -- [Android-programming a "simple" website](https://www.reddit.com/r/androiddev/comments/odvws9/androidprogramming_a_simple_website/) -- [I've been working on this Lottie animation editor to edit and export Lottie animations (supported by Android) without After Effects! A lot of people on here have given super useful feedback so far and here's the UI update I'm implementing based on it. Feel free to sign up on lottielab.io. Thanks!](https://www.reddit.com/r/androiddev/comments/odup0o/ive_been_working_on_this_lottie_animation_editor/) -- [Has anyone gotten rejected from the Play Store for not providing attribution to content creators?](https://www.reddit.com/r/androiddev/comments/ods17r/has_anyone_gotten_rejected_from_the_play_store/) -- [Intercept splash screen API](https://www.reddit.com/r/androiddev/comments/odr93i/intercept_splash_screen_api/) -- [How do i achieve this animation in native android (kotlin) ??](https://www.reddit.com/r/androiddev/comments/odr8mf/how_do_i_achieve_this_animation_in_native_android/) -- [Google's Associate Android Developer Certification vs Udacity's Android Developer Nanodegree](https://www.reddit.com/r/androiddev/comments/odqu19/googles_associate_android_developer_certification/) -- [Can I become an Android developer? How long will it take?](https://www.reddit.com/r/androiddev/comments/odqfru/can_i_become_an_android_developer_how_long_will/) -- [Gradle peace in multi module projects](https://www.reddit.com/r/androiddev/comments/odqe1b/gradle_peace_in_multi_module_projects/) -- [What should I add in the ”what's new" section for the first release in play store?](https://www.reddit.com/r/androiddev/comments/odp731/what_should_i_add_in_the_whats_new_section_for/) +- [Just bought a house at age 30. Will it be harder to find jobs since I can't move?](https://www.reddit.com/r/androiddev/comments/oel74r/just_bought_a_house_at_age_30_will_it_be_harder/) +- [SERVER PARA GAMERS ANDROID](https://www.reddit.com/r/androiddev/comments/oekp9e/server_para_gamers_android/) +- [Is Google's Firestore good for large scale applications?](https://www.reddit.com/r/androiddev/comments/oej3uw/is_googles_firestore_good_for_large_scale/) +- [ViewPager2 and Fragments Onboarding screen(Java).](https://www.reddit.com/r/androiddev/comments/oeisum/viewpager2_and_fragments_onboarding_screenjava/) +- [New to Android, Why Can't I Just Write SQL?](https://www.reddit.com/r/androiddev/comments/oegrul/new_to_android_why_cant_i_just_write_sql/) +- [NEW VSCode extension "Blockman" to highlight nested code blocks](https://www.reddit.com/r/androiddev/comments/oegmbb/new_vscode_extension_blockman_to_highlight_nested/) +- [Will google moving away from APKs to AAB stop my users downloading a modded version of an app?](https://www.reddit.com/r/androiddev/comments/oegg17/will_google_moving_away_from_apks_to_aab_stop_my/) +- [Common mistakes when using Architecture Components](https://www.reddit.com/r/androiddev/comments/oefq0q/common_mistakes_when_using_architecture_components/) +- [ELI5 Keystore and keytool used to provide SHA keys.](https://www.reddit.com/r/androiddev/comments/oeeqdi/eli5_keystore_and_keytool_used_to_provide_sha_keys/) +- [Support multiple screens — Android](https://www.reddit.com/r/androiddev/comments/oeb6oy/support_multiple_screens_android/) ### *InfoWorld posts* From 7f180bb923d9d46ceec31cf69fcf1185221cad5a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 7 Jul 2021 00:39:46 +0000 Subject: [PATCH 0607/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 30 Performance From 1efc769574dd652a719ec5532cbb098f59f0cf6f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 7 Jul 2021 01:50:10 +0000 Subject: [PATCH 0608/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6238fca4cc..88ff0a20d0 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Just bought a house at age 30. Will it be harder to find jobs since I can't move?](https://www.reddit.com/r/androiddev/comments/oel74r/just_bought_a_house_at_age_30_will_it_be_harder/) -- [SERVER PARA GAMERS ANDROID](https://www.reddit.com/r/androiddev/comments/oekp9e/server_para_gamers_android/) -- [Is Google's Firestore good for large scale applications?](https://www.reddit.com/r/androiddev/comments/oej3uw/is_googles_firestore_good_for_large_scale/) -- [ViewPager2 and Fragments Onboarding screen(Java).](https://www.reddit.com/r/androiddev/comments/oeisum/viewpager2_and_fragments_onboarding_screenjava/) -- [New to Android, Why Can't I Just Write SQL?](https://www.reddit.com/r/androiddev/comments/oegrul/new_to_android_why_cant_i_just_write_sql/) -- [NEW VSCode extension "Blockman" to highlight nested code blocks](https://www.reddit.com/r/androiddev/comments/oegmbb/new_vscode_extension_blockman_to_highlight_nested/) -- [Will google moving away from APKs to AAB stop my users downloading a modded version of an app?](https://www.reddit.com/r/androiddev/comments/oegg17/will_google_moving_away_from_apks_to_aab_stop_my/) -- [Common mistakes when using Architecture Components](https://www.reddit.com/r/androiddev/comments/oefq0q/common_mistakes_when_using_architecture_components/) -- [ELI5 Keystore and keytool used to provide SHA keys.](https://www.reddit.com/r/androiddev/comments/oeeqdi/eli5_keystore_and_keytool_used_to_provide_sha_keys/) -- [Support multiple screens — Android](https://www.reddit.com/r/androiddev/comments/oeb6oy/support_multiple_screens_android/) +- [Recent Grad, Android dev resume](https://www.reddit.com/r/androiddev/comments/of5hi2/recent_grad_android_dev_resume/) +- [How to get started with a simple Bluetooth Serial app?](https://www.reddit.com/r/androiddev/comments/of546v/how_to_get_started_with_a_simple_bluetooth_serial/) +- [Free Tensorflow Lite and Android Project Course on Udemy](https://www.reddit.com/r/androiddev/comments/of4kdj/free_tensorflow_lite_and_android_project_course/) +- [Android studio with integrated card on linux](https://www.reddit.com/r/androiddev/comments/of3uwz/android_studio_with_integrated_card_on_linux/) +- [How to get investments for your games?](https://www.reddit.com/r/androiddev/comments/of1j67/how_to_get_investments_for_your_games/) +- [What else can I do to get the Android Studio Emulator working?](https://www.reddit.com/r/androiddev/comments/of0squ/what_else_can_i_do_to_get_the_android_studio/) +- [Firebase auth - users being created in console but progress bar won't stop spinning.](https://www.reddit.com/r/androiddev/comments/oey81p/firebase_auth_users_being_created_in_console_but/) +- [Weird issue (Crash) when casting drawable to AnimatedVectorDrawableCompat with `as`. But works fine when surrounded with if `is` check.](https://www.reddit.com/r/androiddev/comments/oey7m3/weird_issue_crash_when_casting_drawable_to/) +- [ViewModel initial model question](https://www.reddit.com/r/androiddev/comments/oey5zu/viewmodel_initial_model_question/) +- [With Android powered gaming handhelds emerging on the market, does that mean that Android can be utilised in order to make a high quality "traditional" console / handheld game?](https://www.reddit.com/r/androiddev/comments/oeunzk/with_android_powered_gaming_handhelds_emerging_on/) ### *InfoWorld posts* From 8b2a1cee7b377d5e94ca3a33e701d681590f36c6 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 8 Jul 2021 00:35:10 +0000 Subject: [PATCH 0609/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 26 Performance From 181a80831837c79fe93aca737069f7d0acd14c18 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 8 Jul 2021 01:51:18 +0000 Subject: [PATCH 0610/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 88ff0a20d0..6c53027088 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Recent Grad, Android dev resume](https://www.reddit.com/r/androiddev/comments/of5hi2/recent_grad_android_dev_resume/) -- [How to get started with a simple Bluetooth Serial app?](https://www.reddit.com/r/androiddev/comments/of546v/how_to_get_started_with_a_simple_bluetooth_serial/) -- [Free Tensorflow Lite and Android Project Course on Udemy](https://www.reddit.com/r/androiddev/comments/of4kdj/free_tensorflow_lite_and_android_project_course/) -- [Android studio with integrated card on linux](https://www.reddit.com/r/androiddev/comments/of3uwz/android_studio_with_integrated_card_on_linux/) -- [How to get investments for your games?](https://www.reddit.com/r/androiddev/comments/of1j67/how_to_get_investments_for_your_games/) -- [What else can I do to get the Android Studio Emulator working?](https://www.reddit.com/r/androiddev/comments/of0squ/what_else_can_i_do_to_get_the_android_studio/) -- [Firebase auth - users being created in console but progress bar won't stop spinning.](https://www.reddit.com/r/androiddev/comments/oey81p/firebase_auth_users_being_created_in_console_but/) -- [Weird issue (Crash) when casting drawable to AnimatedVectorDrawableCompat with `as`. But works fine when surrounded with if `is` check.](https://www.reddit.com/r/androiddev/comments/oey7m3/weird_issue_crash_when_casting_drawable_to/) -- [ViewModel initial model question](https://www.reddit.com/r/androiddev/comments/oey5zu/viewmodel_initial_model_question/) -- [With Android powered gaming handhelds emerging on the market, does that mean that Android can be utilised in order to make a high quality "traditional" console / handheld game?](https://www.reddit.com/r/androiddev/comments/oeunzk/with_android_powered_gaming_handhelds_emerging_on/) +- [Android studio spamming openJDK platform binary process](https://www.reddit.com/r/androiddev/comments/ofvw1m/android_studio_spamming_openjdk_platform_binary/) +- [Just published one of my projects](https://www.reddit.com/r/androiddev/comments/ofvs60/just_published_one_of_my_projects/) +- [Click events for Views](https://www.reddit.com/r/androiddev/comments/ofvif1/click_events_for_views/) +- [Analytics question](https://www.reddit.com/r/androiddev/comments/ofu0ux/analytics_question/) +- [Login and registration pages UI design in Android](https://www.reddit.com/r/androiddev/comments/ofp47q/login_and_registration_pages_ui_design_in_android/) +- [App Testers Requirement](https://www.reddit.com/r/androiddev/comments/ofp0pk/app_testers_requirement/) +- [Website to app using webview bad practice ?](https://www.reddit.com/r/androiddev/comments/ofotlc/website_to_app_using_webview_bad_practice/) +- [Open Source Gurus Josh Long (Spring), Fred Simon (JFrog), Luke Daley (Gradle), and Jiyasa Grover (Twitter) debate next Thursday in DevProdEng Showdown!](https://www.reddit.com/r/androiddev/comments/ofm3pi/open_source_gurus_josh_long_spring_fred_simon/) +- [Android Extensions: Are you replacing them?](https://www.reddit.com/r/androiddev/comments/ofl957/android_extensions_are_you_replacing_them/) +- [What is performance overhead of multiple modules in Android?](https://www.reddit.com/r/androiddev/comments/ofiwjf/what_is_performance_overhead_of_multiple_modules/) ### *InfoWorld posts* From 1b7121a9490e096b4a144f1e304750be093d266e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 9 Jul 2021 00:38:12 +0000 Subject: [PATCH 0611/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 31 Performance From e226a3ef6ef325a3072ff5df3d90ff709f9fc8b8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 9 Jul 2021 01:51:31 +0000 Subject: [PATCH 0612/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6c53027088..fba75636d2 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android studio spamming openJDK platform binary process](https://www.reddit.com/r/androiddev/comments/ofvw1m/android_studio_spamming_openjdk_platform_binary/) -- [Just published one of my projects](https://www.reddit.com/r/androiddev/comments/ofvs60/just_published_one_of_my_projects/) -- [Click events for Views](https://www.reddit.com/r/androiddev/comments/ofvif1/click_events_for_views/) -- [Analytics question](https://www.reddit.com/r/androiddev/comments/ofu0ux/analytics_question/) -- [Login and registration pages UI design in Android](https://www.reddit.com/r/androiddev/comments/ofp47q/login_and_registration_pages_ui_design_in_android/) -- [App Testers Requirement](https://www.reddit.com/r/androiddev/comments/ofp0pk/app_testers_requirement/) -- [Website to app using webview bad practice ?](https://www.reddit.com/r/androiddev/comments/ofotlc/website_to_app_using_webview_bad_practice/) -- [Open Source Gurus Josh Long (Spring), Fred Simon (JFrog), Luke Daley (Gradle), and Jiyasa Grover (Twitter) debate next Thursday in DevProdEng Showdown!](https://www.reddit.com/r/androiddev/comments/ofm3pi/open_source_gurus_josh_long_spring_fred_simon/) -- [Android Extensions: Are you replacing them?](https://www.reddit.com/r/androiddev/comments/ofl957/android_extensions_are_you_replacing_them/) -- [What is performance overhead of multiple modules in Android?](https://www.reddit.com/r/androiddev/comments/ofiwjf/what_is_performance_overhead_of_multiple_modules/) +- [I wish to show stats chart in my app? How do I integrate that in?](https://www.reddit.com/r/androiddev/comments/ogl1nv/i_wish_to_show_stats_chart_in_my_app_how_do_i/) +- [What development topics do you want to see more documentation/articles of?](https://www.reddit.com/r/androiddev/comments/ogjlyp/what_development_topics_do_you_want_to_see_more/) +- [Need help with Dialog Fragment with round edges getting cut on top](https://www.reddit.com/r/androiddev/comments/ogjapk/need_help_with_dialog_fragment_with_round_edges/) +- [Release date - when is Bluetooth 5.1 coming?](https://www.reddit.com/r/androiddev/comments/oghcmi/release_date_when_is_bluetooth_51_coming/) +- [Which components should not be injecting in hilt or dagger?](https://www.reddit.com/r/androiddev/comments/ogghvf/which_components_should_not_be_injecting_in_hilt/) +- [Is Java dead?](https://www.reddit.com/r/androiddev/comments/og8oal/is_java_dead/) +- [Is there any interesting app development/marketing conferences?](https://www.reddit.com/r/androiddev/comments/og7w6z/is_there_any_interesting_app_developmentmarketing/) +- [Android app got rejected because reviewers went through my website, how to fix this?](https://www.reddit.com/r/androiddev/comments/og6qz0/android_app_got_rejected_because_reviewers_went/) +- [Open Source Firebase Alternative now has Android Support! ✅️](https://www.reddit.com/r/androiddev/comments/og61cz/open_source_firebase_alternative_now_has_android/) +- [wanna start learning android native development but afraid of the choice](https://www.reddit.com/r/androiddev/comments/og55qg/wanna_start_learning_android_native_development/) ### *InfoWorld posts* From b73b2b8d7bdb1480e92c1c8a4c12bda830c04064 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 10 Jul 2021 00:35:21 +0000 Subject: [PATCH 0613/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..44d47bda0e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 59 + + 42 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 32 Performance From 2d04f8a3ab5e37b0f0cde5211f273cbd68075158 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 10 Jul 2021 01:45:25 +0000 Subject: [PATCH 0614/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fba75636d2..fad48def93 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I wish to show stats chart in my app? How do I integrate that in?](https://www.reddit.com/r/androiddev/comments/ogl1nv/i_wish_to_show_stats_chart_in_my_app_how_do_i/) -- [What development topics do you want to see more documentation/articles of?](https://www.reddit.com/r/androiddev/comments/ogjlyp/what_development_topics_do_you_want_to_see_more/) -- [Need help with Dialog Fragment with round edges getting cut on top](https://www.reddit.com/r/androiddev/comments/ogjapk/need_help_with_dialog_fragment_with_round_edges/) -- [Release date - when is Bluetooth 5.1 coming?](https://www.reddit.com/r/androiddev/comments/oghcmi/release_date_when_is_bluetooth_51_coming/) -- [Which components should not be injecting in hilt or dagger?](https://www.reddit.com/r/androiddev/comments/ogghvf/which_components_should_not_be_injecting_in_hilt/) -- [Is Java dead?](https://www.reddit.com/r/androiddev/comments/og8oal/is_java_dead/) -- [Is there any interesting app development/marketing conferences?](https://www.reddit.com/r/androiddev/comments/og7w6z/is_there_any_interesting_app_developmentmarketing/) -- [Android app got rejected because reviewers went through my website, how to fix this?](https://www.reddit.com/r/androiddev/comments/og6qz0/android_app_got_rejected_because_reviewers_went/) -- [Open Source Firebase Alternative now has Android Support! ✅️](https://www.reddit.com/r/androiddev/comments/og61cz/open_source_firebase_alternative_now_has_android/) -- [wanna start learning android native development but afraid of the choice](https://www.reddit.com/r/androiddev/comments/og55qg/wanna_start_learning_android_native_development/) +- [How you you get the Receipt Info in Android Studio for In App Purchases](https://www.reddit.com/r/androiddev/comments/oh99zz/how_you_you_get_the_receipt_info_in_android/) +- [Payment pending for larger purchases](https://www.reddit.com/r/androiddev/comments/oh5vns/payment_pending_for_larger_purchases/) +- [Android Dex Loader Illegal Access Error](https://www.reddit.com/r/androiddev/comments/oh4ub6/android_dex_loader_illegal_access_error/) +- [Anyone here had Pixelate or MoPub claim they are device ID stuffing?](https://www.reddit.com/r/androiddev/comments/oh2sol/anyone_here_had_pixelate_or_mopub_claim_they_are/) +- [Recreated my first application Recipedia in Flutter to learn about the framework. Originally I had created it in Java when I was learning Android App Development in 2017.](https://www.reddit.com/r/androiddev/comments/oh2lr7/recreated_my_first_application_recipedia_in/) +- [I need to create several views like buttons, textview and other views in runtime when button is pressed from button sheet and remove them once button sheet is collapsed. What might be good practice for it?](https://www.reddit.com/r/androiddev/comments/oh2aan/i_need_to_create_several_views_like_buttons/) +- [Announcing Android’s updateable, fully integrated ML inference stack](https://www.reddit.com/r/androiddev/comments/oh1cex/announcing_androids_updateable_fully_integrated/) +- [Did someone reverse engineer my app?](https://www.reddit.com/r/androiddev/comments/oh1ans/did_someone_reverse_engineer_my_app/) +- [Developers Alliance Issues Statement Challenging State Coalition Antitrust Lawsuit Basis](https://www.reddit.com/r/androiddev/comments/ogyvtx/developers_alliance_issues_statement_challenging/) +- [Does MacBook m1 good for Android development](https://www.reddit.com/r/androiddev/comments/ogwa4d/does_macbook_m1_good_for_android_development/) ### *InfoWorld posts* From 55d8d5d9a529f13939eb436cd66d9b4b262dbb01 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 11 Jul 2021 00:40:33 +0000 Subject: [PATCH 0615/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 44d47bda0e..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 42 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..2f65c43425 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 35 Performance From f3437af90828547a94a9a81c6f386805fad4ed17 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 11 Jul 2021 01:53:08 +0000 Subject: [PATCH 0616/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fad48def93..91ca4676b0 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How you you get the Receipt Info in Android Studio for In App Purchases](https://www.reddit.com/r/androiddev/comments/oh99zz/how_you_you_get_the_receipt_info_in_android/) -- [Payment pending for larger purchases](https://www.reddit.com/r/androiddev/comments/oh5vns/payment_pending_for_larger_purchases/) -- [Android Dex Loader Illegal Access Error](https://www.reddit.com/r/androiddev/comments/oh4ub6/android_dex_loader_illegal_access_error/) -- [Anyone here had Pixelate or MoPub claim they are device ID stuffing?](https://www.reddit.com/r/androiddev/comments/oh2sol/anyone_here_had_pixelate_or_mopub_claim_they_are/) -- [Recreated my first application Recipedia in Flutter to learn about the framework. Originally I had created it in Java when I was learning Android App Development in 2017.](https://www.reddit.com/r/androiddev/comments/oh2lr7/recreated_my_first_application_recipedia_in/) -- [I need to create several views like buttons, textview and other views in runtime when button is pressed from button sheet and remove them once button sheet is collapsed. What might be good practice for it?](https://www.reddit.com/r/androiddev/comments/oh2aan/i_need_to_create_several_views_like_buttons/) -- [Announcing Android’s updateable, fully integrated ML inference stack](https://www.reddit.com/r/androiddev/comments/oh1cex/announcing_androids_updateable_fully_integrated/) -- [Did someone reverse engineer my app?](https://www.reddit.com/r/androiddev/comments/oh1ans/did_someone_reverse_engineer_my_app/) -- [Developers Alliance Issues Statement Challenging State Coalition Antitrust Lawsuit Basis](https://www.reddit.com/r/androiddev/comments/ogyvtx/developers_alliance_issues_statement_challenging/) -- [Does MacBook m1 good for Android development](https://www.reddit.com/r/androiddev/comments/ogwa4d/does_macbook_m1_good_for_android_development/) +- [Dagger hilt - rid of it completely](https://www.reddit.com/r/androiddev/comments/ohuapp/dagger_hilt_rid_of_it_completely/) +- [Platform or tools for gathering feedback](https://www.reddit.com/r/androiddev/comments/oht9bn/platform_or_tools_for_gathering_feedback/) +- [Stuck on Bluetooth Headset Issue](https://www.reddit.com/r/androiddev/comments/ohqist/stuck_on_bluetooth_headset_issue/) +- [Is a strike against your developer account permanent?](https://www.reddit.com/r/androiddev/comments/ohpjon/is_a_strike_against_your_developer_account/) +- [Open Sourced NIDS(Intruder Detection Systems) on Android](https://www.reddit.com/r/androiddev/comments/ohlc73/open_sourced_nidsintruder_detection_systems_on/) +- [Adopting Jetpack Compose - Joe Birch](https://www.reddit.com/r/androiddev/comments/ohky22/adopting_jetpack_compose_joe_birch/) +- [FIRESTORE COLLECTION GROUP QUERY](https://www.reddit.com/r/androiddev/comments/ohksxl/firestore_collection_group_query/) +- [JavaFX application to resize images and add them into folders automatically. It is a powerful Cross-Platform tool for Android developers.](https://www.reddit.com/r/androiddev/comments/ohjx3o/javafx_application_to_resize_images_and_add_them/) +- [Alternatives to sceneform?](https://www.reddit.com/r/androiddev/comments/ohje5j/alternatives_to_sceneform/) +- [App Feedback Thread - July 10, 2021](https://www.reddit.com/r/androiddev/comments/ohi9oy/app_feedback_thread_july_10_2021/) ### *InfoWorld posts* From 8ba79a0de688fd1f70d3902073f26a0aac6bab84 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 11 Jul 2021 23:58:16 +0000 Subject: [PATCH 0617/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 45104 -> 45564 bytes traffic/views.csv | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 801d92a971..559afe17df 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -14,4 +14,11 @@ _date,total_clones,unique_clones 2021-07-01,233,49 2021-07-02,288,46 2021-07-03,178,40 -2021-07-04,238,41 +2021-07-04,247,45 +2021-07-05,381,51 +2021-07-06,136,37 +2021-07-07,139,38 +2021-07-08,109,31 +2021-07-09,110,29 +2021-07-10,115,34 +2021-07-11,117,36 diff --git a/traffic/plots.png b/traffic/plots.png index f8a62d1033d59d8e74b0c5a1f769b5b7c1c91ba3..4c3072c22e9c5c455996770677f92b0bcb7786a6 100644 GIT binary patch literal 45564 zcmd43bySpZ^gTMDpeUsh(jwg;-AXsoDJc!oF*K6W-60^|-6hi9-QC@FpZR=$_qXm^ zH~zl5bVg?8^?mA`efHUVetne@MR|q$3Ic(kh>HoyLm=>;5D47zOGNM!){*&j@W5#& ztZJuVX=vxDYhwVB*0r-Tx3n`i(fi%f-N8@xR|dZ)s!1 z&>dHk3@(CXC8lNzfuQNa{=nt(=a@hsWhUZ6Ulg5^_ZJ+U6gK8sPb?!3r6sW|_eZcO zU1THZy1#xAhC{&qjck4V={wb}f}&>k*YNb;lpo5!eEA;z%{bkB_ESCO0*&c{DCPzc|8-K~S*5{$-iQGfAL?IcJuLNEa`=Dpc59bqjqQjn3ev5>>0zVRnX8!-% z6J^sE$ECp{Bq}9Z9WygHAtIR$9RJLT3+l(mM^k^; zP+rOvW@KiboSo5(n5mk>Z}0CTud_x51qJnvz(y~CAuS>C3cNcTKZjJ!96p|Ze{Xg5 zBhqi!g!BfF#?O)meTH3zxEDtp;`@Jj!c$tguc=HBylN_+J)8cLnDA%EARLCk%k-*5UCaLK9|TzF0uC?F+;EG{l?>i>~8I4KE_kB={ZiZS;2*O$cq zc&P&a9;K@!ls%G8joA(xFLzW={1@p^%a=cT!Wi6HxrqHMoq+`A5NsEiaMny%< z_lSRemP7dp2M6b0M+e;U-d=$z&wqaz0jsIt6hgNK9U~|4XvvE4c5QKMMBToT8_rXMnwWt`m`uEFk$mi zBe|vK9;6F=cS!_qtX20|g7@V8FG^}Mtz%w6wkvV7d9~0yV_sw;HAEH~c4v`$45oQ| zd-q1Xl#G6I$-JDG`)|52toZmsaM%D~+V$W~Ws#@28Em22#54 zlm+B;W{*}V12g2uvt<3;I@%fImhf=ku>@Yic`oXFZ(G8SZ&;({tP{aEw`-heq8C(G z5zJ}2^Pl{u1!vBU)0f_jcTeaX(;Pw_r#CJT;7`o!309oLnlquRWwyObLnbQ9?2jOU zY<1{f>uZaGCFYxF$M#iQRWht_*H#M8aX9O;-jp-iw)>%EYPYy|oNA6`OJ~YuihySy z!$`rkwC9;o)pDwy?X>#c9}C#tQ)9S?&h-(PE~~Vqn)Rr;Hk`R4 ziO>dSDCEcl6L44m8>0I0j$BHoE0iF=^Xue)TV`W?@eJua{*L|ZsTr)#F!yxa!5a6c z-@lfg4JnjYOfu!Ee1L%0KHKSui2Km?Qc+M)s9AsOCj}ccz=oVtVd&pd=-K{X^p7P* z%WHaF8N>tEyEEj%`5RN2&1gktPT?tL>)s(bflPXG_B9g5nf|` z&66h!7SZ>*ySqH-3u0(~IS+m5G?F3w91&5^$Vl|_XULN4S;$TqMVf2mNTz6#J0Z6N zEpCWkK)_3gjg5_!o!xivNl2kqQz9Y?u8yT;n7{vvZ}oP>yu1(TT47n?!XIGMY>pJB z3%1Itd(frSC6OWq(T#1PZ%rN&cpMmEi16 zJyl&ZiJ9N!a5!I=%xUX)d$Gr?---O8BwM#ctLZ(P`FqJYda{onf5vG!BXM(cXGGQ;>@ zeb&?an8a>rxYils$YazIh$)rA6;slD8`v3wXM4Uar{%muhEG6%!(~TF!0qt;@%|=z z&GBGX7`$_)&XxiW4i2Bk3B5^6Hi^xm*5Lqmi02IX>2B$1d#QyVM8W;VriT6!<2YD! z==G`{r_FvK9PE6@1W_#6?%sz(F;>cS@}Gcr`v&HQy6;l-lm3JFqf--s@`g^@vQ(4T z?>r5~y2~D%1?$qfr>?q!0va|pHVzJs<+ZhEt$)O$j<2q^3QC#u8VIDr40?I3+{~Pz0>auCg$TKq@kgaN#*H@rc#&& z!v_;Z&Fy&j2YR*%ZVLU)n=e0p&_6>&{%tyu4`DGLUiQ-RCZoPPk^rf!3qyD%PH@ET z;oOofHQ-Cm#Ibr#qB-tZ^K?{;>srHP+r(mGK)j+m7rN5NDfEuD@jQjf9}D%L(e&o3 zEyN`y*G@P3u6VA%;$@qRWji@Ludc8E`-$*6Akew?Y03Kq+UAtD2N^eaiIFo{9G-{s zG2^P59IBn2on(HG)RlJswe|Jy^#h5lL1$ZMSRW=zw22%Y9UTs4I}R5bOy+Bunq007 zr;5LQ)(X?fkx79VPnQyh@!e9Q;Ib^|<)rGZ{Pmr$wO&it@+XTR{0s(^Sxjbhdbzu{ z&zA)G+$2HodM?CxLDLYsZBN57du&+4CG`z^FxkRrd#v>B4^%cXXX&aLjXe&|%m&jb zdJ7tr;_rWbkYLk2S){SHzu(_Q@pC?fLv)<8@e4#z`$`@P95@hEafp2@kn zB#9Vm>y^IHkem#$GLX5EUs)`lAwDgU#AAIG7CvldaE+ivk|A zz#rII%~vWYHypt23?q6PF6o)?K`#Yp>5H24vlsN_@TIpCY>kt7hIxY>6{9B55?ORe zpI`k4B> zX?eWD&m0jun62Wp+eX)@HeUhDCYA8X7wkGLs_HiH7Ztkgh|N!rcP``(kg*(Dqs#pn z*OLxxSmb&~AyevfqR01et}w=w!ezg@-V^2H?>|=jjeE?EM!E2}T7@A87Z*JG+qZvT z5V^Ld3;G8H2CmjDxs&kmrM9-VerzJNrGVj|=r6h|kt28*)Lb+2E#*PfOqF>`5rh}6 zjPEhCOBl58o+lL`y(9lUw)67UtG{Do@0zrRKosM&T84nFv_7GtZ2(e%R4UI+@s^OV z@JTOC38PLc1O#uPzF4|C_XlUM#a923I$NXpg#}KxTb3cdyM5j;0w%rZL0EKpC#xOc zM07YiG&xd1_z^cU?4;!1b1b9{rNhXC!%*7%M)5_M~83A(_@lWle1io3<0@p zYCo8U?U@Rr2(7TXF-ol4P$_Zowuy-ta2_=^$8Xlieb6^eSC+7yJl3e{5up`UV$2h( z0W$r|BeISWQD*CNTZzM&%_XK~7;%M#wDekyVjyajRa7W&Z(z)95-%{WzNV#|~NGQn}bK;Ts8h5|9P;1G_Ls5A$hzJ%dGC-y5RDm{<@Y~rx7+bqVO;hSFRP`%Y7~EV$BM zKO+H%2^^|gr`1y^A2DHNIi{J3Wbj?l(eD7bCs+*{T=K*<^iKK#U>Ox|S~&@7rTl+o z`dx=NwUllh^@h9@6#g51am?=b*DgOKqhe!4Ci0a)!ecQR^+Dsi_5`PT;jFHrqCy(s zBe7+&CP1VIr!G(MZYcxVEIn%|G-c-6r2Zc*k5{r^Zt^Xt9)t@~m6exgC>N;%Z2p+3 zssdN?ts(Z$A5s7@9H#VPcmW*3p?dp0)n->tk<17-i`n^_)$9G43Tu0N)`k0rhahG< zFvHBDLga9}Lr)DcBAF{qd>6yUItyh5`1R4b4q^h)W*vzT_p1fR^Zl8#)P=etjT*!5 zaAFqI@c^)!PUkFJR(5vObjCKh6F96t_Vn~*YuMS@S^LrZpc{0KY&R0Nb{aB19Vw&S zYvN3^9QECuUr;dN(v`pTMK=&ABlC=ih%jGjPI*Hj!ZQq=oSbC&F&}TcHMnrbp`oFn zsj2yD9#&RFr_gO7Hls* ztD$ssfq*%JkXy&=E3KfDah5;!tfo#}k>RoJaomIX1fl2~@@1r+b2XL})YO64+O8+n zT^Sh}0Bj`gY~iv0I3AT`c=P_f7=T4$;^MkTi%riF5HLk40r)B=2$6vQU511Dv{_L$ z`YFqCap}Iph2ENvPkJLjNcUjA?p=t8puBwKY&s7*z>%|6W)rCGh26?l;KP2EsZHJh z{@$O<)2L6Kf8|bgaklRH@)#VDsqjrUwsBbC!0J^Ik0nA}RFoha>QgLgvArbp9qD@6I*Tp9LDnDy8{0g~sC+EissFGVF~ZrcTvZ~p+?f5vzgrm((_s}!2M zU!Yuso96Kd^}54lHT_plZuM5BhCX>Jra2DNe@aHN)( zmp?x}J|r+3q5k;sBfHBV1y7{K{o$3SEl56gyW>6Q6(h#qK?wg}uo;)lynA<|;ONd7 z)VuEP?)^#ZC9MylVT8g36N%M{4@c+#46{6Yf%N}ppX*BVqs7>(v$zG_k`-i~U?{f=&BWhEGoJ#;J8CG=Z^ z!@?O)k#ZmN5Kns;|D)>iBPNaVaJ7X-zH*WC9H(84ClMpU(;}n(gc<5LRP<4Hcn) z8=hWr#rC|9t4LwByvpsHD+oL52(>*o)5KvgdY!D2GvtY;I6HRvRQxkUzl?XGRJYw} zGrU^Lgz7z@l5DnWAWm?spcD-SND30Dooxc1kaaOGz1kW!1}r zIg^EYRtT%<_%hfox&X-A?N6ViZlQr0u!*P5W9ASZxZ0F`B%)ipFk#l#rYYk|TQ)Gj$YH(ZW~ z<`S>K3P%#TU*GrvHO?pZzT%hn3wwy;&!C`b!|^ zO~zHwyXX8&mJBWU&Hc7T`J=;2(g&r4!Bv7TOT22;4}tk)0$!f$UQE?IE7+!z1;ofJgK z@1TI-x!ukT#$^ozEB5DWS%L6d7=nNHqv*-VgoXt!QMu^zQ)i5t?fI**DgU!QGYi^1 zdt;UkE@TaPSS}ymlol6XS?%yobHM?j7X0$MyF6O*m}71K`}ftnSUi8UT3CWlBGZ#pEwQtjDLP^=5f70D65*7eD}8L^x9< z#LC77MlraakBEXoBeNAg_I`@PZu=|1_!6MfhVB*B^z*?*6YIe4Jam2@?vFSo2oF?0 z9bFKYbu!n)6yKVKeUsx({*(u@AFW1p@Ir&5?dm@yaDhOX9GC4am$eY~=|(7Xn(HYN zC;>M>ibSpoYyTtO!JSD_~?~L@pKI3M!s!fMYm39(hDV@mD}uz3xxs zPN|3wkVmF;5*soRAHH{6>slDU`;`6*G(ss*d+p5CFo0mNx!Mu5KVKKczUbuL7sv1n z+LTJbWv2t)ko}#3gCl-_-`rt;TJD1!0L9dMlSONQngGD~4AepB@87FVlPiY&7YY&A zuOMtpYXqMUyXHDV<-*3{m)oV^{4v_f$CsO7wq6wi080#{J?MT}*Y;Ei5v$px>-Lt} zL_Q{{BfbOvfW>?|9AJ*c>gx=bt3w!W2aA!kIgk{UnAjUmEcgna*>+PZTPoo%7(Nm* z@*fb|&8JJfKxD(_iUsKY9WJf}NEl@`H7$GAfU~=QxLQ)ollKL6GPu+3VSHhKlRim+yogkBQU zYMM)6(eY1vDL?DVvG3}EH-#)p$1Z-Z8G0nAX7UE3T`xL>GxfJiI&FL>rb`Pl7yyLo z^A6To!Vd6nK%S-zUBrJZT01Zw=^^q=sR|Vj+dxU9n|F)I-NT_4B^8<>h1CwKwIm>u zVktjv{HRBOjuk5l+t`Hk&sxbJSo!p7xm`@aZ|MGLYP#JmF!eVoqrEH00L-canvT9C zO^OXRC^Yljer|I*vTMk8o(|1CpPgWPO2HIL)ou4<0#l{u(u~7w$f*0*hntUFp_MQd zws5*_;J?6cF;77FeUuei!#q@z-y7K!7vId6EUiDQpB43`;IzB1?==GhLsdJa?fL?# z4?@o%Yc9c0M&_L2EWmjE1C#(R=0FSTg7^EWEL2SVLQcH6&eMkoQ-2bn1QSW_g5j`aB2e+V}b7=1yOwuF46UP3HD-m$| zX6z`naR3rB_8<&KuJvz*1$>=~`1JMZNGsJu&KE*tBwucmP%*)Ci8Q#>_K`$T znKI}_+>^`M65W+VQa>EV-+l`~R%#T4JsYm~dvQmvX|!?}RLeOXAGjHKy0=8|xz`Xr zcg!^Y(up@!t28YQRfwt9Klbm$_|~Fze%q0U*6F4X_c7L{4R_gUS6zR0xpY@#BhtU2p>XVSuMcyvPh>4RLbwmq_u1`Q!n_$Q=|5R>bg{G@uX zX!w>_sExB_$F zn;OR-9EV8+ejOHE6lTJbAy5ECm?=70bm*dLNhnh3rN`cb(&Ev;_HoIh30yly^Pn~| zy60yLLoPtwSkkcD6%$Zr8)A61qHcr5%1fYjDsa|-dSFt8yNPVxO=8d6Gl~ZVpjbvr znrb7!SN$B3q>F(9ZX@#rdh4P{*FPHSUh*2rWQM1P(kFhs@NKAS?t!u0;(d#V67}zi*tEB#;EZ40K2INMCF&}9W3y5} zON^u&0pq6)oV_C=XhN-)+#Yzy#Ef(F9Zh>={zmAJ20WQa@> z8%l_X!ZH>*y48@a`^^S6JUo19MMdTpZ$$I?+Ok|-@IDM--Pv2KNrHyJ80Gdxz#?SS zyF{dpmHd3xCtCR%;F$EdC@6G?xcuBtFHki;$fwdglnsPw5%tjY~E^VTF+D_?T9WMNbnn4!ebUvqixV?b29DICzVKta) zFpN9fX%=I_jb|<;PI=ZCv;j4Pa-OvZ(OFfFlwIB1FJA9Z)*+cv8a> z6oK7E1{B*5t5=# zaDE1k)VOo2%@+eDB{WgLniAC3LKKRg!5CjzfqB`oI4^5k+f11hu4HbT#suEqU-C#jZnVr*QkcRf5p{O! zttJVZfzoeBQYK@f;;xMFTj-Ht`{fu!s6oH}8@TRoF<{U}2lXSJk-UsWDr zYf_6(`I_Q>lPtR7jxlJQ@Z&r-#Y7ch9-Vj7e7T%RGx{YNv0&v>8~4%Um2^C#7pPmT zcSgxT@gxbb7HG%vob@w9ka0fw{CY=`7)r!!hzx7g3?_4eGKjl}9LqLOyFg~oGX9OWPK zg{5YK$m5ScTko%}Y<*yXWfBAyt!CE*qg1FLsPaBpEq~_W;hApn;7?6Wg#gaf`e2rI z?8IWWas`0Y?`=O3V9*kDT`C+7)OV*!w8y{tFw$7(sqs90ds#*`Gk$5K*HgO5F{7S` z8>L*Z;vtJTMm8L@uSr7U&LK1%^Ib{*t#4d>YJ1im6yZ1Cog~__2goh|HDZ@SHJOTH zu>|I2GF7(|Z=$0yG{1clmywCR@%+0_YP5^P;z9I=DeqdT)aatX;@G-Mftxmpw#h4f ziRi<+-bcbvw)=ZiGt=Im@D(*{inQ$>9758vq7IES;s;j!lS%ykr=W+-a_*= zbe@CiD&HT7-AdzFCVeOy7dS@O(pWr5)}o+)Ef);XUt{(COMeo}Wj&*g@)f#VWLnKk?OwnZ-fh6e`DfPvVXs87gJyuN(e~=IKZZLKsFL$u zZMo>q70;!j@_*!a>LF(x$T(il@7*f3V*RTFhu8(^iT?C@4t6=GB66z5LU1T8b21F zxmKLY^h?W#B!j0_u2tDDTYQ-{{55Oo<>c7KF37>(#A{fyu@LC)-iBC)Ef`>TIyNe5p(rpm&+w__N~Z{N?gYtde4AuCe;$vCg8cbm^$6DyW2+ zA31*cDhE>AhW5T%_J?Jnbauzqgfc!&=W5?tad1O~qn+=ju3K0sAWm8OC|Y}p3L61| zqFWG4fQ|x0o=IM6t)3lx^3t+kAGNKuvPIP(@nE<2F8gfBqmG9riZ|GmQ(>q52X^wX zz&))J@AKge#m9&;Q6JmcdMq~8y)aQ5sgX0tUYeKFJq)dIeHs#uA)#IhUC?~c$jl(Y z#J3nn>4dMF)nHC{`3B)zau?|(K!WwOcuLzN*qxv|y61?#UAWh$?oWuuEC!bHkKvOO zP8DVZ5W{=xNNqH2WzLLKnifdq_>+s%v!ok^lE~M2YIPvr!*E7A7g$Co$QvfA#@h7{ zAXFcisjQEELFqdW>>o)nV`}_n4_SP?;LvE-2b1S|TLY;~%C}biv_N5WIm`6y+3b?a)E@;QjrA`>H|((y_JSNhub`v}zuK za^A2ht1HKExP_mMJw2?aqiFsd?wsNWrM)2))_H#nwpMjAGmFD8Jn8d)@jff9n6x<_ zMVTaO$p$e$7giD-l2DQO6E6{b;9`mb95=0783L%GzzyXW+Nn1?WiwfrI)|s~>j3b| zfgP9cpt>ROcx)-iU-OA~;ddnfn?~Pr)FJ(gPJzMrGZd=PvLFmtqwUPpHI}Y_$kA6g zu^F6WpX%$7IVe@sH7e3?3pZprx7`r&OWndESUwFwu4<<~3l&-{e4@B}!b*zc9{*jQ z#5)yPaeZm{#*w%e53ENmh@Q_%==u9ca!EB0iqzN|$&`5T$5ADfWU7^Eq3H-!P00b` zJ*ziIsOV|bWULaSZ>S*O_CffPa;8Q1yz$Wfz$Mq*9dIfN8*r(2gh}>I+_v3rd>c()2W}Z1e zEGoVzlK8ju^8ZcQA(-t2AWH>Lz5F zViKs`>b*`rDCBV3K`bfakdi6huTW18o!5kX)c!0X^1I}!QcDT0l+@k^;p-sBn$k##stX+fZeSnK^ypg0t%p6yyp%<0r_N>jr z6T@L^HX{Jj{3}3wBgcCLR(9vXu9c+hBXrs_0M!tZ-o@;0-F&1L{f?8UWV;1gb$Uf( zrF`eqM-PPL2o6DBC$aFux4L`nVLarm%O8_w?=d6?^KcQG&w7Fs$)4{3jpzDb|mzih49N6%8@-ajc|f;(X}3KbemKi=RNre_ z)nvxykxS#RK1fjkZ^@8;Qv#XGALjKtkk>Xw3r!I=QGNu5#558FdV@W)kP3%vx)~9#XFu;`)c2kKRFu!m!-9re7b^ zKqcZGjF@IJ9j64m=@96$4)0yq?M;T9pP##=Zmq8VtumXEs_E|T&hY#A&uu|$XyxWe zpw^Wn3MB3S0?{Qb5Rvax;_~5*2V7RsL`LZAOs{%>s%s8^BzUw}U=O$HZtDyLbOhx3 zw&d&|sZkz&1Ugw}H_|d-`fz|?2-IzvfUkm;6S=vRs6>3OLuY^)0Q$Y`q?#H>Il(up zsX)<&Q@#GdXl?Y^x=erOIM#_v@<>9wylV91z*gEsvm*oq@gWav0XscEa1@&|*&QJf zw;sDrfE$64$l0KSUM^conHlIds$gUD337ONc*R3cM;8KE-_@fd*`;PTBs4UJLjV*3 zcK}ipF+feZ%Q^!9A00b7e&sH-X&adg>;QG~)LcUCxH%%jD`I+KXQjhVV@0XobCdSe5c zS1{xXWHgSv6x`fN(b3VMZg@p9rL!KA7FrHUQG5%#{|TX4r9Vt;Y)k*+5Ud?P03wnY zz)DWR5(ibo9RUGcDz!R*z>tn(mK3U3j%^Ke#u^tqvme~wW|~`5_Qr#I5e>l=R#klu zR4$EM*8h(U-=6!Mvm@t0P+R`5RMZgTfV-la)@abijV7oz<`)0SnG$R5tJ&;EcsGXb*xeUO+_!Gib;D`}Z$AA;E+T)^z{>Xhnb0`xlVmNAeuf zclm8KstB4?FMB}nFG`xIP(?kukX(tnR7Xsq&>oj9xwdn?isJho-3M05p`GbQc}{uA zEDs1>38UPWY0Lk+!|X#z2xeewAW0OQ1VHltotm1m)2K3y*@*`Su=v}ZBX{oqYXh4V zpIFs#|CNHrkcJZ9=E!X0^kJJzmT-@m_FPn*EW1d77hqG*MmAlr!x_-P8Ir>|F3<^! ztH9`D#||66$guUqt`qT9^GH_Y#wQN+6)77oS)ih#s;#dFt4-V9_IG_KKvhf2IbJjK zZzuQh@ZUI4PZHMnQOTEV< zJAmk`x&u(sR!JbHz)?)B3sL&T*Wf#ckJWxyaboJP%ZGuW;zs+3Lvb>|iYw$7J)v-n;~-mF8Fxfu?s*L)C>pOA6e6Y0-GRK*xDx8>(Y4>rK(7_^iqw-KK!SwRy#4{epZe#{CoL2J70|KV zNCtWL`7igTH+qy1`tEa&H;vEyv}9ELf#^Q)+eRVxD+(>+j$56ebmXUVSON1?v-y0` zLHQiD_>ZYno|-e?JcjNqUa8X%+2RgP>oS&-#JZ!T97gEk{4)T9<8!9Cr&eo7Q~+f< z7}?s(9igSatyw%y z=_fFb zRG~~t3$L>(>8@4z!s^4R^CFf5U4Gr!$~%pQoeKd$VX?fAA_b0n}1j7gCebX4Mvn>bwvi0)$x(#FWC(H>Ra z$j@$zf3_7Szi{wyhUMGi#mx4Bs=r5J>2OU#o*YOWkH;j7tg0*MtM>TOGvB-&+Ctgb ztZ_5vc>knMD_=A~VY-87Aa)<-8ZS>1jl#>I3QwGJ+Xw7v$y?f!}o zWD#E`ny}NZ6SHZJJypI81nGiB7mc3P=n!oFaRjsrGj=30e|)jCb=Q$ z@&p_v;I=k5P+0?uRL^$X;}VV~DF^bEbuP>-0yj8?PndBrZ`~^V*W#jZru)O5cxS#I zg!fjS?`t}wh8o#AA$z0-lJRaW)u#ix#I9gVI_$Q&vUtS{TvuUA-f3%U4ZkJ1hRy=U zZygdzVWRa--zvOq6$pQR47dKLeL^4lOVs^uob$!yntAf6bHZs9Z;Row>(MM!#M{fe zfIt1QN7j1$dqk$Hb?xlSL_Tf;yt&8&_mII@JlHJeH{FM5M_^C&Nl0hvJd*_^==X-rYMO)I%F6sLO0V?^cEj8>) zG)x_}C<4-PWF02d81v%5$R3mIZD>JnuGy%Y)@gXtbr@D+NW$I1NLij7)8*IvB?W@S4MV*^uW04# zItq;Ex}BI*EZA24I92aT;w^6WciLW3{tAS*Jnfr7@o&0O9WN$q4}ZvflU(^vj`+9` zwEFst@y7%cFo_66QUAEVRmTg$HDnP5O%|Ag;XhHk@-}B} z#MBt{YU$~KYKmW{q|3=@{iJo7@EfDMi}2tlP8>2sd5N6IugHd{ZqnbGgUb2l zD@z4i@<&!0Y?>m!DXxj{c3bMx>IqAl*5Z)Y>6+x8*$B^WY`akfPYEuC2DKTj%#Kpc zb{?!Hf*bz&ZdeY}8gN5YSQh8E@0l*I!XT z+gX-_o!O_LmB49ZJ6DA@F`w`tXnI%G8kPbZVIXRAKobaKxXICU%Z`xlv%0#AAn_VP~*|Vt2Q1 znemqS{e_tH;x6HD2QfoYIgG*1tg;;;ez6K+N(QMXb-N2T8{N9b!VB18a&-=)q)nj=jNqbI3QUr z;WgA%w~@@}jV&jn{6zK0pUG6X7mt=&X`N)rnfid}5yZ1viX)9+3MqpOYzJzSgZ4>(uGDj`%M*M7Y!9l7a zGTKruRVlDhuwpFHg|7%tL7WQ3lzMekTR)FO&FcJnV#Cpfmg`sB>#L|#{ommHHak~a zrz@WutgnAE+QY#*stb_op&>X~T)WtQx3BT>-Brao;^rYoA84oRFj9lMiTS4NbE>)X zmh<<(jA6S;2Vk;OWiCev$$D8SEQjH{)xzD%zx8%oYbfbvh+To3RO!9tVP_c?tslrT zn&Q1IyoQ-$qs0!wU|!PAemj;)tx=*rB}?n9CawulY+TDG28r zD!6&`s|RFZUe%|pD#SEIgs68{xL66_lYIY9#@U_F)b3u#-bP-PUunXF_7^FjK=QKP z?~i(xUC6DU9-b}1!2CHXbqxP8fXYySA$+t4@J>y&8$J@9TY9#*v`s;&h*MX z+-)K7x4G6|ATKT5|J*(_Zg+9}2_qnslpSDu!Y~P9NV-Y)wzleWZo$Evk&Ga=N?%Ye zg};nwZFXdwEg9iMfAyO~?@hTpkztFjM~C%KYaXZw%LB#sP7fp8=A1c{;jVSdA43Yd zKCqu%>M!JDNnN`BY*Sa(jD0WoWAU-0=CS1$H^S45E@BA%(d(h2CrcjFc7o>j=15^H zRU7_H)QlP5?8$ktoaTsj*O7TaWM7YKhYIolN;P4kg)eNJZh<%zpab6qhSQr%=I>j$ zpulAU96o3q8s=-qK5;Mp3B+p&G1tgH`L)V?aAg&{-y}p}Nx{}UvbeuDz+1RKpVVOO z(@}bW+F)&mbe`?POT;yK@^7*8UU_D5z#}IBOq8B7lk6KRWRO7GXy1Mw`{|{z8BV5E z`%wF-(#XuZXJX6BYT^Y8*B$F+BK{{#JOQ(?jG5n0?Y&$jj)rqRs#@RN-+RmHIyLM{ z4L(di1cCrif>}iR? zKLcuZVGUW_)rtceu1_hKOX7=y>Pj1QF%(d3DY2~u?XY(?OqLf;pd|u}@b!FyQd%xQ zH|{cF&FUzZrAIO`RX;F!DSS6UcsS147f5=lbLGr&%p_ZzKk#*#fN)w={jw$K%>seN zHrBfI)h%CTk=jUxOX(T*FSna5wR1!SSg_uai)*7Rh@D+Ljf7wcRgy`F_j5}4KF(t{upinrWkm@)Xh=Ch(D6YSR%5gt30EESoFjmg?&Gr z1(Kt}>6=NC{6R9Be89SSi2N(x`FGG@4f0K*={akOa(e%T!()w<;+ZLCJnx5ibuBV& zOJxAhDPu(HU0)79-5mLkreGmYtJJEU70nEwWs{fdEW=TWki3|3{nGj?%!>F~Q-*%# zD5B+C<39}nDUtSf;#bp|s?l(WZi}dFH%Co<{-+MLH%Gd-G=GtmUMiW|eA^ROF8-1<&Rp^x3#X6d zIG6#=5nt9X?2v0{PaSPbvx~!+0f~KLU)6=Yq~6h++ZvH81WFT8%df*Gtd&I@UxF4% zN-uMj^`>H;m!eB#MX*VEdcS^pP{Trw&b=;(t8LW72pM~#y7mk?I}r356sCnEp_SED zv3^Y~gfug62giGhOkK9cFz|eshngs{ATi|(%PQWqg*6=E8CiFQJS)%AY-^bXf24~w z`vqRr-(vNk#)%Q(LK2Ezh)Yf5)%SrUZiD&4HRE7Dq3bq&YnE*Jq6`vs+O5}W4#i%! z)+UN})g5zckJZtb*l$N`Q)4q7-lGll3`sE3HXHnuZg*gU&}fwu$m zV-x$-f@XjErj$nlU_$0CXfPln~Y@8W%!>bWz)hRZWOQ;2S)9*6>f9K@^f;8Kd|Zz$y3OY&lEw~987`v^WJmXkW$E| zKJS0(8v+)LTG9#DK_lKrBzi~z_};|q$><9_mMt6&nFAj1Pu+zfdPn5HE^WJ!oX=X$%71G6guD;p*WoyO@L@6!^HEW_;BK#w0Rlapz=)Ldyi@>9?s_2gzN z4Vy#RqNXzMh@zyfOvWTs$`O-(dEE^WhCJpld-lFkxniL{_tFz>mW*zDG9o zqdoj9aRB*u04(0ard6tH8xKci<>h){MQUqnA;T3$vY>g>30f*UOD!#~r5I69)h>@O zpfLB5loTm2WCKZmIrPjBY)l+Ro&P-Kl^$;vW)DHvqOy_&xYA*}fs>PSdU_h7V__k! zqw@i%-eJ~64sPxOe5lrbU`Bj(wT+|W79i}qfQr-;*nm&QWch&&LNbxvve+=!px0xr z3G5-5edT1W%NDpt1q222fY%4i3>hzP3QXW#v*;|jkxRE!bWl8E46ISaW@fWVTIciaFQ7|vbK1usE+r+DIkF6NZMU1O z&gaI!Wvd2!p}=Q@(4WKpPyV51p+vhSR3tMUv{)KXdud3?$;+KDOo5-S1Kd^ui^*HC zjn;s{O^MqsD0b-(hy$4~esFVg%C)$=!K}wXuO}`h20OGcyXgJW(*qIc7#WTn!oIHn zG|bKq=Hh@?KRiA@ASMP=OG_&oDhm$GYHth;?0^8L-si;v;fo~);9ugZuC4~|rC-3I zWBYJx@BVP1;(m9)PXDd`A2=;TV3noLm^#{TEE_0DNtX`~Wx$10D~;a(bLU59<|rzK z?9%@+(uPGvMde|CjVBh4_igt_qXCWz1<<+3aRnB>-rrxmqk*fG258`DtdiSwzG4W= zVbN>m0uQ240=s4E4pZicYCcmOf}`0LP^u?}0w-x@x#bdH2l$4H*(cC$lmLp!81Rh( zG(duE>T6kcIC*H!kHSo-THJvQX+h1rFZHaU!Ak;-LEnHt+@z(=iRiy!Ewhad5P^ zNBF_8l0IQNQ>Om{7@Uv^xGKljs_m}Ku3lkML!bxyYiojFV@Yp;MK8I&zJ?u7CA}A* zSDeh}mI%g^c(@0wPYT&mx}Cu|K#&IqJ;6gp1YO)Ha_LoIRm}mRgy&{G>J#!k`r*VO zv(X?aHT7WXQlJgj8PihL3p2!OVu5SqOyvL7?+oqz@O$1PHaNx%}!2Qu2vJ5 z+ufxSiMia%NJt_au))B>B=E97yKgY(L-l&D@U@c(m!@=nRi}m;BYzqqdiy+JB z_C`}>5jK#y3_I}K?_xAK9O(7OGx1!ED^!|I$&g?2``lICdGP;>ii}ikapx^*dE|n9 zLkTe605^$n6=|;y<8Z02Ah;Q&VV4aDj#y7H_tRL<3Q< zz-@^J!W&jSGTzwO*tY@d-Gc*rP~6l3ncr6fhzkmN86o8lb4yMq1 zS6nSBXAWEj4U6yGyN9%2LOs77HbKl2hX=~p^7ORPSv|LGnBAab`0En@U$jE~-PGx2 z?jXqlx7&m?XkKTgr<2x3ire-SWo2bsE-C*YRH)RbuzmrrKF}s!L!asEclc3PoBB7v zmGDoV>zEajkYK9!J-6AO5l)432C)u=!uPq-*9L~%j+XDya&ajhE~Nxx#no!oUr2R5 zJxUuQ624zN#H3_Vd<@!R*vn42-rnAk&QruWWp0zeOftBZ%j(vHuGlc)w8?t`9sPxr zRP)Hl$ivAO<%cG1t*uy)8(k~xa(DA-geT_#xFOIGO@Z~tq2LMu<_U;Pb33u~S(}D8 zprzv;GxIetXoiD1*`3%0c*rk5Jpv`+wLlTij~`$A{m7=n%B|YLf?kWe4K{ngMW2(bx*O8!ZI4;9RoWXMZ-$BotAt40EOyF7RH{3F5gx- zI3hlOzC91RYK$P2JWY?8`T11nAdvvaRt6fRQ>#D`>K_piu`^oaCyLowmOR9?)aLmDeI)LJZNfF(XeV96Hb4R1Y`}@4}tRUmAd!fdj@5 z))`LaWYF&+!ba$DM@T+k>YmBV6WiL_Vk9ttbAw3zVJU!@p}LaW6!yF_t1)c!bYO_e zjEm7NtfE{0&i(s-;H5n<9%7wvSfuQ=fCCDnB(d`M6AL#8L_%yy>}cAO{p&%IUS_{d z4VqX@#J{Vo1m(`p*48($J^M1{0>H2V%i%+ePlA4M%UJFbp;)?wfg4qSQ zz~$7{2FO5D3ph;B)?op6@G7|QTd1vqPf;Zuqpv`T+BdB^T44aGgeZ9I z2XG2_e$dWH#<2Vr}AE&u`mrsgr?lp#2gRB@7sWT|2&(@rU~%d;U71F4BEquqzI92!`X;OPR_tfEsQ)t13MYgFcja#lKf?6tf!0YG&bgD8v~BM|Zn}bMjZ31UaBnqTxeKoD%$scFt~AUkx}!((X%!;LK~UjCe^yjag^f`vKw(efdg)BIy*eLcI?C{O5L^AMGf zzl;mNxLpy( zz&W6YutW?omr_zve=WXQ?P(gI-$-%1FIdroE0_WCrp$1SOJy=$X;&$p*S&wuy&$_N zyu|V&YUQ`%JUBQC@Ejt5-*A6;c(@f@@o=hV-gLZ9e`E^^3SKq?kc!J@CA#ahae84 z;z#gJUc)2X@N)@6P&kW$o;!SPZSBJ10>A6l)YGPs5#?_EhpnKWb{@5uvHkbQ;Kfb% z@yZnVDB+OvxDT65PPs@wiBY-eYu#)qbEw;&VZ8|GUA*rfHb~@_1-PyIkY!jN$d0uH zkU<#kSOb_>I0VMSv`cmVvG5CD+G*WYN=@b9L(`m3e-F08y+lA%$^hMOt-#F+Z*PAI z@zC9N_#|3(_SeW+4tXKl=0&WlSLF~N^wYEow7NfB?~} z4KAZB_zSwqG7+0_yo(hZ_J@OMfQW98iQjartOvUSC*-e*sHAN+ZTV;KwadjQT@2H} zUIrji-#4Y}Mn*<^j=U&1{~9_wgJ2EtuV2@GtOpVF!SV6z>S`Mt*g!Tyl10_(!LRt* zX!uzFozm=yB_Ab}OM1OEn= zbU%9y0AH`@Wxsxg?esU2yauVNmE6Xjf6mr_S=Pvg8G<_SROx{hCJ%hYaFB;H00~JN z@ixqg;Jjo2_eLJXeZN&!UsnK)z*pCgI6R{KNGsyhqmLn92|MP>pmC_E5OJLCnLFNe@QEdcGbMfL9IF*Psl0P68|97L3_mDUWHSq!hC*6p&K{aVv*LM(A(3 z9wb4f5BonZj5hCp8*vpOIAID3sv$j(H$Kx4O zaz=2bkWs$*p(zJ}Z$i2m7ZEJX`}fZb4oL zhkV~PVfY4LMDh=xH~#^C@U^@Tekxe*skyoLkhZj1XfI!n2KN{`VcFq*13Nqon}QZX z6L*My5j+hFAz^^42>~&Bo&H0}au{bS1P% zyarFzc)TJap2yA-{J#s$OTQf+^AKOA-RYW~Oa$5^kvr^7D{vzrWsO}2 zUB^h0_&+H)5i3SOcK5=YmxR3e&6_tFHEQD06CAPJzke4xIXSThpyVMqtDE){ zz-rTPPkyAmNA>jTF3(}tCuT{@&YF@kuU4_Lvz(m`hW{zt0ka%Z_kB*W4}{=Nl)*scCtg1xsXNM+S`L9h(E+Ekk_*s+=Vj} zHI%1?4t9!pD>^&d#P0{=dps}D8UT7YL#gmC91sv{OQ(tvq2ONXW7zeU0Lq5~#)@jK zYdkLh2_A%hx6Lje$ODWL1>MZOE>E96g;$z@i0G{&Gw_}`k?UxsguC*_z168=R_z6B zP;e7oetLK%`_H6}gU!zCgwj};!9(v$Xl12#lxTpZ|poy;vPw3dD)rJh=P;mvRqU@2afVRnIpMv>WM0-wv#FK~w; zg&+zmC=u-B=m^L<0z@SK?%lhCtwvnP5J_P@5d|Y0!{_pNv*wr?a$r!}AajSCeekxG zP`4`qNlXJ=NE2R2NOo1rYNP-|H}Km(+lWr@3+BI6s$}j83kw4U&w5ZrRyKTu3Yg7? zI+x*^?#?ePST6UZR`RI>Z1CGR9m+VoWas}~mbg$QePXc)#-)?J6ga5)yTHu{Z4kt;-+p${zQ;2h1+6J)VonsL zJ(?@}chPi66~nJW&NLJPO*Y6@5%9xX^?kj->T3H)h{B(@LdPqz+jM2Vc}^jmWLGHy zB&qLmiwEL)(QzQw;yqs73~!WgRf0!UArsB544cteb!OX#f9%jTM_(*s5Jm!ygB@5i ztVr1e+yU^W;rKy{8&K2HhY}l9KOlJ7*{IwMi;Z>avckE94$1Fy2#CRqAjt$U{KvoY zfmD75$tRgCc_#3OGG3)(K_c@^Ex1;pJ!H`6@CUis7Lc!IH#UNTgK@!pFlZ%*|LFwuDz$F3?60v58IK9%21+3@;5b8rpaLYrZ@w?x3C4j^x zy8O8TP&tHD0Ut89Jp@vmG4=&#D43uF)D%iU?;+2PEa*syi8!z?(d<_;((_77_28yK zCGo)R%=xCvo($wcJu54DfOMK>G5e!EmJ>H#vKb0Hc_k&TQ-gr+M4gX1f7+u!zj`{p zG+DNz7QCw7hJp>(bEjJuhDd#qW@?OqUqqX;uU;b1f9AT6g*G-8Td(2t*FF50m z`&X@czPtcWe;3NmN!|LFFJDH&(yHA~9>Bc*4q8MlSwBvbN;Ewxhex_LS{e*>oI{W6 zbx^d2C))keyyd^%kHwF=wyR#4;bt2*TKr`16BGDzn1REPmXQcDJR}88mV+M z$d&I71uA=7ki=V2Ax8912NCkoV8?D;;LrxgIvD~O3`ab05XHfZh+@&GSu6)P0|^8ONWh2EsZgu358Ykt zLT7b7u^0J3`V`VK$U!Etk4^R66JWsxtBq)+zrH*O%#tnJ9`H+{5NOAn z17-&)<-l9I4Fy4jxr-brUXcm$ZEF(gDCj|Ds#06SvQY_X4!e~$y^lYI$!TI8)o zYW<9A72)vI3f<0KYk+FUb5kQadNUn7ULae4f&xLl&8j?N!l3^EDHcN~1yYHH+Grv8 zl2GwMNQ(efyTi)5m86~mp2LytpaZDCx9v*xpfSyhPb#H*tbk0>+r#TEbZ&frW(2f& zNl{2@0I&jlVGh%=pYVnwC~E}O4farPXRZb0f8Y-)s5>A4Go-`@b)FXJj=Y?HwvDOylsvR?Y-0XY;8i0!uadZn)4xZwxM zrpNI?tAn}hIzRD{rUIw{EyLw|c(DjxwqWV@yU~7rd;#^*5kqU=z1L=E5p9Eu$Y(;6 z@z23~Is-B&@D_X8lm0J()`x%qagSz5`5^ge2w0mtbIjF_1jhnSB(KPn09JxEw&9Kb z>t0VH8fD^4)xm7gkPvU0Ejl`0V-P8NxPF6CNM?+o^uB2iIs%(i9d_dLfDUxfQL869 z;>MkzfgYmbVymI1Rykx?7h$hsg)1L!u4{=kgC|tp`iK-b2WGXCz}8C53Eq9iudsjQ zaAgX-h7TeE6fdvOM<22T647S9N)>}caV;Sj8m^S`cQhXYk^^aV%@L2M=2eLOL}XFa zjsG#MX`7+tVMV!A9$usXL7io1YpcIo^-p=s$2l$ z9Z;{G1{=i`p4@T+72J1`^m!Oxu{iT8V4mBH4o+t{Xz6+(b@=1fJvLIJzbH7{?FeIw zlEO3zCR`M_BgCV-STa3-y*8P&buOajjlwHKOGPgoza7}&glTDN`Tg^Ex^EZBqKm0= z*V?xJ^k=M0E3OSL5iA9YpaTI5I9!E8i5k9;2GzV#0Pivcc7I1^ywXPso=^x!W`WS9 zM6Q*8hfaHtPCi%(4a=~fS~eCh%p^h$(O0`S2tvENH(~}Ll$%~z$+QKeEqg>*>OEc_ zg>_ajVO2w7jWa+S**RXE(owOD=mG~skqrD6NNbZjJ3HSrRH2~~8cw6b691$62Nstz9-43{JP6M@-QTF2~@i(7R~LIk~SuA^9OK->On4d8_N-&|P~ zI6#n)^M$PJEC6KTj6qt4B$_7-F53fZ8Y;LLV7`y`H@m>Vnp;`1^SY)}LGx2{PsZze zy&{IR(PI_LmpV#f4_FEeiLrzE-0iS28ibD$WQ}#6iSu0 zOpv&nY>4yj>GXVzgjT}L!EvS8OK{?)hstyg> ziY!JUMbMcFwJzjrKp}?}WD%iRYC%wg1q9hhT@Nbey^#M$8TNgxNBk2INiPrO&+>Mi zLq`O(HX?~bD7DAVlzrUWvxbyzGsyMO-Nij9Iux;0O%f)3k}W9K5!TzJy{ULfJ-f$G%9piJS0YY z>NN14QVlVWrq%slSrmR^4fP_;qr4Zy z)+@$W54R5g6rQ+nc!21RLfpJF2~Sv#&k@xY0)>@cH=f6jA=f6Tsyap)%nKb8$YcX^ z4OapMMaVAE(9n2-Zx3T0bSjwCD)w?3%Sr+DNeWBEN$a)`nQsTk7ek5p(YPL5GgKg; zG$8AtZDxWABT!JUdER?_KY+0n7q)Bmdc+~V3;gf_C&6*${sVUQ44ITmEY*7i(A`jO z6#NA*l5S1xL3QnziP)KUX;$Zmj7i4oEKXe(rBP4vC!S^QOFvGXLC+@BVICkSBFS9H zDS`rEh4Mk!NW@4nx^rB{%!YtuPNW5-q?90tF#Jj^oGH2{1E8$U2j(ML<%A3_iWm46x+7S;e=4Y!UC!BK!B`hD|Bu#IMw zx{8X59>?IT>59FFd<*nR(n1eTO=Gnk0R=@nq>o_gQmvV#9FUTM`aJ|L4m1T|?1Xhg zjPU^CMnR22=ut%OQn`3TeYb65;%`O=D$!uxgrPnIG*zUF(W@p1Z(+{x)m^hQiq;zJ zL653K{X)!(vm5$W&9kTUT&#r}E}Rh+ z%+vdykRv0~89;!La{#DJ-^*!pc~1_jc!_ zGb1vI<>FgJs z`8Q_Svp_(>G2C#Q43l;tmwO{BM6voT_kr!a3`bS>MDk*G$Aq;%q&xus6HTlWUh?CN zXv?~U7L;->BssnLL5rtS1cDel{og+TT_6-5d{3pF8DevwXG0Vc|L}%@hu#D&AW%|e zM$)-ZLxnjM<#lWbO%Ix;5PSI0Y$6U~Id7aBuco5^n>3v3`7{yCxH>!8m4YlLl9hyT z>McxWv0J}-0^yLujNd(bXbnVa8DK%QVXg(R=nv$a;d>S#si+BGjC>DNx3(ew97FH~ z9xQY(K1WLC*RCN=zuz=!Z{p$x3u-*OY!wn2-v*?#2S8tig(6s6Z1v_G*|rX#_sYb~ zg!x7NrF;l8)S9=k=1_t*9DJ!1ulXF4gm=ch{Cj{PF#d&brH3q980OL;C=;e z#0gqa&T>7>z(Q?px6pTnh>x{;$_Rb`GGl1gagbxj%r5syd2p+4xYHjr4nZQ5 z(g0f6cn;K?I}mFadRQ`)P9Qbz;>PRAFa0VK>Ot~+;C!qE*9l|2@-1FEDa+ci>{tbF zD*N2lAOXJ?QOpDk)865J)^$&1$Myo*U@8aEM!{0*!(l~(Wr`_`x=8b3BBAJeFi1?8 zfP_R;OstjimX(D?eH+NxY3Oh4@X+>woUWF#yuqo~=VN3%LIYtx?oZcX+cb0H;E0&e zIC};z&vNjfwtlQ()6og7*3pqUXxILyxaek<&l(1kDY=xY_MAVB>~C|;#rKj0qLp;v zJroy8#^%)<80{S#B4X}HUA77bBGmanf@b4(6@g4gmfTdYN8pwn%h@=Op%c%pTlEEp z&3$veA$xz0N4#Ix*HzaB?=z=szf!7TA#l&AUX791!TgmUbPwDOnE7Q6Q+7~^VW+Gl zGf!i>DpM~i>My3TKHI6h)0ek-V&m9;8Vfr%2~fhnvac~{n5t2?Xw*<;XZ64*0E*$q zwv@YfmWI_qRskVTFPC8!BQ9+X;M-L@pX%r!%X-xLmDW@A`tF;eAY+c9|GhGUzI+ulInyLnLi$ z*rt=fAm;I3nN^?ISd~yLD{L9k#hD(`$`v{-g`I_gYlaJ5uzymOKM%JJ2jOBqoC3m- zQr__e%2mgnv^0mkyi>=62b(93ajGeTh%nzN=RULT!eP@lxL@U~aaEDP<`MDxGlsSO z8M32a|FVeZVVl9Q4It^!p^uG?ZEfd&8_{nlp!09=521reFfSq}e1WQQ>zckm@X^ZJ zz0vFhTtv{Dj^15$Xhj#>Y+cv?v|0#|6g9&R3BhJL2kV1h3C^7gl9bGf7dG^t0heH{ zHsojI7AdIglK{vQ9o}*guMSEa;Jdf6LIelZ?d8Mkv|=)Z6Ur`e{XQ({zW~C`=a5Oo zm$Qokl)ACXIAa(&COHEFO}e+R{?=tl z?&j4k`aeDF`+yJL`XMDc?D&8<@Dk+0XS_=GC%t=Ak<<-P7r04d5cV-qym9}v7neVO zU`Al$;t0DKNTLWBt99YUS^#_sA1OBbvdC&La~V+KZ?seA zWA$PcWp^+U^8ylQ8NwmgS4bp5g@|RoF2UFXKk<$q=4 z^!Ri|ThAoHN+R1@neSHLWe~z$Qx%&VRa+F_bDUQAc!Sl9g=D5TW6rR7WpISB&DPFv z*|m_OJ;7@5MMqB-MIfHT-yoL==!|EZrPt}Oo(%T|a}>9yw6~5QRPwN{Z#$x#OV)Aj zG2e^&X=9rhsQ2sS^n3b3|G}||j><~(w&@)&86YN-5mC0Vkq$dNR)=~3>hEXDF&-RW z02-c!U6IzST!G@o`{DOK$u0n?dyb6g$G68~x{}))1UsXlZB=;(w;@OcB1L^yZi&1L zt+fTjplQj!V&9S~Mqfd)Tgl;SV$bz}jfi@=O!*u`lpOeo6fnu<_;hs^h7@@nSWisa z7bqq`*ZRWxldglrXDyHDfhg!l%fi7qdZ7!K#_i@*r!QB*-a>hG0-eT9F0{D+6CMnk z0$S6WzRIL*ZEe-Hv_R?G{@u{fyR1YcOA6e5b8~ZuRRchB5dixuxf<$0tX2>-8LVFc zr>ZDdEz~totn{0hOgZ-utDfdF6lnb3G-o7d8+YVx?{_a;MyYQ|dzO2WX&Jpu*rmE9 z|BRorO3nC17hB%G^E-esZckmA0xy^Jks;yn{-z$B*O1;qCUH1ARxC$D&MzP4S0OoZ zq&xr#Bha3>FI&K50_e39f#xs(|IfqV0!{GeAe~%nuO5LX7@Yx-Rjsb_Re)#4^yk*l zdqo6f0xRc(ew0GcJRny5q&i%`E&`{Ew0wq@e=R^LrG??iDVX+-OdLszZaCkuE6O>| zqr*M%S9+n{h`x1nt+(r&`R2dt&B@diHyl-A!th8zlCkR2eLrv+tM#`Bk5)7{)W<)KN7 z>o;v~47WUKt04r_?@^<%j)*8b(bSzei-yr@3t!ye{%|mj2h*N3Q+junKYIggNA?|l z)@EYil_&dZmw|Xf5#5KOcH^bBaCf+_>FYUe_m&n1hWfGb-N+??qmjZ;L&!3}Y=)i< zq!tXVgP3*5rT_ZuasLo~X`-43(sj^!IJx~8O5I<+d?74@SwFN6ZjJZhFb6W_0xk9= zar=N+^H@5$Hdq4iuz?#$bTkGj2ZShcO?U$F9#R`s!Vl+gKfk?d2dKevz{>)B4`^1c z<kP5rLhVelfq?Y%<1t{?sV{noqt z`z&HhAd<`c6DK}3ND~E;cTcpdc>_vkWK|HmR*ll2+?B{BEt#3uYZl`G(dTaV$C8ha zQbU19zIMc0{?QY$$FhZ**}XgZ?j$Ic2H0+2v!1(oAo0gPP&39H`whdH?|#sH9&6g& z-A(H%0r{+JFm~?aKpYCe78txreFq~4617Y+yK8KPfq(+Bh?r!~c24sK5Td~u@&&t> zQ_2o9=VxlS+H$t{Kku~FgM>QCmp$)2U6_v~3Ni&9x7<$ZA^YJ4O2lPX;6Fo`-*YiB zdUI!EV@3pBr+rpQ&vm|dqJ7r(Uo2>?gq%BX!xESnD!hK~1MRllniu^R2@hzI71qrG zg`PDHLj-0PG$n>22mzY95Y(K_>*%EwfD8Vvc-zVb0uFXoTNme6{%!MZ)-S#|68QD+ zH6k)z3i9H{q3Hb^pdlL?6t6-7<{s3l#-b~sJ^)#XLMW{Cx}-}b-i7=!q@`dgf{hUj z(R!+?8n+w`k@_?Q`_j_C8f%EPF8xUm|2%tsmfV(J=_}sy3Y2SY{ywgSSiMTpA24-dz{y8`8cpY82X>+Fx1ZuEgMYW9e@2vH7Tvs4K{ zY+wM}5(PaaG<0;ni-~Rt(A`~PJlp^cYB%7+pu*U6j3t}_W*wS zu}A_0RG^YFd)d5V{rK!)7FXSA{Sow-1VY~xhz8$6zc}u>*!xWQGK;Jr{KQWZfEfZ< zEH|Np=MA^_>{%M<;FJpzF6_D zV69r}yq`?utwlLF;B_%!O($AidAW9@j)Bq$95~kN#B!L@;49_q4tMxXBHn#u6npSR z`)%F9$0!(=+}Zt=+|Zj&C?ocd6Bl?9kmH>_9O&=6mfrU;2t3kyqunvrL&FEqDH#_h#cZd<25mq2jpB~-|vMIbJ655o%%RwVEfD@ z!Rs;WdX1KYHda|(vVBd#JP45BTAg(wz?q?j--fommGPxJ?kTW}sbI!&$6wF7zNB)N z_Eo=_42Ty^ljBdAKkp zX19I#6X&Mc5wJ^?I%>fwgKXdBz)Q${lts^ifB?E!gz>GlNsF4;97H+A?x<}Djj5bH zse>6MALB9Q>*S?>Kzpk({(M=Z=?Nb-%EENZ|D` z5w-DzQVRN0EFUI60YN(9Na$B`=OS)1@pPDya5-~tDvLbcI9qYc`So8G?+aqD%WW{k z1#q^Z0DJ{Vu+*d7%JUb3W3sgc*Z{w1=_4O<;Xr0aa>MW%x^SrcbL1(S7VgdjGz)u$yUVL6WLXCmm1A0myt$1(mPCTG`9}u_D6Fa45!- zHP2fBXft{g0YGZQuX`odv$UoHV=cORnGp5yCiWNCw}Wq-Ota-1(>=+$H&=P%0>riZ z{As?Cc4Lt<9I8{dYy9+D{Z_^8qV>o9(vB0u%})`M;!y%-uH4Qs+0*&^V|*Y$w8Rl9 zu>7F2a@C@bYf@oc)vC-_R}n3VZ-PFKS}S2p@OJZQC4o#h*+ zvoZkvhN-BeJr#!e8jURj{(zH7om6l_V99_Y(Gi(EYI3Ed@_!9(lb?|!YU^bH{lnY^ zAh$R4*yJuYviPvZZ{Q13A-BL<@qJ;K*J_mHFOHoQ>A=%v zMa2iH#1e2r1mIP;@e7zXz`A(e(mKD%zU}o`G`)XHGrO@<#HZS3q67Yjk03riAB#Gl zgh?(iKf_J*nJP9v;7fXDM`IY%WoBYX4GA6+av` zuKvO_YUg)(?ktzELxB%Y{nc0HX?VCRs;Xqw3mbQVY?Gx& z-pf-KHbUk1fcnJnfoMwDOTSOm#n&oT&UiNUvhODq4iK4))Th3;cI6}N001AvavbB6 zKPLm9cAPF#uBjMX)d)|6cL`O@GH^F^E;$!Qfhh$V;e%wCz*prt-Cws>b{dU&Zv+58 zZdJp~C%urck7%J$U)J8S-W3VjLMsxS`M;HiyWkVE3~K5?N(%^`3rM!sEQoDXW!0W> zCV3Mcsu z=&?}mw51nOEI}wkz*ONEma*5KXB+TQPX$^z`GmettfxdqGYr`bbOopU5l>W7cGd$m zunp{ZiJv-BtZc)=B2+SYX9d4Ll_9()I-%KLuYbnn8rU8?+6R1N*vM>OWBB7&9N)-& z*V2~>`3r{A+&*Tz;}3Yg3s9Jn%PmSX=*P-zf&m-IWQU7&%~F?k!@&&FJI$u2oZNJb zfI$t4JO$a#TYi=_OgvHig1H4N(hrdbxbMV0x+C6gaf*k=c7G#bLs*=j#QdUX_lfNumftdW+OdkP zot`wi8z7{cCVp79wt(&eXmTwvj;|h=oyDfs9`1Ii$WNR?@QXpfSzZ79PsiN)fR3b@ z^vf6Ho)2{O@JA(Cd7*;=AKPMnH!dD=k(Wte({Rbp9o>91`3_Ixt{gH z+H$~1Lv4dS)h-0)A0$;kDjUoovL0@Uew_VxtxJlNrBcLzq%D<~Xyn&L#Ywj7IP|J; zBc$r>{HL(8cfqGl#$stTLo4(X!Sd*ku`{+-?yVgtJu%MiP43n!uvJy~pI4JahlNxl z%tUjiApHKpwr*j^cb4w(1S`|@yYqBsEK##{7z~+apwB8 z^!;V;DFTrJ`t4I0R?_q88$@2JDetA*~@1=4P8WETu#u1NPK-Y;~tFU~2vXa*J@O%ZUJD=L>@2;BJ z-c8bnq%H-Zk)>FQlZ9<|N4q~iB=#Z=#3IQ}w>q&TK#Kn-mJcAu($ceNGksh!!j@x1 znV>(T@Rc*4l?5CEW3hpbi<^@|n>!ssEO%)GoK9)20c8qQ#h#o$u{G(CU z30uz?D}d_We!Y*ttw@oNgU9xza~(~cWC}j-_Ro(e2XuEaH2&f^^Oiclr|ldloQI@x z?#S;~d~o~{IYKqw|L0@=2Sw#40fI1l9@ZAJHP;=vW8kRbvY?IW`!+TjWK&YyFrX|h zs63$>1_m1{+4H%8{1N@*Fm2WX>q%PR z4nBc>b=$0A_j>}`!<^&^vE`kgnzCilAuxal3xDtxH)X6?-)|fk9e10z8D?o^7m?AI z56^Cznu+b5nBH|fBck}aq(k$f8c$FT%-uT>Jnjy#Bq5Er>YXLV6uk-lk_)wE4Pdd~ z9%_}ue`p%)51JI6tf9NZ{aOlaz97pzixb@jyGPusC5r_;hF@1_u!Mkd%?XFWp>l|LscE+|X6&$X6cS(eQdQpL=}P>AYMnm)hj1pGFyrzr&O(V1W(YRs ziZZ9rolj0wHw()xo};^U;IKE|X1#3rT41|?-a%aWd(XocMK$WJYWuM&2A^`gOmq*$ zIn``joNN0^A7mSki;w8WM76dpRH(6bw7(>jWt6`BEHHqC`NHG6_Qm~X53Ng=bT4(X z{;Wy}ZhoQ*eGOGzi>OV9u0!Wey)S+;w{GJ5@qgItW!C%2LSN|>EUDhm*(d(f#N7Gu z@z)N$I%>ww55l$sNh*4jMd~@XNM4&fq}n&caBXL447O=fKf6j8{)l-DZFx20$onwK zt?bs3*I|lNNKx1L1?zQP3S4{{@jR3@3cD_{g_*uNytL-&+X(ysf+J0thTO4gamlvw zS3wzOluyf(wxfAbzBqj`U29kUFV|73ovQ74EyQ5FJ*Yj`nHJE+N7ad@G+a+{dUF3JY=fh<-Ii> zGjS3&Y7O?X-|_r-`B%njK=n@)&RUw;u7PpQ@iJN1zTQk<69GzqMC0liYYpxh4@YK4 zZ8O)R7`N>g_3zF1m}d>k>#LmY_dBEU$^9@ddB>)+m0M(yMYWSiJl~IEOcTf`Vo#II z&ZK;;Fxo^06q)IMa=C?^(TYN+$YY%rg;hC~r5Ad?k9>}&6_Q+;?~nQUjxZ3rUo-#x zv_jdmZpe5VBeQn~6app>fc&&$iwy*23sPgzzP`S>LZ#Q(;Z_atr z`nhb^)tN`Bt4b@$dAg+U=F|M94$`3GVA+KKyO)H2(6I$PPYcrzZyK`_x%~KhVdS68y{c80#Sn8 zqr0+w#9lUDNx!wVQ{E1A1uo1-s+rhm5T(c~bv?|H8ICp?6Tea{h876(Zeki7c>~t_ zcyAKia6g--U|%*Q@+Lc(HD^BiV-w`y7?$tix!v&HHT&_|AVcO>ON;nWs3ZO&R$E7# z)5XIn&PJN;RW1C>zwORr#tl=hsEc8w%TZBVUceT>EStIQ5~1`yosY{ewqFEiX(3pm zPC&hV>I*oS@e#Bd%qms(JH~vkEn<9UCK+AH7$1Lp0hU5w!?S4iK$vmV=90+Ax+Olf ztte6N@>4O%6)tAg>^g=-J*~-QXH<{U#Bhq^R7QR^-jw!nazwx&Lq7X&YQD!7Er!gE zPw^ewNpJeye^$|uNb&*?--Z+(|Lwu21cFn6;l@>G^W3PqXU{69=a)TIIc)u(jAjJT z+8emt4LY;FikjM7_e%fq`^TCL?^L$@G;G+!c&0kIZmuwwjuR`#crx6H;j8T4qSR?X z829siObweNWcGGHsf1$wJ@i|yZuqE>hdCq(iNB)M4CY=5UZ!|rhrzPhC8S$_6(vwM zL7sAKU9YEy-J!vWiL%?@cy}W|G#c-E>x&@xFfRBo{q?7r-!kiaReD3hlrE-TP~^2i z-J~2I$8ZwUiS53V$Fu%mz}4bfl(^}qD7${A*+F=6v0C`PIC~beHwo}%R1DiL{G!1u zS7YGR+~9v5>Y9I1nT2-3{y_511pdOtI5lp{D|%KJ#fvvd34^kmceZ-_EyqZ%dsjNy z8F22B!zVP)Szu^R6pOWwobX!a%HOUN4Ybp}+MKuHu`$84qd8$nv@k}wzA=8Ani_XT z24gBlJk|bWeAA-13Ja{Yz1ha)y#lu8ThN#+Bf7wbF;&lK5LDYrPxGeXbbDhq|FQw* z^#%AEp4TqdzgAt7RnMx8F?64*5isW$SRbND5L%BBC3NR`&GKgX-fydu>eI@klQ0Kr zOa71ebVq1q))ZyoSYvb{{@A-6>GjpuwhR{@wKdZR?u`d0hWi2Osbg45DpM~Q=Otoqz@Fw z{uF*}jHamla9YZ#>&IK=hY&tn1Qp%;U;JXiJYd=?KwH zNCIqf9WYU?clk82(MU~)=w=KPRrpK~MzVVrx>|=#{4?uoY)!Yu3V4h6m1}<-ieLU* zg-7=jg~k5mUEUU>`6Ka>=EUIVoNd~qL%l~YwT4gvxBB-is10c-EpOJv%85KV)gr4o z$;ZRO$a8F^v}dgGak4E+VH-frV+bt2{k%sl?f9Z1Lg`7Z5@U9j^aV1F<+R`EMa04D z%!S*ZTALCT-iK7oz3-l>5mC+=KvSP!)NkRS`f~13kuxUV?4i+<`li!gkn9;Tn=1VQ z^_x_Sx0dk+*DtWji#NUMU>X(Hk;BlWE94R%(EO${Z&N2dQgDFv)}{OFDo!8iw}7&W znW9HUj?2cek}O1V6ON;L?5mN>7gB9h4{KGlLpm=LCq!U1z8jgzOaA%ih>ZXC!yhxo z(|{pND#c!KVUID~jqZM2Yw#FNUHNcUCd-^!AM>G2NREQ6)&_qt4O8w#GT2rJn>=h5 zsKo;-U%Xez%+-BD9(Gsgj)lc;Z%m~csS;iY#OCeli@Z3YI{8axiGJ&8#XR$I2y% zgpFc}<0ZYw2#Li-5`FqH$N0|Q83l=-gA5VA}Oq5 zza2xvBq}F8?om!gCevjAEcvKUP#&8V(SGQ!D_;9C{*%+yVn5-L)T)`xoq>sCZw_V( z9jDe%z~1El3?79zasnOMk zT;L4;ViNFi>+}=e#N%(~q`N2`hdq~gX-5hTqj;Z4;nO*{u*p+>x!aj!j0zld6mo&s zVsxLlKfYbOuHGo+na%rbu{X6QudwQH5H6xs_=3T6okvGL!G80R7GyUH!-+E5^ zMXgT~5f+adNCZ|I4vp&?t;t(yml@uQ&5Y&6xh7*k$rU>@>0IihVr>)qp+_;ZN4ywg zV*ZD)`uwB8jb}!O-pV9SYMWIq69->UGs-Rz#$(XuJdUn4t_mJ<&dpcM$+I`5`#3S# z8t^4&Wrv}7U-)<1s=C#mXJtQ1YglDhzf{eohIXE17P*Tt+3;r>Mmh8|zwT#d&&|qL z&z;___)VC3B-okh4u^3`5sm$v>}SN3#{37?&%Z!9{%(+ zM}wW)BqL)KZa>JTMjSHg*h!rAl=(L1ZD&#o)y875t4vScZ!j-xzv{f3|LX9E0@|ww z{YOfKzLB$B>r7cr6E9W-izvtqmFC6|QnznBRC!nbT&%?&x>DK8JlmBxpZw#Fxx(gcV`rV{-xO~BrC%IMRyvpF6C))nM~`Ua4BSIV z?|1v)UTE-n-X%visyD;ftRHQ-QmJNgwXC?G(#U~WD%#kNO~p0L=nsx|qm;LVGnp*i zVOqbsgMm?{oM7C!((84i#7K;!j^z9=XDPxE2a?*a3#J$Z?1=YQe_IYq??bflh&jjSXK|Si;%n8uDQ+4JH^<&;`W?^P8VQwbIwmuO8ZBL6YkU&70*$ zQE(Z)Pu{6u)n#VV12paev=aa3NtUIiqC$fLxJ@%N@+l5DrK%S#f3L^^wGsMTm6>p_ zUKQ5WP3uTxBgFx5>B3@aYEP+ccm($W#vJrn2(2rsN%RtH^w^H7V#LM8eL$!e$~SM^ zSoW?4LJ+lOAgD^7<_=aq^oDPSws(QlS4nw!zYHC;w5R~4XMENUeZ7c?Y&b!1El-OPGn^j=lNKY?B1%d(K&@o~V7MqZOnuR#@gljnpuWf; z;&htg)S@Cn85x<&I5^e@6m=39pG8vY0b>^e-5pRhM?<~5dmW}`=b29n#`3518v-4X zoM~|NH?veEeMIK7@0xLc$l9BMbinSTc2da!?rM6XD;a25y(H5ST*=v%4}bK%fyhE$Xpi3P20;o4Mgi!i4QezA z$-VJUTsH6VqCql3h=pOhIl<%<2aP3yNz#hrAjG`wq!M(K*B^9^B)}ehS6j;uMRZS? zH{D9S2z|?eBQkcQ+};HJ1#9LwqO)^zb5kJr5CWz# zTq&FO51jNfezYkTw?phpSIKm0usHenZbI`CXYIrY#niR`++V1L zJfV0Te+@Pe%T<0ikMn+xTR9z3SR@4t3yn@yp zU+BDMvz&X53}{r+u7b7*YHn^N=x)JAC6|>c{wV=XlgN|3U(enE#D$uNM+Nymz*+DG zVoDns=)BL425bFcHT=fLR4rz{Utt3RD*lZd_YDmVbproKZ)YA(b=v>&FVddn*hOKv)>+SDJJB-+^n|36Y(RX#UQ0t-SeGdoIP9i z#ni$=>BI$eKbc~ChePcF-l7aN8U$8WjV)mpzJLFI+m?`T-~95R&4n;^9k3KKC(c0X zy+sfRGjyCQpe?2f1frmQ8NvWjUs5sl^(}@hCjB%tIMukxxxY}{>~MC@g2I)r=2fXr zZrfeAWV+ATRWR>p{@;361zTi`u2```pZ#)x#Q_6L6FTH7D7&j57pf+=tEb0OR93#E zLY_yEj&FH1-PI_*7@gFq3maZ6`W%%*ySF#jV$i4xsl$XwPrYha!q@-ef2WF9xXC>JB|pK;LWZwK-PpyZdfF_d-Fro$Q-8 z<)=JTn-n3gR*H#@b;;>^uG8&&HLf2UdTtZT9OAnzwkt=cd*nmfZ)CN!C-pqnAGypU zKD+FSp@N{Or~^kgC?FNvAJ6-p=%Z^J$IV8g^u) zYfI~=S7H0j%|jtHV4}mu=xpo-2@k3}kbjFFn%>l{%PHl90CeY9i>dMAmiN+Awk-n+6vbjF3EH4&Df`^B1aC6$)%jzjfHZPKQPbX|NvGNO zH(WUl!$g4dHjvY_EeebdG<2!wNVZ{md37tRk$G7@EcGo^XM(ScB$q;@6-jq(P#zlgX6D5v2@* z8-QAvsM$K(lrd^i0{lK6Cn)5S?OkNU_hQ4-Y3YS963b8aQD;2*9`iKLF1w@g_irti zYJ2K=4z>5bU+-eI=Woy%FXthV7U*wBXahbE{*WZr z61Jchi(C!Nrh8wl;OR4G>S^|{=ydmP3W6God*36gxU8r9@v|N}J8iMjwRLsdfWNVj zthC#}6*d1!>o0PR*L>cDV)lS@`<+GTPR%d;tr759qGiuA%c~f4*-Wzs0#9-6+K2I0 zXG4jk5XKJhw)yC^y8t=*W7--zefegeu`1viLqSL6!A8f2Q3vyE=ws{J>Cq0c!NEaA z6_x5;t9}VWR6``5#vklGU*;SQhg|ZCe+`&ORcJ=N?bxgUk-aeXCO0Lab9(Q~A|sp& zja`j8*5T_WSt=*{S!qSG{B3Zb4q>l-ughT74?E_Raj|e|VU|~3Wagb=B%1RBxu`4} zdtXM7X=b%nmtS)Vw>!d`&)9$yaJ7hbEAHtiD=$5G@E|@|-X@;CW@hib4sGARzVEnN zBQW3UkZu7(Y6EH9-pm%&(A3u98?D1lP_12%(5AtFKSKNRI5bN2v;k=2v8;|>$B!e% zS+4u@oo2U`#&2hb$_f=WZ|=zG>pE~@eB7Nvx9f$Lub>g`vb6lQvg58;&2zFIz|HE+ zwAmWFby*^?l^|kI(^bz2cdha~zb%YeTaibq^XL_I8*X?-cf`!-NS2Y7rfh6%h)dkR zUPC=LoxM(T0!f^4%*QYuYf(jIeCfLRsQMXBIT|z zXJqJzKz4O7GgfQ=waS*RP_U#7oM`ACrfP+k?-7y^=#F4JFeU)N1Dqhn&2mWVln z@7>cO){(YdHL_~$x^N0sXt&l0iBANBBXRvLMn1V0M_eP><>U7+SUu_1sSNYm+UZ$~$ar@J~I zs5I$Ty8PHLZhIs>uEcBb9E(Ls(A_C8o&a-ghZ-n-XR#->$r?7) z^p6u8t{|*uzOm9q5a1#1v>PEDR_0j@hn~bE5lTY1G~Mhv1bMa53$8kbzt%3_2gU@_ zjjWl}tgNLqk&>QD{C8Hm7LDKBVci>+L!vU^C%N=)9Z-r+NKjNTN|cA|d;fxy4B#jB zS2fbDY}L@*tSpV(0#K&~MMPGEZ7+>EC_DW8?y)akjNiBuK^BH;2>IhHb6$$<=5P#R zAVl3)J(uF*!jRpq$9a#wcFm9HqNNunEx~BdL9S>57U-x4a`A^V$&ICR=A}ugVt`Y6i z(r|qweg+s+5H$Bh^(%(P)wqR7gb}6aUX%qL{lcoPZ;pIh)by1E#`6QW-8%65PXFYK zx-$vnT(xY_P7C}QsN@}BsNo$LM=jV>`k}0#{S*mr=qJf@adzA-<)9iO@poQC7oYR6 z#463@Mfw_lK3I<-9x_21A`M{QF&rFj;W3ktK^AQJL3-TlgVY<%F5axYink%sFig_S zuJdk8-g*%<7Mt(0eBui+1_@>h$sy{V@dz3HDjPL9c@n!gDS4p3Ul#FUKtKQy*@LMgC?RnH zmqWxoAMyB7Bp8o+F0$LRA*Qy)44LIy{OCaZ1OOm(BPFH6uiAdwHm=2s7dI3W!T$Kv z6tdk*^#jXRr*Ld?%Zf4hV{&qG9AsIFQmn6izvJ z6fRI(Nq&DaR!aA0YjoF})Jp>&#TRuK43z0C+QsNwOKz&T?*6AY;h+d~gF#LA z>|Y9IH}B;=@9>?REPwaAF-d9JNqK~_mX`a5j$*h0-aKLTecB2MnHls9Pbu0@NqgBL zJbQ7^$6#pL0P_&x^~p~;0?`X>u`oZagb#a!%0n1JL6oQ-c9w2uNJWy;hKn^=S*Q)s zk!Wc{WYqHSmlzDGkiV)QQvbP@^0CNv0cWmw`jj8!ArgNB(~$MD*n3zM>K_4N;dvk# zK>sfp930%=YI1E;Ff>fdksm)B^m^a*U@PVwxfMnrfCZ~q=)u>P-0KIF@<49jI7kV4 zOOpk)1C>lhe)a0NI7pRZR(>Q=B9tHz5s`lHUw@e~|2Ay(ooq^yaDrs2cKZE|^9{Ml zsKeooNL21IGh$BI`exu%x7=BeKna9tzcJ|7h$@R9Ng8j_k~EXm?$@y-F3aT zE=ivuxfIVru-L%SaV;gSt}ejxI+a^e((WWxj&mxbq_h~9aXGcwyF*$whG&2an~N*9 zE(qA@w>hO_6&TDwQLyANBCzSVEwqrc;YZE8Q=@mgm=JlB#6Q#L3R`C(*-v5+)aZlU zHLe~LG>g&@7V$W+4Ltf$!whkb9WJg3K?=r;%i|Gez-W?JUor< zfGwN=bv?$?TqrNsBgAA(Gueq4;LGA}umWDAw1ojpRdAV4I`(E9SjfkxS+mE)WC3+4 zKE4;9)xgB${La*EhK7b6nu%=JAFtx<8z?LeuIQgcaBqtlT-43b>&e*KBr!+Dm0S&z zjaiMIlNLfi*+^%SFLTAh$uSAjCMmvio7+1g5SOns>0-Bg6_y zIYLNC_j)gYbqU0n0SQpLs_J6bWWUVF$$5lAlsgJBBX91n#I@DMd~sqwLj=f0nVXx# zgVz9zz(wKmr$JsJqs5@P6a}+hnPj~Zo4jrrbr>*S2!n@NbY=~k-M-J)R~saaaSS}` z)q3y+JruYAY-Ks3syx@uO-Wnh6BEPQ+RU(Jc#v(ANiZm}pYQ2mB1NYtpb+8lCjgm{ z-LmD)w*n-M^OV-DBN^Kvt&8khRW+Xv6#5$Kk?SEmhv#dk#~YgNx>;pTqZAPUTm2Tr zDww{IIy-Kv@7+5L(|Xj;DJUrT2}KkDWu7|u;+%QPXO z2^2;VVJ}Aw9s7oXEGl;EAxld>3MX+DWSqyR6HPO{2e$|bYKLK0_+AByep|L_FJK68 zn%tDIm{>2Mk3}eAQ4~1JMW;r^Eip3#qHgY}5|)aihB(Cn5>hQZG&I08a|aS8-@|ZD z%djUV=~xnSHb7T6huSiTcikvq1?@BUKY9d(V*pvm%m!t%+Z2j_@BL~py}(8U*V$DdZj5;Td>;bic?fZFPE8MM#j|e-TJjn)qy{e^ zvU~`Q94UgLD%FkD`w_C5hFk!mdhyO`5(Eed1;$(cya=p>-&-`X1R?l_f*>CkE?Y)W z8C(?DG!GHNMB&Q|QsaQykSrF=M#r592E*v>!MSp}REYh*{pJvYj>+!f;f_8PHMOUm zr3Q>X%@J;e6uykKwE5VI4wKXH!R7Vgtq%pG?U{eO^ETY`Ki&F2&fov)<%IA2cBRXj TgE%s#6#neqVa&+Uw?6kT0ssw* literal 45104 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 Date: Mon, 12 Jul 2021 00:35:54 +0000 Subject: [PATCH 0618/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2f65c43425..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 35 + + 27 Performance From 5b5395b4b4afc15879683b1c47a553d41a49012f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 12 Jul 2021 01:48:18 +0000 Subject: [PATCH 0619/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 91ca4676b0..d97a85087f 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Dagger hilt - rid of it completely](https://www.reddit.com/r/androiddev/comments/ohuapp/dagger_hilt_rid_of_it_completely/) -- [Platform or tools for gathering feedback](https://www.reddit.com/r/androiddev/comments/oht9bn/platform_or_tools_for_gathering_feedback/) -- [Stuck on Bluetooth Headset Issue](https://www.reddit.com/r/androiddev/comments/ohqist/stuck_on_bluetooth_headset_issue/) -- [Is a strike against your developer account permanent?](https://www.reddit.com/r/androiddev/comments/ohpjon/is_a_strike_against_your_developer_account/) -- [Open Sourced NIDS(Intruder Detection Systems) on Android](https://www.reddit.com/r/androiddev/comments/ohlc73/open_sourced_nidsintruder_detection_systems_on/) -- [Adopting Jetpack Compose - Joe Birch](https://www.reddit.com/r/androiddev/comments/ohky22/adopting_jetpack_compose_joe_birch/) -- [FIRESTORE COLLECTION GROUP QUERY](https://www.reddit.com/r/androiddev/comments/ohksxl/firestore_collection_group_query/) -- [JavaFX application to resize images and add them into folders automatically. It is a powerful Cross-Platform tool for Android developers.](https://www.reddit.com/r/androiddev/comments/ohjx3o/javafx_application_to_resize_images_and_add_them/) -- [Alternatives to sceneform?](https://www.reddit.com/r/androiddev/comments/ohje5j/alternatives_to_sceneform/) -- [App Feedback Thread - July 10, 2021](https://www.reddit.com/r/androiddev/comments/ohi9oy/app_feedback_thread_july_10_2021/) +- [New to android devv and curious about legal stuff](https://www.reddit.com/r/androiddev/comments/oie238/new_to_android_devv_and_curious_about_legal_stuff/) +- [Anyone who can take in a mentee?](https://www.reddit.com/r/androiddev/comments/oiafgw/anyone_who_can_take_in_a_mentee/) +- [Best practice to organize user preferences/settings?](https://www.reddit.com/r/androiddev/comments/oiach5/best_practice_to_organize_user_preferencessettings/) +- [How can I mock dependencies in my activities for tests?](https://www.reddit.com/r/androiddev/comments/oia1ri/how_can_i_mock_dependencies_in_my_activities_for/) +- [Shopify screenshot testing](https://www.reddit.com/r/androiddev/comments/oi7yzv/shopify_screenshot_testing/) +- [95 of 100 subscription orders from Indonesia stuck in payment pending after free trial ended. Is it normal?](https://www.reddit.com/r/androiddev/comments/oi5ler/95_of_100_subscription_orders_from_indonesia/) +- [How long will you go to protect your Android app from being tampered?](https://www.reddit.com/r/androiddev/comments/oi5j4j/how_long_will_you_go_to_protect_your_android_app/) +- [Path Finding Visualizer App using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oi58sz/path_finding_visualizer_app_using_jetpack_compose/) +- [I'm having issue submitting an app for Android Auto.](https://www.reddit.com/r/androiddev/comments/oi2fv1/im_having_issue_submitting_an_app_for_android_auto/) +- [Integratable piece of code for apps](https://www.reddit.com/r/androiddev/comments/oi1vnb/integratable_piece_of_code_for_apps/) ### *InfoWorld posts* From 6b0e1baaa982f6b6cc0ce1cbc4e388dbbab4fc31 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 13 Jul 2021 00:39:11 +0000 Subject: [PATCH 0620/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From 391c0f84f671928457cf41cb543b1e813d18dee7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 13 Jul 2021 01:51:37 +0000 Subject: [PATCH 0621/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d97a85087f..71fa8cc5fd 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [New to android devv and curious about legal stuff](https://www.reddit.com/r/androiddev/comments/oie238/new_to_android_devv_and_curious_about_legal_stuff/) -- [Anyone who can take in a mentee?](https://www.reddit.com/r/androiddev/comments/oiafgw/anyone_who_can_take_in_a_mentee/) -- [Best practice to organize user preferences/settings?](https://www.reddit.com/r/androiddev/comments/oiach5/best_practice_to_organize_user_preferencessettings/) -- [How can I mock dependencies in my activities for tests?](https://www.reddit.com/r/androiddev/comments/oia1ri/how_can_i_mock_dependencies_in_my_activities_for/) -- [Shopify screenshot testing](https://www.reddit.com/r/androiddev/comments/oi7yzv/shopify_screenshot_testing/) -- [95 of 100 subscription orders from Indonesia stuck in payment pending after free trial ended. Is it normal?](https://www.reddit.com/r/androiddev/comments/oi5ler/95_of_100_subscription_orders_from_indonesia/) -- [How long will you go to protect your Android app from being tampered?](https://www.reddit.com/r/androiddev/comments/oi5j4j/how_long_will_you_go_to_protect_your_android_app/) -- [Path Finding Visualizer App using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oi58sz/path_finding_visualizer_app_using_jetpack_compose/) -- [I'm having issue submitting an app for Android Auto.](https://www.reddit.com/r/androiddev/comments/oi2fv1/im_having_issue_submitting_an_app_for_android_auto/) -- [Integratable piece of code for apps](https://www.reddit.com/r/androiddev/comments/oi1vnb/integratable_piece_of_code_for_apps/) +- [Where to start with Kotlin app development](https://www.reddit.com/r/androiddev/comments/oj48ta/where_to_start_with_kotlin_app_development/) +- [MQTT as IPC on Android?](https://www.reddit.com/r/androiddev/comments/oj1llo/mqtt_as_ipc_on_android/) +- [JetBrains' Code With Me plugin is now compatible with Android Studio Canary](https://www.reddit.com/r/androiddev/comments/oj0ebm/jetbrains_code_with_me_plugin_is_now_compatible/) +- [Best way to implementing Dialog with option and error message using MVVM architecture.](https://www.reddit.com/r/androiddev/comments/oivt8m/best_way_to_implementing_dialog_with_option_and/) +- [Creating a Google Play Coupon Code Question.](https://www.reddit.com/r/androiddev/comments/oivb25/creating_a_google_play_coupon_code_question/) +- [How to get all file access permission for social networking app?](https://www.reddit.com/r/androiddev/comments/oiuuby/how_to_get_all_file_access_permission_for_social/) +- [Added Scoped Storage support to app and...](https://www.reddit.com/r/androiddev/comments/oiu724/added_scoped_storage_support_to_app_and/) +- [Jetpack data store first release candidate is released v1.0.0-rc01](https://www.reddit.com/r/androiddev/comments/oiu344/jetpack_data_store_first_release_candidate_is/) +- [Changing the text color of edit text context menu (copy/paste/cut)](https://www.reddit.com/r/androiddev/comments/oit744/changing_the_text_color_of_edit_text_context_menu/) +- [Things you need to know before switching to Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oisr62/things_you_need_to_know_before_switching_to/) ### *InfoWorld posts* From 3d5b1d62ab0ac75e1fe41c3d5eff908e7e865db1 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 14 Jul 2021 00:34:19 +0000 Subject: [PATCH 0622/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..16a1aed88b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 33 Performance From 6634a62e6aef08a5e1d5284a1004a24ce8afea68 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 14 Jul 2021 01:47:32 +0000 Subject: [PATCH 0623/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 71fa8cc5fd..67878cb3da 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Where to start with Kotlin app development](https://www.reddit.com/r/androiddev/comments/oj48ta/where_to_start_with_kotlin_app_development/) -- [MQTT as IPC on Android?](https://www.reddit.com/r/androiddev/comments/oj1llo/mqtt_as_ipc_on_android/) -- [JetBrains' Code With Me plugin is now compatible with Android Studio Canary](https://www.reddit.com/r/androiddev/comments/oj0ebm/jetbrains_code_with_me_plugin_is_now_compatible/) -- [Best way to implementing Dialog with option and error message using MVVM architecture.](https://www.reddit.com/r/androiddev/comments/oivt8m/best_way_to_implementing_dialog_with_option_and/) -- [Creating a Google Play Coupon Code Question.](https://www.reddit.com/r/androiddev/comments/oivb25/creating_a_google_play_coupon_code_question/) -- [How to get all file access permission for social networking app?](https://www.reddit.com/r/androiddev/comments/oiuuby/how_to_get_all_file_access_permission_for_social/) -- [Added Scoped Storage support to app and...](https://www.reddit.com/r/androiddev/comments/oiu724/added_scoped_storage_support_to_app_and/) -- [Jetpack data store first release candidate is released v1.0.0-rc01](https://www.reddit.com/r/androiddev/comments/oiu344/jetpack_data_store_first_release_candidate_is/) -- [Changing the text color of edit text context menu (copy/paste/cut)](https://www.reddit.com/r/androiddev/comments/oit744/changing_the_text_color_of_edit_text_context_menu/) -- [Things you need to know before switching to Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oisr62/things_you_need_to_know_before_switching_to/) +- [Is there any good tutorials on the Android filesystem and commands?](https://www.reddit.com/r/androiddev/comments/ojsq1s/is_there_any_good_tutorials_on_the_android/) +- [Please can anyone help me to understand why I am violating the privacy policy?](https://www.reddit.com/r/androiddev/comments/ojspfo/please_can_anyone_help_me_to_understand_why_i_am/) +- [How to access a field in a nested json response with retrofit](https://www.reddit.com/r/androiddev/comments/ojqv8b/how_to_access_a_field_in_a_nested_json_response/) +- [FAN : No more Chance to appeal Ad bundle. What should I do now? Can I create new Ad Bundle in same FAN account ?](https://www.reddit.com/r/androiddev/comments/ojpt7h/fan_no_more_chance_to_appeal_ad_bundle_what/) +- [Can some one tell me a simple way to compress a video in Android Java?](https://www.reddit.com/r/androiddev/comments/ojp50a/can_some_one_tell_me_a_simple_way_to_compress_a/) +- [Why in some case do we use and in some cases we use content](https://www.reddit.com/r/androiddev/comments/ojoxu2/why_in_some_case_do_we_use_tag_content_and_in/) +- [Background Service using Bluetooth LE requires background location permission. Anyway to get around it from a calling app using PendingIntent (or otherway)](https://www.reddit.com/r/androiddev/comments/ojlykp/background_service_using_bluetooth_le_requires/) +- [Recent versions of IntelliJ/AndroidStudio changed how "Search Everywhere" results are displayed; here's how to change it back](https://www.reddit.com/r/androiddev/comments/ojkwbk/recent_versions_of_intellijandroidstudio_changed/) +- [RecyclerView getting way too complex! ♻️👀🤔](https://www.reddit.com/r/androiddev/comments/ojkjvj/recyclerview_getting_way_too_complex/) +- [Does using keep alive, Foreground Services, irremovable notification harm the device, if you keep it on constantly?](https://www.reddit.com/r/androiddev/comments/ojkjo1/does_using_keep_alive_foreground_services/) ### *InfoWorld posts* From 310b7d2d74e0bb2842428e076bae0d5ad91818c0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 15 Jul 2021 00:37:23 +0000 Subject: [PATCH 0624/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 16a1aed88b..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 33 + + 29 Performance From 6503283fab422c5328d9fd938681691752052255 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 15 Jul 2021 01:51:39 +0000 Subject: [PATCH 0625/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 67878cb3da..8ab3ac5829 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is there any good tutorials on the Android filesystem and commands?](https://www.reddit.com/r/androiddev/comments/ojsq1s/is_there_any_good_tutorials_on_the_android/) -- [Please can anyone help me to understand why I am violating the privacy policy?](https://www.reddit.com/r/androiddev/comments/ojspfo/please_can_anyone_help_me_to_understand_why_i_am/) -- [How to access a field in a nested json response with retrofit](https://www.reddit.com/r/androiddev/comments/ojqv8b/how_to_access_a_field_in_a_nested_json_response/) -- [FAN : No more Chance to appeal Ad bundle. What should I do now? Can I create new Ad Bundle in same FAN account ?](https://www.reddit.com/r/androiddev/comments/ojpt7h/fan_no_more_chance_to_appeal_ad_bundle_what/) -- [Can some one tell me a simple way to compress a video in Android Java?](https://www.reddit.com/r/androiddev/comments/ojp50a/can_some_one_tell_me_a_simple_way_to_compress_a/) -- [Why in some case do we use and in some cases we use content](https://www.reddit.com/r/androiddev/comments/ojoxu2/why_in_some_case_do_we_use_tag_content_and_in/) -- [Background Service using Bluetooth LE requires background location permission. Anyway to get around it from a calling app using PendingIntent (or otherway)](https://www.reddit.com/r/androiddev/comments/ojlykp/background_service_using_bluetooth_le_requires/) -- [Recent versions of IntelliJ/AndroidStudio changed how "Search Everywhere" results are displayed; here's how to change it back](https://www.reddit.com/r/androiddev/comments/ojkwbk/recent_versions_of_intellijandroidstudio_changed/) -- [RecyclerView getting way too complex! ♻️👀🤔](https://www.reddit.com/r/androiddev/comments/ojkjvj/recyclerview_getting_way_too_complex/) -- [Does using keep alive, Foreground Services, irremovable notification harm the device, if you keep it on constantly?](https://www.reddit.com/r/androiddev/comments/ojkjo1/does_using_keep_alive_foreground_services/) +- [Questions about using AMD Ryzen 5900X with Android Studio](https://www.reddit.com/r/androiddev/comments/okejm4/questions_about_using_amd_ryzen_5900x_with/) +- [Has anyone got a websocket working from an Android to a Ruby on Rails server with ActionCable?](https://www.reddit.com/r/androiddev/comments/okd67v/has_anyone_got_a_websocket_working_from_an/) +- ["Company Name" when publishing app?](https://www.reddit.com/r/androiddev/comments/okd424/company_name_when_publishing_app/) +- [Had anyone success filing a DMCA counter notification?](https://www.reddit.com/r/androiddev/comments/okcnyo/had_anyone_success_filing_a_dmca_counter/) +- [Admob eCPM](https://www.reddit.com/r/androiddev/comments/okckx9/admob_ecpm/) +- [Google Play Console: no pre-registration statistics](https://www.reddit.com/r/androiddev/comments/okakcv/google_play_console_no_preregistration_statistics/) +- [Request to postpone 2nd tech interview with final interview already scheduled](https://www.reddit.com/r/androiddev/comments/ok9qgb/request_to_postpone_2nd_tech_interview_with_final/) +- [When will Android Studio 2020.3.1 hit stable?](https://www.reddit.com/r/androiddev/comments/ok8ukv/when_will_android_studio_202031_hit_stable/) +- [Beta 3](https://www.reddit.com/r/androiddev/comments/ok8sns/beta_3/) +- [New security mechanisms per android version](https://www.reddit.com/r/androiddev/comments/ok8d7l/new_security_mechanisms_per_android_version/) ### *InfoWorld posts* From d97c24c9cf124e71702d4228a4aac9878d3ee541 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 16 Jul 2021 00:37:25 +0000 Subject: [PATCH 0626/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 31 Performance From bb028e632e62ee42c680afcca85b8fcbe22a4e60 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 16 Jul 2021 01:52:42 +0000 Subject: [PATCH 0627/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8ab3ac5829..dbdedfa4a1 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Questions about using AMD Ryzen 5900X with Android Studio](https://www.reddit.com/r/androiddev/comments/okejm4/questions_about_using_amd_ryzen_5900x_with/) -- [Has anyone got a websocket working from an Android to a Ruby on Rails server with ActionCable?](https://www.reddit.com/r/androiddev/comments/okd67v/has_anyone_got_a_websocket_working_from_an/) -- ["Company Name" when publishing app?](https://www.reddit.com/r/androiddev/comments/okd424/company_name_when_publishing_app/) -- [Had anyone success filing a DMCA counter notification?](https://www.reddit.com/r/androiddev/comments/okcnyo/had_anyone_success_filing_a_dmca_counter/) -- [Admob eCPM](https://www.reddit.com/r/androiddev/comments/okckx9/admob_ecpm/) -- [Google Play Console: no pre-registration statistics](https://www.reddit.com/r/androiddev/comments/okakcv/google_play_console_no_preregistration_statistics/) -- [Request to postpone 2nd tech interview with final interview already scheduled](https://www.reddit.com/r/androiddev/comments/ok9qgb/request_to_postpone_2nd_tech_interview_with_final/) -- [When will Android Studio 2020.3.1 hit stable?](https://www.reddit.com/r/androiddev/comments/ok8ukv/when_will_android_studio_202031_hit_stable/) -- [Beta 3](https://www.reddit.com/r/androiddev/comments/ok8sns/beta_3/) -- [New security mechanisms per android version](https://www.reddit.com/r/androiddev/comments/ok8d7l/new_security_mechanisms_per_android_version/) +- [Does Google/Apple take fees on money that our users are earning?](https://www.reddit.com/r/androiddev/comments/ol3hoi/does_googleapple_take_fees_on_money_that_our/) +- [Jetpack Compose: Missing piece to the MVI puzzle?](https://www.reddit.com/r/androiddev/comments/ol39h6/jetpack_compose_missing_piece_to_the_mvi_puzzle/) +- [New Switch design](https://www.reddit.com/r/androiddev/comments/ol2tap/new_switch_design/) +- [Beginner:- Jetpack compose or XML?](https://www.reddit.com/r/androiddev/comments/ol07oi/beginner_jetpack_compose_or_xml/) +- [CustomView for Tooltip](https://www.reddit.com/r/androiddev/comments/oky7wr/customview_for_tooltip/) +- [Books](https://www.reddit.com/r/androiddev/comments/oky5z7/books/) +- [If there was a way to search Google Play Store with lots of parameters...](https://www.reddit.com/r/androiddev/comments/okxeps/if_there_was_a_way_to_search_google_play_store/) +- [Why did you choose Android development as a career path over web or iOS?](https://www.reddit.com/r/androiddev/comments/okvxkq/why_did_you_choose_android_development_as_a/) +- [Starter Kit is the best way to learn react native](https://www.reddit.com/r/androiddev/comments/okumvh/starter_kit_is_the_best_way_to_learn_react_native/) +- [An easy checklist to follow when you are testing a mobile app](https://www.reddit.com/r/androiddev/comments/oktmw3/an_easy_checklist_to_follow_when_you_are_testing/) ### *InfoWorld posts* From 3c3d23cbe75171718f5ac3a29e17a7dac1e272c4 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 17 Jul 2021 00:36:12 +0000 Subject: [PATCH 0628/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 25 Performance From e8ff76ec39863900fceb2ac77cd321b1d66af654 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 17 Jul 2021 01:47:20 +0000 Subject: [PATCH 0629/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index dbdedfa4a1..43c1a092fe 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Does Google/Apple take fees on money that our users are earning?](https://www.reddit.com/r/androiddev/comments/ol3hoi/does_googleapple_take_fees_on_money_that_our/) -- [Jetpack Compose: Missing piece to the MVI puzzle?](https://www.reddit.com/r/androiddev/comments/ol39h6/jetpack_compose_missing_piece_to_the_mvi_puzzle/) -- [New Switch design](https://www.reddit.com/r/androiddev/comments/ol2tap/new_switch_design/) -- [Beginner:- Jetpack compose or XML?](https://www.reddit.com/r/androiddev/comments/ol07oi/beginner_jetpack_compose_or_xml/) -- [CustomView for Tooltip](https://www.reddit.com/r/androiddev/comments/oky7wr/customview_for_tooltip/) -- [Books](https://www.reddit.com/r/androiddev/comments/oky5z7/books/) -- [If there was a way to search Google Play Store with lots of parameters...](https://www.reddit.com/r/androiddev/comments/okxeps/if_there_was_a_way_to_search_google_play_store/) -- [Why did you choose Android development as a career path over web or iOS?](https://www.reddit.com/r/androiddev/comments/okvxkq/why_did_you_choose_android_development_as_a/) -- [Starter Kit is the best way to learn react native](https://www.reddit.com/r/androiddev/comments/okumvh/starter_kit_is_the_best_way_to_learn_react_native/) -- [An easy checklist to follow when you are testing a mobile app](https://www.reddit.com/r/androiddev/comments/oktmw3/an_easy_checklist_to_follow_when_you_are_testing/) +- [Bring parallelism to your Junit tests with BatchRunner](https://www.reddit.com/r/androiddev/comments/olsz8j/bring_parallelism_to_your_junit_tests_with/) +- [Third party library](https://www.reddit.com/r/androiddev/comments/olrzd7/third_party_library/) +- [How to avoid violating the Interface Segregation Principle in Android app?](https://www.reddit.com/r/androiddev/comments/oln1rn/how_to_avoid_violating_the_interface_segregation/) +- [Help me find a course as a beginner in android dev with previous programming exp!](https://www.reddit.com/r/androiddev/comments/oln15s/help_me_find_a_course_as_a_beginner_in_android/) +- [Anyone have experience creating paid Amazon app?](https://www.reddit.com/r/androiddev/comments/olmbt1/anyone_have_experience_creating_paid_amazon_app/) +- [I am getting a very high proportion of refunds. It wasn't like that before, not even close. I have 10 times more download a day but 5 times less revenue. Any idea what's causing this? The game didn't get worse by any mean.](https://www.reddit.com/r/androiddev/comments/olj9aw/i_am_getting_a_very_high_proportion_of_refunds_it/) +- [Maven 101: Wrapping your head around Apache's Amazing Build Tool](https://www.reddit.com/r/androiddev/comments/olhv1v/maven_101_wrapping_your_head_around_apaches/) +- [Set up for Android 12](https://www.reddit.com/r/androiddev/comments/olh1pp/set_up_for_android_12/) +- [TIL using a preview compileSdkVersion for an app will not you install it from the Play Store](https://www.reddit.com/r/androiddev/comments/olgtgb/til_using_a_preview_compilesdkversion_for_an_app/) +- [Weekly Anything Goes Thread - July 16, 2021](https://www.reddit.com/r/androiddev/comments/olgejh/weekly_anything_goes_thread_july_16_2021/) ### *InfoWorld posts* From ecf5146bcda6cae3b582490e1c52866576d07ce2 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 18 Jul 2021 00:37:46 +0000 Subject: [PATCH 0630/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 55 Performance From 14b22050d82ffd5cc4fa5951874ee83df7113573 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 18 Jul 2021 01:50:44 +0000 Subject: [PATCH 0631/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 43c1a092fe..99125d1dda 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Bring parallelism to your Junit tests with BatchRunner](https://www.reddit.com/r/androiddev/comments/olsz8j/bring_parallelism_to_your_junit_tests_with/) -- [Third party library](https://www.reddit.com/r/androiddev/comments/olrzd7/third_party_library/) -- [How to avoid violating the Interface Segregation Principle in Android app?](https://www.reddit.com/r/androiddev/comments/oln1rn/how_to_avoid_violating_the_interface_segregation/) -- [Help me find a course as a beginner in android dev with previous programming exp!](https://www.reddit.com/r/androiddev/comments/oln15s/help_me_find_a_course_as_a_beginner_in_android/) -- [Anyone have experience creating paid Amazon app?](https://www.reddit.com/r/androiddev/comments/olmbt1/anyone_have_experience_creating_paid_amazon_app/) -- [I am getting a very high proportion of refunds. It wasn't like that before, not even close. I have 10 times more download a day but 5 times less revenue. Any idea what's causing this? The game didn't get worse by any mean.](https://www.reddit.com/r/androiddev/comments/olj9aw/i_am_getting_a_very_high_proportion_of_refunds_it/) -- [Maven 101: Wrapping your head around Apache's Amazing Build Tool](https://www.reddit.com/r/androiddev/comments/olhv1v/maven_101_wrapping_your_head_around_apaches/) -- [Set up for Android 12](https://www.reddit.com/r/androiddev/comments/olh1pp/set_up_for_android_12/) -- [TIL using a preview compileSdkVersion for an app will not you install it from the Play Store](https://www.reddit.com/r/androiddev/comments/olgtgb/til_using_a_preview_compilesdkversion_for_an_app/) -- [Weekly Anything Goes Thread - July 16, 2021](https://www.reddit.com/r/androiddev/comments/olgejh/weekly_anything_goes_thread_july_16_2021/) +- [UI Design in Android Studio](https://www.reddit.com/r/androiddev/comments/omfnga/ui_design_in_android_studio/) +- [What are Admob's "Sensitive categories" for?](https://www.reddit.com/r/androiddev/comments/ombvkx/what_are_admobs_sensitive_categories_for/) +- [Compose Calendar library](https://www.reddit.com/r/androiddev/comments/omb325/compose_calendar_library/) +- [Facebook Open Bidding In Admob](https://www.reddit.com/r/androiddev/comments/om85gl/facebook_open_bidding_in_admob/) +- [Resources/Tutorials for in app billing subscriptions?](https://www.reddit.com/r/androiddev/comments/om6vz3/resourcestutorials_for_in_app_billing/) +- [Dear Freelancers, can you share your journey?](https://www.reddit.com/r/androiddev/comments/om5jcm/dear_freelancers_can_you_share_your_journey/) +- [What are the things you dislike the most about working as an Android developer?](https://www.reddit.com/r/androiddev/comments/om4lng/what_are_the_things_you_dislike_the_most_about/) +- [How to use Android Data Binding in custom views?](https://www.reddit.com/r/androiddev/comments/om404y/how_to_use_android_data_binding_in_custom_views/) +- [App Feedback Thread - July 17, 2021](https://www.reddit.com/r/androiddev/comments/om3s9k/app_feedback_thread_july_17_2021/) +- [Discussion](https://www.reddit.com/r/androiddev/comments/om3ngf/discussion/) ### *InfoWorld posts* From 89d75f45cac0e111d2f34d71c7cff7c7bd0e1bd5 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 18 Jul 2021 23:58:11 +0000 Subject: [PATCH 0632/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 45564 -> 45705 bytes traffic/views.csv | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 559afe17df..61524f55c7 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -21,4 +21,11 @@ _date,total_clones,unique_clones 2021-07-08,109,31 2021-07-09,110,29 2021-07-10,115,34 -2021-07-11,117,36 +2021-07-11,126,40 +2021-07-12,154,37 +2021-07-13,162,35 +2021-07-14,135,26 +2021-07-15,194,38 +2021-07-16,123,34 +2021-07-17,151,35 +2021-07-18,143,32 diff --git a/traffic/plots.png b/traffic/plots.png index 4c3072c22e9c5c455996770677f92b0bcb7786a6..871bb51cbc638a98c700bbcfe9140c05fde1f786 100644 GIT binary patch literal 45705 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 BVMPD{ literal 45564 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 TgE%s#6#neqVa&+Uw?6kT0ssw* diff --git a/traffic/views.csv b/traffic/views.csv index 8b3ea8cbc1..afdbb76812 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -13,3 +13,7 @@ _date,total_views,unique_views 2021-07-08,1,1 2021-07-10,2,1 2021-07-11,1,1 +2021-07-12,1,1 +2021-07-13,2,2 +2021-07-14,3,2 +2021-07-18,2,2 From dad3018cd2831f440057184aa707897b99fc453f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 19 Jul 2021 00:37:30 +0000 Subject: [PATCH 0633/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 55 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 28 Performance From b49894c21fe853fbe4d0081bc6cda19ca09c84e3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 19 Jul 2021 01:51:30 +0000 Subject: [PATCH 0634/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 99125d1dda..2f6d1d9782 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [UI Design in Android Studio](https://www.reddit.com/r/androiddev/comments/omfnga/ui_design_in_android_studio/) -- [What are Admob's "Sensitive categories" for?](https://www.reddit.com/r/androiddev/comments/ombvkx/what_are_admobs_sensitive_categories_for/) -- [Compose Calendar library](https://www.reddit.com/r/androiddev/comments/omb325/compose_calendar_library/) -- [Facebook Open Bidding In Admob](https://www.reddit.com/r/androiddev/comments/om85gl/facebook_open_bidding_in_admob/) -- [Resources/Tutorials for in app billing subscriptions?](https://www.reddit.com/r/androiddev/comments/om6vz3/resourcestutorials_for_in_app_billing/) -- [Dear Freelancers, can you share your journey?](https://www.reddit.com/r/androiddev/comments/om5jcm/dear_freelancers_can_you_share_your_journey/) -- [What are the things you dislike the most about working as an Android developer?](https://www.reddit.com/r/androiddev/comments/om4lng/what_are_the_things_you_dislike_the_most_about/) -- [How to use Android Data Binding in custom views?](https://www.reddit.com/r/androiddev/comments/om404y/how_to_use_android_data_binding_in_custom_views/) -- [App Feedback Thread - July 17, 2021](https://www.reddit.com/r/androiddev/comments/om3s9k/app_feedback_thread_july_17_2021/) -- [Discussion](https://www.reddit.com/r/androiddev/comments/om3ngf/discussion/) +- [Git freezed with AS 4.2+ but works fine in AS 4.1.3](https://www.reddit.com/r/androiddev/comments/omzb80/git_freezed_with_as_42_but_works_fine_in_as_413/) +- [[HELP] Jetpack Compose vs XML For The Absolute Beginners](https://www.reddit.com/r/androiddev/comments/omz6ed/help_jetpack_compose_vs_xml_for_the_absolute/) +- [What are the best looking non-Google apps with Material Design?](https://www.reddit.com/r/androiddev/comments/omt51a/what_are_the_best_looking_nongoogle_apps_with/) +- [The Best Version(s) For Game Development](https://www.reddit.com/r/androiddev/comments/omr3qe/the_best_versions_for_game_development/) +- [Use Python programs for making an app](https://www.reddit.com/r/androiddev/comments/omqu7w/use_python_programs_for_making_an_app/) +- [Sample Android WebRTC app using Firebase Realtime Database](https://www.reddit.com/r/androiddev/comments/omqdn8/sample_android_webrtc_app_using_firebase_realtime/) +- [Google Play Console Reviewing](https://www.reddit.com/r/androiddev/comments/omq3wn/google_play_console_reviewing/) +- [Best Android Studio for production in Apple Chip (M1)](https://www.reddit.com/r/androiddev/comments/ompyc8/best_android_studio_for_production_in_apple_chip/) +- [Is gradle configuration avoidance possible with AGP?](https://www.reddit.com/r/androiddev/comments/ompa5v/is_gradle_configuration_avoidance_possible_with/) +- [What laptop specs would you recommend for android app building?](https://www.reddit.com/r/androiddev/comments/ommgb4/what_laptop_specs_would_you_recommend_for_android/) ### *InfoWorld posts* From beefd3b0d7ba6bbdcc6c09f3b2b6e1b9306a9647 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 20 Jul 2021 00:39:10 +0000 Subject: [PATCH 0635/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 54 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 25 Performance From 8950d0a909255d6bf2b9489fd74841c1df0161cf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 20 Jul 2021 01:56:25 +0000 Subject: [PATCH 0636/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2f6d1d9782..27059492f5 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Git freezed with AS 4.2+ but works fine in AS 4.1.3](https://www.reddit.com/r/androiddev/comments/omzb80/git_freezed_with_as_42_but_works_fine_in_as_413/) -- [[HELP] Jetpack Compose vs XML For The Absolute Beginners](https://www.reddit.com/r/androiddev/comments/omz6ed/help_jetpack_compose_vs_xml_for_the_absolute/) -- [What are the best looking non-Google apps with Material Design?](https://www.reddit.com/r/androiddev/comments/omt51a/what_are_the_best_looking_nongoogle_apps_with/) -- [The Best Version(s) For Game Development](https://www.reddit.com/r/androiddev/comments/omr3qe/the_best_versions_for_game_development/) -- [Use Python programs for making an app](https://www.reddit.com/r/androiddev/comments/omqu7w/use_python_programs_for_making_an_app/) -- [Sample Android WebRTC app using Firebase Realtime Database](https://www.reddit.com/r/androiddev/comments/omqdn8/sample_android_webrtc_app_using_firebase_realtime/) -- [Google Play Console Reviewing](https://www.reddit.com/r/androiddev/comments/omq3wn/google_play_console_reviewing/) -- [Best Android Studio for production in Apple Chip (M1)](https://www.reddit.com/r/androiddev/comments/ompyc8/best_android_studio_for_production_in_apple_chip/) -- [Is gradle configuration avoidance possible with AGP?](https://www.reddit.com/r/androiddev/comments/ompa5v/is_gradle_configuration_avoidance_possible_with/) -- [What laptop specs would you recommend for android app building?](https://www.reddit.com/r/androiddev/comments/ommgb4/what_laptop_specs_would_you_recommend_for_android/) +- [Color Palette for GMail App](https://www.reddit.com/r/androiddev/comments/ons8bf/color_palette_for_gmail_app/) +- [Swarogya - Automated Hospital Management System](https://www.reddit.com/r/androiddev/comments/onlhvf/swarogya_automated_hospital_management_system/) +- [Importance of Wall clock time, On CPU time and off CPU time for solving performance issues](https://www.reddit.com/r/androiddev/comments/onky5c/importance_of_wall_clock_time_on_cpu_time_and_off/) +- [Allowing developers to apply for more time to comply with Play Payments Policy](https://www.reddit.com/r/androiddev/comments/onk8ll/allowing_developers_to_apply_for_more_time_to/) +- [Has Google built in a TikTok service working into the OS?](https://www.reddit.com/r/androiddev/comments/onewk1/has_google_built_in_a_tiktok_service_working_into/) +- [Weekly Who's Hiring Thread - July 19, 2021](https://www.reddit.com/r/androiddev/comments/ondka1/weekly_whos_hiring_thread_july_19_2021/) +- [Build multiplatform projects in Kotlin and learn more about server driven UI in Android!](https://www.reddit.com/r/androiddev/comments/onc4vy/build_multiplatform_projects_in_kotlin_and_learn/) +- [🤓 Google Play bots signup after releasing bundle to Store](https://www.reddit.com/r/androiddev/comments/on9olt/google_play_bots_signup_after_releasing_bundle_to/) +- [Someone tell me what kind of sorcery this is.](https://www.reddit.com/r/androiddev/comments/on9m35/someone_tell_me_what_kind_of_sorcery_this_is/) +- [Android app testing](https://www.reddit.com/r/androiddev/comments/on91wd/android_app_testing/) ### *InfoWorld posts* From 3e6e6274fb7d48c859c56f112679c47f2f16c33e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 21 Jul 2021 00:38:49 +0000 Subject: [PATCH 0637/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..7bad67dbc4 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 54 + + 44 Performance From 28259060e7f1d4f70ba3139597df9c50b89ef8fd Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 21 Jul 2021 01:55:00 +0000 Subject: [PATCH 0638/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 27059492f5..23508219c4 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Color Palette for GMail App](https://www.reddit.com/r/androiddev/comments/ons8bf/color_palette_for_gmail_app/) -- [Swarogya - Automated Hospital Management System](https://www.reddit.com/r/androiddev/comments/onlhvf/swarogya_automated_hospital_management_system/) -- [Importance of Wall clock time, On CPU time and off CPU time for solving performance issues](https://www.reddit.com/r/androiddev/comments/onky5c/importance_of_wall_clock_time_on_cpu_time_and_off/) -- [Allowing developers to apply for more time to comply with Play Payments Policy](https://www.reddit.com/r/androiddev/comments/onk8ll/allowing_developers_to_apply_for_more_time_to/) -- [Has Google built in a TikTok service working into the OS?](https://www.reddit.com/r/androiddev/comments/onewk1/has_google_built_in_a_tiktok_service_working_into/) -- [Weekly Who's Hiring Thread - July 19, 2021](https://www.reddit.com/r/androiddev/comments/ondka1/weekly_whos_hiring_thread_july_19_2021/) -- [Build multiplatform projects in Kotlin and learn more about server driven UI in Android!](https://www.reddit.com/r/androiddev/comments/onc4vy/build_multiplatform_projects_in_kotlin_and_learn/) -- [🤓 Google Play bots signup after releasing bundle to Store](https://www.reddit.com/r/androiddev/comments/on9olt/google_play_bots_signup_after_releasing_bundle_to/) -- [Someone tell me what kind of sorcery this is.](https://www.reddit.com/r/androiddev/comments/on9m35/someone_tell_me_what_kind_of_sorcery_this_is/) -- [Android app testing](https://www.reddit.com/r/androiddev/comments/on91wd/android_app_testing/) +- [Installed Build Tools revision 31.0.0 is corrupted](https://www.reddit.com/r/androiddev/comments/oof67i/installed_build_tools_revision_3100_is_corrupted/) +- [Android SDK Platform and Build Tools 31 now stable!](https://www.reddit.com/r/androiddev/comments/ooe5tu/android_sdk_platform_and_build_tools_31_now_stable/) +- [In-App reviews not working for me](https://www.reddit.com/r/androiddev/comments/ooe4e3/inapp_reviews_not_working_for_me/) +- [my admob account get limit ads](https://www.reddit.com/r/androiddev/comments/oodkf5/my_admob_account_get_limit_ads/) +- [Foldables [All official development resources]](https://www.reddit.com/r/androiddev/comments/ooc50z/foldables_all_official_development_resources/) +- [Android Studio Arctic Fox RC1 has been released](https://www.reddit.com/r/androiddev/comments/oob4yv/android_studio_arctic_fox_rc1_has_been_released/) +- [Learning unit testing on Android: Unresolved reference: isEqualTo](https://www.reddit.com/r/androiddev/comments/oo7036/learning_unit_testing_on_android_unresolved/) +- [Can I use firebase remote config if a user opts out of analytics and tracking?](https://www.reddit.com/r/androiddev/comments/oo4x7z/can_i_use_firebase_remote_config_if_a_user_opts/) +- [Scoped storage: what is your opinion?](https://www.reddit.com/r/androiddev/comments/oo46pm/scoped_storage_what_is_your_opinion/) +- [List TTS voices](https://www.reddit.com/r/androiddev/comments/oo41e3/list_tts_voices/) ### *InfoWorld posts* From 4d6e0d9c335a50fc089faa7a0b2397a1f26083d5 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 22 Jul 2021 00:37:54 +0000 Subject: [PATCH 0639/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 7bad67dbc4..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 44 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 32 Performance From 4cce1ccf6e4098e1fd4a662a92d4b3dc8ab34499 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 22 Jul 2021 01:54:59 +0000 Subject: [PATCH 0640/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 23508219c4..66335c043d 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Installed Build Tools revision 31.0.0 is corrupted](https://www.reddit.com/r/androiddev/comments/oof67i/installed_build_tools_revision_3100_is_corrupted/) -- [Android SDK Platform and Build Tools 31 now stable!](https://www.reddit.com/r/androiddev/comments/ooe5tu/android_sdk_platform_and_build_tools_31_now_stable/) -- [In-App reviews not working for me](https://www.reddit.com/r/androiddev/comments/ooe4e3/inapp_reviews_not_working_for_me/) -- [my admob account get limit ads](https://www.reddit.com/r/androiddev/comments/oodkf5/my_admob_account_get_limit_ads/) -- [Foldables [All official development resources]](https://www.reddit.com/r/androiddev/comments/ooc50z/foldables_all_official_development_resources/) -- [Android Studio Arctic Fox RC1 has been released](https://www.reddit.com/r/androiddev/comments/oob4yv/android_studio_arctic_fox_rc1_has_been_released/) -- [Learning unit testing on Android: Unresolved reference: isEqualTo](https://www.reddit.com/r/androiddev/comments/oo7036/learning_unit_testing_on_android_unresolved/) -- [Can I use firebase remote config if a user opts out of analytics and tracking?](https://www.reddit.com/r/androiddev/comments/oo4x7z/can_i_use_firebase_remote_config_if_a_user_opts/) -- [Scoped storage: what is your opinion?](https://www.reddit.com/r/androiddev/comments/oo46pm/scoped_storage_what_is_your_opinion/) -- [List TTS voices](https://www.reddit.com/r/androiddev/comments/oo41e3/list_tts_voices/) +- [Alternatives to push notifications?](https://www.reddit.com/r/androiddev/comments/op2v6e/alternatives_to_push_notifications/) +- [Android Studio Bumblebee Canary 4 available](https://www.reddit.com/r/androiddev/comments/op16xa/android_studio_bumblebee_canary_4_available/) +- [some basic questions about dangerous topic - google policy](https://www.reddit.com/r/androiddev/comments/ooyuh5/some_basic_questions_about_dangerous_topic_google/) +- [I wrote my first article today.Please be kind to me and leave a like/comment.it Will really make my day. Thanks in advance.](https://www.reddit.com/r/androiddev/comments/ooyrg7/i_wrote_my_first_article_todayplease_be_kind_to/) +- [Keyboard Long Key Press in Android WebVIew](https://www.reddit.com/r/androiddev/comments/ooq85g/keyboard_long_key_press_in_android_webview/) +- [Switching career to Android dev due to covid, where should i start?](https://www.reddit.com/r/androiddev/comments/ooq3bg/switching_career_to_android_dev_due_to_covid/) +- [I will be the tutor of a young Android Developer, how should I approach this?](https://www.reddit.com/r/androiddev/comments/oop9e6/i_will_be_the_tutor_of_a_young_android_developer/) +- [Painless way of migrating to Admob Business a/c from Individual a/c.](https://www.reddit.com/r/androiddev/comments/oontz1/painless_way_of_migrating_to_admob_business_ac/) +- [1 year since the start: Making it easy for developers to present their apps [Tool]](https://www.reddit.com/r/androiddev/comments/oon77h/1_year_since_the_start_making_it_easy_for/) +- [What are some best practices when developing data based mobile apps?](https://www.reddit.com/r/androiddev/comments/oom74q/what_are_some_best_practices_when_developing_data/) ### *InfoWorld posts* From ed09b5712e56f8330f22289e70202b82d671c45b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 23 Jul 2021 00:38:13 +0000 Subject: [PATCH 0641/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From 3739fa78cf700ffca4c1c39659746868a1c75feb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Jul 2021 01:52:46 +0000 Subject: [PATCH 0642/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 66335c043d..961d7839e8 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Alternatives to push notifications?](https://www.reddit.com/r/androiddev/comments/op2v6e/alternatives_to_push_notifications/) -- [Android Studio Bumblebee Canary 4 available](https://www.reddit.com/r/androiddev/comments/op16xa/android_studio_bumblebee_canary_4_available/) -- [some basic questions about dangerous topic - google policy](https://www.reddit.com/r/androiddev/comments/ooyuh5/some_basic_questions_about_dangerous_topic_google/) -- [I wrote my first article today.Please be kind to me and leave a like/comment.it Will really make my day. Thanks in advance.](https://www.reddit.com/r/androiddev/comments/ooyrg7/i_wrote_my_first_article_todayplease_be_kind_to/) -- [Keyboard Long Key Press in Android WebVIew](https://www.reddit.com/r/androiddev/comments/ooq85g/keyboard_long_key_press_in_android_webview/) -- [Switching career to Android dev due to covid, where should i start?](https://www.reddit.com/r/androiddev/comments/ooq3bg/switching_career_to_android_dev_due_to_covid/) -- [I will be the tutor of a young Android Developer, how should I approach this?](https://www.reddit.com/r/androiddev/comments/oop9e6/i_will_be_the_tutor_of_a_young_android_developer/) -- [Painless way of migrating to Admob Business a/c from Individual a/c.](https://www.reddit.com/r/androiddev/comments/oontz1/painless_way_of_migrating_to_admob_business_ac/) -- [1 year since the start: Making it easy for developers to present their apps [Tool]](https://www.reddit.com/r/androiddev/comments/oon77h/1_year_since_the_start_making_it_easy_for/) -- [What are some best practices when developing data based mobile apps?](https://www.reddit.com/r/androiddev/comments/oom74q/what_are_some_best_practices_when_developing_data/) +- [Where should I turn?](https://www.reddit.com/r/androiddev/comments/opqmr9/where_should_i_turn/) +- [Gut "apply changes"? Yay, or nay?](https://www.reddit.com/r/androiddev/comments/oppjpf/gut_apply_changes_yay_or_nay/) +- [Android Suspendable Dialogs](https://www.reddit.com/r/androiddev/comments/opmwl8/android_suspendable_dialogs/) +- [Help with react native and one signal](https://www.reddit.com/r/androiddev/comments/opmn6v/help_with_react_native_and_one_signal/) +- [searching a stack to develop android apps from an old pc with few resources.](https://www.reddit.com/r/androiddev/comments/oplub7/searching_a_stack_to_develop_android_apps_from_an/) +- [Effective extension function refactoring in Kotlin: companion object use case](https://www.reddit.com/r/androiddev/comments/opkoer/effective_extension_function_refactoring_in/) +- [Question: Test automation team & Espresso UI tests](https://www.reddit.com/r/androiddev/comments/opjdg7/question_test_automation_team_espresso_ui_tests/) +- [Android 12 comes with an exciting theme engine called Monet. Google is also advertising android 12 with a tag Material You. Also there are many new apps that are using this feature. The main question is how the app are integrating this with their new app? Is there any api available for this?](https://www.reddit.com/r/androiddev/comments/opj6fp/android_12_comes_with_an_exciting_theme_engine/) +- [Introducing Voyager: a pragmatic navigation library for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/opifup/introducing_voyager_a_pragmatic_navigation/) +- [How to see assembly code of compiled Java method?](https://www.reddit.com/r/androiddev/comments/oph5bp/how_to_see_assembly_code_of_compiled_java_method/) ### *InfoWorld posts* From dfd4bd72b051374e822f7f50991ba19d2addb703 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 23 Jul 2021 01:52:50 +0000 Subject: [PATCH 0643/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 961d7839e8..811e505569 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* +- [Microsoft sunsets Xamarin toolkit](https://www.infoworld.com/article/3626453/microsoft-sunsets-xamarin-toolkit.html#tk.rss_android) - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -272,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) -- [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) ### *RedHat posts* From 8f3ae39b475bb6c42662a6ac0751cb4fce73c8ae Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 24 Jul 2021 00:36:35 +0000 Subject: [PATCH 0644/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 30 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 2e51fe89bedacc58f85a88eefd99f08bd1e5b1ea Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 24 Jul 2021 01:49:06 +0000 Subject: [PATCH 0645/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 811e505569..a61dacb5c2 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Where should I turn?](https://www.reddit.com/r/androiddev/comments/opqmr9/where_should_i_turn/) -- [Gut "apply changes"? Yay, or nay?](https://www.reddit.com/r/androiddev/comments/oppjpf/gut_apply_changes_yay_or_nay/) -- [Android Suspendable Dialogs](https://www.reddit.com/r/androiddev/comments/opmwl8/android_suspendable_dialogs/) -- [Help with react native and one signal](https://www.reddit.com/r/androiddev/comments/opmn6v/help_with_react_native_and_one_signal/) -- [searching a stack to develop android apps from an old pc with few resources.](https://www.reddit.com/r/androiddev/comments/oplub7/searching_a_stack_to_develop_android_apps_from_an/) -- [Effective extension function refactoring in Kotlin: companion object use case](https://www.reddit.com/r/androiddev/comments/opkoer/effective_extension_function_refactoring_in/) -- [Question: Test automation team & Espresso UI tests](https://www.reddit.com/r/androiddev/comments/opjdg7/question_test_automation_team_espresso_ui_tests/) -- [Android 12 comes with an exciting theme engine called Monet. Google is also advertising android 12 with a tag Material You. Also there are many new apps that are using this feature. The main question is how the app are integrating this with their new app? Is there any api available for this?](https://www.reddit.com/r/androiddev/comments/opj6fp/android_12_comes_with_an_exciting_theme_engine/) -- [Introducing Voyager: a pragmatic navigation library for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/opifup/introducing_voyager_a_pragmatic_navigation/) -- [How to see assembly code of compiled Java method?](https://www.reddit.com/r/androiddev/comments/oph5bp/how_to_see_assembly_code_of_compiled_java_method/) +- [Input appreciated on Scoped Storage..](https://www.reddit.com/r/androiddev/comments/oqftm7/input_appreciated_on_scoped_storage/) +- [ConstraintLayout 2.1.0 rc1 & ConstraintLayout-compose 1.0 beta 1](https://www.reddit.com/r/androiddev/comments/oqeq9k/constraintlayout_210_rc1_constraintlayoutcompose/) +- [Los anuncios no se visualizan y no me permiten enviar correo a los soporte de google](https://www.reddit.com/r/androiddev/comments/oqdr01/los_anuncios_no_se_visualizan_y_no_me_permiten/) +- [Need help with android app development](https://www.reddit.com/r/androiddev/comments/oqb3wx/need_help_with_android_app_development/) +- [How do you handle attacks?](https://www.reddit.com/r/androiddev/comments/oq7423/how_do_you_handle_attacks/) +- [Cross platform dev tools with android native capabilities](https://www.reddit.com/r/androiddev/comments/oq5env/cross_platform_dev_tools_with_android_native/) +- [Is anyone here using Google Maps SDK v3 Beta in production?](https://www.reddit.com/r/androiddev/comments/oq3a1s/is_anyone_here_using_google_maps_sdk_v3_beta_in/) +- [Optimizing Your Kotlin Build](https://www.reddit.com/r/androiddev/comments/oq35jn/optimizing_your_kotlin_build/) +- [Wrote a VPN Client app using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oq30ln/wrote_a_vpn_client_app_using_jetpack_compose/) +- [Weekly Anything Goes Thread - July 23, 2021](https://www.reddit.com/r/androiddev/comments/oq1wfu/weekly_anything_goes_thread_july_23_2021/) ### *InfoWorld posts* From 0e40820a54bb7fc3e44e30b9a28dd85a87d6f461 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 25 Jul 2021 00:38:18 +0000 Subject: [PATCH 0646/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 30 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From dafbb834da6ddadfcdfd6aa7c55c63d35a3fd9a2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 25 Jul 2021 01:50:27 +0000 Subject: [PATCH 0647/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a61dacb5c2..caf9b64124 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Input appreciated on Scoped Storage..](https://www.reddit.com/r/androiddev/comments/oqftm7/input_appreciated_on_scoped_storage/) -- [ConstraintLayout 2.1.0 rc1 & ConstraintLayout-compose 1.0 beta 1](https://www.reddit.com/r/androiddev/comments/oqeq9k/constraintlayout_210_rc1_constraintlayoutcompose/) -- [Los anuncios no se visualizan y no me permiten enviar correo a los soporte de google](https://www.reddit.com/r/androiddev/comments/oqdr01/los_anuncios_no_se_visualizan_y_no_me_permiten/) -- [Need help with android app development](https://www.reddit.com/r/androiddev/comments/oqb3wx/need_help_with_android_app_development/) -- [How do you handle attacks?](https://www.reddit.com/r/androiddev/comments/oq7423/how_do_you_handle_attacks/) -- [Cross platform dev tools with android native capabilities](https://www.reddit.com/r/androiddev/comments/oq5env/cross_platform_dev_tools_with_android_native/) -- [Is anyone here using Google Maps SDK v3 Beta in production?](https://www.reddit.com/r/androiddev/comments/oq3a1s/is_anyone_here_using_google_maps_sdk_v3_beta_in/) -- [Optimizing Your Kotlin Build](https://www.reddit.com/r/androiddev/comments/oq35jn/optimizing_your_kotlin_build/) -- [Wrote a VPN Client app using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oq30ln/wrote_a_vpn_client_app_using_jetpack_compose/) -- [Weekly Anything Goes Thread - July 23, 2021](https://www.reddit.com/r/androiddev/comments/oq1wfu/weekly_anything_goes_thread_july_23_2021/) +- [Say bye-bye to Android Jetifier](https://www.reddit.com/r/androiddev/comments/or2mc3/say_byebye_to_android_jetifier/) +- [Can anyone suggest me any way to mock API response so that I can test my app?](https://www.reddit.com/r/androiddev/comments/oqvov3/can_anyone_suggest_me_any_way_to_mock_api/) +- [Hidden Perks of Unit Tests](https://www.reddit.com/r/androiddev/comments/oqvl18/hidden_perks_of_unit_tests/) +- [Question in regards towards Sign in Page](https://www.reddit.com/r/androiddev/comments/oqvgh5/question_in_regards_towards_sign_in_page/) +- [Push notifications to multiple users](https://www.reddit.com/r/androiddev/comments/oquxb5/push_notifications_to_multiple_users/) +- [How do location updates work in Android?](https://www.reddit.com/r/androiddev/comments/oquswc/how_do_location_updates_work_in_android/) +- [I know it's taboo to ask but, how much have you earned with your own apps so far?](https://www.reddit.com/r/androiddev/comments/oqtpcd/i_know_its_taboo_to_ask_but_how_much_have_you/) +- [Embed Https web server in Android with Ktor](https://www.reddit.com/r/androiddev/comments/oqrvku/embed_https_web_server_in_android_with_ktor/) +- [App to make phone call based on location](https://www.reddit.com/r/androiddev/comments/oqrjku/app_to_make_phone_call_based_on_location/) +- [Zip/Postcode autofill just straight up doesn't work?](https://www.reddit.com/r/androiddev/comments/oqrdc7/zippostcode_autofill_just_straight_up_doesnt_work/) ### *InfoWorld posts* From 50def0caf92e37a7bd6adab1cb11605e7659ac3e Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 25 Jul 2021 23:58:26 +0000 Subject: [PATCH 0648/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 45705 -> 47025 bytes traffic/views.csv | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 61524f55c7..3b4047a020 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -28,4 +28,11 @@ _date,total_clones,unique_clones 2021-07-15,194,38 2021-07-16,123,34 2021-07-17,151,35 -2021-07-18,143,32 +2021-07-18,153,38 +2021-07-19,199,38 +2021-07-20,187,30 +2021-07-21,113,31 +2021-07-22,150,29 +2021-07-23,209,30 +2021-07-24,146,32 +2021-07-25,151,35 diff --git a/traffic/plots.png b/traffic/plots.png index 871bb51cbc638a98c700bbcfe9140c05fde1f786..522140b21e7b6271b7139674ecafd6be11249230 100644 GIT binary patch literal 47025 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 j5l~Gg`sFxMKOF@4KJT-r@ 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 BVMPD{ diff --git a/traffic/views.csv b/traffic/views.csv index afdbb76812..d93cb305ab 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -17,3 +17,5 @@ _date,total_views,unique_views 2021-07-13,2,2 2021-07-14,3,2 2021-07-18,2,2 +2021-07-19,2,1 +2021-07-24,2,1 From 70df7b21039bfd23c276f35d78040a12042778df Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 26 Jul 2021 00:36:10 +0000 Subject: [PATCH 0649/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 27 Performance From 60a4efc3127f2c86ff88a28ad6f427a1720579ec Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 26 Jul 2021 01:53:11 +0000 Subject: [PATCH 0650/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index caf9b64124..aa452959ae 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Say bye-bye to Android Jetifier](https://www.reddit.com/r/androiddev/comments/or2mc3/say_byebye_to_android_jetifier/) -- [Can anyone suggest me any way to mock API response so that I can test my app?](https://www.reddit.com/r/androiddev/comments/oqvov3/can_anyone_suggest_me_any_way_to_mock_api/) -- [Hidden Perks of Unit Tests](https://www.reddit.com/r/androiddev/comments/oqvl18/hidden_perks_of_unit_tests/) -- [Question in regards towards Sign in Page](https://www.reddit.com/r/androiddev/comments/oqvgh5/question_in_regards_towards_sign_in_page/) -- [Push notifications to multiple users](https://www.reddit.com/r/androiddev/comments/oquxb5/push_notifications_to_multiple_users/) -- [How do location updates work in Android?](https://www.reddit.com/r/androiddev/comments/oquswc/how_do_location_updates_work_in_android/) -- [I know it's taboo to ask but, how much have you earned with your own apps so far?](https://www.reddit.com/r/androiddev/comments/oqtpcd/i_know_its_taboo_to_ask_but_how_much_have_you/) -- [Embed Https web server in Android with Ktor](https://www.reddit.com/r/androiddev/comments/oqrvku/embed_https_web_server_in_android_with_ktor/) -- [App to make phone call based on location](https://www.reddit.com/r/androiddev/comments/oqrjku/app_to_make_phone_call_based_on_location/) -- [Zip/Postcode autofill just straight up doesn't work?](https://www.reddit.com/r/androiddev/comments/oqrdc7/zippostcode_autofill_just_straight_up_doesnt_work/) +- [Kotlin or Dart for job opportunities in the US](https://www.reddit.com/r/androiddev/comments/orov8p/kotlin_or_dart_for_job_opportunities_in_the_us/) +- [Disable mobile data after certain time](https://www.reddit.com/r/androiddev/comments/orjt1x/disable_mobile_data_after_certain_time/) +- [There's a lot of ways to do background tasks. Which ones are worth learning today? (HandlerThread, IntentService, WorkManager, etc)](https://www.reddit.com/r/androiddev/comments/oriflv/theres_a_lot_of_ways_to_do_background_tasks_which/) +- [Make sure to update your StateFlow safely in Kotlin!](https://www.reddit.com/r/androiddev/comments/orf305/make_sure_to_update_your_stateflow_safely_in/) +- [LazyColumn Item Diff Animations](https://www.reddit.com/r/androiddev/comments/orc2rp/lazycolumn_item_diff_animations/) +- [messaging app icon](https://www.reddit.com/r/androiddev/comments/orbrrm/messaging_app_icon/) +- [Republish an unpublished app](https://www.reddit.com/r/androiddev/comments/or8ut2/republish_an_unpublished_app/) +- [Any SDK developer here?](https://www.reddit.com/r/androiddev/comments/or8sus/any_sdk_developer_here/) +- [Looking for a Google Play app affiliate program solution. Recommendations?](https://www.reddit.com/r/androiddev/comments/or87bs/looking_for_a_google_play_app_affiliate_program/) +- [2 Releases under Managed Publishing](https://www.reddit.com/r/androiddev/comments/or6yqn/2_releases_under_managed_publishing/) ### *InfoWorld posts* From 5585bf2f98dacf6f61e8006b165fa0d3d2525833 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 27 Jul 2021 00:38:37 +0000 Subject: [PATCH 0651/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From f9f9332b82c002c884567901ec7c739e3bf50f31 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 27 Jul 2021 01:55:44 +0000 Subject: [PATCH 0652/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index aa452959ae..376fa287f6 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Kotlin or Dart for job opportunities in the US](https://www.reddit.com/r/androiddev/comments/orov8p/kotlin_or_dart_for_job_opportunities_in_the_us/) -- [Disable mobile data after certain time](https://www.reddit.com/r/androiddev/comments/orjt1x/disable_mobile_data_after_certain_time/) -- [There's a lot of ways to do background tasks. Which ones are worth learning today? (HandlerThread, IntentService, WorkManager, etc)](https://www.reddit.com/r/androiddev/comments/oriflv/theres_a_lot_of_ways_to_do_background_tasks_which/) -- [Make sure to update your StateFlow safely in Kotlin!](https://www.reddit.com/r/androiddev/comments/orf305/make_sure_to_update_your_stateflow_safely_in/) -- [LazyColumn Item Diff Animations](https://www.reddit.com/r/androiddev/comments/orc2rp/lazycolumn_item_diff_animations/) -- [messaging app icon](https://www.reddit.com/r/androiddev/comments/orbrrm/messaging_app_icon/) -- [Republish an unpublished app](https://www.reddit.com/r/androiddev/comments/or8ut2/republish_an_unpublished_app/) -- [Any SDK developer here?](https://www.reddit.com/r/androiddev/comments/or8sus/any_sdk_developer_here/) -- [Looking for a Google Play app affiliate program solution. Recommendations?](https://www.reddit.com/r/androiddev/comments/or87bs/looking_for_a_google_play_app_affiliate_program/) -- [2 Releases under Managed Publishing](https://www.reddit.com/r/androiddev/comments/or6yqn/2_releases_under_managed_publishing/) +- [Gradle DevProdEng Showdown S1E6: Android Builds and Tests at Scale](https://www.reddit.com/r/androiddev/comments/oscmzi/gradle_devprodeng_showdown_s1e6_android_builds/) +- [How to detect user creating multiple accounts?](https://www.reddit.com/r/androiddev/comments/osazmq/how_to_detect_user_creating_multiple_accounts/) +- [Creating & styling dropdown menus on Android](https://www.reddit.com/r/androiddev/comments/osawza/creating_styling_dropdown_menus_on_android/) +- [Is there any real difference in getting paid subscribers if the first 3-7 days are free?](https://www.reddit.com/r/androiddev/comments/osa8ba/is_there_any_real_difference_in_getting_paid/) +- [Quick article I wrote after upgrading to using App Bundles instead of APK. Hope it helps.](https://www.reddit.com/r/androiddev/comments/os8m3i/quick_article_i_wrote_after_upgrading_to_using/) +- [Xamarin Android Download Manager Advanced Guide](https://www.reddit.com/r/androiddev/comments/os8cyo/xamarin_android_download_manager_advanced_guide/) +- [The Lateral Pass (Higher Order Code Smells, Part 2)](https://www.reddit.com/r/androiddev/comments/os6c2t/the_lateral_pass_higher_order_code_smells_part_2/) +- [Which frameworks for work?](https://www.reddit.com/r/androiddev/comments/os4pzc/which_frameworks_for_work/) +- [An android app which let us power on/off generator at our home.](https://www.reddit.com/r/androiddev/comments/os18fb/an_android_app_which_let_us_power_onoff_generator/) +- [How to handle large ViewModels in a scoped nav graph?](https://www.reddit.com/r/androiddev/comments/os02l6/how_to_handle_large_viewmodels_in_a_scoped_nav/) ### *InfoWorld posts* From 30ed6eb12123654b037f2ec297cd0ecfbca6f554 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 28 Jul 2021 00:38:17 +0000 Subject: [PATCH 0653/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 53 Performance From 9ef559e4a2d12d7368791fe0212c28d4cefc83bb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 28 Jul 2021 01:54:20 +0000 Subject: [PATCH 0654/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 376fa287f6..3f808a8cfc 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Gradle DevProdEng Showdown S1E6: Android Builds and Tests at Scale](https://www.reddit.com/r/androiddev/comments/oscmzi/gradle_devprodeng_showdown_s1e6_android_builds/) -- [How to detect user creating multiple accounts?](https://www.reddit.com/r/androiddev/comments/osazmq/how_to_detect_user_creating_multiple_accounts/) -- [Creating & styling dropdown menus on Android](https://www.reddit.com/r/androiddev/comments/osawza/creating_styling_dropdown_menus_on_android/) -- [Is there any real difference in getting paid subscribers if the first 3-7 days are free?](https://www.reddit.com/r/androiddev/comments/osa8ba/is_there_any_real_difference_in_getting_paid/) -- [Quick article I wrote after upgrading to using App Bundles instead of APK. Hope it helps.](https://www.reddit.com/r/androiddev/comments/os8m3i/quick_article_i_wrote_after_upgrading_to_using/) -- [Xamarin Android Download Manager Advanced Guide](https://www.reddit.com/r/androiddev/comments/os8cyo/xamarin_android_download_manager_advanced_guide/) -- [The Lateral Pass (Higher Order Code Smells, Part 2)](https://www.reddit.com/r/androiddev/comments/os6c2t/the_lateral_pass_higher_order_code_smells_part_2/) -- [Which frameworks for work?](https://www.reddit.com/r/androiddev/comments/os4pzc/which_frameworks_for_work/) -- [An android app which let us power on/off generator at our home.](https://www.reddit.com/r/androiddev/comments/os18fb/an_android_app_which_let_us_power_onoff_generator/) -- [How to handle large ViewModels in a scoped nav graph?](https://www.reddit.com/r/androiddev/comments/os02l6/how_to_handle_large_viewmodels_in_a_scoped_nav/) +- [How do you access the D2D (Device-to-Device) Data Transfer functionality?](https://www.reddit.com/r/androiddev/comments/osz9p5/how_do_you_access_the_d2d_devicetodevice_data/) +- [Google won't let me publish new apps](https://www.reddit.com/r/androiddev/comments/osz138/google_wont_let_me_publish_new_apps/) +- [Chrome OS [All official development resources]](https://www.reddit.com/r/androiddev/comments/osx6q0/chrome_os_all_official_development_resources/) +- [Save session when app closed android studio](https://www.reddit.com/r/androiddev/comments/osx54p/save_session_when_app_closed_android_studio/) +- [Where would you cut off Android OS Support?](https://www.reddit.com/r/androiddev/comments/osvqa8/where_would_you_cut_off_android_os_support/) +- [Hello I am Java Developer transfering to Kotlin, can you suggest me what to learn first, what to start with please, Thank you.](https://www.reddit.com/r/androiddev/comments/osvlis/hello_i_am_java_developer_transfering_to_kotlin/) +- [App settings that can't be changed after release](https://www.reddit.com/r/androiddev/comments/osu9ud/app_settings_that_cant_be_changed_after_release/) +- [Why is Jetpack Compose taking so long to reach 1.0?](https://www.reddit.com/r/androiddev/comments/ostdys/why_is_jetpack_compose_taking_so_long_to_reach_10/) +- [android-studio-bumblebee-canary-5 available](https://www.reddit.com/r/androiddev/comments/osr9tj/androidstudiobumblebeecanary5_available/) +- [perform(click()) is not working in Android 11 but working in Android 10](https://www.reddit.com/r/androiddev/comments/osok9w/performclick_is_not_working_in_android_11_but/) ### *InfoWorld posts* From aec980e8f7116b4f3a07a7d3f7fd5bb37f77545c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 29 Jul 2021 00:36:15 +0000 Subject: [PATCH 0655/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 28 Performance From 4b4f6cd8f7049aae992bafc0f07ee5c0fc093ce1 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 29 Jul 2021 01:51:43 +0000 Subject: [PATCH 0656/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3f808a8cfc..ef507f6b74 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do you access the D2D (Device-to-Device) Data Transfer functionality?](https://www.reddit.com/r/androiddev/comments/osz9p5/how_do_you_access_the_d2d_devicetodevice_data/) -- [Google won't let me publish new apps](https://www.reddit.com/r/androiddev/comments/osz138/google_wont_let_me_publish_new_apps/) -- [Chrome OS [All official development resources]](https://www.reddit.com/r/androiddev/comments/osx6q0/chrome_os_all_official_development_resources/) -- [Save session when app closed android studio](https://www.reddit.com/r/androiddev/comments/osx54p/save_session_when_app_closed_android_studio/) -- [Where would you cut off Android OS Support?](https://www.reddit.com/r/androiddev/comments/osvqa8/where_would_you_cut_off_android_os_support/) -- [Hello I am Java Developer transfering to Kotlin, can you suggest me what to learn first, what to start with please, Thank you.](https://www.reddit.com/r/androiddev/comments/osvlis/hello_i_am_java_developer_transfering_to_kotlin/) -- [App settings that can't be changed after release](https://www.reddit.com/r/androiddev/comments/osu9ud/app_settings_that_cant_be_changed_after_release/) -- [Why is Jetpack Compose taking so long to reach 1.0?](https://www.reddit.com/r/androiddev/comments/ostdys/why_is_jetpack_compose_taking_so_long_to_reach_10/) -- [android-studio-bumblebee-canary-5 available](https://www.reddit.com/r/androiddev/comments/osr9tj/androidstudiobumblebeecanary5_available/) -- [perform(click()) is not working in Android 11 but working in Android 10](https://www.reddit.com/r/androiddev/comments/osok9w/performclick_is_not_working_in_android_11_but/) +- [[Google Admob] Who here already received their admob pin mail(address verification)? just want to ask if admob mail looks like this in this image or not?was it google adsense or Google admob logo?](https://www.reddit.com/r/androiddev/comments/oto06n/google_admob_who_here_already_received_their/) +- [How can I completely remove and reinstall Android Studio(m1 mac)?](https://www.reddit.com/r/androiddev/comments/otnsyu/how_can_i_completely_remove_and_reinstall_android/) +- [Fine-tune control of Android shadows](https://www.reddit.com/r/androiddev/comments/otmnvg/finetune_control_of_android_shadows/) +- [Is 1 year of full time learning a realistic goal to get hired as an Android Dev?](https://www.reddit.com/r/androiddev/comments/otl1dl/is_1_year_of_full_time_learning_a_realistic_goal/) +- [Can I use advertising id to block users that might be committing ad fraud?](https://www.reddit.com/r/androiddev/comments/otk0gg/can_i_use_advertising_id_to_block_users_that/) +- [Updating App Permissions](https://www.reddit.com/r/androiddev/comments/otj10e/updating_app_permissions/) +- [A major change - Use of the AccessibilityService API](https://www.reddit.com/r/androiddev/comments/otiwvz/a_major_change_use_of_the_accessibilityservice_api/) +- [App not showing up when searched](https://www.reddit.com/r/androiddev/comments/otikhj/app_not_showing_up_when_searched/) +- [Account suspension due to "Dormant Account"](https://www.reddit.com/r/androiddev/comments/otiauc/account_suspension_due_to_dormant_account/) +- [Google Play Developer Program Policy Update](https://www.reddit.com/r/androiddev/comments/otgork/google_play_developer_program_policy_update/) ### *InfoWorld posts* From eaf21cb0fa10ebec09d1a928f2a8fc774e351529 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 30 Jul 2021 00:38:12 +0000 Subject: [PATCH 0657/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 50 insertions(+), 460 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 56 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 28 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 77e197f2272412c33d322f96f11215f5d0fd8d3a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 30 Jul 2021 01:56:26 +0000 Subject: [PATCH 0658/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ef507f6b74..8df4a2e28e 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [[Google Admob] Who here already received their admob pin mail(address verification)? just want to ask if admob mail looks like this in this image or not?was it google adsense or Google admob logo?](https://www.reddit.com/r/androiddev/comments/oto06n/google_admob_who_here_already_received_their/) -- [How can I completely remove and reinstall Android Studio(m1 mac)?](https://www.reddit.com/r/androiddev/comments/otnsyu/how_can_i_completely_remove_and_reinstall_android/) -- [Fine-tune control of Android shadows](https://www.reddit.com/r/androiddev/comments/otmnvg/finetune_control_of_android_shadows/) -- [Is 1 year of full time learning a realistic goal to get hired as an Android Dev?](https://www.reddit.com/r/androiddev/comments/otl1dl/is_1_year_of_full_time_learning_a_realistic_goal/) -- [Can I use advertising id to block users that might be committing ad fraud?](https://www.reddit.com/r/androiddev/comments/otk0gg/can_i_use_advertising_id_to_block_users_that/) -- [Updating App Permissions](https://www.reddit.com/r/androiddev/comments/otj10e/updating_app_permissions/) -- [A major change - Use of the AccessibilityService API](https://www.reddit.com/r/androiddev/comments/otiwvz/a_major_change_use_of_the_accessibilityservice_api/) -- [App not showing up when searched](https://www.reddit.com/r/androiddev/comments/otikhj/app_not_showing_up_when_searched/) -- [Account suspension due to "Dormant Account"](https://www.reddit.com/r/androiddev/comments/otiauc/account_suspension_due_to_dormant_account/) -- [Google Play Developer Program Policy Update](https://www.reddit.com/r/androiddev/comments/otgork/google_play_developer_program_policy_update/) +- [How stable is the "id" integer of a resource asset?](https://www.reddit.com/r/androiddev/comments/ou8hhk/how_stable_is_the_id_integer_of_a_resource_asset/) +- [Arctic Fox doesn't let you change the IDE theme to anythign other than the two default themes](https://www.reddit.com/r/androiddev/comments/ou4yvb/arctic_fox_doesnt_let_you_change_the_ide_theme_to/) +- [Compose - Activity question](https://www.reddit.com/r/androiddev/comments/ou3vew/compose_activity_question/) +- [Advertise another app via Push notifications](https://www.reddit.com/r/androiddev/comments/ou25d8/advertise_another_app_via_push_notifications/) +- [Preference for defining coroutine context](https://www.reddit.com/r/androiddev/comments/ou1npb/preference_for_defining_coroutine_context/) +- [Reasons to switch from Volley to Retrofit (or something else)?](https://www.reddit.com/r/androiddev/comments/ou0ph6/reasons_to_switch_from_volley_to_retrofit_or/) +- [OPINIONS](https://www.reddit.com/r/androiddev/comments/ou04fw/opinions/) +- [Stream releases a new Chat SDK for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/otzq45/stream_releases_a_new_chat_sdk_for_jetpack_compose/) +- [Is there a preset library of "colors.xml" and "themes.xml" files that I can use in my projects?](https://www.reddit.com/r/androiddev/comments/otxqm8/is_there_a_preset_library_of_colorsxml_and/) +- [Does Google Play Store ban drug metaphor games?](https://www.reddit.com/r/androiddev/comments/otx5sf/does_google_play_store_ban_drug_metaphor_games/) ### *InfoWorld posts* From 0aa7158cdf5be8482955dc9907e1ed91d3f0d4ea Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 31 Jul 2021 00:37:44 +0000 Subject: [PATCH 0659/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 460 insertions(+), 50 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..dd34d2c32c 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 36 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 27 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 0719d41b2210911b725f20957e59f40ac0b1ebf9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 31 Jul 2021 01:49:14 +0000 Subject: [PATCH 0660/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8df4a2e28e..ff6458400a 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How stable is the "id" integer of a resource asset?](https://www.reddit.com/r/androiddev/comments/ou8hhk/how_stable_is_the_id_integer_of_a_resource_asset/) -- [Arctic Fox doesn't let you change the IDE theme to anythign other than the two default themes](https://www.reddit.com/r/androiddev/comments/ou4yvb/arctic_fox_doesnt_let_you_change_the_ide_theme_to/) -- [Compose - Activity question](https://www.reddit.com/r/androiddev/comments/ou3vew/compose_activity_question/) -- [Advertise another app via Push notifications](https://www.reddit.com/r/androiddev/comments/ou25d8/advertise_another_app_via_push_notifications/) -- [Preference for defining coroutine context](https://www.reddit.com/r/androiddev/comments/ou1npb/preference_for_defining_coroutine_context/) -- [Reasons to switch from Volley to Retrofit (or something else)?](https://www.reddit.com/r/androiddev/comments/ou0ph6/reasons_to_switch_from_volley_to_retrofit_or/) -- [OPINIONS](https://www.reddit.com/r/androiddev/comments/ou04fw/opinions/) -- [Stream releases a new Chat SDK for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/otzq45/stream_releases_a_new_chat_sdk_for_jetpack_compose/) -- [Is there a preset library of "colors.xml" and "themes.xml" files that I can use in my projects?](https://www.reddit.com/r/androiddev/comments/otxqm8/is_there_a_preset_library_of_colorsxml_and/) -- [Does Google Play Store ban drug metaphor games?](https://www.reddit.com/r/androiddev/comments/otx5sf/does_google_play_store_ban_drug_metaphor_games/) +- [How do you document your code?](https://www.reddit.com/r/androiddev/comments/ouy9zb/how_do_you_document_your_code/) +- [ConstraintLayout 2.1.0 & ConstraintLayout-compose 1.0 beta 2](https://www.reddit.com/r/androiddev/comments/ouxquv/constraintlayout_210_constraintlayoutcompose_10/) +- [Toast message disapearing too soon](https://www.reddit.com/r/androiddev/comments/ouwwcr/toast_message_disapearing_too_soon/) +- [Does Google Admob ban your app ads based on your Youtube channel?](https://www.reddit.com/r/androiddev/comments/ouwn7u/does_google_admob_ban_your_app_ads_based_on_your/) +- [Rewriting my app, java, kotlin, (compose?) advice.](https://www.reddit.com/r/androiddev/comments/ouuop1/rewriting_my_app_java_kotlin_compose_advice/) +- [FIREBASE problem](https://www.reddit.com/r/androiddev/comments/ourcno/firebase_problem/) +- [Google Universal App Campaigns. How much time/users does it take to accurately target user actions?](https://www.reddit.com/r/androiddev/comments/ouqq1i/google_universal_app_campaigns_how_much_timeusers/) +- [Fun with Compose: Bad UI in a Great Framework](https://www.reddit.com/r/androiddev/comments/oung14/fun_with_compose_bad_ui_in_a_great_framework/) +- [Composing composable in the Text line with InlineTextContent in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oumb5p/composing_composable_in_the_text_line_with/) +- [What's the point of Intent flags conjunction?](https://www.reddit.com/r/androiddev/comments/oum3oy/whats_the_point_of_intent_flags_conjunction/) ### *InfoWorld posts* From 4e00317a822ec281fcb3357e1b18be6d1092c05f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 31 Jul 2021 01:49:17 +0000 Subject: [PATCH 0661/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff6458400a..e232741a10 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* +- [Jetpack Compose for Android turns GA](https://www.infoworld.com/article/3627298/jetpack-compose-for-android-turns-ga.html#tk.rss_android) - [Microsoft sunsets Xamarin toolkit](https://www.infoworld.com/article/3626453/microsoft-sunsets-xamarin-toolkit.html#tk.rss_android) - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) @@ -272,7 +273,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) -- [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) ### *RedHat posts* From 5a68c6334b0530d88e46755b167c410700949221 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 1 Aug 2021 00:42:47 +0000 Subject: [PATCH 0662/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index dd34d2c32c..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 36 + + 54 Performance From d32e6c21ac16f3b9ebab9453c3cbc5dda3d55a90 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 1 Aug 2021 01:56:55 +0000 Subject: [PATCH 0663/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e232741a10..262150313b 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do you document your code?](https://www.reddit.com/r/androiddev/comments/ouy9zb/how_do_you_document_your_code/) -- [ConstraintLayout 2.1.0 & ConstraintLayout-compose 1.0 beta 2](https://www.reddit.com/r/androiddev/comments/ouxquv/constraintlayout_210_constraintlayoutcompose_10/) -- [Toast message disapearing too soon](https://www.reddit.com/r/androiddev/comments/ouwwcr/toast_message_disapearing_too_soon/) -- [Does Google Admob ban your app ads based on your Youtube channel?](https://www.reddit.com/r/androiddev/comments/ouwn7u/does_google_admob_ban_your_app_ads_based_on_your/) -- [Rewriting my app, java, kotlin, (compose?) advice.](https://www.reddit.com/r/androiddev/comments/ouuop1/rewriting_my_app_java_kotlin_compose_advice/) -- [FIREBASE problem](https://www.reddit.com/r/androiddev/comments/ourcno/firebase_problem/) -- [Google Universal App Campaigns. How much time/users does it take to accurately target user actions?](https://www.reddit.com/r/androiddev/comments/ouqq1i/google_universal_app_campaigns_how_much_timeusers/) -- [Fun with Compose: Bad UI in a Great Framework](https://www.reddit.com/r/androiddev/comments/oung14/fun_with_compose_bad_ui_in_a_great_framework/) -- [Composing composable in the Text line with InlineTextContent in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oumb5p/composing_composable_in_the_text_line_with/) -- [What's the point of Intent flags conjunction?](https://www.reddit.com/r/androiddev/comments/oum3oy/whats_the_point_of_intent_flags_conjunction/) +- [Check out my first 3D mobile game, Paddle Pong! I'd appreciate any feedback for improvement.](https://www.reddit.com/r/androiddev/comments/ovi769/check_out_my_first_3d_mobile_game_paddle_pong_id/) +- [Rekeying for app that’s already deployed](https://www.reddit.com/r/androiddev/comments/ovgq2r/rekeying_for_app_thats_already_deployed/) +- [Custom generated keystore file and sensitive keys included](https://www.reddit.com/r/androiddev/comments/ovg3i0/custom_generated_keystore_file_and_sensitive_keys/) +- [Opensource Education Augmented Reality App | HucreAR](https://www.reddit.com/r/androiddev/comments/oveglo/opensource_education_augmented_reality_app_hucrear/) +- [Camera Library](https://www.reddit.com/r/androiddev/comments/ovdyfs/camera_library/) +- [What's the difference between a normal view and an AppCompat view?](https://www.reddit.com/r/androiddev/comments/ovbyn9/whats_the_difference_between_a_normal_view_and_an/) +- [App flagged for Ads](https://www.reddit.com/r/androiddev/comments/ovavba/app_flagged_for_ads/) +- [Upload Android Bundle now users cannot update](https://www.reddit.com/r/androiddev/comments/ov9917/upload_android_bundle_now_users_cannot_update/) +- [What is considered as a "compact" phone today?](https://www.reddit.com/r/androiddev/comments/ov8x3r/what_is_considered_as_a_compact_phone_today/) +- [[Question] Getting started with Android for experienced front end engineers?](https://www.reddit.com/r/androiddev/comments/ov8tdt/question_getting_started_with_android_for/) ### *InfoWorld posts* From 494b030e397ce9675cd2ce0880526ad9c5e1701c Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 1 Aug 2021 23:58:04 +0000 Subject: [PATCH 0664/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 47025 -> 46288 bytes traffic/views.csv | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 3b4047a020..503c9bd4a9 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -35,4 +35,11 @@ _date,total_clones,unique_clones 2021-07-22,150,29 2021-07-23,209,30 2021-07-24,146,32 -2021-07-25,151,35 +2021-07-25,161,38 +2021-07-26,197,40 +2021-07-27,149,30 +2021-07-28,80,31 +2021-07-29,80,31 +2021-07-30,157,35 +2021-07-31,145,30 +2021-08-01,142,27 diff --git a/traffic/plots.png b/traffic/plots.png index 522140b21e7b6271b7139674ecafd6be11249230..2a4bd2a10b22136361049a31e0b51a9487244a71 100644 GIT binary patch literal 46288 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 z z{GW}C=vke~!=!W&IAJ*c;T{GcvHYL#_A{lrU0q!);5tve(BNQl0Rg?6i=kw$L;ww7U|`T+v-n+J zI(Kw*Afuxf|4{hO;$EBQS1@ZjulIG{$Iml6`tLA({-_Zed0`L;ngD1P6chwvZbgBx z4Njo-E=!nHKo#@V-bBzt2@U?MS4xLF2xxfa2JPQMxJzEBDv4o1Xvb$KUY-!v=rp^B zHseR{PN;0JjYHsfCiHqOQL4v^g^O6bVEr!OWs-rw@@Ah)rX ziDz!P&6;%r;P>-z$_Kye(Dn1J0RmQIWB}ROt!IDg`#!4H+DOW_6{(eE0dzDwH}~H7 z?+bzFe@;3&I?iR01Z;u85#sYg9p~P1bK|jDxOnHkyNk1ni_YokxHv}bKZc!wL3+Sk z+ZPs+-$}>ecs>F6nUI*c7njuBh{Dau83#VGw!Z!icrWUiB_kq^F4UTS4}Lo@omLy2r=37j^BQ0oFv5o>V-j1Zv2 zO0YzqN6G-i1i?r47u6lDa|AxdS*Y_{R@}zUX%ViC#nvWc*RxRk9cPajs~E^J@HR0v_GK z!dCpIhxDHdMTD*ywz;zUeHXGK`FZ6UC0vQcgRg^uiN0YFGFk}<`h$5v`IOAKx4`RM4#!O@Z8eZ}UTD8QGyz_KcK zLZa)&Lqb9*czKhTn>{yHS2H||^_r7H@tFmjpMiII`Qk-J5dt~}#=H0Lqd>Bd+jS(L z!Y!<#f)f!D(co0y&=4IHlg+CSChP34Au1}mHfa;2B8w?lHtH0U)Cgdwk|2DXCzY8M&!E4(BUpQFag@kD>3=oOCLxOM)XW zWR&K$kxj`Q)|CQ?@Mds6Dm`8QpM6|hw~tzZiaC1{YtT)((|^Ds2vG{aC4OFrby@8J ztFBpVOJdjh$O-UmHrT_u`uf;98&gv%n}r&aqxtHartRZnOre|Or9_@DbofjK#l}mGl%*P$=xeL|%vyTPTujc-6hM)I7V`w70jX)8bV>*oy{` z+w?KMf&rC*yS(8Kk7R{mSwp}!irHTK30!sOJGeGYj%Qj z#{Fd<2VB#$xY#t<>v>c?Gh1Url8AL=+PtCM^m5A<)AT!2e~W|6}F zh!x=M15hLb48N@Tnozw=5230$O}Ehnx@`@{W#B#lD*y4kIsP2H4>oP?j|rNhqGHMi zr@$58=TtvGzj3_Gb|@3_a!eLRxxL75v4jSO?>`{_Nwfw}LV5;sW%+PpCUK>W%P3)W1AhhzFqfY&+R*yv5s-m6i21howq| zjlk_HoGI`?z=fkABWD031DPY)?Okk3z-KU>6mExa&C44T7w57aUl%Be3|^(U z{#sM+x0oWx5JyMHI<=3#QCbzqL*`;J+*wo4D`^1LWp!OY^ZZ zDt(gu)?64@Mgr$n1|X4zMc%gDY;4M7mBG}4fxUm|DTKjj zzAK&savPEjjlv-=_}qV#TNPP~>css)z=?u0Mde&k~bKx2hWk`S?+ z2PTFjs>+(P0~ENSB)i|Gs^i3duKVly*j8w4r8&#%IwImZsp>xpg<9By|FFc}gunI6 zQZm^F0A$7;2SH#CPqIY|kqn1c3*k5G{WESwHS11AN3MP%j@FNHTCH~ANEh0okd;*~ zTk1Xgn)|7|!85fgpHT|}u(9+3UXkrBeP5g!`8Asrvo_g}o*4%I$eE>);?*2M)ZbsE z81z?*A_)|LtpJeWlZ*^N?`Z03wHSsCIAY|$M|X971i$F7hLslk39q1%r0s4QcTx{8 zl-$5X94@(4)SB&97|ykAdfv;%RFaQU=SUrQ^fKc}$D4vPw(F9ZFU9z?HaTg}zyO+1 zJUptR784Uw!%ZZ)BrFZxP=o0Ew`N;w86Rp8=!`nA84u4)D)LKF4D^Xsz zb&dt92`~{y%9;QQwUc+UWby*dFa%&YK&*9icKZMG(v(yD6_JyZ({A+?0*)Y^m|ROz zP9{D~!sHT}nYMJ#m+Os-)E&)#>NxT>`Qe%zr3flGTi0}NVpAZnmzbBEZq{^w4Fy+r zQL=DxaV23nlamIZ!@i7N-=S2O9Q>P8Q;8v8eTHb@Y^G0a!%+7#q3@b)27@@$FvoPq ziC&+VBO=~ui>v*b!5VRyDE6a^o^VdOKFEu&qh1TQktNa%NWKQ7&^>_c4x^--syvZ+BVBHBzsS^FVWz zIPetz*D^bY=+yn|1G!%V~VUZ2rJ@g*qyS+DtE!>;DqKN08)Zsv}rp=;Ka5 zH7`~_@mFhe9G18V?J#>9XM zbEvNU{ING0317yoSb#ImH06h^i9CmmPZK{vn4u*E29QVV=0?Kcy!9F>W8ejW(!^s7 zm~yyQcKK}?4W#GGS?6%!rtl6(7{5@;<3E1M)S8CvAus@-STiYkthvI4W#IV;zO{iQ6Xo?O9iG)*MjvD&Z0BH+N^>(OoKTQhK8|Fl}DoZ8J zHE-R2D=@_Zb?%;&SPX+IDe`|er5xjgjb4f%XA0s*L$owBR=2itJfV=VWdX{Y`aIr) zuxIxIcwZzkFCj1xjV3n-vF{XNU8O(ZDay=N4Q$#&+kJB8%|6#6Y9tiQ;>Qj~(Q{o9 zXP(h0SkSo*9Ajar$g4IG`xF3aygySm0-y%~d-W$Z4>u=yAb54B z9W2x`ga7!hesFYh0`(H+>lZzeia2=BB}Wfjbor#iE?A|H^y|8v5t%ks(jAPY;?;gA z1oh@P*Un+Po@U znY7zg6_Qe_;ynFt2%{_Lz-}8Hlws0q`UD`7lovk@%@06$;(OWxb_gB;LDiY21A=!n zP4(2d@UXh3QuDIpi8KP;JlFdfXNXcGwws_2d6oC-f1)2dVuUzwEn@Vpu-ryH=pv$` z!4VNqHWC{4ZEc5vUBdvV@SkMc<{7}YN}B~vXg)|mNeQwdOaPo@5?OPaGLhlXBIOL9 zbBq~=RGSt{gzF0#XcDW8)^>(w=9}d)lXBU2u-HnW!p?m={z`Ti7^;rM1XII z%~q0eUMc|zeoAU8pgv-r{KQv3TGRQrEC$slhO|B}r8d~Qh`Y-eO`boJ{9fuedzdU` zzjkDI=H}rYp<*%o!u>_ZdhTI*BVQ$uEEBrjnkL(vfAGrlUx-!v0;Ez}{;?z{5>1z= zK6{!*wFZxczSgfwd%i#|tN`nc5dL$LhIWDj;}u@ijC9(xB&aA_0LT7oVXn^EMeJ>c z($aCGx}x4eCjT>W=ZzP+Sjdql|-Rv$s%yTub-q_aG7t7;-Sc1Ugx- z*k(Pnc>kJ7MTV3-(w|$dIn0nnysNMuS}dekM$YrASB~tsgUEN~s@4C2ayT;JVNCi@ z-Y>+`0}pK|V{aJ@%hp+-2XCZQ&iE8;DgSFxN7K^fVb!@X2h@bdE2b12Eojd7af%!z zgQl`fBx{uB)Xm5>$&>fsN@t0%exhR`QTq;{hUVfKC)M1A7$G7vY?j4iq&hCT;KL?Z zI0;Hnt)+lIaC3jinv;~V`0*gKb-tAX(9*O4lws;YVlhdnc{fgKh`QM2QJAnW=9_zd zt{B>mXzYj0KaF?op;coDz*>o3Bpy+);UZ?fHqTA{qx5YtRC*D{TLqf+%neGz1@eU9 zB05QDTrfo{g$vnVO;le1g6S2goJTT{^9QA4>LaX9N##G%e>Tk>4`Ka2M-h z>-}lCpR!EIUkV{ju4e%rz4ig-IO5aClJ|Yx{@~Gz02-eCjSJMHkT1#fFQZT0Z&cl{ zf8Z(-gLCy9cS6-@ewNBfYs|vEdcLr)>gn&O^Tp-;KY}OVZ$V+4^;n+7&^embNz?UH zvfG~3ax2pN)@(fc?&Se0ei|rHV5B^LR__{L3_A|5c7l~+D}N!9ARr0prqpcNVf}DN zsC8er8;4S44Ump3KNqjkpK}dYmYz57RlaA@8tlJzcy0y01nd_SA|OvtgZ-*b)^snP zBf~JC*;Or2K@9HfSPYX~B7&4(rb};b7Gb=Sa3^@6d*gbr{1*<54Hy3vTd-U|t1~x1 zxBXz+ik9>@x>WS?vIdOQ9_(i<<_w}*p31%5aYO|5|J=BzGb(LfXo!8&sN-$Cp@ z9yb@D6Gb{uZZAd;MXa*AAS}Et`w<&JfQ@Da(~8;rN$+b<#@R11MeK6gOBef#S1%z{jXE&Qz_o zMOcntf_aW`=skpVxp)aZd9tQyzNf@%fh2%MH5w8Uq~&>v%2j!BR%9`P&1gx)lk!>I zIX^VH8MlJA_V&sxC9{*Z`a8SLxtWb&U{Q1I*KBw8X4vXSLDznB18@&ba1W&ZKK05& zGMl57-^Um%T+zVfYt**Ge2WDj`cEV#tVJq|A0S<$kF;c}BcQ@P>cl1U=OhQjI-7rF))~JGy%KUDyR*cQ7GZ)tb*#My&X$Nf z3(2Xb+Ss|A8DP~0gG))t6kF8S6IQT@yZ@6mQJi}OW_G^BdXerD`ko%^;-Sw?V4kpV zBRydBpf%I$pV?c9(na=QLMQT%-2j#TGQX&>g0i!oYlMKTpI%2b!Bdy?+ATV0N5tXHQae%tN2%xwy7LWG8lfeN{4E~Rg$&33wwwArr z^f(~tBJnoi@K1=y4+%5FUC8${KmfMT6+e0w6p?Yp_2@pRcTFva?C?$*%?ZZeuIS_M zF3&EROU(A1)M;s3y5me zn>rLAoW1ZkMwCpfFBT*oxbLi()k>PER+I$+beyeiVl$WKmB=r>dMgMhmC1wBngb{t zf)ojG4Nk|4^+?B+mQ!>pbgC6W;o%mX0jgrH>0uj=N_ZTH37!<=g|G}MwuyPboA1E!IdFu3za$1e`?%)wi3ul3V<3pa%o0`Y zy;GQ@F7dA?3o%0_s@DD%FBcQcd{q>_%HOi?Eb-!47BjQ3nkamGZC^FUp~-xI@a=0ht)}8dS!n7z7qwi~7T5n(mhctpFMQLpnSSx# z3UVbP;)_H5%C4hghC#RDOkO7>4$8wL(tl5u_<9F(KmD}i%yEvQeaURYGak&yFQ4pa z(yc=`&BHEXGR+)%l9D~#RpApM`ENv%?1{D%B0m=Byk30L(jtVEmSR1P4h;_e2JIlXx3?_jqi;Z} zr977TL*h3SEL%P6p#Pd+$;zb?Nw2&MyQvKN=REt|f+n$m#o(!{_ z)kT%tMqsuNbe_!GZ_;s9p3~iie1CDTlz9Z=abSUR9<&CX#9`&Kazw~wJ6OBoBOQvz z_(@uNqjE%m65vRH@mG&@&%K;LsSfaP`#zxfS@w4nVcxW<@@#KbJCUs>G#$9xc=ZO3 z)!xpE!}_0H6$!~zrP`gNq#CgAe*DMqQFiVU?E7lBl4Ll zO>UaOyTv9zc4gB#?}&>#UzNlWZ4$b~z;7M$CAVE&64#{G57)5GyjK?H)mOiV_Za6L zjq$L(#&z@o4yI_7u&pnK+Ufq%0+8*`ZAag}eS^Yqfcdik>u0@K_tMqX6;SjZE8g29 z>5-L{mB(uv8_H3c>YgE4r>!0Ht@z)(94gq3#(cqfN2k?kD9xA8t{4SuB7!AEl};14 zOT(+;0T#Fb0~5oZas2tUwcqK?ucz_0oozOUk^GY@d`+=@lE(vPJZ>kt1{4?UP90G% zo_=I3ee8%3=CoYjRTaTdWe6_C_mEiG6Pqz9TN#bAN%z<@U@BV~L z=p$^}0%O+1#Tz>Q@o|z6)C4wCJo4xkTzJx+kEUH*69j+P+uBF8fO;5!h7*emiF@9J z*vZjD&@~SEw7R;5GfZvl2*`Nm=awHq*&O_Ee0$itk_vEKdt5Z%zsB;ysNe)ZJBMVG zIbXhd^(}oRn;Hwyxqwc5Z_wuVU~6P!6JA~Y#a#p!OF>1NGfR};l1C-n@ft+v7)Gng zEjMBiRlB2i76^IXW>^AN(fQP=d#vZ%W-(txZ|-u~iV&~kGc6p` z!tRD;F9;N2N9z(=E&{&z!(6W&nWDPFbbPpRIaPWTyxcoqn%J)@u?A%+LkSMxLoi6>0+RmK32I05p6%=%0P-OtDlc1j1H_wB z{AoziK8V$o>|EKNMp!<)FMB~qk%Z8X4HffI6=PEK%FBX8X7F&O3!Dh<1x+YqK&+j< zCR+4;pQ!s1<&Y=&FEH{aKJQdPdHvo+8L>tWj$M*n$#fy+{f0RL9%u5x0LL2`oj=AX z78VxHC(EgT$=xFb1*L4;WKbCbRnRYjD^2b(DA-g`w!;qw?vuPcHONfc+S<+oDf=_b ze;<}#FT3p*to+PmKX?A^%XZWTZ?ub+@GDVT*pRIt$Y?6x0%2E`o3@GpP2C-Jl8~y5 zSIWAdalc`{!raY@VKCh3i@X(@Qv=tv!Sd?%VfviEexCF8RELkhWq3zB_@OKKnB0Q) zv{rev1NtoKfVq!S#%9q_-4Vs5rA1U$vVoy{7A9c$hH0HWyw>0{AHx7`hk1~D!pBX4@mg^N;#B68vw z$x0IIz4FTP^AS4zjhK;{$#AY@s>Pwn?EKLmx_z#?3u{=gfeI^8m+m|k4;Yp^M9xL! zibEo=i~0v`WLycpNtGX6e!14EGu&ly9{dFhJMq*mUoSP0X}7Vvu6At1#8mu9G@mQC z_12dVLuV1ABB-s5{?-MCzieiqs)mg}*{vLOf|iLeozJl`4tNj#D(0Iei&zWZt|lw! zlj4G%t+$-2;#trfZy$**?=WpSi&RZ5g%4uNgPIl;vDI)y)W3h8uRv(^w@NU}%q(i< z{nA-W#Pgf=0;UJn$V#*{DA1~)w$6hsxo(me^$&+Vd@0FS*=^IhdTysb(`>&rX5Kr` zW)UjT66&0=bP~ksPo{OTE7khTtUsxfViimD>x`rbQa= zQqPpkIGLtztCV`@*OyrDRmBmlAEAe^YVV9n-&@7y#&%GDy5u~^g-0LS5nRiRD^Lir z%J5l(!@cnl$q}BIY`s-K4ti@yoP94gwJL%rJNVh6I3%ZnE)Y_wL0DM2oL#I;wTfK+t%9 zZ$K~MwDCy5+qmy~o7v<;1J1-^if*nK7GU16_JE~`nISP5s*BKwqj+DZR)wyED+}3q z@`>vl+ z0Fz!7X2)7xg|99qH&)LCNbU_R|6$Biy$zUVcm%R^vH_eWCdW zvTCfv&wAR*E*IxVJKkjeE=Co0=kRL_>J!JOttcV-qPHiE<~Lo^kzPrE5B97DWBjBL zV#vx??bzxG?9U~*|1rK@uISP~nx2O*n^QJ0LHb}}e@<=l&5aT^qI6ndzlw3umPSKO zC+pHOG7yRl0#A#Y<~v(uvhCFa#46YRst&50F2~5;IX`^B)R8h=J~4Cm9eq@9rOnbt zstb{UamoV>6Z^IECP;3`cd!X2`!AFBDAp(3%_e9gdVa&c&=?5D3S!^z(84S$=I=jm zjz=jz>Kf&Y6`Yb9E@4n=ArUvSePyE-&l6K)u&u%`u9FO-2Wh7?aF^fzO}10rv~}7A zSP-hPIPvU9bXh($6tn7dF%&cMEee{X=o^Ouq%_%f$`^ca?b)<=wixzYwO!4Q*=0D< z5JEVyvFl(oeHb%N{|5U$UMp&I4v~eA`^y@&?u}nJ=6sLfg&m44TyCH1R!M|9)gt-F zX+y=kFwND_d?Qi!`FtL$t_kIy;N27FcNnZQ@091im&zrtFD!722BD1l@O2$B7t=0g z9i2KIAzMESnsX?5K5`7Kd|U$lB*LeZxG4p2R?>ra>Jt+4zWOS!0N{YEJ|n`j@XW@~ zGt~gBIPCgR_CjGGc!y`wd-eVLI4X7<9V^1%k_Uo^JrlWqsu{Kn9n4@q<7%kx&Yg=s zyJh&d=GYGt5A3GS3jDe;Cq?}KG%wY0?CkgenS!LHHf}rs2@&rs$T70ew~t^ytnl*T z$DDe5N8i)@lCPS0njdX#<(nCsx!~}qB8upM)VJ?!0e#CBHd(Heug)u_mzSrn(mrBE zQW@AJ!4>pNiNg>n*;1w4OKK~}+3#OpRBKsc=WfgUtMh|z(Zx_rdH7{z(c&?hrYfow-Iu{`Jen5^ zznDC7>#mhP@(Sepx^*BeQwvP^Ty9MrNorw z_7&Seh|`xErAmD=#%P>x&AC91?Il=hwB?%V246utH+Xl2-bh(ZMk-KRGx(^^Mryb2 zu;R_?cusJx`WjFIRRsqfSj=C>A12@C-B@S#mA===XD2qlwc`m-DVe!QgctjYVYD_V zUS5R49N-tqfT3k#J~=;C6WG4KcE`QC_t|ZOs(NXpFYoIF0F>pjN5N1kw zR879^K5Tt#vhwdp`m<)>`ka*gQ15umU3zf8mfz4VT-)yKb=8PuOBRzdw2>Z^F-`N2 zCx?x(Nmt63HC!t>j6@Gpv2pB?f@kV$jZwxBjs2y^rj=WM@|e9bF0n4$TmZ=z)$LJZ zA;Uj&7=u#!6PKXS%3R75mKyuPb7lW)(c>fb`*3l?@%e0PUMCV)37e8gbrj_~<1M_? z$!Hc(!WsqqZu+s*D;TDwzrTBTGNGKx_G3!}VOQaH2?q7ud%n2$?JbdugL(w#sO-hF zo{0gCBQY^$?ZB?3br0A8xjd`I&zIPk@~bxaX|AeXY|ANwzt4^*}EIK38-O4DJ>@K{_LYwRjm7!!kC*;mrW1Z-3MziGd-vs1rt z`Q~bNapbKvAOkAuIR>mKt3&2Tei241>YvV)qOpBT^4xbn4yvFc!L8(Mlye<79u0<5 z->oSy0M7biX%;hwS6CdDSQ|s4#lLEHVT5ZpvpG=wk#0v@O_=H9zuXesFqB5HEpRr1 z?P`=#u^;I}I$}a^9PhPwlu2*Q#8-N5macspnNL?zcPapc4~pmEw@<8`{bik|Q*1*; zI^KZ!OfvmP5|GiYh)<4r*_3gLu)_Y$octQM@=cU7v+g8vl zYNMPdgJM}Le%!Rwib7@+4sFM`*xdW1;D0VZsP{2j&FSeNs%lz?90gxT@1JCJYjoXY zfMJp0)f?`|&>E`p0TodR)#d`UD%t9Wk7ebiC#LK-HZ5ODe8J%@B1`D&XTE=nVj$Kp zGbv}}xY^i<$ii1DD@AxUqb;kMhcB@D_ZwT)&@EA!4R)R019Q_pCqoS&VM8~IaKG(0 zjt$=kaF~3snE$LzVWG<&;6s{CJr`N&?F*Vu;x<<~g}`Z$OBF`9622^R~RfFKp7l$U7W z9G82Okqny~QUZAS{}iY+Vn9d$Nua?fyh66(?cFDai|4Sn9K2+HKxTHX*4ndm?Ehh{ z;yxu@+U(+to2rDrqfEKsm({m3UXpuTs?|ou15NH zmVTH|$`bcRCsCcsqxqR=-#Ax8GuG&Ed@Y0LT6t4PKZXW>LpAPf_huYkM=u0c{n`RM z_s5D*_T$g?9x-j@X5a>fl_$Vv+qD6#nE?hq=2)$Xdj&( zsnb0-9nBcSyP-XyH^XJ?aU$L{UAfkYW!y1M7P58}o@c&yG#E##i~dS<^U8U7&N+!v z-4=GVYaj|hM9)>4BZ=6UvhBpO8>f9OLfIzbId0n5yhZ2UeY`aro?1b&h^zLY^;Kl| z9%A3Ms%cUG38*fp&(0H29R?<;KDZVuZJCOE?rN^~s8y0$ULKcAo^|JJHZl-bF6UYn zHtZ3(hs1qr$8JkuKcZPa#ho|Y6WgzvnEu5GDUe7!cx?29ol4A9CR^%SOww>3UfYo&r#5qH(rl4j92VMFgrvDW`9Axbm|%N5T4^x0!wQ*t5) zV!VS}Za;$nN{3-u*#;oJzFZCmhFuhIvba8Bd$yV74cfa{GwSj6Bg~bzeImzRuGN*1 z{b;5O@;{cJa5xV^ji^DT|LcE}HYq2uHLZ{gpR~ThEUJVrZ+V*@nEo` zTcqAuw&=Z3L@x=EZZ|+N_=jS{I8lJ{Gd;(9cpNiHFk3dsvbwlQ<9I`6R*lfcmsC17 z3GPZidu`Np?>xP=KDNwsD)eYik4-e0nB;-fQK_0YQB!2KwW`|t>RXYxgk?A)(_@Ye zslfBj(cH=rf7K()Ld05pDBaWJ1+C$P4Da7- zUt8^WA5z0zEuXOR@dT``5WmqcVab-K%)NBGoX@M;glENb?bfazCMb$yPpZI{E*dX+ z&xmS5Wr-B+wc}^JhJ$02rR+b{9ER=%Om%z=;0;3KNq%`dfiAyZt#})G%P}5 z5~@@v2DB=cunE4>3&n132s&u3k6uGPwbZ7HA@vh|nKT8qLW>@?Nj7h`BbT#l?_SxFmA=-Cmo7L=3 z+yrG0?f_S4BoXX9UW z8djSwxoSQr3kn{{g(u<`c9mP<${+?MTX!ej=K1CbU&!5KR2A~xVOytUJo=8}l$V9j z*9!>A%^zts^CG=nmNdb%eY)XXX_$=J)`p9QFUO(F`RU`M$UDL3R~hMY6+E5YR&j2L z+fT{N6%?AzFDLY*3BhSh%Aaq_NDaviEE6_jL**J4y{)C`oyqE#<#J{hvH#tPUqy17 zmD!n3=rZ`N{F#6Ubz@cIVR?HYDLl+b97!<@fHno%0OxlyjoZc#4x{CflGDF(-s)}q z%e|Y#u$Di{*r{^b3tm6}Q-3}}$U1zISrPO|8Gg&i7@lQM{vO**8?7m&P(D48D6w8g za#*Cy*F2kxY(A# z28~(~bMi?$P&N0v;U`!PR75fa&_4pYBfbK`R8*kPfAr{nR#zHV%6yn0x?fRDuLrhGV z5)!?vWsMdg;}a90_C?OgsU|L%{JP%to_wp2OsN$7(Bl7fB|sk{0&WI0Pdzdt*pA88 z7#WF)1k20IftZ~JKoqta85A7tnfKodpw~@_Y93d%fG)|uZ$RI}|1n@N1#G~c4|$$6 z2US-y?3r3_F7E~XD)RYMzaR9=>dFB1X3iMtD|EynKmI@^ng6fr|G(bJ4+Mf#bdql` zI{e?Z($Hci0dgP8Y=bbf@;c zu8tdMsM|ohH3o@PEKn78fKm~VyRtabh>U=x`EsL~J@%SA=}!#&=%>My4>5jzkX*S` zsY=r!An1hY>+1`|l;-OKP1@$u#RQ=94mMxyK*5T*Xo!NGwKNLUZ&t3xq}IDvo#5y->Zfoul_4UNs&ZCyY~NeS@# ze65eyL=aFK+Uf{E^P5zPodFNI-G~&N1+C>kVeuJsN&)4@^~nm>r)XU~pfv;vo*wm7VQ=-bX!GZH0d@Q)V_*sLFRWsoZq8o%~TujDUwv@hdAE zTO!b7f|mRqpeQ;$wFfE}q=e%YFEmjk1rpkjtcMq&KYj@1D4n%FKSpL`ynz6f_W)?{ z`l34MYRiniGyI^SpdbWFS+9Ze2ng4kPCL-7S6WEGLNPEhVh|Tt(9+Fh`PSMj1U5GE z@_Syxk3KGdmUGYRmpMj;hQgrMVGb6YgvWVxcPzVDzm*iU*Fn3?JC7bL#t&`w5V*7HHQpfpTm2$Veoua&EcB1l4?% zg?~v&iR7{wD0XP->5&3qhK7cDXbVt3gGM*8_9SV93{P2I zItO$NC@3gUwJ21{|1{0_QCJvedwaXVaeuL%4Sa<~!zR`n4h~#0GBVwXj9{e6Ap zf`Vic5)wiW?<|4p7gR1_pwe-dA)lU}j=tLix7h#! zTI=PeMDSG>ZO+LEbOTFUN#J(j;TX^NGp*ndAVL-Hq@<*v1@jNk;zQd{$8)5i%2 z)Uqp!u`DqlQA8T`F~@DjBJ(_aujg}T0&IS^+z<|`KBAUS+e~#`HUv$bUXNEZh+*@$ zL+OI)pnZ`AXij_{uhfCP7N{2CdEZ~c*tU{kzj_5)J9B^xHV|F?S0`{#65uHB&Xkdz zG+kf<_XxBLz}Y$9xcC2}1v>3YP;diZIRe4{mt2P2%E8cma$5F>(zN&x~ z=w&`H;NsxWgk;f>d7XX*+kw3W^ktLHxnt&Z9Hz?lt&Sut27b0g;M+JDbQ@F%xa~8d zQ&USkeYW~zL-O+Sq7xF#e~gCDpKbKU0#P>|U96PFa#KAJmDq|Y+O`VfiYWrmR|dW* zKwq(FDnzS94M$87D4qWEVc@7}Yf46W+)gvbfv715XhZtHA)x&N`Yu{fxK+br&`_{$ z%v!ku$}W2F2Gey43kkSL@!#WPENG?HOcd~L82@7;odY^(rNqSpZIiQBV(eP(#KFRZ z{{bz%OIEqgBRPl)BVhUO)`G~)$A6=M77`<%YzHSc?JFG8D_q>1BF2V^v1|#8m6qnx zdWV%3Z&2B;h^E8`VsByruLP(rJB*Mc1X}nsXor2eKVSwU%UCGQ-+u<1-abE{1e~J% z-MI-=CJQv~7Wt>)(~tdEK<7OjTLersDk{p&&F%l zTDNuGoab*ij$`lr-Ftub4P#?Xlk4bXPh8{pgq|XFCf&x#hU$eh)Lm!?=_}q_T3KmM zR6br?TYHL!M^&IJebtF|Pm1pvHYJ^Gc~Wod9v&~u$jJI{(L(^H6xi|gDQ+=XgYo1j!7 zVPVwX2x_}N5H{^CjKtSijdk!*ZrghnRs?{GgwckikE^RrD0`8{DPdDTH{KnAx66$_ zSv@^HlIi!+LdiaE@UNXp4=Lnr1TR50VvkZ|WZcwZ*=e6p(b^uQ%; z@o}7eSZqr_d`~V;*PKLi|E31#dm9K60E&6yP*74huS5~JQmcqGA#@~$S8iO zLAzGcwtf7gQKt2g!tpH$iW0-UMMZl0`ms39E?$z6d7GhLW@=C$brlKcSSQ%JvM2>v zS!J9&sd6vHv=xIp7X*ZaG;jn(M=K=;@44=zcu8J9Wj6fsr;_Tq%yu1RY^3?|?j#)U zik3DuSJBY;1`VI=%+ilfw9zxm?B2I8iLlw##rMfWU_?25tX9keq75g`UA*Wu-C>-{ z#%I)W1>K-=1A~JM>{>CQFJGpvxGK){z?{jBex^HkFon2o1~I3czt??GL_HUdOl%o@ z^$-qS8FU$hpl;!+V(^bIxhSE(3P?!`YxP)fEN}^fv0*x=zZEShktZ1VMAI9qvMp1( z%>Gh@WsB*It3;#p#mkpjL`5S3&p@}bUqpoFAf>i{7n->WGw))j#ai~4@BbHi;cRDP zXH}Iq(f){i7Kk><{37%T+`_?5{04dxcdMzjSLbbuQI4|e2IAq{w{K{ee1^tz!ux7? zEwKrWh>Pnh6P6Yh38fs|T(s=%M;QGn&CSgpZDTkuBeR7=^&QDaLEZ63DHSZH#N&ga z)i__O(7M`dBrle0l_ z2Usd-@ZX26_!B*-ILfD|r%Cp|le39parB$z^~UlUw-JWEc`d>`t>uFcy2;-EJ)&Vu z`bAT_m%b<}nzPd;E7wYL;YEwwRju6JYhs&|n?ip_ilcv@10a<5 zP3W5&EcK?tr&q(l!MX}YasME?@j`awDLMvQaXO5_)$@soiLt`2=mus(n^=7)jtD`& z`fp(qMM~md*-rE%zW^yAs(rkm-F0m)Z0G*{@8n*bN&m|4y1o>zl&T{-h^7vQfXw$7 zsc#4tEc7^T+_*6?B*X)KPART0l@|Teens?09_T#Rd9Aao%mdB4#JK`fCWSNa(#4C# z-QAJsuHE1Xo=an!$6&cMGlq{jGa@eKKkoRjx$Mooj zdOcm;Ptr`z7hu+h;TFLQ29l^bO;bdvS0~M8a4s5t}9^wBw$g{N8C>S^&yWi>lzx*ccS$IY#`YM$C)PC zlWb_1u0~HjeWr%C{yP7q4eC-Ld#DmS0e;MAXSTvUJnj$$@ii4ecoxyDKJUSeh{bcS z#wwn8rkR8<^O1>F0yiZXwoc7qv{msoYU8ubuMc*b7qyDo;TRz9UeIYVZ9ErSl@*~a z;b@KD*|3ad5gexDaA~+RJJsxQ=7@atRq<-26uUo>Fv>+gMn>L(YjxpUzMXk&nOSYM zX3Di|*L;8=Ax?4F>PvP9nD@}p#blU#QzG8t-FgoX4>scXeEupNIRLXdf83HR!QN=So|OcGAlmlDS>Zslb4w0xI@vXEBg1 zEN9NB6H!}8uJzD}k=exhyTX+-S3}-WtZql(Fo=iWl6w8+rJ!Sdcu1Nb?qc1cLJYm) zN>NVJmxwG$yu3aTI(YvLu&$1~y|S{ihe~M0dB5+vN^94PHb#MN5d|W;SPw@ZFs%KC z>~;lCjg@pSwv?%alMoRUpA2fuKL7Yp6ke=Ttd3`TVx`qpdI~i)HBc0^huaSy93OYo zj*+5fGlj5G9D1yiK%kfa~)KNr)eQnSKA_1&4cN+O&d{Z@k3aBm-JBb z=fh>}c7fF#Ku=R18eLOXy0d|2v%(7R&i)fk>xRFu#2E`A;_V=lThmjkR$5$ApjEQi zxLs<|>a?ule&h6p1C=# zVT9SAwFy^3d2wBzVIrZm8*7~6y7SyFJfcm9czIFyU`|Q1-!P#eDYL0d0A0G>Dx%od z0|NuERFm|-Wo-)l@9Q{tHx*X#CJBbn%g=8Bcj}hKpPis;fk>3nx4YpeSwR3!Q^b4d z^KB7r&oowpCt8fYu&Po=u9`I3=SHeiXql!%I$Uj-CHCM z4;tFW*0TcbYDF$^tR9@^s@Qm*iHF0C3&Fm$AUc)k|F%Y2CVS-@fkX29QSdu z$r?;8G_lR-)f7>!aeQ(9kd^fl_R-Duhk_d-)njtuZl0c=PBSO(|F>kN*x{(%l1&u8 z6FwvM6VukMTS0phd2r*ON3|{VFV5maOhPr0*409o4V`HP11j~AS_^MIWm!%lw>@3-7PV}uZq(D6IgK}5Vs^_mDu33ws3y2UAUD2zfJ}2(_P<|lbTs_ zQws}f%kyJNCg0vmKI1oiu9T$8*&RJ{zG$HE-*vph3whHjz8euTDKm(>6#R8=!Pinl z)E|H1+WR+O`B7qB4G(7*EiJ7+G^n!M8~z5#SP85EsmVZ^3dZYFnP*Xvwd$Sy*Bi%+ z&s+|4)Xse?$#hmy@hd_uGcz-SZ-`Lkc|m~)oM35~@4KCN6n(?P-YDuX7G0BoMVy?S z<*npXk^WzN)~yXWI0w*sZV0Lwy1ny;=D@<3Zqqd9MhQDOWt?k^e(qfY*nL(#=*Us==AMMfgD3wGG4%{0CqxgD z78a-A&Af?^SH5!PRcBjm?KVk8A{du=wC%8n$O~GrMK>r^JmBlVCdvKKy7Z3^uH1Wi zz<@7Vz#5<Wv`p2NNL_KE#F#UR+|)}B@zsRR&NN@T-mp8 z*A~i!uo9Kv$?L;KfdgD7wE?FR+t%GDuE33gGZlP1%KrS+{Jbi97p@PtD|X|t{L8le z$78W+y}?U$Lsd1DpivIuEW663o%hDE5W6d{@f_l`zg{N1R+eMOq!5rh(|~ao=f@4vW-v=c<2vq%N;BX>4>f4cZPC(c;q5@G*A+ED8(5>hmBbh8Y6JD+G%W2mHVi zd!>}<1@;%1K1>lr4 zwv!tKnEirQ?g(NCWlbvJpy~IEWs(2bjoh-bp9U%8%g5hpY@djNNJ$@GM*N(WctUSbP%ZJOFqYfMDG6Dt{^%` zkH~TWssce+f=m7#DB$m#CI5L&lwO@r>jxa}cj%9aiBtsNWgQ(Fgm+7Q;3+G`Ki06e zRQIMd=r{y;j1c<1e*L;vXuqP&Kd$GwpAeZ!Qfqib#6F>IQ(pggAiNAVAmtz}c9=a% z@$rV;_yO%e1fdl_UEurw{R907-Xc6U z*`uYIq5h#E&*WrIoCUYwf`{0e;%iP3U;Z{$pvV3p6bM4xL=?K2imDF^QCSum+J+v| zihYM&CA4*jKH5)*`uj^DDQqZ)f8`YrV9@v3gH#J49HGn%oK@?ewG2?4$^r0EFf=rb z)rmoyalkvI9}{e$&{|qs_v4fpdS(zsc8G&<$-kypuH6w3vQ`1vyG$nj0$*iZK3h!YU!Vw92@zLYQXP^u8_xF<Ek3Bk%E@5T?F(q1uay!Pp*b+%ctQdUE9Erc3wS?|q+(v6$c&t5IsGGTiqBdyQd?|G|90W0u2D0Q+UCI`M^^9i}xDc zi%eA?zG?`Eom|M%~g;7Va_#MD^MR^6g2 zj=p{U`0?XF^Ae9qUqz~&pJ1f_$1_XVluKa*<%T#=aOW&2b$FmH`%!XowJ1DI2wA?r z3Gm>`TPq~Sq*mQVq7WPXHyN5s07jvy41crhY_e+5%a`W3II0gB8Kp#WP?z+Sq?!QI z0b0h$-J**d!y`m`zLpd#Vp+1%N-E}{JM1r#Qc{Hscq9-a8JuWtBB9yv^QPsSA^Kk~ zGy(E|VfJ!biqk`VefJ|HBR`4fc-&E<_rRt@fJv5cH7WF5{}Ws=O26%N8%Y~mtd1NJ zi$vcC^}b+a?X8ei${VQv^5siI-)1@kW8^?oRkH!_)sculPy(M~+XaJ3{$jk-^t7JHb zw}kQ-SPorpzNx9u-@JDck`tMp^80W1_{rQ*0}LC}(V9eNxI&OULExvuJr*x)N_nOD z%GdQWqk~cVgz-?)Wl}5?Y=PHXGx!BS^W=0@0CFM~t7M6kgcXylNcd5=!Mhv^U(f+f z@}rq=745BS-__7YLZ2_*8@uMe2zzgP7Iws4+F5MX;k3$lCwqFzGBZ{>s8hL+H)+f- z(}MxM`?>baHEsm&efxQO6z~Xk3C`6d$QOo3bdP_%qpvH)!L;Y>zbK?yz?~oFBFmb>Z764gHPfssm!IY`-1>*eVzYv>H6Fyk5kjO4PGsQx}nU%?b0q8e8Aw;6RvW^fJo$u*jcWz=+`tr4LfN3iea4oK6@hiV zsodmtoN1*AKt(7II7ot;bPLSF(VmY4>5_nS5+G^pIzV_yPV?Uk2yXztGzqPC2OV9> zKJ$WexRARQ2_tW)a{N+y3Pk5>A|Hy6x5VjCtFY%heQ{aOL7qkGII&*$AeD)_jC96Q z(>LmnKmUea(;4vb;zy~YG?M2i#3~Z@Kc^Ax^-U^bbve^S2SW1<( zwWXMC0f(r&AG)Jff&C7*;pTWAEIin~GT5bej)m+&jK!xll+Vn`8n_BD?vh`#5;(q3 z_PPC?FpsT8RzYN6sPo5PV#iK@$mAUw?JA@cw$s-vauG#!#CNQe3x zg^8)@w~vkj{S^VOzvg4TmvoVZD*;I~JuR)cy?vpu6PZ9SXwx9A^AeK=(5;(vcLVF? zV*RwiMLs3aKvEQ)M#7$UMbTb4<_^zR@t%{jGqKzu`Wq z?GS0q_OS7BXV^b1hocDdiOll)>OF$>h(NuDJ_y1hQF(!s{V|B$KMBC)84EWg?t*ii z@94RN!?)N$PhSeU=eP8moA7O@w3-5re*3|LbqJ(U&a?%fS7f(5;2Hw9u1m1c@A}7~ zJCncwByGW=aR61CVNWwo?%!;6jLW~a>%k^74lFg5V4&`?AN~)R=#z@jl6;9IVQrLX z1hlLu=lN^et{?MT6P1TvbBp`Q#Oh&#-yQ1+LH_m$p70b#3Rn(S?-CIe1&Q*wpx`r< zfHWp3G7~v2WSM-aof3UOLg!L`^6#y^S3B;}YRUY})!&qcrC3}W#qxOlqvlY+pC1|{ zoP|v7PtbO#dOnyi6X)gSX)t1=yuO|mnxlj#^INw~ALEI_KE`6{45RD3B#CjJIoV4c zzuPE6hi~9PY}U1ZN)mfOG(1?&3z2UA{lD+7k@Urgdbq3Va&mI%iK^o+!TKY6Uo(}9 z`&D_p`<5EH%#!nIE#8Ig(#q$Jlju?HK(Q#-h939xu6Ur-Ukw3v5_<|!#u3GBi- z&&*z}gR%3puU>nS%k%Gs1F(I^OZlzlVLr6PJeyOeAY>xdPJQ4JtA})oj|NUfPK^v8 zS*hUJAVsu@EoYNDG%#=qOpR{8P9h|PNL%)pIAf6GPXF)$1j~mAR${(>t}Fjlmv|ke zv0_by(5Q#2O0NiqJi0Op*bWqgcKkyOc#Yk8!!be>MLVyaa zUM{Z3$cT>2t0lD(d{aaK&{`MA^C#2+{KQ0zl$@luH+-Vg-djvoB)oE)~yqPa@o2La5afcU|oBgcRuxmGS%7*carI)PdC%b(kgHKqU<_9w@~j6S5g8 zMQC!yasC7$#lTO71)hSNJW0rd26g)}OM(4oHG2bqHy3p3i&0T+(Amn_%-zweNNzvm z_w%oR7m};v8~_vFWZH}ppOLoY8tBzzgrtcCZbkEqEsqh( zUVzkVZ#}{o5$*kQQ#RLH%Sk(9oeBmHYaYOxa-Y7?zTXJfZaetkr>Qpx0%?m_3yM9$ zv0?-bpp*{)T@70_yjzXy$MA5~-0zNI<&^71IwzJm96tWaT&eoZNb{X!Qt9@ z*IO8@lfG6Pqkw~VpR6_T3D#&||D4)YnjPm%A^F$mpE9ggA^!>rJ+kd}kVuGxB%%>s zSkdHPUwxkaH94OYAtm<|o)E%iNgbUYQS(rD_lY);I{lR#TylqWIarZus8pe}|}_r)9q-rH2U-pj_kI$`JQ~ zm-kx-n#O*FazN&hZO1u>Qcxex)dK4wdARy`pam0xs1LMJuBR8B9c%Bmd~O3eY*>R zH5p7-y3>*sYAqf_MjjxtQAm@unrbT1O`9@iX}b^vKWo9urLHGXxLim{YWZ!Af-XDI1zi^`?I!SGqVTXZb%gomjrL7B}F>| zE^Km3`%Tt>7bIY$Ph)%m6k|D*8z4D+3eP4U+7SuTryJD92k}u3KG0+d!37?&%}PW> z#0=c6o3Juhu58EMiJ)vr56PQdc2{>{)C4`+t<%$aZ>s0}{5H3D)V@J1ozF+vwhZVq z{Cv&2%Yls;6#_k`AK64=AOK$8)2B*S0EvcSd9m36&2+VS4Piz2Tz=5p!=Q3RfP(0fca- zfa72yx7@Dho+mE*1?p>&U)w8e`))iFrLd>)7<63MZ0e#!YfvY74TmAh4i1x$FWd?N z_6B@MtsIN{I9r;LsF&sntDdinaZ`JzK2_XqYGOi^QZ3=1iTuAqSr9eEMCBD2GyQXt<{i7)Zf`j9r<@ioNMg&sn4#JI zvHaC=7&T*d^;yUty+O?=Q7KG<>g)v_6tRTr$jso+pVN)fOz9{E&~8ur2VEWxCgGst z%&cf?QraVZ2?DY@Ob{`G!1d2MiGW#;cI5^UHANtw{>oZIU9HWK3v$J%i9CetD1^gF zq}ONWJI#5ZCuJ}Za}J+Dk|U%wmew;c6^0g?TRry z(c4#=q_-);zCEq1x$3$5tQN*l#VR{zZxJno1r+^&F0E3Ak*-)|j~-d61z7@_Jyp^j zauK*33i6}5gL9B}S2b=j0a$m&U5&TN5n1X%~(#Ayx1Nv`M$ge3qou4zBtf;c5k*+yQ zv@|S3oTr5+P=>!HMjOEI_-~T@FO*pmBzYpWj3TN3AjxAY7aJVvV>r@rf<%D=+>D|% z5|};z!IMXAX#+&NrlzK^+2%|{owkeZ0uKO6SZbx#^`aFBjV*0$f5NdscI-Y*vpt<{ zD0v`?@Ze&RBYY*i2^D-|IO*avoVNjfq z?Wh-Q0QmBvkR0>gG^<}?Di%iFj^=`$%9S!X+TzMAt;G z%L=uCK)+d^GMk-1TZGqtfnSr-F1@DJme>8-wDwi~x#f-9^;-_CImU0ue57h^_w<=& zaa;RA=CrK!E1ij{e zBIwm(D-Q*pmsBpg`*uR3Pq`@gO=N1;pHF=?Y^**Wm|wF1RAp6 z&g;!~L54QWREO*?ukBo&luy`2%+lF?n>{6dh`_n@@X3g02jPTJ+;z|1p2+3=I`x*~ z&IU>sQOlv0lOZ$ZA3nT)b?1Nq=`%5h>#*N*@5f>EQkCjGvaModa&q;3MZ$IDljpC9 zo~Y$Wz1Y#pVL};db05Z&b=T#Ss8C1J>cUmUS)J3f?1x+PsLo(UpnGedmO}lf-je%6 z!dJ)N_>Vaor-AjCi0FDVvpy;ZeSLk+wAJAv41eIP#w;~dMPHJWLw+GvE67UC-6(>@ z?(=!yK6$GjMvPpb81C(++4Q@b^KsT(2J`)TmRo_LkpUkfr&1W;xweKtjdA0mqK_6q zuK(@?o5b5Js_$X0(o>z@X8_p-n=sVDETkwUCO?MHg>Nhulz=DU^bWj@^-b1T_0{sR zN{Tp|QJ04VtiatfpWQL@h_T>j>cvbsQg-Cyp%0&3TnWlw!u`Hb<2!1plwm>dHwP55 z5ecWg-0*{9mL_*c7rgC06xiI}6h7ZiMJnI8ayt5^_QP^z-oqKQgtK<|f_|bZ)eSu< z8ah=^P~R`Nqk~-dR55T`$K1tS_(HliWCD;!{G!bj)1AcxJ2F}9ypsmaT=&>D-U6Fg z`6VlHT)*Xq>?5hrN{#RQC2`^bxb^Y8l6l3t#r%)e)Bf~CNXhT@?mE6O^}kt~EEAje z@x%*)!wp$=CrURalLCEB#10bZV;1Jl?`j{WrB}r&$6VY_AI=~msoB)(<8GbxT0_la zL!|JT)VPf+?YtHj7K{Ma*2(pjy18Grl!)%4N8UD3eFwuhZq0tb8!(Obub-+dvnHdT zJ}sS>86Xm0fz#Cg(%|3bNX!4PnUZ>)2y2Ki6EZh44c`;vqmCRt{Q4_D%s9fp?N}ms zFZTWZ0<8E?Z);bdloVHgk+7U?)N`(NzGrI}Zg?EXkG=*Pe24U3i10m+7qY?Qyyt^I zGaq-u@E$pE)Nq)k!PB3fnSnAzixgg-DUlmPIdeH&E;&O(R%8u`+TMjcjpWHqY^G<@%{)&E!&VlnDcpoFzXhIa#_AZg20Jc z90aBO?nsNb_@C7v;%GYsQLUUg1D=zq&k*g`vU#F zE?MtS-JJVMbN8)zPDqryy~;w3>Fn#SR=qoSI&yz&X=jo%{C|Y9?JTY&9REaNIlSLs zj;L7NeShQM36Vy(G=na#lYn?cBPo!HIZ>fE3C1#ITpMff%*wsY^zj>hTuTwF_T&H| zK1KWeXS==^-a$)OJyW+(}P?cC$8dC5M@L0iUjB1cM{vpLe0}e$kEt9f^R(uCbU(}nWk_gLs>O2qhVoR& zGVANa6hfrsiY9&&e89Z*y*?Y5h1>W#b`;Sz^|W7&AW8KGqiT=}pGEZGVkA$@gs1T~ zU?dB&2eo~L)k+pV%*$7XNkbb4`TaO^yfxxot)zngk1)mhLGdsYXJ zl1|#r500&0Mw$VZZstpZtw{b|@h9y(d*{Xu^UG~3?{4fU-l67~=6k6if0#Gy>3f2) zDiG7r`0nwC*CjiT#nn=MM=>&yvV=V2ifOEEq7#3E^@GSWl^Kzts|vAtlc_aPc2~i{ z$fA|;rTcc>iz^DMLlHeUVXaYg=$}tl_*eQyn0kgP|PP1%wM3zfsE4CEqbrQ|JshjkFt{ zO3=Cl%iCi-Vs_svfo86rP@adaAB8cBW~B`JGd`D1T^N z$bN+I3Cy@85Ff$_C8pp;frfKi1!8-c;y~WMfL!ZE%s=7d#9QG z7?lqV(3!et{sJvKHcVD?q^4m?CLC`Ms0^s}WhY@Ks+%oiIQ|te*;s68fDWfX-PV%@ z#R#^D8h4pp(v26Nu_etnLTReJ$l6XW;$SolgIv6 z_H>J%woUk2*i*}lbg*%mR7XGh$xxuzzrNqY+rL2rfZYWb(aV_8{3M>dM#s=|g878n zv*2eniAi@bJ*M^8Bemv>Rn_?h!Y7aKD?HE~Rot{L*VdcOXpKwTu-zv^fSoCaX_*ybf!$Q!;kKM8omA8#r;)}jmC1*m5? zuBt;X)@avVZ}@pEY+y@r^?r)gN~-T`h1ZCIr3k}G9p0~qV&55*X$M9`$U-()8c9m^ z;hWHbC{IKSkl#kf#u%X45t8ff-LXl*C)kg^OcdAEy;<>gPmaFz!bi@0jO>W+8OnSzn{!!YhBES3CqxjU=Cz0`SQ4t4#Pkitp`A!xW`1++^Cuj)9 z%8eNf%yzn(xDq<UmQ}K#g@<5K)VX9uL*;gl*pnGar=1Tb(Z$G<{L3P#zON``_m|bV(Dqhsd?#w} zVaFeNETM3pctJ}QQq_t^xb|Z%uI@!g=+ZNJ4d!xaGEQm@3BiY&G^eqE4!SD3|0^$B zj)tA(MYy{mnbLw*gU8r+)&7dmf^2X~k}14G&-`g> z+g=Q>mpOhtxesvXX$*O6+kG2evHXG#<=C47*(mdeVL{a3h{>%?oniF9>zJL(`7GMo(l!ZL zFr!Mqov-i2%22c%JJ-1GG}Wub$BQ4CczAY=ja20of9AymV{@}JRTIbi(|Oe}r;z`y zMkXKmM2(>CKT91WA>Ka~qUPSM{pqIQmO7(qK*^M|qDr{6^iFjDBO z^zEIxlg&Q28Za`O$qREB=-0JDsMSvY+txAmTNWiPI@BPnbNOsgb``nZaO(^|3t_%y zI%q41S?u@oMa2tSyaQeu-S^f0cFf*3{lky^^aFbp?ft>08u&teyow`GmBmuCwL0pp zm#xQTgFX~>?DyWj5Z}nU+FPz{A`++VVA(jyKf7(x>6eQ_=G<))-Iv|N;*sCG=C(O| z8eQ>b5cFI8N$O?tVjG=k_d?|G<4WD9gZg}SS9qSc*&Y$(2)JY%z-X$p{hny#9@YIv zMdRIU!2?1ZVv@{$`&JV2bK|dWZ!;X1EY#@3dHEtwBUiS3Fp19z12=lMo~IIZCCAH; zTQDnaYiEkNN%8Kw$sMzD&xaA*Lse(N*PMBhBvQ0`!<)HOa_%VAs~tuYn(E~CERt`> zJQPvI@~tT9XT_vCezA;M{``t7`Sa~v#r~rrV+nmNqi>g9-xc8xapmlgUJQviqoIlG z5{{cSG;AQ-%OCm^5#sLS`?dltG~LH!K)t(W?E=f~>DB3nUA1-b80^Av-Q@asW1}69 zfO7ixZ>k$x+xbHtU%Tf8md-AR$18&1Cm!E3HrOxDTvgS+9g|p0m6`f8qo_IVZZHRw zAiU1SNjOgQaog_wKJvN^VUD?hS2Bz4dN)1U*sz&z!4~s8{NB`xL3o_N{<@QMZS=fl0TO|HukQTq470WKT}cw zW;*rgE!SsRJ87TsnH5*y8~QeHQ{z5sh6lDhGh%ycWG*y7rW zqy=N?@Oi4)ff-#+f2)p&db<}l8?P&3*1?B+RtAiYf{eUTfapEq>{dW@4T9E^?)l?J zU&E4_x?*ykJgI5+kS*t%vKj#Lk^NRmDfA&awdT#fGJ3sbM<454Vo9C!ty4BFxMy&K zloDd$EQuj0gtJ4VEstmir`#5BiD_};oyDfuXK=4Vj6CZo{) z*T;=8M`naGh5ncgH`})k_mhGV;lUSj)KIg`2J#2fTD)N92wLl_+$JNgEG7Fsjy_^t}xU<^)?({T)z@F35Ln=>i} z|J2{MPBc?Wx3*dW@Y)LqUQM1geY@d3lG&n3#09Y5O*HQIf?m&QLIj>z%31L%I3FnY z_tV0Bw)YMup3(;`qFJ{L?L3Y1RZd-H=cbeKfzLEoeV-S3l3V|2%_w~`9rD`nY?DG? z$DF&T-DKaID_==}YP|WNPKc z@)T4KTy|W4-q?-l6JMt-h#ZoE($Pv^)J;WW4AO7Z233P517a4P1yMkj4P#79Ml z;-`e)M)50d*cuHO%)mZy#FNW7h&DtfKd+Rddo}ZSRcJGz0S(VvlWHA~1X^mdn@!It zWJ^yE_U=i~I(4(8^!pa?>?2r;g&K$B&t692yvvCi(U;XUU*3?_mX|fPoZmrT-2O83 zVN52))+kfS)U*AD)6RilWJfI`4s5de)!yREQlFhT%lH~2EwG^KLk3Kox4it$T!Jq44hj zX|ImDYclDM`6Q!&q@sHI!fDKrIIH+d*;y^r&qR|gGx-s}@yxK}Pgh<6<;Kcp#jx#J zleTf`@i!CIo+VyH1;F{M3Z&-uGj{~-Hj(-!=HIrMe~$ja=JR=7w(3O3finD0na+pP z0woo#S?X45!K1B-x+|5+Ak07g{4~&a)F-FAA|ADL$85~cULnsu?YwxR*V_A@>jl!} zzwm6In3?*|Ve-LLQppm>=_eX>{IJBnI$`N}6YwWitp?Z=v!^RL8v=t;4+|8XO5|Xb znQajnacYH*wRBrWm@&M;$_@kn?*06IYPxmH#J0^h&bKdz*p8R_?SFJqxVUWJwZ)u{ z>3-RBEw<^&88f|Om`g9^?C4dnfx13(fpCz^Tnx-^4eYe#_D)N-JP6&=1KXP- z7NV@jb0zvMax=CdP4_zOyqdYD0xg?^WJ2TdCMM^YmS6jZ1H#Wv@Y7CgbNgZuzv(RL z;<~FibN;IhOmYkj(L5)rY+5pElRKV0d>B@G$64goP7(e?JBxP@*SkhbUZ{^4Eb%5UGbeN$!p zJNb&G-ys*h#@yz3C_6uDR-5cjTe~2pI$rxJu^?0-V|@6qN4)2@D6404g-sHa3c2=0 z)@fU;CyKVZaGmLyP;DFg=pI%iM)OSN0X5IgvD3RQDQ`Si-1g3R@po1bYhnxY`7!Uy z3M_}&i}Nq{W(#I9)mJdJ8+<-NQt0huAipVesC(z~``<6lafHbvpb-EyH7-wpY>e?V^XWe$IQ(?$O-Byw-SJ#((?ul`It=68}Ttjm2SE`%9Lc zbHlk$(D=GEuWzcz4|={k?y7M84=;TeZVxRVZz@Im<(@hk)4m)nB@fp%tAi0VT94{Z z4`~kFU=ndQHxTJcy%{8~x^I5)$4Sk{WF#eN+wz&4d6~mICUbvlym==h?NR5|dt9oY zy5>z|cFnEbX=A_m-r@Cq2>qS3%z7*Q^chM~;kU_T@>(VmQA%77nt z50Q8#yi2Z^3;ulXE3B~R#`5t^WgL4&n)U_JX}X4{f4WuP?wR`IWB1TI>w+bRYHrhu zC*r96t$n!_I4vd2KQm9n_TP1(*r_Lcqonqe?Z=L%xUUb+VQHiJ%?T|LuL3V|4;6CR zkMz`WeKVS0AGfv#3C4?h_ETWp{kcAGS3vWLOeOheNLPcN}#o_}4- zNE7nY=-o5E2V`k%9LHPguW2Xu{OPeKYv;UqUC7??#z>&L z++`ohO-vM7x3$X(E?+yfwKzyZFWug$Kti)fbxg#!=#K^E!P8Xyb^A>|3dvg!`yF$7 zc8_9WLd@Vm%ph)KSfYQjG*CTXZptz~?~01Ir>c*({`{zOC0omnved^Kp67`*l6`De zDs20Zyr?yYP|WaSs`J@TmDTS{tN!uX61k)3z;^F!rr*uunjeeAp9I9W>2Dyl$sPFm zE@>BEn5sePR1)J0wuG~iU(8K2$ILBb>%6wqn8wzrOuU=StIcEA(pf)4enYwIFloyJ zx5MUR7oy@A7rJ(Be5P{5<=I>Rgci+0xmKy)1xlPd-Y6ZixwS`5-p@87Qd83~!{d(O z{&jOhlcdza;mxg-bo@+tKD4f4p0c4-6(4tFMydSalP}kD7bk~iDx1CNmMIhI!z~q#%Q5Wl&!|bw6v%Yt zRZ}S3M>|htZgb5chJh(AvZOjvupy#$Qn7OKGkG^R3wOD`!ea}A{102FT#adqPZakZ z-}tR_@F}~<;`m9{RQ|kLk(k>b+}Iyhb)31`Y@uv=LGcb-RACYAzixa(@#^JkU!8L9 zeVBE0xM*6wkC%V^hH)F;K&Y4a;(@h~lktjneU16TLW98z^D+j!eMz-R_U3kvFK=!3 z)79Im>?lN4YzT{t5qZ%uq zx7MSzIukb2rut?3b(W~SY@TDZKDN&U3p;|c3x)k@o9aGEA1-P8R-$2J`|C-KzI|U( zOq(FPwC&dN-vP5y(#N9)WwYlSqqY*KeBi}WRUWn62bX1k`QH{<*QI<919v@GywF~# zDy4*>V@n0j-29EjpM8u>M4iTd+TVA0D62nt)uC9L&DhqBC%krX^}GJNt|t$jYV-qy zD3)%lho|gq=XfDKc-ios$DO!Xk3>i^|=~~#e3CLV*nACejEJqiS%{b_)b!%QsyW3`gxtt zBie$j$)`yq2lo}-b5?48qq{#Ju;Gjialj5Ni}PS>QSgp`WLJJP>r`gq?298JQ;ja+ zwGV7I7+nq_WBTJj#uR_u{pX{_Zhx9dsgcS$`!}v{WTUP$9Mn#2=o8>@J$Ejbrhi51 zd$;$RS?=|V^=zMgBLaR{d4D|})pT;h$v?+>V#_}@B@g@GUe)~~HkyCsK?3Qd$>jrW zX7VoIEM-KVY$J)SmXMAvn20wgaFh7S$zQFhsO+0;jPhMJ@=RH`wc7UGN9`nDUUVH&O`&e7ox8jG z76XMtG$pQIHa67Ombe-&cH%Looctl!-9JBA3x)2M<)vsQoV?xJPSNk+Df}^MS$@HC znWA9+%caWLohA-OrzlImMun_(r;8L6%x(0^5W0A@n2ECDd;QJ)nKu!_#m^pW5n1j@ zZ5Z*R)?p|M*(-NjZh1&&e}Rfm&w1S_j?Vd7|-{3h#%8Gn2ZA7>Q{wvnH8CvI# z?Q2f%_9st#&GXzM>#VV9tFUGA{`l!?#aMyXPSs-}-&3~l`oX-~z;oU|YKMzg zz@)L-aoaBMx75c(@~2M8B+Z74y;Js0xqUucdi%!OZ}xjTAOAdz#b#%1fP{NzUK7$A|CQoJb2phR6X)FfeUvcvtW6_V z-nGWODqxJC;js9jA!xOQ(T{FMal^Y{O7qszQf0RBJ_UiAKUROeC_06GH!ed$8OvbXdmfNz(@gQ@ebPW z^YL6($0&<$-yq$6!9%fYv4YlsaAQeR9bt5vBz5bY?G9&9rLgX*60gKn7W|3Zi+cKg)vZU3 zC%k08I4eh1+~$$HO-30+QvPUK)+rOY1J^}=^_Pjut>-npo#gk$wrorc-mJvdD0o4i z+7VVp%XV~&qT^K2&3lXe%Mz2bfj@Fr@^w2J)T5mGVgGsJRvnqs24qE|mNfr@7Of+`x5!RJ1ZKjJ~;>0EgJmHcJ1dC`R3oE{YY27N+fc z_IRQSkOA%NB^Y|wH_Vo`TXeFRyt1aI#FNQo^TSVWpbDbffDH5(LtD|kq)3B_CB4

4SUOXPptQQniS;oY!chTQ22~zTjT>xG2L7a%VCn? zjGlMtF~So8lR;#m%i125y=3U!r9?G>dcG|uz)4;xpgRoS%qE)s#i-jNBcVLC0(HI? zXgIiV;R5gPj|`+p+3g!g>k1#I(rDkWI&t<`$XPD@H%P;bB~Z3(<@B>b!NiRFrll2p zsSB!=Ck`uYvn`Yn)Ex8j(z0*{OK#MbM4$d^y0<)+e{nD)Vb4{ z4vx1s_SvKfNZ;O<9~I-;_n88Or<(xrwb>YDGJ-_~GGH;9Y|-6H=IZKdyh!eb$~Fo1 z5Itm#><6Amk6vRjV&3V!kvZSf;_=BNM+BNVYxhjZj|4EhJXre3IrkT1^yeV|TH0@_ zTR7fM#s9f=Zo3--BD)KV*1Y*yoj-?sk5jon>d+B5#mn2Wtc8k4ILQ(ZwYa3uo^`W{ zc=YS85HP8oC-5)^>|-3dsB9 z%qYD`zSU0JyZe}qdFrcI#kZY-W0}iEH7fn?-5nz4yo`!UN_yRKhf%!dE)|o`g_eyh zgH~@ZuLO#tJE?k{GWJlG-#sgtxr0Yc(Ct0Db41}#&rF&6dNTv5_-U{X7tgNCj>H#W z(c(i<`&N>dQc$oT6@U^-N;^r1*x0DRI7Ay%hS>)cnS_72jYfNZjVz@^_m?kUemRfZ zsEY}%nf$~=`3h!|Yq#2Ac%Xabe)8W-)k~(SHxt?Rfh3nByfc8>%Oq&Qat|jB+K+dm zN~N;8dc&cp#V5eFq3inM(VexC!h29|EVRDT`{xHpGxk5ck8j_xLswKe2i<+B89sp& zyf>Q7m{B7_)GlHPL^xBP0udqi5fMm632pD$!q8;xGu3V`-?1iIix(j#{^0YL19|QV zX-7T!*Ui*?$x*exsS$9J*@<2z(kayN5kI6BOm885uXkPNL0$es6!#JP6W58ApIt|` znS^>?X_S6*qg>B#p8yRisY}HFEGY=D1)=`6@(JMqm6fgsUUai@JgKW)E}0+t=TrUA zrn|&la60$^H)-dN9Z$OL9V$=tN6FWvP0$IDKiY;u-JzKitoK{VpZ)GyG*M zz8^|bt(MwFhNp`#IeB-@p>FPIRSy0J5Mo>fiPzD^}Mv-I!5Q@&K76xF9xrD*4|AXi4&845KvEm+u5TC(gl z^ZS_wOvO(r^=EiqIwMaGc5cmCagOF(J$Gxxn|9{Zjb{LiZ6~)J#)Ku8QAuSGCqe>6XE1lx# z|K-gbZy4^rbFF*v%ftOcL+$s*8H>#QmmW{-E1u{KPFf7!n}3j#$z0+s_Wu=zZXKtp zdfUY|Gz!$xjb%1ySe=RQU!_(N=^S=Z`!7otZSE53bAGmko2RTZn7(N;Df7-Rc6Dxw zpG;7(Unr_r$fIfI%yz5~tg}s1Og7y=HqR&@ckie#NUSL^`7{!Arz}N8rc#C{U}9Lj zw|95@m(B4s-L%=B77I!`@pPlr`H1=SEuS_WvkG&25cf%cJw2O^TTP@aNAQ9mqf%vf z*vtJD^RSHg!*zVGm^nUih8`bMN<9&Ya?*n-IZlV$JG0-WI=A`PzYq|U z`RRB>;Z5VJX^(!ld!=?;Se7T`AMuSlML8@w346FrW_Q&4jAXFgEr?|p@VSXmE1u3V z0tS$8wrsugh!kL*gBaANC%$%;JtzUP{ zTefijsD0+P(DV<*lK*^I5KZIByu$L4Pb#dsWj4NADZg-DEV%8UDvcpB`HxQS@=YOj zpGIvu=#&TB$c5`?ID;h2PB!!V9OSoj>W7QxH@NNE_SBT` zxDa2fh27Z-rjU~nz9s9lsXr8GR=oRbdL8?1V&8~Z#?@GTdwgrEWHM~o2Gbu$&A7Wx|K^k)7jV(Hh`oBv81L=5`M3ZkF(>!)wKg*hv*vB$hx7h) znH(>=m)2xzF%(+WxsJ_-N3tpG!wvZvmPgFCNBi3wa`dEmHpy;fU7kd7nOxLO7LnW+ zJ|D_wB*XoAeXo^4@sqy2sXV1-(rjg&M!w7=9!ZJ@l~2~Cm0Rwmn@TO+6+5(bq3c_r z6P}ep&@L0-)IA;+F#x@ksWkY9%S*Nex3|30w_*F!W#dX$g-iCYR7wuUdG)rtd)ce) zEqVi&wOT8$3zqYi9g&H*@6Vod*ngPQduQy%1mANGF~a#aI`0F1 zR`>IUTc2mV>(P2fdz+(a7}#uju!BENrQld@#p6A8Qv&jfrSWT~^S3D#d@8qM443CI zqP#x0&fzY;XIxrtBYkX1=n1265f!#-$do{UaPtNHk|M3m;tFEZ3m9}3w)xA>Fvf|{+Ee!=bCMrIkW)e;esY1%&Kpb}pDoU3?Elt+eiBtMf@^Z*>+@rc}?B%Ooo{YcR z>uzy~$)}+=%$mAI>TQK7y&0KKjaQN{&gq8QsGF49tx^d#syvv(QAD{g#8xd}kIkty3cTw|Q-4R`9e^<`decOF@6_?fWdWEN(Df1e| zjoUZpa`L}S+$~$#QFm#=*6V-+Pk(B0t^n1~Bf_VPbghT=ng5oy_f&{6TOS)U^!Hyf zbWREx+DBXERz3gFP;nP!ZMVThM^r#y@cnI+So|G(j~?CFI$WISpVGrt1pzXp<>{Gg zzx^(hix5)x7dN_I`eIk+`Bfp>_gK*WuL>`2jJS+{u~r+38yp^d;MuI$*gM!!xFJga z9PmBv^{z&rRVhRHU$inAZWVvtkh=DKRCDO^w#H+F35!kpe`hzro|Rr!57q3PD8&?zCS&jb@UY>rpjui9gZBL>`V_4*3aE)uj6hQ(mtD z!s8beT>=6w%33FEQf?d4j})dw=s6VhbPE{o&s3aqG=5@aY7D$ zG*GC*qN90n@`>Irux}4A|(;t9;oiwT{;jdvM->T@)L!?FccsPX8;q_ z!Lb6&@DebpXaa0XZfP8o1{gZK5p2)TPerb!T3A~C?$!6$y7H87=)*H^mFUoDsP=_G4-+Z2MG!KLYKVZ3LU#=HdY8n$2-Eqxjlm^gk?})UO$5$V zm4~X7tSlEaoYj{UAA=#KpA2!GHIRYF1t@)cT%AuGo}dZR-<@3SDZ=8WvnEd2|#V z@}5$l!5)CSx32wiCn)3(uR7!zz*U8y$n4kMFx-fH1O>{vJqMl}kRTImtDu5icxI;T zA@jISPVk!|^qA0K9138U?j|&IlGOt{bie2IF0}Tg)~1XHaT+VHVcb;n*)O zfhz!sP#b&h$0}zWf($;!3RAWj>FFHO*ErE&tB&aE>c-r;!%N-V>aR>#n1mLJ-t8&W zLP}6gkrRgu54#Z)5dw!FDqaJoy%=GlmU>GV8X2Xuk38_`PzI@h6`Zu@+*KMO9Uk@F zWydxi|7bb|Kq%!6FalMD?YtL3E+tZ~()qCp(zsj}N|P??GO8|O2VcCPcf6-Ut){k? z{0|YAL1T2nsi}b>%+0nHUQ7c&IW{NvDR_6PFl@IB{UiGp{~9#UHC+KYYFX>WK3ax*V`_+S1oj zezvkSsNh8cjluk&#MiC6-!x+I*}!DW#b9LMHlcz(l=57xUd9N0f{yYnfSfvXdNR6mg*94x6Ai?kDA_Eja0(9qu0^pypnHXI}r z$G^V}re|kA1sZ_triN_-4SF|SI$a!?_=^BAJ3?ao@%8=a!YmV>-x+R4YyuVSN`ter zH$c`e4hxv*ZC{0fND0N(?CRf?_dknfV`0%sF;&m%d@pW%dIzQp)Y1pUan%?v>L*5p z7pLy;kO2P-Q}n1)&hwaG_w9QCXsAa|xd61)ZKp$Ra>5`l!a@OjD1z%Q38f-z5Iq~& zkql215omeSuDS13Fi!3&@EJ6efRTWy%<>v=T|yE1xX^duA=gX{)SgGq(9SUDf^`Z% zjwKGR;JWskD_wzeX9_;m2zMR`;uSW}uB06CPtCcS8d~2YPbk*>IIxa$7JynlF)?{S zhj+DnI^LYKS;O3UJ{%mcH!c-`{Bx0?DJdzra{c-mL^8$Z45cE`1oj`@t2eheUO-H| zBejNPxlP=`B+`3^{qLGv=KtScHWO`ZXb9dTT??Ap$I(oR`q9m@;ErAbK;Yp8AIKVc`n_0a4Ffp%7zr^w<-WBLMNB~3oU&Fdp9q)%+#!e@ ziA|e+!GQ9Ebk-}&j{&mDE*DeC85NB{ zcP30pa4;d{Vz)eNhPh4NmN#^zhyImsz9;lnwn%*`g3cipAXri=P#|P$Jv|mx&+c%L z6U@!clM4!7&6Q&s#rq)2h9SY=%k6w=+P?>Yt~(4`ZD3}^+=@CslyUwdO~>8MLWDi= z`E%5hZ-a_{pb-&-U3_6EjSghMO{82htKrK-_LQulI!%R)j&DDpwO8()Ol3V9KrsgPI`#DX#MTBv@|GD@xN;LSe6${SG zQv`sBR0=2`;*VrzWyRdSeG%+`P|E=Rq#>}k4MnfiI14Vj1aiHDg9GS}?C_a!+@}xc zDe1jQk&s&JV3ii!0{L9IAM;KO5DW?UIt9#()!~}S>Nv*f8@oa0-benk(9RO)4RQEr zA#4*jrMA0-0c)mB#eQB|Nd(U#6FOeb+8U>YhjhdLY606*@(gl z>H(aIL|6<~4j!I*fO00@I7ibclRMj^KyDG2l41r7!81Pr87)E6mkUUZ?3r%VDlK^j zc5FEC_|Z;Z=OrXon2F*LR4}QMoko(X=~cMToUWf~+SuVGB+=H5`9dZv#yIaITtGkHAjk0?WLi~V!dEhtcgo>yBa*?wTS@?{xZ%W!GiX2#rXA3VaSNqk1f^3xz(MXu_pO7HOnHVoyIYQKz!S2XSWg^uVM`=NDkG>(_sg8@P!ncXZPxtSjhX<_778b;i z=i&5@=eYSp4xlsAGc#)->hmge$ZJmpZR5mZ99{$u9+4TdtehNie#0Ok7JIN~XlQEM>Eok3 zb?S6#-fOoaDwz2HK!N|z-z3Al*flXC{Prb`mu?fx47{@tQr>H7icqFDHWyLo^@F;` zN|7R|uC9)F^6&`=uxgDm?lW7j%Jc9y99KOE8z_Fv9TA7X$(^BLVTAWb1+O)V?H`OgP>)eU z7!suI1BgH#PI4>fyw*s%aliPHj5c}D{<8!-ZtzD_(|N-*x8uMy`JNDn2v0y!tasc% zStJT$+$r_Nv-)}+g&}`$z4uA~erfm-Qo6Z+&Yi#i*~ZN#)*#xHO5xA$ohEv@I`p&u E0UjRX0ssI2 literal 47025 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 j5l~Gg`sFxMKOF@4KJT-r@ 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 Date: Mon, 2 Aug 2021 00:37:36 +0000 Subject: [PATCH 0665/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 54 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 30 Performance From 3a3b595f0c1bb9ee0702ee7aafa49d6399625b29 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 2 Aug 2021 01:50:55 +0000 Subject: [PATCH 0666/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 262150313b..b8fa6ee13a 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Check out my first 3D mobile game, Paddle Pong! I'd appreciate any feedback for improvement.](https://www.reddit.com/r/androiddev/comments/ovi769/check_out_my_first_3d_mobile_game_paddle_pong_id/) -- [Rekeying for app that’s already deployed](https://www.reddit.com/r/androiddev/comments/ovgq2r/rekeying_for_app_thats_already_deployed/) -- [Custom generated keystore file and sensitive keys included](https://www.reddit.com/r/androiddev/comments/ovg3i0/custom_generated_keystore_file_and_sensitive_keys/) -- [Opensource Education Augmented Reality App | HucreAR](https://www.reddit.com/r/androiddev/comments/oveglo/opensource_education_augmented_reality_app_hucrear/) -- [Camera Library](https://www.reddit.com/r/androiddev/comments/ovdyfs/camera_library/) -- [What's the difference between a normal view and an AppCompat view?](https://www.reddit.com/r/androiddev/comments/ovbyn9/whats_the_difference_between_a_normal_view_and_an/) -- [App flagged for Ads](https://www.reddit.com/r/androiddev/comments/ovavba/app_flagged_for_ads/) -- [Upload Android Bundle now users cannot update](https://www.reddit.com/r/androiddev/comments/ov9917/upload_android_bundle_now_users_cannot_update/) -- [What is considered as a "compact" phone today?](https://www.reddit.com/r/androiddev/comments/ov8x3r/what_is_considered_as_a_compact_phone_today/) -- [[Question] Getting started with Android for experienced front end engineers?](https://www.reddit.com/r/androiddev/comments/ov8tdt/question_getting_started_with_android_for/) +- [Has anyone made a personal mobile app for their portfolio before?](https://www.reddit.com/r/androiddev/comments/ow3iko/has_anyone_made_a_personal_mobile_app_for_their/) +- [Android Studio Emulator in Windows 11](https://www.reddit.com/r/androiddev/comments/ovz4g2/android_studio_emulator_in_windows_11/) +- [[XP Sharing] Have you ever worked on a project with the Bazel build tool instead of Gradle?](https://www.reddit.com/r/androiddev/comments/ovz294/xp_sharing_have_you_ever_worked_on_a_project_with/) +- [What are the architecture guidelines when developing an SDK?](https://www.reddit.com/r/androiddev/comments/ovw2ua/what_are_the_architecture_guidelines_when/) +- [Dropbox StoreBuilder API - why to use it?](https://www.reddit.com/r/androiddev/comments/ovuoxb/dropbox_storebuilder_api_why_to_use_it/) +- [As an app developer, what's the one thing you have the most difficulty with?](https://www.reddit.com/r/androiddev/comments/ovuda9/as_an_app_developer_whats_the_one_thing_you_have/) +- [Introduction to Dagger dependency injection [Free course]](https://www.reddit.com/r/androiddev/comments/ovtgjp/introduction_to_dagger_dependency_injection_free/) +- [Stop other media players like music player, spotify or youtube, etc](https://www.reddit.com/r/androiddev/comments/ovsm3e/stop_other_media_players_like_music_player/) +- [Jetpack Compose: Where is the Documentation?](https://www.reddit.com/r/androiddev/comments/ovr0b3/jetpack_compose_where_is_the_documentation/) +- [Showing the toast message in the proper language from resources.](https://www.reddit.com/r/androiddev/comments/ovolqt/showing_the_toast_message_in_the_proper_language/) ### *InfoWorld posts* From 9f0f3d68b98fa7057ee442c69fcb29ce15036731 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 3 Aug 2021 00:42:18 +0000 Subject: [PATCH 0667/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 56 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..dd34d2c32c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 36 Performance From 73f96327158e3f53b2e6e78d14386fc44e0e3524 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 3 Aug 2021 01:58:03 +0000 Subject: [PATCH 0668/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b8fa6ee13a..5874dd2e1a 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Has anyone made a personal mobile app for their portfolio before?](https://www.reddit.com/r/androiddev/comments/ow3iko/has_anyone_made_a_personal_mobile_app_for_their/) -- [Android Studio Emulator in Windows 11](https://www.reddit.com/r/androiddev/comments/ovz4g2/android_studio_emulator_in_windows_11/) -- [[XP Sharing] Have you ever worked on a project with the Bazel build tool instead of Gradle?](https://www.reddit.com/r/androiddev/comments/ovz294/xp_sharing_have_you_ever_worked_on_a_project_with/) -- [What are the architecture guidelines when developing an SDK?](https://www.reddit.com/r/androiddev/comments/ovw2ua/what_are_the_architecture_guidelines_when/) -- [Dropbox StoreBuilder API - why to use it?](https://www.reddit.com/r/androiddev/comments/ovuoxb/dropbox_storebuilder_api_why_to_use_it/) -- [As an app developer, what's the one thing you have the most difficulty with?](https://www.reddit.com/r/androiddev/comments/ovuda9/as_an_app_developer_whats_the_one_thing_you_have/) -- [Introduction to Dagger dependency injection [Free course]](https://www.reddit.com/r/androiddev/comments/ovtgjp/introduction_to_dagger_dependency_injection_free/) -- [Stop other media players like music player, spotify or youtube, etc](https://www.reddit.com/r/androiddev/comments/ovsm3e/stop_other_media_players_like_music_player/) -- [Jetpack Compose: Where is the Documentation?](https://www.reddit.com/r/androiddev/comments/ovr0b3/jetpack_compose_where_is_the_documentation/) -- [Showing the toast message in the proper language from resources.](https://www.reddit.com/r/androiddev/comments/ovolqt/showing_the_toast_message_in_the_proper_language/) +- [Firebase auth not working!](https://www.reddit.com/r/androiddev/comments/owt9px/firebase_auth_not_working/) +- [Where to go from here?](https://www.reddit.com/r/androiddev/comments/owsudr/where_to_go_from_here/) +- [Looking for a bit of guidance on architecture of a project.](https://www.reddit.com/r/androiddev/comments/own7ss/looking_for_a_bit_of_guidance_on_architecture_of/) +- [Full Stack Mobile Application Development - Master Class - free course from 48Hrs](https://www.reddit.com/r/androiddev/comments/own3xa/full_stack_mobile_application_development_master/) +- [WorkManager setExpedited (new method instead of foreground service)](https://www.reddit.com/r/androiddev/comments/owmzwt/workmanager_setexpedited_new_method_instead_of/) +- [A few questions on Work Profile and how does it work](https://www.reddit.com/r/androiddev/comments/owmuyf/a_few_questions_on_work_profile_and_how_does_it/) +- [What does it mean for apps like reddit to have nearby device permission?](https://www.reddit.com/r/androiddev/comments/owlr2v/what_does_it_mean_for_apps_like_reddit_to_have/) +- [Accenture Andriod Apprenticeship](https://www.reddit.com/r/androiddev/comments/owj065/accenture_andriod_apprenticeship/) +- [Ffmpeg Library](https://www.reddit.com/r/androiddev/comments/owik2f/ffmpeg_library/) +- [Am I too slow on Jetpack Compose codelabs?](https://www.reddit.com/r/androiddev/comments/owihfc/am_i_too_slow_on_jetpack_compose_codelabs/) ### *InfoWorld posts* From 8c839b70d3c2ffd659674590bd03d7aa995f6d5d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 4 Aug 2021 00:36:08 +0000 Subject: [PATCH 0669/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..8fb0643046 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index dd34d2c32c..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 31 Performance From d18a2f9d07661d05c09b2edd7f369e7b24ee521d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 4 Aug 2021 01:51:32 +0000 Subject: [PATCH 0670/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5874dd2e1a..c058d408cc 100644 --- a/README.md +++ b/README.md @@ -248,16 +248,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Firebase auth not working!](https://www.reddit.com/r/androiddev/comments/owt9px/firebase_auth_not_working/) -- [Where to go from here?](https://www.reddit.com/r/androiddev/comments/owsudr/where_to_go_from_here/) -- [Looking for a bit of guidance on architecture of a project.](https://www.reddit.com/r/androiddev/comments/own7ss/looking_for_a_bit_of_guidance_on_architecture_of/) -- [Full Stack Mobile Application Development - Master Class - free course from 48Hrs](https://www.reddit.com/r/androiddev/comments/own3xa/full_stack_mobile_application_development_master/) -- [WorkManager setExpedited (new method instead of foreground service)](https://www.reddit.com/r/androiddev/comments/owmzwt/workmanager_setexpedited_new_method_instead_of/) -- [A few questions on Work Profile and how does it work](https://www.reddit.com/r/androiddev/comments/owmuyf/a_few_questions_on_work_profile_and_how_does_it/) -- [What does it mean for apps like reddit to have nearby device permission?](https://www.reddit.com/r/androiddev/comments/owlr2v/what_does_it_mean_for_apps_like_reddit_to_have/) -- [Accenture Andriod Apprenticeship](https://www.reddit.com/r/androiddev/comments/owj065/accenture_andriod_apprenticeship/) -- [Ffmpeg Library](https://www.reddit.com/r/androiddev/comments/owik2f/ffmpeg_library/) -- [Am I too slow on Jetpack Compose codelabs?](https://www.reddit.com/r/androiddev/comments/owihfc/am_i_too_slow_on_jetpack_compose_codelabs/) +- [How would one go about bypassing this? How does the app recognise the device?](https://www.reddit.com/r/androiddev/comments/oxeq70/how_would_one_go_about_bypassing_this_how_does/) +- [Terms of Service and Privacy Policy question](https://www.reddit.com/r/androiddev/comments/oxadqs/terms_of_service_and_privacy_policy_question/) +- [Re-writing the AOSP Calendar App in Kotlin](https://www.reddit.com/r/androiddev/comments/ox80pk/rewriting_the_aosp_calendar_app_in_kotlin/) +- [Kiwi: An Auto-scroller Adventure Game!](https://www.reddit.com/r/androiddev/comments/ox7x7s/kiwi_an_autoscroller_adventure_game/) +- [Accessing chrome content provider](https://www.reddit.com/r/androiddev/comments/ox3te5/accessing_chrome_content_provider/) +- [Weekly Questions Thread - August 03, 2021](https://www.reddit.com/r/androiddev/comments/ox2z27/weekly_questions_thread_august_03_2021/) +- [How to make a custom SeekBar?](https://www.reddit.com/r/androiddev/comments/ox2sv0/how_to_make_a_custom_seekbar/) +- [AppSweep, mobile application scanning for developers](https://www.reddit.com/r/androiddev/comments/ox2go5/appsweep_mobile_application_scanning_for/) +- [Android Integrated Softphone](https://www.reddit.com/r/androiddev/comments/ox248r/android_integrated_softphone/) +- [Viewmodels, delays and lifecycle problems](https://www.reddit.com/r/androiddev/comments/ox1nz3/viewmodels_delays_and_lifecycle_problems/) ### *InfoWorld posts* From 3cfc195bc5acd6277d9e1842469c8ca0ab9e18d2 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Wed, 4 Aug 2021 14:44:11 +0300 Subject: [PATCH 0671/2080] Added info on workflows Updates on github-actions --- CHANGELOG.md | 2 +- README.md | 56 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e01ac2b7a8..9044fd7d53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-07-05) +# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-08-04) diff --git a/README.md b/README.md index fd835813d9..c5c5916062 100644 --- a/README.md +++ b/README.md @@ -41,29 +41,31 @@ ## 🎹 *Table of contents* - * [Android Design Patterns](#android-design-patterns) - * [Table of contents](#-table-of-contents) - * [Summary](#-summary) - * [Documentation](#-documentation) - * [Statistics](#-statistics) - * [Versioning](#-versioning) - * [Authors](#-authors) - * [Contributing](#-contributing) - * [Visitor stats](#-visitor-stats) - * [Licensing](#-licensing) - * [Development Support](#-development-support) - * [Acknowledgement](#-acknowledgement) - * [OpenGraph Card](#-opengraph-card) - * [Feeds and Podcasts](#-feeds-and-podcasts) - * [Reddit posts](#reddit-posts) - * [InfoWorld posts](#infoworld-posts) - * [RedHat posts](#redhat-posts) - * [Android Authority posts](#android-authority-posts) - * [Android Arsenal posts](#android-arsenal-posts) - * [Medium posts](#medium-posts) - * [Gizmodo posts](#gizmodo-posts) - * [Mobile Dev Memo posts](#mobile-dev-memo-posts) - * [Infinum posts](#infinum-posts) + +- [Android Design Patterns](#android-design-patterns) + - [Table of contents](#-table-of-contents) + - [Summary](#-summary) + - [Documentation](#-documentation) + - [Statistics](#-statistics) + - [Versioning](#-versioning) + - [Authors](#-authors) + - [Contributing](#-contributing) + - [Visitor stats](#-visitor-stats) + - [Licensing](#-licensing) + - [Development Support](#-development-support) + - [Acknowledgement](#-acknowledgement) + - [OpenGraph Card](#-opengraph-card) + - [Feeds and Podcasts](#-feeds-and-podcasts) + - [Reddit posts](#reddit-posts) + - [InfoWorld posts](#infoworld-posts) + - [RedHat posts](#redhat-posts) + - [Android Authority posts](#android-authority-posts) + - [Android Arsenal posts](#android-arsenal-posts) + - [Medium posts](#medium-posts) + - [Gizmodo posts](#gizmodo-posts) + - [Mobile Dev Memo posts](#mobile-dev-memo-posts) + - [Infinum posts](#infinum-posts) + ## ☝ *Summary* @@ -237,6 +239,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) [![Stargazers repo roster for @AlexRogalskiy/android-patterns](https://reporoster.com/stars/AlexRogalskiy/android-patterns)][stars] +[![Stargazers over time](https://starchart.cc/AlexRogalskiy/android-patterns.svg)][stars_chart] + ## 📎 *OpenGraph Card*

@@ -248,6 +252,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* + - [How to improve my sudoku app](https://www.reddit.com/r/androiddev/comments/odwrrt/how_to_improve_my_sudoku_app/) - [Android-programming a "simple" website](https://www.reddit.com/r/androiddev/comments/odvws9/androidprogramming_a_simple_website/) - [I've been working on this Lottie animation editor to edit and export Lottie animations (supported by Android) without After Effects! A lot of people on here have given super useful feedback so far and here's the UI update I'm implementing based on it. Feel free to sign up on lottielab.io. Thanks!](https://www.reddit.com/r/androiddev/comments/odup0o/ive_been_working_on_this_lottie_animation_editor/) @@ -258,11 +263,13 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Can I become an Android developer? How long will it take?](https://www.reddit.com/r/androiddev/comments/odqfru/can_i_become_an_android_developer_how_long_will/) - [Gradle peace in multi module projects](https://www.reddit.com/r/androiddev/comments/odqe1b/gradle_peace_in_multi_module_projects/) - [What should I add in the ”what's new" section for the first release in play store?](https://www.reddit.com/r/androiddev/comments/odp731/what_should_i_add_in_the_whats_new_section_for/) + ### *InfoWorld posts* + - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) - [NativeScript 8.0 shines on Apple M1, Webpack](https://www.infoworld.com/article/3614852/nativescript-80-shines-on-apple-m1-webpack.html#tk.rss_android) - [Google Android team embraces Rust for Android OS development](https://www.infoworld.com/article/3614591/google-android-team-embraces-rust-for-android-os-development.html#tk.rss_android) @@ -273,6 +280,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - [Android Studio improves machine learning support](https://www.infoworld.com/article/3584465/android-studio-improves-machine-learning-support.html#tk.rss_android) - [Kotlin mobile SDK shares code across Android, iOS](https://www.infoworld.com/article/3574076/kotlin-mobile-sdk-shares-code-across-android-ios.html#tk.rss_android) + ### *RedHat posts* @@ -402,6 +410,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) [stars]: https://github.com/AlexRogalskiy/android-patterns/stargazers +[stars_chart]: https://starchart.cc/AlexRogalskiy/android-patterns + [contributors]: https://github.com/AlexRogalskiy/android-patterns/graphs/contributors [docs]: https://alexander-rogalsky.gitbook.io/android-patterns/ From 4453e30fdd5de23efd9046832a0e82898d7bad53 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Wed, 4 Aug 2021 11:49:06 +0000 Subject: [PATCH 0672/2080] Auto update markdown TOC --- README.md | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 3ea3e93b9a..5b0dc07773 100644 --- a/README.md +++ b/README.md @@ -41,31 +41,29 @@ ## 🎹 *Table of contents* - -- [Android Design Patterns](#android-design-patterns) - - [Table of contents](#-table-of-contents) - - [Summary](#-summary) - - [Documentation](#-documentation) - - [Statistics](#-statistics) - - [Versioning](#-versioning) - - [Authors](#-authors) - - [Contributing](#-contributing) - - [Visitor stats](#-visitor-stats) - - [Licensing](#-licensing) - - [Development Support](#-development-support) - - [Acknowledgement](#-acknowledgement) - - [OpenGraph Card](#-opengraph-card) - - [Feeds and Podcasts](#-feeds-and-podcasts) - - [Reddit posts](#reddit-posts) - - [InfoWorld posts](#infoworld-posts) - - [RedHat posts](#redhat-posts) - - [Android Authority posts](#android-authority-posts) - - [Android Arsenal posts](#android-arsenal-posts) - - [Medium posts](#medium-posts) - - [Gizmodo posts](#gizmodo-posts) - - [Mobile Dev Memo posts](#mobile-dev-memo-posts) - - [Infinum posts](#infinum-posts) - + * [Android Design Patterns](#android-design-patterns) + * [Table of contents](#-table-of-contents) + * [Summary](#-summary) + * [Documentation](#-documentation) + * [Statistics](#-statistics) + * [Versioning](#-versioning) + * [Authors](#-authors) + * [Contributing](#-contributing) + * [Visitor stats](#-visitor-stats) + * [Licensing](#-licensing) + * [Development Support](#-development-support) + * [Acknowledgement](#-acknowledgement) + * [OpenGraph Card](#-opengraph-card) + * [Feeds and Podcasts](#-feeds-and-podcasts) + * [Reddit posts](#reddit-posts) + * [InfoWorld posts](#infoworld-posts) + * [RedHat posts](#redhat-posts) + * [Android Authority posts](#android-authority-posts) + * [Android Arsenal posts](#android-arsenal-posts) + * [Medium posts](#medium-posts) + * [Gizmodo posts](#gizmodo-posts) + * [Mobile Dev Memo posts](#mobile-dev-memo-posts) + * [Infinum posts](#infinum-posts) ## ☝ *Summary* From f404f464678903aed03831f729e146413772838e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 5 Aug 2021 00:38:20 +0000 Subject: [PATCH 0673/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8fb0643046..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 51 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 25 Performance From 047c743eb5fbe2ee7d3a96a2aab06349bde3ebf7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 5 Aug 2021 01:48:32 +0000 Subject: [PATCH 0674/2080] Updated with the latest blog posts --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5b0dc07773..4cc8b288a9 100644 --- a/README.md +++ b/README.md @@ -250,18 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* - -- [How would one go about bypassing this? How does the app recognise the device?](https://www.reddit.com/r/androiddev/comments/oxeq70/how_would_one_go_about_bypassing_this_how_does/) -- [Terms of Service and Privacy Policy question](https://www.reddit.com/r/androiddev/comments/oxadqs/terms_of_service_and_privacy_policy_question/) -- [Re-writing the AOSP Calendar App in Kotlin](https://www.reddit.com/r/androiddev/comments/ox80pk/rewriting_the_aosp_calendar_app_in_kotlin/) -- [Kiwi: An Auto-scroller Adventure Game!](https://www.reddit.com/r/androiddev/comments/ox7x7s/kiwi_an_autoscroller_adventure_game/) -- [Accessing chrome content provider](https://www.reddit.com/r/androiddev/comments/ox3te5/accessing_chrome_content_provider/) -- [Weekly Questions Thread - August 03, 2021](https://www.reddit.com/r/androiddev/comments/ox2z27/weekly_questions_thread_august\_03\_2021/) -- [How to make a custom SeekBar?](https://www.reddit.com/r/androiddev/comments/ox2sv0/how_to_make_a_custom_seekbar/) -- [AppSweep, mobile application scanning for developers](https://www.reddit.com/r/androiddev/comments/ox2go5/appsweep_mobile_application_scanning_for/) -- [Android Integrated Softphone](https://www.reddit.com/r/androiddev/comments/ox248r/android_integrated_softphone/) -- [Viewmodels, delays and lifecycle problems](https://www.reddit.com/r/androiddev/comments/ox1nz3/viewmodels_delays_and_lifecycle_problems/) - +- [How do I fix this (moto G7)](https://www.reddit.com/r/androiddev/comments/oy6dvp/how_do_i_fix_this_moto_g7/) +- [Is it ok to deny taking the lead on future projects?](https://www.reddit.com/r/androiddev/comments/oy66ew/is_it_ok_to_deny_taking_the_lead_on_future/) +- [Hey all. Does anyone here know what are the implementations to be added to be able to use Room and lifeCycle in the last version of Android Studio? (- Arctic Fox - 2020.3.1) . Thx!](https://www.reddit.com/r/androiddev/comments/oy4y7b/hey_all_does_anyone_here_know_what_are_the/) +- [[June 2021] App Millionaire](https://www.reddit.com/r/androiddev/comments/oy4vts/june_2021_app_millionaire/) +- [What's the best way to create app files that is visible to the users?](https://www.reddit.com/r/androiddev/comments/oy1cin/whats_the_best_way_to_create_app_files_that_is/) +- [We just released an Open Source Android base project using Jetpack Compose!](https://www.reddit.com/r/androiddev/comments/oxzyg4/we_just_released_an_open_source_android_base/) +- [Is there any way at all to artificially send touch events to an application without rooting my phone or connecting it to a PC?](https://www.reddit.com/r/androiddev/comments/oxzq9y/is_there_any_way_at_all_to_artificially_send/) +- [Combining Room 2.4.0 with Jetpack Paging v3 using Clean Architecture](https://www.reddit.com/r/androiddev/comments/oxyn9z/combining_room_240_with_jetpack_paging_v3_using/) +- [Nested Recyclerview Alternative](https://www.reddit.com/r/androiddev/comments/oxy4xw/nested_recyclerview_alternative/) +- [Looking for advertising alternative for revenue](https://www.reddit.com/r/androiddev/comments/oxub7f/looking_for_advertising_alternative_for_revenue/) ### *InfoWorld posts* From 4e2d18bf841a32c015336fa6270426151b8605aa Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 5 Aug 2021 01:48:34 +0000 Subject: [PATCH 0675/2080] Updated with the latest blog posts --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 4cc8b288a9..60ae24850b 100644 --- a/README.md +++ b/README.md @@ -265,7 +265,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* - - [Jetpack Compose for Android turns GA](https://www.infoworld.com/article/3627298/jetpack-compose-for-android-turns-ga.html#tk.rss_android) - [Microsoft sunsets Xamarin toolkit](https://www.infoworld.com/article/3626453/microsoft-sunsets-xamarin-toolkit.html#tk.rss_android) - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) @@ -276,7 +275,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) - [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) - ### *RedHat posts* From 6f492516baa5bbcf244a67f5b58a62ff599ff017 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 6 Aug 2021 00:39:28 +0000 Subject: [PATCH 0676/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 255 insertions(+), 255 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 53 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 25 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From b1b7bb451252aad346eedb7de03be826293d736e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 6 Aug 2021 01:50:51 +0000 Subject: [PATCH 0677/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 60ae24850b..ed618e8627 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do I fix this (moto G7)](https://www.reddit.com/r/androiddev/comments/oy6dvp/how_do_i_fix_this_moto_g7/) -- [Is it ok to deny taking the lead on future projects?](https://www.reddit.com/r/androiddev/comments/oy66ew/is_it_ok_to_deny_taking_the_lead_on_future/) -- [Hey all. Does anyone here know what are the implementations to be added to be able to use Room and lifeCycle in the last version of Android Studio? (- Arctic Fox - 2020.3.1) . Thx!](https://www.reddit.com/r/androiddev/comments/oy4y7b/hey_all_does_anyone_here_know_what_are_the/) -- [[June 2021] App Millionaire](https://www.reddit.com/r/androiddev/comments/oy4vts/june_2021_app_millionaire/) -- [What's the best way to create app files that is visible to the users?](https://www.reddit.com/r/androiddev/comments/oy1cin/whats_the_best_way_to_create_app_files_that_is/) -- [We just released an Open Source Android base project using Jetpack Compose!](https://www.reddit.com/r/androiddev/comments/oxzyg4/we_just_released_an_open_source_android_base/) -- [Is there any way at all to artificially send touch events to an application without rooting my phone or connecting it to a PC?](https://www.reddit.com/r/androiddev/comments/oxzq9y/is_there_any_way_at_all_to_artificially_send/) -- [Combining Room 2.4.0 with Jetpack Paging v3 using Clean Architecture](https://www.reddit.com/r/androiddev/comments/oxyn9z/combining_room_240_with_jetpack_paging_v3_using/) -- [Nested Recyclerview Alternative](https://www.reddit.com/r/androiddev/comments/oxy4xw/nested_recyclerview_alternative/) -- [Looking for advertising alternative for revenue](https://www.reddit.com/r/androiddev/comments/oxub7f/looking_for_advertising_alternative_for_revenue/) +- [Question](https://www.reddit.com/r/androiddev/comments/oywnrc/question/) +- [disable pixels s10 plus](https://www.reddit.com/r/androiddev/comments/oytipi/disable_pixels_s10_plus/) +- [adding functionality on Dependent Spinner.](https://www.reddit.com/r/androiddev/comments/oynr6n/adding_functionality_on_dependent_spinner/) +- [Granting more permissions to Shell user](https://www.reddit.com/r/androiddev/comments/oyn1e6/granting_more_permissions_to_shell_user/) +- [Question about the new User Messaging Platform (UMP) SDK to obtain the user consent](https://www.reddit.com/r/androiddev/comments/oymm36/question_about_the_new_user_messaging_platform/) +- [Single events from ViewModel to UI in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oylh8u/single_events_from_viewmodel_to_ui_in_jetpack/) +- [Top Android MVI libraries in 2021](https://www.reddit.com/r/androiddev/comments/oyl1ld/top_android_mvi_libraries_in_2021/) +- [Animations in Navigation Compose](https://www.reddit.com/r/androiddev/comments/oykr2y/animations_in_navigation_compose/) +- [LottieFiles attribution](https://www.reddit.com/r/androiddev/comments/oyk1z6/lottiefiles_attribution/) +- [Allow application installation only if terms are accepted](https://www.reddit.com/r/androiddev/comments/oyjx39/allow_application_installation_only_if_terms_are/) ### *InfoWorld posts* From 8d635a59749ff9ebc27ccd9810ff0ab69cdbfd73 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 7 Aug 2021 00:34:21 +0000 Subject: [PATCH 0678/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 26 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From fd5c465d2e92d1c416f8e269bce420ef92b30516 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 7 Aug 2021 01:43:42 +0000 Subject: [PATCH 0679/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ed618e8627..f660966780 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Question](https://www.reddit.com/r/androiddev/comments/oywnrc/question/) -- [disable pixels s10 plus](https://www.reddit.com/r/androiddev/comments/oytipi/disable_pixels_s10_plus/) -- [adding functionality on Dependent Spinner.](https://www.reddit.com/r/androiddev/comments/oynr6n/adding_functionality_on_dependent_spinner/) -- [Granting more permissions to Shell user](https://www.reddit.com/r/androiddev/comments/oyn1e6/granting_more_permissions_to_shell_user/) -- [Question about the new User Messaging Platform (UMP) SDK to obtain the user consent](https://www.reddit.com/r/androiddev/comments/oymm36/question_about_the_new_user_messaging_platform/) -- [Single events from ViewModel to UI in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/oylh8u/single_events_from_viewmodel_to_ui_in_jetpack/) -- [Top Android MVI libraries in 2021](https://www.reddit.com/r/androiddev/comments/oyl1ld/top_android_mvi_libraries_in_2021/) -- [Animations in Navigation Compose](https://www.reddit.com/r/androiddev/comments/oykr2y/animations_in_navigation_compose/) -- [LottieFiles attribution](https://www.reddit.com/r/androiddev/comments/oyk1z6/lottiefiles_attribution/) -- [Allow application installation only if terms are accepted](https://www.reddit.com/r/androiddev/comments/oyjx39/allow_application_installation_only_if_terms_are/) +- [Drafting software for apps](https://www.reddit.com/r/androiddev/comments/ozj9vi/drafting_software_for_apps/) +- [My PM doesn't have an android device. Wants to test. What's the easiest way?](https://www.reddit.com/r/androiddev/comments/oziddy/my_pm_doesnt_have_an_android_device_wants_to_test/) +- [How do some developers get limited time events on Google Play? Is there a beta program for this?](https://www.reddit.com/r/androiddev/comments/ozga63/how_do_some_developers_get_limited_time_events_on/) +- [Send Email DIRECTLY from android app WITHOUT using intents](https://www.reddit.com/r/androiddev/comments/ozbpq7/send_email_directly_from_android_app_without/) +- [Our Google Developer Account has been terminated AGAIN](https://www.reddit.com/r/androiddev/comments/ozacmj/our_google_developer_account_has_been_terminated/) +- [Will tools:targetApi="q" affect app that are below API level Q?](https://www.reddit.com/r/androiddev/comments/oz9ttr/will_toolstargetapiq_affect_app_that_are_below/) +- [What are/is the best book(s) to learn Android Development ? (Preferably with Kotlin)](https://www.reddit.com/r/androiddev/comments/oz97kk/what_areis_the_best_books_to_learn_android/) +- [Weekly Anything Goes Thread - August 06, 2021](https://www.reddit.com/r/androiddev/comments/oz65mb/weekly_anything_goes_thread_august_06_2021/) +- [Top Android MVI libraries in 2021](https://www.reddit.com/r/androiddev/comments/oz5xn1/top_android_mvi_libraries_in_2021/) +- [How my app can access the screen time of other apps on android?](https://www.reddit.com/r/androiddev/comments/oz56wl/how_my_app_can_access_the_screen_time_of_other/) ### *InfoWorld posts* From 0b2ef3e6d2c16f263d12e85c827881c70a51beaa Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 8 Aug 2021 00:37:47 +0000 Subject: [PATCH 0680/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..44d47bda0e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 55 + + 42 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 29 Performance From bb90628f1d56343eb8e53288eeb39fa84ddfa86b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 8 Aug 2021 01:48:23 +0000 Subject: [PATCH 0681/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f660966780..e0a18306b9 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Drafting software for apps](https://www.reddit.com/r/androiddev/comments/ozj9vi/drafting_software_for_apps/) -- [My PM doesn't have an android device. Wants to test. What's the easiest way?](https://www.reddit.com/r/androiddev/comments/oziddy/my_pm_doesnt_have_an_android_device_wants_to_test/) -- [How do some developers get limited time events on Google Play? Is there a beta program for this?](https://www.reddit.com/r/androiddev/comments/ozga63/how_do_some_developers_get_limited_time_events_on/) -- [Send Email DIRECTLY from android app WITHOUT using intents](https://www.reddit.com/r/androiddev/comments/ozbpq7/send_email_directly_from_android_app_without/) -- [Our Google Developer Account has been terminated AGAIN](https://www.reddit.com/r/androiddev/comments/ozacmj/our_google_developer_account_has_been_terminated/) -- [Will tools:targetApi="q" affect app that are below API level Q?](https://www.reddit.com/r/androiddev/comments/oz9ttr/will_toolstargetapiq_affect_app_that_are_below/) -- [What are/is the best book(s) to learn Android Development ? (Preferably with Kotlin)](https://www.reddit.com/r/androiddev/comments/oz97kk/what_areis_the_best_books_to_learn_android/) -- [Weekly Anything Goes Thread - August 06, 2021](https://www.reddit.com/r/androiddev/comments/oz65mb/weekly_anything_goes_thread_august_06_2021/) -- [Top Android MVI libraries in 2021](https://www.reddit.com/r/androiddev/comments/oz5xn1/top_android_mvi_libraries_in_2021/) -- [How my app can access the screen time of other apps on android?](https://www.reddit.com/r/androiddev/comments/oz56wl/how_my_app_can_access_the_screen_time_of_other/) +- [What are some design patterns that enhance Android development?](https://www.reddit.com/r/androiddev/comments/p04zvy/what_are_some_design_patterns_that_enhance/) +- [Is this against the rules? And can it be done?](https://www.reddit.com/r/androiddev/comments/p030zd/is_this_against_the_rules_and_can_it_be_done/) +- [Is fedora good enough for development ?](https://www.reddit.com/r/androiddev/comments/p022ue/is_fedora_good_enough_for_development/) +- [Learn XML or jetpack compose ?](https://www.reddit.com/r/androiddev/comments/ozyqpu/learn_xml_or_jetpack_compose/) +- [Multibinding in Koin (almost like in Dagger 2)](https://www.reddit.com/r/androiddev/comments/ozxrlj/multibinding_in_koin_almost_like_in_dagger_2/) +- [Java or learn kotlin just to make 1 app?](https://www.reddit.com/r/androiddev/comments/ozwbyy/java_or_learn_kotlin_just_to_make_1_app/) +- [Jetpack compose Good Learning Resource or Course](https://www.reddit.com/r/androiddev/comments/ozu86g/jetpack_compose_good_learning_resource_or_course/) +- [Learning to 'Hack Android' with picoCTF](https://www.reddit.com/r/androiddev/comments/oztc8o/learning_to_hack_android_with_picoctf/) +- [App Feedback Thread - August 07, 2021](https://www.reddit.com/r/androiddev/comments/ozsteg/app_feedback_thread_august_07_2021/) +- [How do you build your structure project?](https://www.reddit.com/r/androiddev/comments/ozrsdn/how_do_you_build_your_structure_project/) ### *InfoWorld posts* From 1b729de85a2c5668fbb40a8f4a4aa2441ea297e0 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 8 Aug 2021 23:57:50 +0000 Subject: [PATCH 0682/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 46288 -> 47832 bytes traffic/views.csv | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 503c9bd4a9..11767a0589 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -42,4 +42,11 @@ _date,total_clones,unique_clones 2021-07-29,80,31 2021-07-30,157,35 2021-07-31,145,30 -2021-08-01,142,27 +2021-08-01,151,31 +2021-08-02,173,35 +2021-08-03,165,30 +2021-08-04,253,45 +2021-08-05,205,39 +2021-08-06,221,34 +2021-08-07,183,34 +2021-08-08,208,31 diff --git a/traffic/plots.png b/traffic/plots.png index 2a4bd2a10b22136361049a31e0b51a9487244a71..58a393f1c27e79f1e6fe10186b7affe4b1da8420 100644 GIT binary patch literal 47832 zcmd43WmHvf^e(#T6r>ReQA)bIOX-mA?rv$75S8xkmJ;di?(UTCZqB=ZXPo~%<9@iG zFAfJw_ugx-^}aKn`ONvO5JmY9FHnh4ArQz5sgL5y5D2V41Ol^)j0paRV{CB~{Nizu z&~W)=Z|34|=wu3!GjwsVv3IetGf~%`Z^y<6{?Na%aB*>P=4E2C{hv25+B=yu z^~TqvfRms&eAIM?KrjuVe_;xQ@+~2ddI>3U5fzV=gQd?NvgY@#r^m8a0@!mAFX1bW zJN53zn=NFDwf?G9{k7OVvyLrNTdCGl)lyZpDvqoEdnF)YQ_)EjATG*@J!hKC(;_4p z^pZl>jJ5Bvu2iQa(Rpj}Jca(6f8enIS3>EfC^C7#OT3`@Nf_vXDDp-Wydv}{>ucoy z&kicsT_NGp#Z%a?U;m7b#-WYvpIrOzn)&f1ls+mbMtTBt;fdMvG!gg5=O-)1av&RgPf&?-r9`L`gFXfk%Z^rju z+Afs>=TB6`4ZOMWP*zr!CHcY3R$5x>;pLUw7*s*wFPhM6{(9JnkzDurxQU>YEzg+& zN0K6dru6IP$ixJWmzP)cGYf%fdKQg|scB?F0N3kb;Z64U<_4q*OM zJDJ>g--7~?bT8@~IJ92fFp{xrjuTVrqY9HpK4nI5emXcjlp_vd{(!K;m6ygxi<0qD zGG~ld_TiBGz2;~3qP_N`9!qRuMDUykJue;S0IWJ@#je zE&ifDCabOOZmFUP9B&!OeWR_%X7+lQL!gMP#9QyO+a7>|BmGD$mdtL6&F6N&Y>ECa z6l_5ZtAx_cNm;axTwO?6G6@?ZJG~Re#}BU%@kPJC<>BS+|6vUm4X^lJx%#dbZ#w;Z zhjPjK!glhSiM8scBLbSpl}>F~7EL$060#D^FG7~DtE&cEgNfgyb47ENvGDLD92}TS zv}?M%yAjFA$d>({ea_C$$vna&vkf$=5x_0dw_;GlQTwJ~E3M#jtBo%Jg8yi&dw ztqTJCql0DRKH;`XP1tT~_&OuKgaKG^kwX>{NBtsj(6jYH`DfY{BQ- zBNOF@VtESb7&}%(SBDGnSnnjuU3Qh*J32mJPN`Q^RhiEJwUkKPSX=v|R-CIt(O-aG|H#US|kBJ^jsQw8F*n)%CUc^V8$Q)BQ1} zJcLfQNIYH8N2AUuR}e<0((FYno%&V?bsEiCO5vw`R_kf{G~YYR$IFovo{p~wXoP~^ z+`9EHh7UKVIt^|wWMpK9!3#0(Kg~9IaT$02G6XyO*J=tC1PibMeIp~=yZPyPU@;)< zR+9zd$8E%YFUw!%ZVn7>bK}GZC4b|1e!YlWb+?v2YD${%vONJTjEth9VkT)P*vsh1 z$To02q#j4^D?T57;xn9_oV1ROMUweFMDFbDeE4C!Gn)AT_GNQ(6H-swyq)exT6MR~ zPRYg={gZ%+)oJr1F$u|~KAYL#>U!5t2)oVfOD-<1uiw7SRhnZCC2?%@QKwUIa}$nU zBD?L5BluIvC5?i;C*rW`%n&b8RS}g9Mzed|&77&nrpTlc~zkQ>SW% z>CXt~5KIZG=+ykSY3b@foOa?_O-%0 zZOxvv;EV?c2X_m+UlCVg1+CV8MKC2L1)Aa_w{eLlN_F{`JvLrE8Y48>hqq5p$K|K{ zCIJU|iG?KsVu$5&uopV>qTM$^)EmTesDW%~z+pAHy4vD5L{V_$`9!WRvk9kil=zUXR^qSX&<~66yDljHr z10$ppU?R-UTe8iMSK7nrLL+_A)S8VREYJ5V&lf!|yW@c%R65*USn|5;Wcb;1{lNQc zGlz|Yq|5U34GHt?b~_!1h)CMSh28JzmU^aC_Z>6yNyV~)CN*$s#JHG5nPxSSTv$x% zWbE{n!Z16+8+{NGULtZ@j#B`SEzoZfBqb%?{P(ZIaYGV=gjYP8N{*1t4E^1Qu+8jn z!TMvKv9Ynnt9fhw$BPO6>qY0kmJ>laIXR+DU&6DjXG&}9>Ku<2dGtKi0+C4htR`uE z?{=y2ne=3{B|~=>>)2%C=-;!OEEFic)6vzn1XdRo7Us_gGikwock2fMK;;2M_X`kJ zd0qET#y*g-fPip!v3ss@od5gNd$ams9tMUN1Ox=ipFTOd#Z5(J9dNsH#8Ph`b#?Rw zb&$C+o!-u{Ia%GgHbbhXF1S0K$v#xa@k7H9Yp zoJO|f3m?Z`zLxGV679`XaD8>#8n-am|D@VWn!KA*$QT@p4=ltUwJ8m*`l=lOz?5z? z9?=l+zH!Lx%gmQg&H4~dicZA7)4a{i$L9?0{jufer&eWT=g5dWI^$K{!PpjwU5$KJ z^Y!tY>vj%A_Tsw}9DuNX{Rj)o^L@O#_IVmiWV^Y&eZ}$?2Js_AfFHF?`CZ2|wZ@JNUo>WP8K3FX!DJifdj1q%6~YAmfPx9`IZTslFw z`6$PJU0of$esc=2zWXnJ<*cl%1$s@qzy!C3lFxyOOn_j6)a)iNAJ!~PvD4ibNb?ih zp3*;j0&X_TlhTHMiXv~@L6H1g{jz)zssb|kum17zsQD`EWL|Vff^Vg;dJS$2@87=% z34gu0XR<^)KHcvr(RF{i!u!_guNK4Me3h3)*C|Nq>+9=T&u5pH940%Wgt8CD!!YpW zRev(%J5x{W0zd2-687Rg?1G30A}`YFJSbWy%P@?YR-X2 z#qIFZ(b0hvDk(1B2^U^jQPI{d*>Cv$4-<)xd;C z?$e8l9Q_twN?wKRF^98FDQ|CYbi5xgsiLFH$a&ZZJQ{iYA+Aj+Ck}te`4k4m2LAaO zI|10-Z5#owSUmN|6=X!C2LehZGOtY?yVf3bGGafWzZ9rQiA#elcCXZnHUkPOn*>-9gPF+2zo8BHnZ zl?`(D!1VHsCqDM~wk;`bwV{&B<^$l;+10hSzHYRqC{4l07zRp~MCchaiv0r%b}lFl zbkL(Ap1gC)$7(NHo1iP)-ub(vr*4|>e6udk%y4H zbE8Np8*#<^TrRT*VBLNYV<1b4y9z>&ovmNsDr#z|-@Nf}d4AINvr!Uj1uok*GJ**Z z03rr)?{CdY2UpiAAt9qqWJGjA#hoM^D%lK~c*Z+F>nbg?;gpb;79lq`H+IYM01oSE z{)A&hO662NOhsF-Rawlhv7G!RrA2rKXa=z`)S!HQr=aBqxEy zNEku>LwKcRqr{0B0cx)OZzR4f%1(H{0+E3_-MbxR6CTHPc#xG$0nnhJrY87&(Dn`K z6^|3eMtA7O&FKdJX(!HL0!w!1ObU-P6}YW`!DPOx7rPU(Dcq3+`reVNtE)(9`D(?l zSWS@W)Jy3vZhqj=S*$b*OckrQY^O9f@&j-b2r5pn=Y}iIKHR*#;|=ciPR`DjqZu$q zM@M(o$8(kWqb)E1wOpbc0I0?7yoH|3X}f+fS2>t2l-?gp7hn70*HDIb8;a7{k{-NK zEorM7$6|T43Ql^QoVXDpj2?8aP386Qz3s9DY@eC%f0LkJIlYtoWzZWz4)K1v-S)me ztRd!g`M%ubwc>mL?qz4Gf$O;Wo)O}@H%U%G5ipd@MR4y4ay9hbHY?4k85wUNR@1-x zz$Y}z4PZcQ@LjzX3&t>={;etg;lsxEcCcEp=~R)b_r=%;3DV~U`4<8<9#&c!rJWkieM(ja&`|{<>on9-bn6PnhUa?y! zM)m{;24Z1heTj~ae$ukDvokR_-!Ge~b2fi`I}P4e?{-+EfQm^bD66MO3gR2m>g9~S zIk;nX+xZv(SmPriBCwnMK1GrWlcS3(;rd`^kZ(g^T?%v)1qezjx7#`Nc3163XYfS{ z{bQR-sfSf&7^$kXd`48F8XFtinaovdg9<_ARy-x>CMk&s0l*}~YN{wOjP9sC z6qxlNr+?DWGES{jN9uUF$1_7bFLbTH7Hz=Ljy?}}h;eP#1H+U}VE%$e!050w z_zFN3VGj@P2KVEw?$FoJHTCk+ZMfc@2p))Mssuoz+IB&*#%_s_&y8N+@6olwhzk!& zCq!JNc>i(Y@Hg~=!0;k^Fgt(Z2K6+E!EN2j0Q_djDixyhqHAmM^Yf!lZOO^VykliO zi_~WV@ep7ke9r?AEv|LWCksCXlJfaJ)C!LM2Ka`PlM~pBkW1~gFMufsf_FRb!iag= zL5=_w4cU>G&H2{Q?P1Nz$;CzI++1C+F+k_yxze!-EXIg($(&uF9snrwWaarO9@J{M zTCK__q`{bE!zXJUyR#MVqNx=a&rveaVbBcUAkg`z+A>sBa@u@V8(9eH593@MoN%~s z`XQpPjjZJ8ayTDrIuKW3K0+#=#@`1{P*Lu2v7&C@bcvtLWxusw*0R+eh&Gtab)0tV z2f{5SJ9`XBA5LrS2zm0US~TP?PEJPSIZ{yP*Y~{*1ZM7Zv7@v#oH_uETKP9OsDVTp z+ztsr03iwudVbgzx)yK)p+%)sC-Ld=z7l*h07g(JfPSZXsSb=wQ(7vos}aDJcP3?y z8{MGNDL3v36AjtxA@duocisQ~{W~x zmHyH-H^>4{kJtJS4-X!9yZI>S=q7+?0DeTUhjjqpCsC+mI;3dI3PgYa>D=*=XE^)R(@0DL7l@338g_hF*ou6n)eC{ z3Q)F;M6&LkSZjL*t^_&P^B7uCQsww8;*p*0!%{`HB2IGBP?vRLt{VwJKL3&_{M$3k zY`A4QEVa4ueL5yH31iiYBN9sYVc0Ji-?;y&tj>t_ql8>Zg9I>Y(`{s-}h?5)x8dUoSX~ zK_B!6C4>1pAU5eR^$=T^+LCexb>afVSuP6^slo=if3ZB53Hy+l`@AOm*({QrBw_Et z7(nwMLvlx<_MSp%Epkd&O6-V zL^O`^f1jaNY@y%4>KEMgXS>}M8U`}c3z<#TmmY~j;c zTnWR|W*SHk!c>NgE~b?iFLq=?8}zi}nKxcMNyXwmuo}D)8OPHst7@=>j;T^jdqn?| zM8A81JC8{e+7XQjkR`v{Y4b-&nw{PYb+0AV+5BYHj;`S!JDc=wLGjN# ztla?IQQH$}!}62Z+oHvr#8?9^nnnovK}sr~pSI@M5RW?D7mpim)A;C?he(U^F9+Bj z-@YW+pzwESAaJk`n1sUxp1~Rg`O$MG^AT4|f{U7=b)az6x#Me*ai$uU6H7>?qb1dk zQEu#C{75fdY%xxbZ}&~}$_s!;or4YZFnPsu`+!db*GhMIth=MsH5In}!c}G|eo>1; znbdUKvNkeT8^Pi?fc1a}Gc?Uyx9XS6ipqIY0_u}>K!Ec95em~G7vM`ziY3|6>B;Uj z)~l-`+$`Hrm+J3jF>>j4KAgsP;Ec1jM;?+dmmDOW zOM9VOrq_g&R_S?Z1sI25Kxu{&aToz~7ydeknYBdC5Ue@m-TaJj31dB~uXBqud*PNS zpr-XPC0?_LZq!vGW>mPt?Kt!>mqVk44&pA14FGO{@VhGmk#YHY7T}j4^jGb@k?(li z4hZ28(G6PtVN!Tq`(I`vze5r93+>%cArXG z0c0}=TnwmY2>V8A)UE_)#tD#;k!Em?7kZHts9$4GIM2G!4im1uQuQukgt=f}hmC-J zQN;bJZ~4cs6z{N}9Ky#tP+$*6i(t2c?4Stv94O)gF+L=$`B`xVWUO5P|1x_3gzWo7%~a3{k3sKgX)Fjvt{C#KjQQ_-P)HOSkbl&WMJ?3)^S%k3JebYn6`{Ji`rc%r zn7Fuj?y$SB_cICqod2D?cFe14(GD4A&_MsQ ztHNLLo=fH(fAlD|zkGK(9CE$q&nkZ6QQGq7s0&!&wI1BxsQq8PdZp9ofkj4^{x%&G z71gLGj3khBq1yH}U>$=nBnUOqBnQSHl^~7dZ7rRY3a~yYmf909Le&iCz6|8P%shSn zBWnd|c0pXg-@!|}){p7GHq`nWDIZJ?9qQGc!D1}PV=Qh#+y7&RkDa(~z~|5VNn{IelyP^g~(?$D4< zD0v54$ln8RyRF^j;KD6P`=RYx&YQo`E%7*jKLI8U<;wxQVf8pMSX^4-aae_rlGc-k z?Ce;quiM2xL0NTBPi+De1V~USP-X^!0(u+(l%5w7F@Msp_qL9jM)P<%Eo(PiLv~{4OozbU?c(u zx**kJHGz{`P^YY%&jON$klkW*Lr;rP32gI+>`&!?6iRzmG3ZaHKQdWa{{Aq84%uIV1gCK*`wkf~*ZYG5^;ItrY^d=JWnX`$&!Fb`XMU z&v<+J3ge-5!>68s$lp3Iip7SUty{jn9W|wdp`XP+@{mQfoZCuNK?8})2c)6rV+TqW6Fv~-N@c6o#u?t}3LmMIL^XqVj!}Z1gH|K+UiN2E?W}feKL;Xbu{5O@UFl+NUo{&Frcfq2NGu}Rs*1$`bIeb! z?evub7KfZv5?fd)XFw{^MyOb(SMo30;(B<)oR%hYPF1P9V?`nZ;(Hp{!!;A*leN>H zu{AXw!bBv{csp`o0zvX>D@LyY+<{QY?*B?iQH?FmRvg+CCXHS-GZy0@8kred*j29Hf zWK8Fe29nCyVi`6B1UtZwlXo^jKcnHii3)P>!&dSxs6KT);94c_c1A{7L^yu{e)3 zTZvBPA6i_uZeuN_)X|THXT(L z#GEO=IQFW@Bt%~w!TePO;7mK{OW;dUTsdsvOm{}XR39v<0@eE1x^6SmOfwC|7ZBg& z*MV6vhwY;%yMS6`RR$S==+3LYySe<>9}@|H34T%U%3pq>Ss*16Z}dT`FUOSqpI`aECU$cnaQHoUtUfJ2SIA zlWUNZ{u09-eN4&d*kt>4iz8D;6az&Dclt?MM%@t#D$V~kF%vY+SGSw$>)e>CO2R^O z14FXMcC|*L_l~Y|Ot;Us$BOeXwn=M#3dc7AuiCV+miVNv4!M&2$OJMgGKmy~t~Ps& zi<>n1YgJ$p!Tb$?$^undUEkd}AWM5DCDk^u0l+tOr$HFFvNCvu$QhbkM2$KOiU0J{&dgSz=QhCQQ!rIPK`RB!@7DECm2)nv z7`06=v^CdFth+Meru-K=CQT(ouq>QELXuUS+xn)XCX+v>#MrL=vfAk5_7%Vll}1?F z`)p*LOGW$sXC2?W9iDrAPrq}fmBSyaPReyf_Qs)EcuO=F%KjE z5GnzgljzYAP?Bs zrt=1NQVod;U{C}y!rF|SBizP((!z>4N^{1cMfICk68NW_x9;bL4s1#Zp~yTQ!GFD(Q^miL3R4sjVwZpW;P@DN3Tf^&smg~=1fm&Y}>1C5F$uL~g zcqSsm8UTKdfeY;}^;3~+MU9aIoqk-XO-I}F{&4=|>(L@fN?ZgC2`VQE>xj~BDd?abu1bHo6KxMQ&pp2;7A@H zBEqp$xP2%NHmN00lCAy|Lv(j`8H|SHHH1;x)g9?!@gPKgczrdOq8=gcFlQx&+RSd}LMzfivs{f&+m`LWzm zBn6H_(HdcegOY(Q`~Xl-8JzI=7Z%n_Z2^iBlb`Y3yKkV9+1THg0bPC`pS!=AVp!ME zlI$Gi6$qxx1-WH~9iM4He$>x7lj$`DI}EOL1#!5`8(X-xiLRIQ6(S?Yd(Apo4OjFM zSP;7Y}=iI2;aw;hHydXoyPx@cv z@8A{jzs4X+D0w`GM|b9#ZRpQ^QMlvsIGDL8J7`T_f}Oo`Gq0B2>71puTH7`o8RCEO z9ME;PH?F8PJUhHOW%%Irl+-6g4BB?VA~>y3Bi);P4+yWz){U=UzY=oV5CWPp*Li#R z0krBoJUq$`+P>bWv4Nhjj*iZSesi;F%XSg{kNUK}uoH2JPo}A}fwgHHT8V355t8yQbG!QyZo!`YEwi}PEIyx#&{nZ28=>ioLMO4Wq)FvMJT#QQU4=AgN( zQmj@YzOALHIrdwV?d{vQM_z+SWZuG7Rz**AR8(7zVx&x&yx8*=<(+uufopAO+8Zm-+Kp9J zE>vMZb^Vu3y^nL|tM2=HDUM*_ZVk*iDVs44VCa~ge0}`;d@L`x;1GnPu55CRMcyd@ z3JMk6K)_+1g1&x*^S1oMql})i`2TeDj=X+_hQ0vNAh21yFUNelV(YtI!ecCkY0bsJ zBN$j1FRM86$}zzD`5u=ZmL-_T-<^&I>D@Wx1vQ^Shjt6;J8FHId|uLD?CT?OS|wSa zscD98(V6+Y-_2C^cWVxR%HdB11t>=Xz24rAH2S#QdUEO8^Yqkt%=w5TXP(cZtj<;# zYc_lHfV!fyuP+3Q$*pf})O|j`dI?61I&MHIc=4PDXglp1yMLf_KrG-H18wmD(wq$t zyFD*H@V6dks`vKxQMXP+f}ycw-jok#XC+C2z}}(~?2^9L-Kn;kDZ`z}gRzlo37vRy zQMg<04bAqAiNXVmq2D5MipdtLO}T+d01@7JD&k=HO{S9RTeU@p`T!=#ndkk_&kb*P zE{9q!k{+4P-Spn<)gK7H6_>c0jaC8GGNy1mqb{mIGiY}LjuA!}OdVKV9_pNf%C_-t zueh_P=To6FC1?$ZeEf)fxj*B#=+Nn7@%Kk_#M!{%qf%kN+iv{5<=(!uvygh2WPbU& zFguPt-YiF)cW9jTZauky^8t*_`u>mXP)ZP=xk-}Mio{~^+5kSLUn(m$yt~YxGBp#j z)uu!9lHGrfKPAet_yG(ww2r7FWI)#847%6FBEO*7QCsQP2{y9 z55OwKWlJRnJ=36{KhX*c3t5SE(6tqM*gWU3bPh{qpMALweh+2)J1Rj*I}l}*=EjnI zj@`Su$32cI$r+M4(~nz4OV%HL37R$s87b-M67_@Y0?rg)p)kqm%56p`$dSD4{6qqW~AEkJ?9D<^yCE5ql;r`i}gXT6*x{a72c82^2LRUt9}2`olqC5 zg6-o!l)o;g%_^o;km{JA#icN2uxhd>P|SZOgZDedr#V)Cm(ow`Maly5OgnkGkVlOC zvCeVOGPphL_@p5rLr4CFER&yMN4VIIsW|GNUd^?&fO6|dtz4lvI6G96$}eL9&txGH z9@>VFLoomhlWK7Gsmq^Scd-fF=$Xy!%8mSIV`V#BJI3jYagUC>KhKY=u;_@0UTtz* zFUI;bb(+(1ljR)|YGJiGi%y&>-nBQ7v0z*?ZBvTFyp}^0o$=R^qE3>Wn7nbXSH-PzMCGldUqsGPcP#;Fx;J6 z@vMvu$`e5Hz2?>FZ9p+>5$)Ca*qq~KvyEP`KrkPU)KZPuloA`56#up8{NI){{W3ux z+fcFKc!Zm{5pUUpQ^Em1gC!V{tZ{D&PBR`pe@4Znhv#v+MbxajHLJ?*th;fcdU8u) zbF?f_Dfc#cJ)dkKxWD#~jE&tV@`%dj~RL_$OM!PBdGz$7XnK z?NA^(Q9-sv&X1f--l(9Wj}KGsQ)Y4+B2R)G<|S}ah2vP)R6Ye$wH@ysAF*>k9CgFF z{674WigoQ-HEuHY#+PKsSbaSO2U9q09%}H2b%qD}rz|2JLQJRo__)4DOQXrOrHCop z(Xr^k1Z{0(Z}z8)l(p3h#&H=D_C4W7Y~fcpM~@hEMGH7(|7DVwJlweTAjtRRInuBu za&pLAeV_$lsy4Q#cX$GCIF-yh@~VnXh&{136_T_9I0BBv!$N>~=(y~hPLx>{CePVj zKVs&N(bCU*g_PB#P^)K4l)#q2;`s3m=be%`a;-<0-mD$|{gr}ATf4*cU5jI=jNnql z&g5TK%I)i#UueHibq2{on?EQe9>-vv?i`%ittMjW?F>*-SN9rE*fdJHfQS`~w%iwd zN*UMMIN@;1uJiOIriG+#XBOLbsPv}F7rV?VZ)yA!un=JqSla!X5n9z(Ar1~O#P=wF zKDmU?sRwZyms@c}Z6wE!?RED2t!Ga^8MT|Vo-3JUN{xx^nBS-;n^m8GUBKTJI^eMC z#a)knW>-Sta{4W!V)Q_w+%aIEz(wGzVey--HxHb+i*OlB$)h(s<(`f3MN!Z~N_AsK zYz!EY>N@<%Pr0>#p8Sm?136HsfXP=nHC81>xY0$xyGi9LkFjL1wvhfX90}Yv6@>XE zHN2iWWk~!(7BNFxKp{_X%3s}=M;5fgqi0eK#!liSHD_buq5{slXDU=IQC#;Ve_{y{ z9f-+kDxqWyDc)qhn;H*eUG@}kNwe827q^rN53XhYE>L=JuS1x#WbR%n&C!~Va>G9L zJTupp%4hz&OEL%tr=E1bKzDMO`)e`nH~d!(Yn^u7rz}cV`s)Jo#`OQ=YMPoWvP(PoLu%ni7z3rw?T`z2?!OR>XZX3A zA6$GMq6;jeXL#ks7rkpK3Lo>g5B!vh-*}wi+|^B~oV-r@f%5^XrF?u!V>+)m#pqqD^EZ*9V_V0-?_yD^^w?fo%>1nHf;mk@oygz75tMk zsuOGDz3&0!G^jbcO{trB6yC2+CCHBT?n^4IO9R@Q?N<*xSJlqdZ8K$Z_AcQr zn>rW@xk{sNZC|R!i0h7YbaG%m!t@QzjIXuuNy(0^C2uFOW@z?t<$X|E9k-k1LSj6u zfAkol&Un}C!$gGm)Pp;RS8m<*Xrqhn7-*l(S`@_T={iVsfKpk zDo!jF+3@cv%A!+h*YHC6j5cB2_3eqAn=;iM*K-$v@Aq56>y}H#Rx%bhze~3#8cd2Y z+=Hl3`lA$6Y#4Y>M7W4a%b$xRi%-V0z6I#WW{KdLKY3^CW@59-TuHDVrn6znQh5$z zYKejA<0DP>zz(Rru!@%(Je6m8jPZr({hYYfXYP}cWD;ppC7Fxc4HdmH94}Rj`^O%^aUGq?m{dd|7yp=n`t(P0 z0)k_>bY{U4d^_>wUqCN6xS%F1NsR ze6?DX8WR;ezzdewxTZUBR$4+jIChFuW1nGIG+Rq>Jg85zbbbZY?TsjP&eHZN4>rpX>*G$`BCX zW`awz8IJ!<%(2c@k*us4o%-|Me~ETi`91YZU36_*FJmb9dGOm7QzGx%%&DEcmrIEU zUFrTQf4#z0wZEu8@Ab*`uh4a^2lWTML!GhzF{q{D%?-u@r zlfp|wCA5`3uZoH$_oIc#0WJ?SU*zdHtE-lk%e7((w$iptvb7V@+RtLwvn7Eve~D18 z?80&FD>_NP`K;`D65}lu>3ApYc@n|h6A09tU?6n(146m{@o-qeuFIAE4)L4sY`A1G ze|gWoNMGlW&WkT(_K0t6tQ2$(ev|GV#^D9OjegZ=AY_Lz9pF2=WTKt$rId6dXUY&% zui0vC3By%{D*_p_63t?7OW9n;L~s$B$>vjJ(=doDD48gkUJy0fZW3>rEaeZl+N_S9aEhV{3zpCxSmnHy&B_nlih@vWVs!^@mA zXuAqru|@_@XV?FYPO=Pk$aaW&U3~Von*q6)cd2kGuWW8)AQrxyu-^tY0l!%0PLx3G zs3deI)!Ri%|0kBg{f)LgrCw;Kry-I~pFzva%ddLRYiY*arTqOtIF9IcnxRbTKCKS6 z;}Ww%3S4V^&(q8Gb{ymu#Oyw8wdvT=?+l;a9c*|uSLS8rtLjVh|L!W5GkQjTkdzk` zNk4ugK%L(8PHU;Mh=YMI+;`=Ooa&YeupaF-BV0bKMhW+nI7%~YyJwenfbZvKYl@$< z%U1`KXznhxcHiI>)Tr5iTRqsW0qWMf?v_|+g;sSFRQ}J1T$!e!QGTm8PR`sb$IagX zHT}BBJx42dodMM|qFlGw68rZ;_Jc<-nZ>+MuW?JB=D3yN9OOIt^bp$Xs*c~$KUnF6 z)VY*#3EcSBehRtXU$3S9K5)HWA2u1uX4FWyMw&nxvtrlbb@jLI;ac~;)Q5GFH!d09 zNgq+4)G06hARQ}T%dsbMn3pEYDD9VVz92c#C#mGB9ff%HJF{o_}P-ZceRB+ z++JH`!p9!skahl+Na*zUQ{8M#vde=L0Z~ai0DveL@3VYL1NMUSN1nvi0%>%rdZ;2B*1BR~!rlwT=?wcm_B;L2@ap`a<`DoN$DET7MUdI*FVeS;3 zHBn9dFnNyxx`-xu`3`HNW=`!jO8-2Oo2A!?0^jdgVOl+;XLu&(4`y9uQ22K#Qeg{A zd>J6GAE(*oTJc>hOJ$5i-O()KXvY}#O5~h*ra&S1Ykal7c8JvK#}&-xcP;VNs{VX` zhtF+o)Qa3Fnenut@%U;3rpe_L-gz=d7cRnRfubW*w&p21tw+QCnKNF~lrKaVD_ULRbOjAbh zMDokhVTkj?iz0hN{J!3W2m-G?_Ji;)(3FPv2g5wP(%vy zvyB49K*?)aYj$U=A0hNxe>W4l_w4}|zxrjjeC)uNd7L`j6V&JH87V*k&s~~1(}z7d zS(EpdlsdxEi?e|KUx7fqIJ43HVUM*-z!eU6hF$+T8YXBmY^}Jbuf|da^SE+^W+WZa zlTGFIvcAQ1HfJ51oQcgId;jZ5CHi?^yE}Tz2taa-=cTTxm}L6Tb$GhyqiE{5V0s0# z_y-qV;y~FwTpj1ln?e3;shq2_rHqezaOGHGI&l+LJ5M0g#_z{Y`0NT-p=`-L=|EeO z?z6CZnpo9nb5qDikrI%kyV})4Yj>>TR%9m<Th-DGm4g8JWoG5T(iohszaBn0A=;@s?nAMb-ocX zEN@AAe{`?R(&z4z6CRqRwqIMKiux-!dcG>Q0HwomR6=L?8_nfuD5z_jIjn zGD#)={c~4IdwdG6+#ktofc#MTQ)4u7BOhMnsx88*w3_Yv<=39ZIgEKi{PlFoYRxF2 zr0dCcHZ_@^Y(vhvvOVkPOOz|g9bY%-h~9wt>v*fv-N6*^w3LQ;FpP6ywc3TrR86Cn zl^E&vEoRQPFt5{jvI1vlSx=qH6QMuFdV8&BI3gZlN$3j(jx34N?tt`ktk#%)tlNXz zht{Q(qQ!;E?M;S0y;qqQRpR>GB8!oivt95w5qLpOwE3efSol@7TT?LGh)u{Ab3+zY zNT8{Wn9Z&n>9u^fJb!*gxs+C8>Yp{`WHaq&kyaN>(S>6Er<_*fm17{z3(O(B<@veSM&wGpVW!>1(3lv8;@W=A`4XWIKO%{oCS4RzzBw zJdijk#yh>xuRMfNDV|a(HcM){lWm)u)Aaq=k6cGUNo}jjE#-=6lwYY-ycm(n`4B<`tPp8B|U*S4jj@FLRE7A z9|!H~dXwL%&NIeFV;=654$8JUR{rV=&lb&Jk#;M{M? zyiZ_&asWDB587L-URO3zQBkraYJqG(8BWA$(+ei(5fn?WV>x4>vPPgkuJC>I1eAOa zm@fxId+4;W(owDV3EYlvfq=1fVIdiGNIR!J~lt=Z(s!DYY9?y9j4 zV+N!xK-87UWlt(xcx*~X8oo&K?q_JI>1c)sRGR^WH05SPL_p2j2}C;LA3uIC>?mdi z;+R()R=7YMg9!nX@|$3k-T%Twp!bjI091&&KV4#ce|1Q&U5#F%HUP%?V5BmR@qxAp zC>m~o3UIE$oyqU{kxR8mg~e6FR7*t#S3%$sccI1}s(GN-{1afF_BjYTEdKpF@~2?x z9}z&k``W&-4G7f=fqp16GxK1f1~XzM-!w6|5Uv0jS7Pkhkl*Wy9?(YiEst?fMG4Sx z4};dq<Fg10?F=!Wn)2XScQHA|Ips}d@`fRt{ z_zDvf6EqePGoJ0ijU4lQ@CW0Opdp?M8hL;1mXfkRg#WRcf;Mk07i(EacwJhjr>7?k z7&Pr{ACN_zP%D`TF{T4ls(JpC5GVz@AC~ zSwcl+W%RwOq!g@1KM?Ey<&lQgUQ#`fx&M02C7=FaS)~P}*x(|jM&cvLa61Nuh9s15 zAFIVcqqgyOE7`--6Lu8nUwj`g)qzG`40P{gUs)wOnkR!c^PkGf)02}ow6s6Kxc}Pr zcF)dOHkg7o1k;32jVG9S`|m*yqjGtxn7Y2cf^l(iDuv2{yA$~nHTL>ouYu|{AH2(E zxiJyU8$wmw&CgHwsE=&v>FMEtfq~60=4lNwv+)s0-z2L@pH5_kxF4 zFfn05pJZ_@vK`8`+&VY+%3sjuuH1Hklhb~A5KIF8^Nm$vh1dB3HANsi*H5jaU%65)r#a#sz5Y zjym4n-u}p<=?6mVqRC=)g}J|$(N8=e2u&u)9s1f%gAIRV0a^+m#QHK`rY}TEMxMGnmF!=0^z5zeNTmL77|jeG|HLm&^(ZKX3_5I$t%<4whv zz6q8vwZ6AD+A`Dh4H<=t0B!(KGZ0hc42%O9v%n}`9|Y5f%nqv-y`6+=HNrlSxsc`$ z+IKacP|f&w96Z2#Fpurhr3nAq9>bjy_sA-RUbP6p8f0lyio%HDA`IR@G|+%kIRc+( z8khkv^YijtDTs{sJF`AkPl^;J7Z-8o6ISAYE1{zGa9RE!w*zX+_VBT2M{G$b@ zpcim5%<}f{`)W;*{jpwbpN#%E85_iR^ooebeuK9$mfKD;O)f3CJ4K4TerQMqj2YS* zUPfZQN^A_LjWEo`r)|xKYZ5r}JbNaerktO=1yllBU+ZI6At51Zz+Onp(S&Zny`_Eq z`n7P-U@zHU0~p{6OQ7=2vs>3lg8mWTsHmuJ7+9@uYI+R=ct-K@KYXbuD1>3q@XJ3} zmXA+EI%F7q5l^VU3MTUu#vGUFlYqX`{M+YFD1cOCJx!S%92}0$8SfIndAI-CqX+bY zP?+(hMr;Ml@rGhtyg~(CAS@~w0`qWjMPckQ1c)ZG(jm2VrSvKVZ(t4qtjOy6erhU} zK0F%yqkUs#N?!LX$yB28@KB`AV0b>sVSDaK7fY?o)(3`@p_~6I4vqns<&yGp5_TgN zxYvcpd);7>q>IhfamaXHK_KuWN^Wgsr4ueNjS}2RW42h^eVsM6AFUMMuy&?lcEvEsz0y)wkPW~xD2D~5LqC@Wboqi zjk+HGuw)v^$$83myuuPl#@n1M5p@7#e~RWUIHTEZctX?#uaYP1^kBvl&>lVHvJ=pp z4$j1Kwi*BZ`dAy{v}c<`12%Ae#{f+Txdt#NI0vT$0s!#e820Ox`${lMZ)|LQw7w6< z8);MtJswXnXwyqeiSYIJm(y@ud@>7T{N?kd-28ns&8t!ZFnI3^WTV@pq#14uG&G{p zctWqm#pPhMT*dcRxYXCLUqxY(J_KyH3cQHQEW0sp_$2ZWhU9L+r!Ve21ba;dbImfq*8-402;4uC zN4DRnUq|8d5E2okK?fi;rDSv`zuoSVJcJuh7#Jj#%io(Bd#lH*S31hW?en%?8!2^) zE#Hn^9VwMH?$3&01~)Fy_;#q^b(%(HnKksg$pp#Y4ctM6Rm0I6pQ!vgCA3VT-P|R^>K|7LN&kIjz5M z%RC=uUL%$=?@Cw=i%a9V9?lY;q6<~%VQw5@UMQ)kAfOE}T;xa?1#~VP9Gpv+E`8t1 z42={q&i^>J4>wRcU4b3}yTE64SSy`Jh9BX!0{yB7uI0DN>@9N`X6VhG(~`x#u%4h>J4U@E<#tu5eacR6Z`{JoC}AW3qh9NrC#77BS=DqRg|NbhvwlaW2U`$1C~&`~^lNsd*iD-hhD%xb?nt z3myP17)DXJ4WSV9QA4C2B!hN!fics9PAlY;Of4>^L3|?H)Yc{sq?~jFK;WB{l(coU zoJ|WuOR~_B7E)?6Pva|7C3fdkRH)kP;S7uMDp7zP#n0cqeLLjJ4Pq*Y0Ejp&wMy5Y zxrDHl=c{!hCI-R-TEIq>LYSQbgRt_@kLQ~^F6w6iKXgUOHXoJfqy{AfWk^H@R43W0gDF3OMtJ9=`xRS~Lm4yI`wT84h5+mp z5nm_s?=NOyAt662cDluy!R?AtD#cSZSMIL>Pr)}aF_8~L99|W?!xWy~UfE`t9Ny*4 zu{&2UKYr(N7+mST&J0)#h?2m|QCL)LUV*UY$mLCcrm6_oePqxd$@w5*Ln0f9r!HK) zxHyK|a7jzV3)>h;GF-n>~2;mi)q?C|WD z)`L-Q{6HEVTFK&z-s5a z9KT0G0EB6HA8o81Y<9hxCufD1-O#$1ken6!5i3gizi%&PyzuGeCB|FldXEH#%mQwua{bLwls0 z)|Wc*DKA6bJP8J@zNaU@c9$9KZFGTh)9a{+xT&%HkDQV4-R2>g`w9Owd~GnlwLsR` z*_R2CqDi`Nsy9|CKzJXF#JL0?Ou0dlGXNGZzLElF_r$;l972%k=X^t&*{cLsC9_DN zP2ww}!68x{3xAMJ2fUqn2;KvTv#Ge7ccqM>ryc@}XKtsvgm3KY2V+$4%+Af-zICex zY@r139w2X{c=imx^Ys4Uz`&a{nItC-K|Cqr5$~-tOyU22f_JxK0arwHe&cgq-QD^t z658NbM76YjB*>(N0C8fe*r2?;dKJD19?UbIHtZvQNd^LpBuL+z;ZBA4+@Yj_Jo>0@ zM5yVH%l|GOir0{#yIy%ske2Y;1jMoc zuSt6G>B_;u!N~RrOfDcX;sS^rfS}85ou++aP5$o-@XzV{!+R&G{U9dLD<24ia4KYt zN6QKUJrj=*&JMv|;R|({DY?v7d}bfB7la5jKM&5nkTlI-gZ(6lH9$s}EURGqfa!fF?r)cj`zNd+vEOuag4IUj}SJE<^+N z)>k-D8c6`b+0M+*N6ol==l+jxsms!`dlV570W7}&xC`5m!swcrNdTe(A&)^E4FBbF zkbHU{OyPqZaF@gKKImo6;OGGI=L@F+6oa3iw;u)n$GhN?HHdp+b#`(nFggqasXcDB z)Ca5uI`vpd@EJwHh{W4q$MQQLl^j4DMJ$NZR(BMxjb3^7kYVd742d z^>xmKI2K6&SPTwkz5eqjOHZQ?#drA9xGTXkI4UaLZ4GkKH^|A=#Fw9ds6!Mc z%#pC2);D2UC62=?Ve=z{_Y7aizibD*|A@n{P87|N%%xX<{)p`YY!`wa1HBV?0~k+r z8?L`KGgAf;17@I)Y#?R|%+6+n`{qy19}BUl&Eb|ls7Y^H(Y^7n|Ks|Fa3;6%VZR+M zlXn2sI}{8mEd*b^{AU3Bqk*?_^g8!)+;`WLO_3zv4mN{00xGRb9w<>?WT1DvesokF zxI`bULBU8w?K>StYip|< z0KKx1;2+_4?F0d>Mg=`ZO;0Zo!KCYj#IV4WfehV=ObCR*P%t)&9oRQ+Jk!~k_5Po4 z&4ZI^kn}kiGe9ifWzx9>Kk3!Q9Ivs^qBGk>TOqp`rLFl}v&{l{V0PfEzji<%M2yBu4`n ztN@4@5IQ`D8U>8f=K|9Qu}k=_r4Rn+^VMb$k3 zk@DDofpF+4(D3evs8lumPwN{Zq)&rUVY_%6f;nB#yN|NgL0SOqK!Q}c{^9@pWzq_v zK3wjXITv8a-^$ju_xy|VRud(1&Vb%4>!qmupU3N6STYXEobV5i?ZV9tp6%=4%5>po zL%N^)c90oin2>7M-~W$aG)Lq#xOqBK;UJ3$px|lnNJvO#{TQpBzI%lq{6AmVOJ#-R zIn*9VJAiOJ+ee>k1GaL>l7{Yo+BcuPU*b>PLB_(y#+LP#p8U_}ArH?3SQb!>O3D@o zcFRA1Z9s6r@VA$j|F8ct0!aWNh4^=^rKbSl=tW4&H-n4-h6<+bU#w-AGX4z6G2~a_ z`@>&8V^M>|1sd7p!op|ZiNFMX+5C5Kgk5?1Vo-_O*xQ?fMBzRY(=B(9YhvxEuAv|t z2273)z=u&lN&63Y+TGR4YY%?cA@lpGUl0%k(0(C~(1kxMW0g@*0wLf6VLu3JLLp$r z{${C*$;pNAHEr+i&O&VpH388CDBDbi?W8F9;Z5+J4xt``#AJ6UC1>ghHG!2nkh%^8 zU}ZdWIPtDA4&EIkL<;VKB(Gjns@$r2=| zx{!|m;IO#UN+gg}8?t>6M8G!R0I3KC$`PdR=s*2|pFiKHrS&7@b;NVz0rwB#7tuis zOh708Lml`15)ttls2>Y`>4cy^RM*vg0;&L9JkW60TslC8Mrpy_kOMWN(*}aQB;tIS zFAo3bouxoI37iBH5(3i*1)zf~01r)p(g(`J+xuHc$Zv>&KY&60L2{w$TVdfd6v*=D zN~cG=xw*LyxVTi#Re%!m_n%i}32a&fB?pA6hSAY`P}$%+*%0hq8eX1)pPf@wWB@V^ z1VdgBDQ|+mBXEoX?~y2zri6Co1@lx79Bru4AXPp{;32!PUFiG(g-r;!z4P-~>b!B; z_lEHSE%S#4&}g1J5U6(L>WaiVE>V}+txJN2WCSki%mL&YD1X($&rSoUuj#yb8N$eS z@%^bPg*0)_Th|~A=F`y7fSMMLJ92a&Q9yvGNa_cWI3SW$kB^W4`&1}kz(_t)jPAbp zzp%`y!a?Ey3sSMJXlq-LCI~m~+t&y1p-MyI;-uu{dR^kOp`;fUmWKmSC8mFF4?L!t zKfnt9f4hhOPnY)p{Eu~wmr!KDN_xV^MgWf&lwE+9Blp&x?!OD)>0-q}?Qic?L#^1^ z#YN(t7xFnhUH}R64ICSpN~Gcr?$kZ&YjjME1Ze>BfB&9-Ehbh6WwyBK5Q=;W6tbLv9EA& zHFL|`c@zPV_8`pd@72D_VyLeVNw;TO9sI`p9LtU;02NueE~VGLw_P!spOq$fTZpO{ z=8Mc3K$rw0BJ2II83R;2D2yh}{k$o_QytK%1~XQD=f}e_w^-9Pd?=S3BcIYphge6T zXnY0K)JP!@ghqleMeWjJ>5Uf;85ui%e}xx2 zi03>>44pv$LFh&s%fF?gKUnjeD;ZF>;-T<_3G-*~K2PDyGGox)-!Als|Fa(qUwt6& zG#uk@Z!ICW>F6uKuk!+%`jY#T2hwjjZW-nsywslM`q#@^^n2Z|)6Y4owg`hxgpOIN zKM1q!(k@q*o7TdBXWhc4j}z2{UjzVv9W;5Ky=5S%K)nzl!s?>K;LU6ooK)-MU556f z26SE>ZwI<35eFzsD>GG)q z*D$l)E0$iGgXsl)S9B;VR?nA9IRK5-xdf0GVCi52*$T+*P;v&kA+$gQK;0Vx%L*tP zLmt4tK^h=j2SEnH?QL%lgjA2&usvENP$In#sg58yAVg3b+uPIm9em~Mo4CG2wv}NB z$PNKXg5d_e3z{Md1hT&d2iHO&3!!-r4n{zbd7FSB*^Q5m&L2e93vlV+G(h-#8FG!F z6EbM@;EB{fPDI(q2appiVKRQl{x#dqUHtw^MBW-}imt2}H;)zhY#z?UD9FtQvBq;G zK;gzSy}SrXDhG%JH%Qp@Kt6EKik5)H36h0N&I;eh%osc2)JOT!_KM)lzcE(=>#RyD35J5puCckU*0RjFY8W5lk z^W4r|5zzs(s>QBEOcd0BYvGB3&I5GTTEM6;{LLf*ztITp50WUPEDYnDpl4og3?grA zZvORqT>^1e*nY1cK<__vKE|5Ps%F?|tgHDw3b)8%;rR*!IkR!>+!JqU(dd9ofyeFu z#_v71_j{e?0{HQjO!Bc-1_lNtRaIRJi=g6Sb`(Q!4|xpTP6xK-~-BRl|)27m9L*qECi;c^DM!pE~Xsfjfxc zabN~Lvj>fs&S{nR&lQi7EFM|Va1Y@vlL99KY1SSub^?M(Ju;)cp@U6btgiLI)iO2 z?5uDtFNE+1G*e4EJBUl9&+&;1lE=08x+3m|5HfWQxm zeO2>3V1iL_4jYhO1Sql(6d2zDw~wSj*GV~YXAiW5hCLg(PM%67P6xM z$Z6n5({4q7)CDcL5!!U(-BzTX{#>|lAtyf{bozV##Lt%E8wn}ryaDLW3ArXHSRjxG z9Fr-gNZv!_ItV%tsx6XcBg{UzaA!%9i{`=Kl}Jhwy}>thWiN;4%53O zxiQycvs1OQ@(ze`psaHf2veX9Avaq#S$q=OsDkjm0k{p688XDuAQWB*89^s<2MrkC z!P!d3^*e}r5M}-bFb0Thw9?Yj9v&VW5ZvB|9|oBn5e(5IJXEN_A-x9>JKec^_uv&0 z>b`8c6o(cT-;#(nqd%1T_ABUw3-s>@DfWag?~9wpgMdjO4Jfi*x~L)9JoC*>vS;R7 zCeN|p)iie6y|J}mRM-Q+Jl59MeuU&4mQcI^nGWf`f;138Z8GULJcTs{Ks`-7j=gj5 zUYlulWdrQjXtU|y6@daSu*hh7Nt9%eZyIAaHVLoZAx;a4O)3^eUpH}Z z8Xp&#)zWP`Aym~e)UO%)yxclyRfD>oWwD;pX#c+u`SR-#LRr#&CLzO3JJV;DybPK(W?(^6Tamw zoa{2-U4AdIBs25ZB1mU7H(mT-m4gN!`j(%?EZg&JnF9asfSWEXZeRE|SzMM|h0Q(O zqi0)_+Y*Mao0<~~p`pHFlAyyIb6q2SHys2O{-D_(AM@Su+52D9+Bq}0TF>); zk@|`n%+?qIzofydm`kR?W3Wrurixj!d2 z)KIc_7yR1fuR+jUt4*K#tR_K1HuzG`N5B81!$YK|-xqUyR@GZnR-<`7O}T6{C5n}j zmCW>hR@#;1o=4$qond-RMR4uY2XgdV$T< zr!Y3$=h5v1oojxtCtuc7q3QjK*Vhx5q{sdGx%%}0wm+tB^U-lklBzn`Mf${Q2TQrM z?5G$fs;-+&H~N{SPtTqhVefGDZB87=w-M!^TwM-q)X`0w^GhKisg#^(_-0jczKoHm zp8fkY`v1hvQH$4wN(vG8`wUmwY^1Rf?1exhh)O-sj|ANVAW-XV%{0x-D~`+#2z)*+ zk4V>UE|WcSb1OTegXve;ob<9j-xi&;A=P^it7rDtv7S?F7sJ$DgJPBVVvU`zYgOJxRtfNXer%{htz;%sn}g+LXJpC zR71-r(P$J@w^-hBcCXys@+=LAXY#Ei*?yk zM!^yp1R8vPc3NOI90mc@=FB%KWJgzcxcObAk8c7AVZen!q{F{cCWHCr?l)(t2uXWq zVky`1aOccgICfw)^tU4Ka11Hs*~l33#LT!}l^!Cvq^UQTYzf4>xj3tPWDd*4B36J8 zTQ$71(ErDq_zE4j4L|x`;9MoY_au2HPeFD`L6g&Iqm39y(9)QpSPG>nNO);Acx<{cMjNJY7c)th4P?s&tPC!jU zZw+WGwqN_3nwlQa(`R;u-<(@g+PT4?(em`&UHw>v^bI$+*vFdbo#`J4d6%3v0TBw+ zl_!rV;~3fFoDTeeKj$|W=;Eena=ZX$;TPaz{9O`?q=Wh0=T#1wD%~!k=2m^R#w6>2 z$&+)ga~qjbmiN|ulcuGI>Bd&k_ci&6Qiaadpiq=ap$f=X&mm$p9>{rsLj1j|>h#i* z%7PNO5a6KfHjYG`;PYs1s7WKjlb@g8SxbMhE#;5MLeE&JGR;3Gg}%nc%>o%PNTu7w zPPTK~fOg4|!htwqo=TkY!1*D78Le{j9Wz|q+M05H5T9s{JEEK`cX{|%OLqpcBVtk} z!SAx@O=1A9?{%T*`;#LR)np#!@y9}`o7BR~;mEZspLe== ztS@jtL*?IW%?`+vU<*&=nH6*qK*Q4dqNnJqSI{!9>ef1%{t^33-LiEQQZVRCW!QOw zm0wiUFg!eLG`d}SNSrnH=OLw(Zpd;(`R{_a8k(*iJOKi6USp(D-Jh~CpT#@4*8is^;q*H&@~56h!NUT++lqAHZIxZOhDS-j6|BT+ZOc&a~Y z?8>i}*Pb%sOphRVddAnMy9>p6V%{p9SkuDf@Kq6#9)&4ds|%@ASWteP&PJcUXT>Lu zWi+|^9{5$T>PP6@0y^U%QT}%Z49Z&$aDx-RSp5QhJ2t!0wnqJ6ud4-tBoMwE-EVO z%}@qV`{7GXgICgckQ;cxCxcuH>GCdypH;OG)9kO5buf*C%0HFGbVn^*Z{G_bGzg3#k4>!xfrRSz5H8}N4kH5 zJC(=xHl;hH8Azi`hFa-u$oav>_yh&b&q=61Gl$+);Xu+RD9N?Kndh*cxr!`>fHw?Y zfWRGgry*@oNG~45)dR4=iQHx97W}mOhGaYwY-+3-gUGp->PmJ*y@cdq4l)&_)c{iM z;OJ0bSBa z&MX{299p6-I@Pmlc(u~`BBiRBE9u{@SSeS@B843bmC(zKg)<8wWX}5nHb>9)YQ}~> z0%1(KfIZl7Zk=+$@1FSaF)Qq8h^J0z(t02374&yWVd93V>gfmhQ%!TtPsD3`YGNJQ zSsy4(NWLXdiEFxfc{Y>C=pU%{;|W&)&IC&5&hWB*-l_Umgge4o69oINAPqW%(8V5f6Cy-N0U=}t(!AMGyK#N^RLI5@Sa1miqg?3D>F5aho2g1z zE+M+KU&lnpZAlc01>qpxxwo_L`<&dL5K+RLhE+#`U|rvG5j6(p`#kLG7| zOA9efi!P0)?5e(XL16d=n-?cy$lh@{9$o<)t%L5N^xr@;&GUo0n?5>@1L`RjI3yPJ!A>%e5ItxMa%HVl^o zQE94GB(Jb=7Mhl(;ZONG6G&)=VCSDyI(zmbjT-0BO*XNzqGm*ODhUy-K6EpAl3`3E)9iPhb?>Rf$I=!TzpqQGU7g18W3*k@C{=tW=1N-;y*+8I1 zxZoC5hhESKf^6kE+FNarmE!e;Tz6iVH0bqYVquvO`JM89>dig7C#Y**FvT{M9sLV?>)lL+$+|+y!`&}gq`%$b%v&cEifKvzE&aNnM_T}^ z#;4-s3r?KPkqAeci5|ThKT}`SCsD+1uAHEdelQgQTSH7C@DA$_C)e-#9AA z_hNhO6TcBMP*$@gY8^oWniS+EMha4OwNR^^y^B&EZ6aYfH zzJ$_*|L-#Nk98Kt62iFZ*Oab22x%do%srIj0U^dYmpVGmD@tn1hW%elRA-FwVpEr2 z#CZuZUM-I@w@>Cft~w0AH|ev&7yc@onYnT91<-i+&pB$A9x1*_pGY^1+7S0M*(aS} zeA_bepzZEa55^gXqvzkVQ2VUVxN8py@S8Td_fGGPY>lnA_%;h<>inIcK;AacdXbEH z+>m&Cc=E0Q0|iEB{CoW>=OQL~HL>~ixcHDDrbKV)G~2qISE&HjTs%SnSRXb&wBp<*9{}#1ZvM~;PanHvYO((icu+hof~>D zGxtq8;KaT-=3CYd!M%Y7Ya6MDsv*!Brfp`{2203xf@WuDVG-%%ZF(FN2rIy8B|=Nv zzH?e%nS}#4H#brZL{=Lj4f4?4%;~VDmz%x$6hIETilk5Y=#LdV_bIN7DvdM?NB~^1 z)wztxRKvnsK)o7pSAKA!V3F4EMAi#b941}Zt5Uv^F` z1$NaVjwl{y2!erGO{PS0z@9>jvFe=gqB7;0=Du6Ft2TK_dt4cr+#5X>l zSv;l#4LykDtX5+A0s1XRSx$xvO%-8YLb=SAnvg+F3rub_*E`Yk3J^j;p3{M$tX9<= z*rnsA#^Lg@PmB;5!a|j4(*&ua@89mW#@eL{glM6lfHl_b%mIE-spaH_mN5Eq!#;)u zuL7iC3Z}mmW}1+Z&g`lq8n7Pzq?~yJ>&M{H4HmnTklqO-Is|8jOd=wCj-D4YJ9Z@q z!6)$r(GuC#x3aR5sxfN$Et-GW5?O!DF|ogvhbTPyjD) z40Jl+bIl)JtE=6K{l>JmWkhHrE?HtD9L{YlmOg z^ykkHaHIuBT^~KM3CHYGcR`k)h%k(uObXXXfHw{`j2%s@SZe@QIa%v<^0^e!e z_X{6fvOXM+qe~qyOaT9RH#h*KSONMsw2!-4+OdnjXn!V>1#T0ob9V*Cwpsry^ZkiZ zH%*kO`O9)G+UFVC?6#pfmzcEy18f((+t+nINr_i8_}90om>{5a(Dj4qBB$5&uKQc8 zWn&-Fbvl4jfhwcHj_HbQhE1OdKGY9A0DuqVcAc%I94ysGG9g*xg1UbIK9=(INr>VeFzix58nP5Zu$a>m0MHz=V@0+ks#DATj z`Zt+SwmriQgxBjGH{Sq6^iOM(NTv+zf7z=V9bUuvtE8L? zVENLo5vDU#5{%T3y!*qTi7q<{D1Hs&G%|1LEJl|uk2rJ1=3C8mVSkUxo~=_&|LI+@ z=aeynYg?%&8`r%`Q~|rOCDmR#jNH8OkW#abgf=i|*7gEC7lMi%qbBm_cQh4~d5Er7 zw@OTs2GW$_q}~kD*)M&WHPX3ytopR@Wr!541Hf$VH}a9{!#~`!EvgyH+lc-RQvC$< z>OgU+y#k_mxLyu~zgwbH7131@OOEz!>!IGL*l=V5HP%-v1k0Oum~Q z$Ex2N$h{#_oa+gI zrO(0;_uNsqHy^I3B9>W%^;{b7jK?uFBB~bq$yp!GU{`DQ?KWq1Ev@n(9PA`Y-MwnC9!@3|n3+P-?G#{A(dG+K@a=L@5 zS$uL$rV#06A8nAVaMj|={?!wp*y-X%8)*$#P{)PFXk&cObaq=oG$c|_j;57iHIL~c z0fZdL;?JJJ6T+#Hb*IJNKDn`TK}G(JwyeTM_13BSq{U2gjJG^Q9iVfoy?RAioxZYr z;p`qk3vA@cEt1<_bPw)3q0Rbw@8odR@;bChz@o2@b~jjmtC2=<9#-VdJjHzUuCf*i z6B6mfLG0*UDhv%t@cp;$xN^6T#1I<6cJ`QMx#-w^--p1^%`c8IgoR-RSWtK00A!Ky z`wiIlBcbx1j8aF2lg#E5WC5g5%jRTJ+&}N4rURV+b65iwdAR6!HR`CW`)6eOncXpf z($L--7+T*$T+?ng>t9fM!_COfUflaWfoeS~Y5oiB8I;LvDEGJ)Et-VnGO*ApOMhl! zPRnfXxYq#2V?FKezlLQDh590Yn)%NK(nTTM>iUxwe$)!}o@lY`j@n-o5ht zIo3Mevs)JFrd!_2P*~|?mPvPzs(C*V!ow8auRQ(D;Y({tDOTWHhq!3ys-GoH;9`cO?8ww)%R06bQYkQXK%2|dB!n#Pss?PO;=UQ%l zCO+U(dmjAAJF9@t94M4x2|XwvbaLE_YS{HBEsA-q1>|2;FHP$7>`NB3XsTRUT$@Sg zN~;d#z0Cu75=Jm34+;^?cGf`xia!2C6+6On;~IM&$c)VlMKklW!J4&^`D`?oX<29H zOg@Vxi<^6>lR~>vXs8fW;9+0t5ia2&vHI&EkOtBw%{$mT*lA@2M=joAYi%#u15Q=n zxp+w5Bxr(>eR+ewahDo zh>T4*Es<@u>BvL<^<-}!D*}PDNc@yj6f*8Kw<7+Qm^_`6aQB^_tPH{S%2(7mH=t>h^%(Hi&{;h^ff^ACpQ<5Y`lxU!e#KaR)!^Fm2Th) zg9@dxVBS(7R`>zCrk{dzPH}E^_bZ>3-5t`r?ZN?-Uuh?IeTLyAy^bh_H6WbIb0=c; zeSP>Kn4Z3wohRwonns7`6calsm{6Ua zUG!`ry5zX@%NNOYPNz;IeApl$(dgby^iZO$S$CiV6IM(4`o-Y4h!n+3KMR*BRgl&J zD%k!iS$E#HL#fLR7fw=bjWx2h!s5R-_N%(b#wT982&fcQg(JU&u8(F8J#c}LyN6Ea zPDAEJCG$JaQJD&2=H`RhBA}*jrVU01NX?6@(HQFXlz#vIV(ea1`lo;=-<&A4i zMvhyteE^-czFD9xVUj*gC2dC48XwLB(ij4`c95EN#lwfL`1jg_Sc+xVRJ?W|55PB^ z>XZ1k#hz4qZqB>IY3XS^oOX;R_-~!c^QGTEcKE^*5SB8x_JoHo2Aa2Y|7uO+8=nE@ z6>hAMnUn}y!20JSO9E16+_B#>c??Q&ajb3kF@dVD;r*lXnp#*B(Pf12FMBcWi?i zM>@}|$D084Z%~zmti9ecp~=qTX@cEh!0dkhHuJh>9Q8BWpfr+p8(zUWZeA1VmibM} zOx*Rm)lid;K(l*2ST&i}pTibt|DC)!Mox*cPZY~!jyl0$%~%rHe=Y^yb*4P#*2#Kl zGDUzPY{~=tx>aHE6kJx}$~}*@cS?3VVV{3r4_iaG{=o?<8dbv(lD=B{{rA?za3r61 z&Rnx8D9)z`<0!^wGfL5-Za&Pjk<|u#lv{Znqrv9kZrRWvFJY&x^8*iyo9MhONvS7eIxB z6#FA%?n<>jj>r?1bs(x^RTuM7J=Oz9eiq&&(*()gzFv}RW%hcw*c}L z|3af5&s=YAYiR2YwEx-uny!JmVkFm3Z{qPx97x>q_73F7RtVmhU^9@-fzLFs=)q4p zL-Tzo;Z!2oJz{uY=JJvMVEgg-TmBCBWO+-*gsj;**nE~Z_Xl5r%zv(XSNwDumeovw z%&<7xSuV#H9r_!po16qOwef%SkP0Pw%t%uk>u7Gq^ez;A+4HOymB*v10xDX1Px{M= zY)TYAmxnGt(30iEi)aO>#6b`v01Vef&cl6D*}gv5#GZAO5Od>K3C|90NBUN&0B@$SZz(T22-taVe1^%t9P5)4&uJX zT;&XUVcwF#cDD0ZraOOoc}35v@m#gOd)2!n&D2K2YP#u<2@4e!HM>RqEM7>+S4}lZ zZJ)lg?WV@&rtAYw?(FaM%7>SZ9Jg0LRW5cGxK_-Y=uF4zsvWN}S5(r`IqzVFU-y(5 z94WXsaz5zjTuFbjAKx;{#V{G^|7c{V28)j1K-*c9>lwETe`Rg3b(Pp?<2)_PVPf}4 z^Svmq2-)0sKHS+I>guXh(>Lu-(DDPO2Uml21Y)>wV*3m>&Zbr?_}oYoqF(5H(;BOK zcIZ!;&vJNQACvK{z*G1|6`g&7TMTPQW(QC6?mB&A%Y|)9b?N!j;3B=*&7+D;y;*`` zLA4jJIfat`s#x^sd?*%v!v5!4w}@LsWc?zhI$1TgXfx4?3YM}%y+3)USEE-MdhjHk zh~&U^+O_Nn>s0!&Q_SrP$WJ?L7B?^(5P2cAS{WBa=vMZV+D(U)9cgq#khO#TRf?=tf!_jkWc7ja{q-Z-wYX}?qt~8vtuU$YE|4JQ;V8tE;D{ZTWxpjE8S|}pj*=Lt(KcPlk1oU4{rr;qEj(X%EiIhM?z|cj#%~jY#ODT zx6PLn>$}uPi3DV8r$#Ta|L2F0=4r%pbBhYPjMm z+VU{o>L$O`%KYA$6$;Zjh-IS>FECu$!A6cSYqi^dika4?C-30xthtkj^HWoQ^L3(* z02uZCPI2D+mhBVMxkg>W&Zoz$I6CbfRUT!=u}fuo`9x~FbJ?)9WP2fW_50J*RqAE9 z4*8a1I5s^vIhJC9b(`_V_NY3pdghakA6-Z<#!dm&4HgTzwMyT@vdCO#2#=d zxoX;nGhQ9Xz=Ua|V3RGEgi^Y=`v4WDYE~g*Wp(9wIKiz7r{g46n@OsZMqg2fspav5 zBpto|ntM9-vkhWKa-URq>Ym=+UN58@2^Q@5{pyUR$o$yAY$&d!&w{>Q=R+J>)yU#$ zvTsWU54Y1Dmi{%2ADZP-=2>2}d=5`yYN^{E4sQH?;nNS9o= z;nx@M)~)j1Sr{$b(bkH(Vzt>_8hI|lw(p!5cGHbKjFan`_11m$xjRNgi=B?LZ)Dm7qc0T6U#eUk zoa=B3B(N%DF*b6?HA@sUBDp6z{QYKGp}%d@#6QO`Q2{e(@v#a}7heVZfs`aYul zLr2$>Qsc-N?F!khNj z(!7N7$o?YN1(!5lfxLKs$U9X!c+YkFzHh*_tvnw(si>sJ3&aWloq-^yjf6_gz zG4jC~!ng{fY^xmd@M5#tuL;cWXYg{?2R3`mQ>4Ezn&}D{liU-C68*r))r+pNCAzsU zi^{;TyHY(njJw(C#%7uNBLv=nM%iSrBh!S*P?Z`*>p*pupr^gO#}7=*g0%Nn0#Bxx zubi`Zu2kG6BOdU2&F~9*s^%x7Y(z{MIXNTt`lu_lAcOC_qh*e|;7m-11AdZ{ z5{FB6JN|}R#|u~Z4R;sia9-Q(icTDwlB`*Z%hQireIDjh^F#*`ip7!IYfKguj5Ork z^FCPIzj(4G!q(_38FP^Z&Px%~g90C{cnP5iQ<8f!>Drzzf5{-<`O@>Kwuw=pVF#Bp zg|}AM8xI#~Y$<$x( zl26elK0AElxFkUx@BBrf6Z^8H8NQ`d3zb!^Q0(BL)}Xa$=deJHE-xpif2 zCA9jSgJ~d4*(_to!Q&Z`h!HW_n_EW$9YYm#)_iIaW(=*_B>p9iy~U1n?iah8zLjI3OU(El+4MLqGwPu6kDvM& z)A?kL+2&^6m%QEkrZkbA9eroIjYPZI_Y5DKcq%_uetDIAlX+>Abc{SR2 z*&?!;rD9iompLYZi_QoAaphb6llP*z(951HlP^|L2PUhrEPKYksMFgfe6ro9hkZBp z_cEKVFVCDY+_L^fN#ivcQEA2Rw$j1fGPFDH<8_;&J}M7 zi%-U}_T~wC@~m#=ldbe13mreF=4D(IlB=uYb$N)J2qvPAvmsbqk43Y{nGeTSX=c>8s%pHU!;a$S!tiT}mhO`MP7$_nkSN zGj`@MXYhLL(Hwh~GMW$^nni%9fjw_5`C!jG6N2_Q24i3C>U1>gib{3n;30AY2(WoN z$4d*{9>zY$*kIlAYq@(~e3i8k8Kod zFS<0f(_&1drE`_+idL6=er}GYBSSW)IMGkUf4seRWc18}e!xq++KhMlaPGqxp*TN< zqLY0Nr{qw$>7Mod;`fE_Y*95m<7e%P%X?G$AK1+oWf&Q}f?1qwUj=j0wuX@^tp8Fc z^go(7^<}tT$M9=>`_#8r5zD=A!1;cV>6mgu5SkphD*2DNw${wT*%mP5yfyGz+{mk< zwZZtC1`+uG!YurbyJI2oBb%LMpH#PIF1jbHm}2^>B6^orteE^^XMa?`#bWEZ#{5y0 zA7OBd%Clq$$JwRf3z8F6tBA)&JFR}D^KjIma+aJlHrktsLed>-~`QM*TQL6 zlZwlXOSpO3aEjs?KnFyLJwhCa!e-wPufMY$Q8^C&Z9=l@@csR%H9jB0-yD){4=)@} zbf`x-o<7;tajsbCM6E52-mb1FNpAjp=%u|e864w()GwO1EoyWRzjX!dBtvN_iKx?L zgc6f#t^YHpKkc+xo7)gsH0Aev&mFq%c3v?UEg?u8=#5$Uq`Kd)uskTwvSktN+^2Y6 ztcM9<5%$Vd)2Ka1L4EbBX`$-&5mdB~6i@UPb@odP-qQ$03O3RH13yzNp zANG!WgPS^_rf;d@*|#U!cPR@bJS!)H3lQ0E<;-8jxT@3JJ55)q!k+BZA{-JnywYZD zsC)NHhjUy5VLEfJ(nMbr7YnoUWOlsIHS7ua=BNrD_R68f=B4!L3Y{vIazb~jQ`PcP z)`vI38!?}!w`oZ<+!C%T_h;;1gQ!C!`)%V+*QifMjjf5bEAi!Hra9~FmpdH}b3RmN znhcM|G@2RR^rqo%gnW&$hdAuxsmqAk5Vl{vPOj!H9^H2ooQ7$aS+9RGM34VAq;1>S zZw`nlJ(KBcV3XV5Hu$pyI`#2t4l^|NQc7O6|E6>Ho}+vq_^xgzY|yUiuiu7dQ0dQ zTjVR2(mGw!(ZAj1XmjD96GfgSX5J8eEu8kG^o5c;w zXVq?Uv~}HAG!sm!@cBU6oT~KsVaxN>%$h}gAtkTzYSlfV)u;S+ZktEY z`Sf~n>tJhR3p2`o^T>~+mE*hh`wy;TJUk`zZc(8P!`Q_(y2S(@y**h3m!Hh;?N63q zWXc~?TE{NUQ&xsavaYs|N4HJweA-J^M}gHFy-m!ND#-eY>vv~atiQ!`?=10* zaJ8AVBiq|TC3`Ofp4s1s%N%NRQ7oXK=_QBIZv5Q5NUC@r-LKx7O15dvkjXLJHmZW$ zNj*}Asl=pm`_u&ClK-!?GY_Y-ec%0(lFX|TQIra$qC~Bz6e4<2nP+7vL#B#lh+Y{o zgd$Tkkz@!7wG4$&tY{+hOvo(r@H?Nr?>_ds_p$%k$G3mVk!P*-JnO#i>$^r(}RYcw7djgMFV~KxpY{!W2;9*Atb>Cvv zaKyh*j#KALg4q{rKBx`n?|#&3MA9*|>?t*ISuy&SJAF)h(7TdqGs@ubBd)l!$ID4N zVBKFd;-1qjwn+^Ie)E2R-mLRsZu1dO_6He1{z4p7*N%=KN;Y&S=S`n>a9)$N*T~cH z+)?F*cTX3o1$h@~@&~==+T(t^fA}Dd9f-Hz=CzJ@n2_HT?w(W*Hh1vnWx5*hG&1&@ zqIHtj+4WHeIQ#MnUr&urFG%r>^%?JJF_1`cHa6anu&FLV=9oTRM9jt6rA;ALapfDD zE-Avm&Liyn?Q;|)3JV^SNycRx`4&VjeduD0rkaQk57n!5sCUb1776jTH;^|ENxrJ| z9U0I4>*x39`;vO3Tch*7x4h4an`mN~+C)(^&lG&}CYAs1fR_hmNW22y9QyjWQ|y^? zLwjG7H&c;i%%3KAZbbjMI-BZ>YTtHU|3tW7;=9#y zWJiIZ_a#4%-dgCtbI659v3U!nh%7H2_|6isGLc3*RQ-atL=5Yq%-(ayG|5(n`$+lb zAJ!7GJwoFe60W^5Ru>y{2n-pUfNV5Ql__b?pu1i!Uc83(L-Y)oR!8q! zzy8qeuOdQ18Ph+)wioOkop@?1Z7y)tfP%ceC6MxbxmoPSsNAcmfJ0v?tKXKCoB++Q z8qH4zLtR8`BcYNcNYdyrL-$KGIu*|vdN}#rKnG+zy59HMx5^SSJah^2%3QM@nm(bR zaR0I0Y0-n4)nf}^n)mSfIo`AS7Sbcb@e(6&!LwjS)#R!Ym!ou$qrij9co0Bg@j`2E zdi?@Ax4S+o3HD@F2rzDeIzBp@m!K{~kNKm3DhcMPIp~R32J6_p(V4R!BndD{RSga4 zu?fJ6FmrN>;F`?L%*Nrr0|GR&Mt(Rl6=X+awN+pG;&Xk-@YqnJonVIf?CnxwkJXp) zy0Yhmcqd0jwY1t0V?N+{+1c5==ydVa1Cj_Hz~=7*xk+idS$H*O_Zdd~mjuM-Y5K1Q za+>z;+=({&nhs$hp-=U@g~E$o4cK8@py5TnYOS}>y&piY*;EsHPn(UllfzlHF#$`~D(?^~G8~K*ZyC`EoqHtW2yrN_>CVO1n+{>aXq$2&kko zPfeSZyp<*uP`vmnRMW4{xyASg5v3!NfX2`R<#>#IT@4Mm#O{Ll!kgNmgnz}v#Pr@A zUnepi>b2lQaIiptjh7iIxSOAUXg;z85NA{9$(r3q3e$`WV?nLhcYVPXjjCE*V%~}h zWm1=iHmW0fc6Ucfcv4Ts7uBs+y=E#|O-+%JVtw(oe(l(mzD*>YXQ_f10rdmvbnJm! z;K?RXdpD8@)CIH%Z_(l1-&!cMYSpT0;1_}Vn3q1fyxPl&qdw6 zb_(<1eOpD`DVfVOt$JvLe@xPFm7}Izp#O280Z>}15k>1=bXIM{mWJh)~6IXmE zA-;xj(O{xGb4txCgy;H#52sg)V(7ha52}}Vvb{;-){B{4q`-hm--@QHk}mnXq#4(S zz1b6iHRHj~&N-P8H98h6M%zih7uPwiS|vv&Q&Nv_e%ybrHlTAqKN96@QzG|$`l}>G zcfE2tW5}zMZ&pVpt0$5~g@mjuvUFX?cfIVNK4vq8Is&#V1{!BC7w4NJIndp`A=y?( z;Zt=*%PKB%xZfl9DrGE!mK~^wd0OqPnl9L(^^kbR7fmutnka~zQwSqTHLWwT7HFx zvhCVmIYYN98;I*GDYw`;w@Ayj{}KySE=&rNLw}8eZ19SQSmgrz&ydywpfx7J;tf`r zkiba>4g7CesVFWC2yo>k9s!xm`GmMZp-wa6?fyS6cFZW1Y5yT0!R8XBpjP_l_A%4s zE^STpWVCtu?uMpwj0y9BORLYE;?A4u^;B5lN~OKZPf+{wL9E5CSko4nrI%K#IMFSP zi@X_Qd6r%NU=FbHZnhHl)t+@;Pgs+lcS=JE+(aG+V`!*KD}D~wWC&BRNODEjc$O?Q=1=h!Ol$6 z{bDnp$AS?plqa9{7^yMM!8WfeZlsJqGv}dY)994X!*cG9%&ZH_X>;xx7bKP4jM`ho z*cqqNeOjvMoK#&&<{(LX1~R*hL=?CD=dGf$nvPyS3dB=7=98ZCy}H@kvL#!qbjh9i z=J7V}ihFy)@|LR~Wo$3*t%&~^yZ!j!jox$%!BN(0OVdV@q;0mhYnp|AIKq- zFjK_>v%?MI6ZD^g)^!4N{s{%MzM91g2s+7IF1>u0pp`l6KGWr1*<`TjR&-pX)U?Oc zwX?7GkfbQ>d|Pm!a6pN?)>2+%X-kJn6-WK>O3$M!w$ZozD4(o#7re}|aK9lzZ* z)>HN&b<}hyx4*~cI`#R&Y@VRt3A%W~d|k|6R(|v`>R8nAK?ch$!9#|{x7Rs!Wa*hT ziCeZ64Ncq#{K3_@es3Y`-omexSKp-LsKzP!7hEM4&A*QKuRN)Jv&6c@Oxf0FHu(M> zy8(?-PH(|bp)?1cO|2Zc*#kO99~3cJRH&z~abhM%o>2U3CVI3gZqjhp_k_ka$@SYO zZ`|{wkJFx)S6WKh%q~USX;1T*Ywa>%&Ka=x8(CPi98&t+5o=f9R3q!E$sVxu$aK$* z@v{}~HvK78AJuoi@G$8ad%Uf;rtf1_pLxjeE&Wz+iMOY`Tnt`QHDto9@3q``|LcIK z5SR1_$LG!8%o@4b7{{ly*0>qa=Q}SXdl@Sf%)Sm*em2=NQWo_lY@qn(_Z&*z{EoO`N6J9;s#X?V#JxrrCYymIC$@Q^#9x1kML`)!ceexL8eU=VD$< zU%ngqfHwWG_oM38W$)MOBDb?5r(bSql9kqKQMd9mer&(N(ylz_Ii@=6b1dFcrpw!o zaH~Xny+74(Fkhwk#`by>JM%p<8&|4dV%l}c`D>UbHDM!{n#i+#+b5+N%}xjg^mjMg zAFSJ7IrE*()8P7*1&3Mx<6j(px`t3oQs#ukWv-8VYt72_IMjZ8x5WNM%VULg-AzG5 z^4y9NqjlL;s$0a^r!w~0&)3DS&U^0R^Qa+7gwgEfWiGyR(>=7Xh$!vJ!qmxGnd{$d zcRXuefAtNYX;2h(#Vu>jGec?uR*B?M6L`AYI@Om~l}S{0EyrHU zwD|PF`Hbl{dK*+p@YR{_cp{dO;4rf zPp`6H-c|Lybv~|bVDqq;0H>|ySckQo=TjDr*yFVVEC=tq-B~@c<+>1Cx#3FQJ`EYS zdySg*ZRcn^z9r6=%+_V_mN!%xXIcC?^jOPGZr!Q<#~Ow z+~ZSdLzl~U4sS3wG;(%KUFvmzpGjHrv{@9`>Fg0d(Hgq8vSz=%)L}h?E!&^YWe7j| zi$2sKFIWD-R0A(fPxulX%}n0&yg=M$be7WMhNbCxHJfWi=(k_?T|+KTg7R^PhwYWG z{Fb_4#eQVN%cuF)doHyyOgz3_+N74z_&B*C??qST-1O3mH8vZ&hbdBa#%J8{Q&o9{U zO1NNAo!#&H@!sS4!dtr{dPfhp^LOi(S8CrrE{>Jnvsmz${%6Ai=4-pXFT_}Rsd;ww zoZIMtc}6Y%MkROgjPeG0rs4ce|1 zbLDqiO3u7DHf$=KIPGVaOG^0Cx8U%*iiMM+InW)+d$TzD1<6%dfS;6_eNVpbq$Jz0 zF%wPaexqL9L1z6)@0&%IUmZVhm7KI&Y}hC3S0?9gQ(eo`HrQ-Ket$J^qB@9iD&t1s zVD-_=)}lUb8Mn@&H?djHb@v9zg<1bMxrPa8Ikf_86WNk$M%)Tlw8w~&68z{a4VQX-`8TT4 z=Ov}2Zc0fqnqaU~Ls_4!F*2;tzbt)DX7Xw}b5N46*54JB`-gsCUr*+IeAHX&AxT#r zAz@Y5u!_{pq8qhlH#g38?)`pBTR|aFz`-JSEG(Ccv$to}zRh%lQ1=!iK4e8Ht2KXb z`+ucHmohy`>V~vCQBi%pcZe+Oe(}1Pa_;&*=^rH5nM_KbE$k$k4S{hbllv$hGZGyg zS7oHkeAvCw4Ml>~`*2U_H<%M?!GH-KCkE3zkbkqkOzAPCA`>= zmsX)){boiZmVJ^V_FywNGvn%Bo}$VwO>)x;HsTQw7>?k)lb4rwuA0fXBe|(DXT)BOx6UMzp z6SH3jTCTu7IWolOb=w-w3S7#R@&b@({j4{~fCLBp^42dN)&dx5spg%M{=_A6?OC{~A!~H5?qmd-vWZb}i6d(_Xyo zJZt6VMFPE85(pYx#LU7%P%&(qa_L8Wx$_8*7f6{!4jhO84-WdnQ*Lf^I|tLTH-%Ib zeE-u>2tkq21t7y^(X9L`Y~NL(0a(M#{174~Y=ro{w<+BQu4yGKpqK&8he?LNfLj0% ziwC202V_>gozT$LRfYzGiqEP}O?&n%0ML^O5Depqzu{7ICn4dJRJ~!B-#;>|pQj2dN>=JeoO0kO2E7p1Mm|dFX*7hi(wdpS6#$E6oJ72_y}3_Z$)sQiV&fg-A=cve&I01Pe!a>-$n%j^J_RNW_j@VKEIL#<+9P!N?EJHP7;q?Yd1LM{MJDnWIpz<374b%Lo5Vtf?i zYL0xGYbTR*TnJdlglh<4c=Q%}1qN3*3*^Hh}`1$Mv`RT0J8BRxl^V77&pg8BK zx^Vt{B@j>77730X;0-$5XZS={$?@Q}yMXR3mtbr4TJ}U$c7OpUY=kxkRuU@a=G!5E z-L0P!kecyE#giuc4eUW>Rn@Lz%d?@LF?37Dc93klhG`?h6iN(;&+&2b6m;l0w>-v3j8f;#!NCly+12B@2#l+K|RutiexYm&wK>5E?y*R-~_Vus1=t^ol? zTDoq@9jG_Z6k*H~f#K6JI5;@)ScUP)bHBq^gceXt3z?nh`wH!n3(u*6N2tpHQ2ry= zj^Cy}qXz~~S6#x(6xm8mVa)&|ryzV%z{7uzx?HOuh;T? zn{7k3FU0MQ^due~wC1mMX}QV+S`|>80tI8`{OdPtaKcj2RBCeO4EcfQ)J7_mN>G5g zxVe3?LdU6!|Gq~Pm%m&I@Rd0!xq0}_;NA-;t9(Do#EYfg$>sC=Ri7r8B-lz_!Q%{p zJc%C+u#+Ah1^XcMdXkt}R_MDS>Tt`xPKcDQ>DogUbrRC45LmH20nWP|A8jCEMNm`0 z;#3oH6@1970QW4_eeINF#+!WX6R8|3tY(9YDfI_<2>BF>1cLu{8Q{OFA^bNNhfffM zYM>Bb1FqX*v_70Ki`UOApT>n)#NKdZx|t9UW8`mxo(Y984B75rO-4j2Ct@^3Q=El4 zWk*S%%1L4M%sVDcSSbhzZK_+wv_ypBs9G8e_2R<%bn&7n(8ZjDmx9roD=G6OK^13- z;tGY6usI;GW;=J@f@Q7`Oo{@WFB#55r%dhe<#Fv#iqicL`kBxcU)4QNCaNys6Z>H{ zIGo?bK>|DMB;bxPrIEV6MCj*X)sa6xOoPkIW&+3yJgK7*x6Vop;_XsiVd>U>VN6fY zYi02Ui!86%i52%JlWa$P%Vv7t+Z6B9|5Jy#^b81slT_;KQbj>Ov-XjZ8U$9KsHpm# z^mi5(78!e=R_^@sEY7k*a!82X3Z@!u5}!V8v=?I-SPuZGoa#$@`t-0Z zai5SvAKINdM+it1lj}mFLWY ziq1dvCIe9`1O-MF4CtQ#l7i;b4G!NEgo3@z{9_0BR{wcX6!ve>ExUkSmhH(x2>S|a zD(TD3l~}c@u+eJBvlql--5G0>VFrX9$6uucaSPAoaejU@@DVZa{~(?eBCFwR)z0I8 zs#^mwkn`UGTj%KFm>FlgE#R2+W8d$L2t=_h5r!3KBZddo?YJcUhyY ziON{>PoxomFaC|Fu3>0+`s~@Y0KxXc$i>CwbN7m;|5VWqum%5TTK&8BCUpQ*G=kxZ zaRkU6bcT2EMfzVw03$$VSb~HBFXX?Re}kwxcM-U;Is<#czGNj6)0ao`t6M!L{_?jY z2x(21X(14Vb|5T*l3;@%+Lw?u(ES+=ei zsHH3YB|z7miK3wzDMeHzUq!^lvC3g7H?13vL^=dth55t8d^&n`Dfp!u%2SPbTRU0! znDvQ)W-HAPuyGpTK&jFd@lD8fnTsv=QnOxyr- zASGl-$Uf44OC#^e$3Q0>+d#t$Sf?uDWcg1Z_ORrl^YY^0WH-AG0o0 zY^wVwJeoDYNZ=h&&IY6g-~TnmEX7}c#+G%Z1Y3EiU=5Nt-F%0wNM|@gU4|ODkrVt0 zaQ9%rYH2Bq0GBP^gh$TE#MYic8}0-%+CgttQB7kV)?;P%|0^7g)FZ!F0}T)pi$Dv* zAQA!Y6cXEY!lxf%$)6JQ{`%z$0s04{#NtchsVO^PJJ%tp^GXL>n1prikn89coD>kz z7C7Ph;T*%TKciHcU2pe2>nLyrE8x7tC$akP>yw|Az+-3Hv113@=ED)li)va|E;KvW zjA1={kR1X822dD3&FE{@lT-Hmuln)P|F*mgTeFcGjOG?2HgfpkWXzpU-l@ zAqnQGLihcD6|KjVu^u&Jr~>g-n{(-$vHQ@gb9J+mU)7QQ@Pk2GR$lJZWS19y_b#Ix z^y_%iq=z8NqfUP^RDj)^Zg~N5b31HSczKEBein1sDAyj_7orp{(2uY$f{B8JU;?7z zOxLmV5UGx2s$oiDjUntch^>pcx%m%yV+8FPB!MIlv-{w(Nw|cPhyyEdU~Uo;T!MgA zxh>S8VzW!wojaXhJlB&cn}f`F{b;OPg*sJmRssX1=$fPR!Eu-0tRc1|wFOjXc-&MG z^JHj(V15HK0b3#hZwlt6r0H7{!7G7j8VO&M!pW2Sy_P%x!?y4mCITMv4ik?tMWc~~ zfJ(jDd>RQyoVkG3zy}w`KgphYm}{`n;uu68b{kZ}+Zb?8lRwX3YLRe=bOmc^qa7Tm z;;|%V6pX9*_aKpmotq3*9oso2OsGUYJbq$$;Lww>@xoYB#K6YzOUlWa%&8F*6(te0 z{6wUW9HF!G^Yxcv6cwyhaH*^sYwa_bl}yd@Bk*e@d&69S;0 zR4v^8kwA85>Zeax;FPlr2XEEYr{{AO6bAS)^u`Wt-MW>S5_qfonBfGAv2AJUU_pVJ zF%OTRU?}K2aH*9>4tWf!{nIh~-m}h*zLc5;kebaw`PfgOvoRE92-VL7RnB zmqkOi1%WBAH*$IH=Ax*e_9)d`v20r*yt@p6iy>kF0cC`VCo*trFIn(+;o>^+53bu7 zPv6+{x0b&h{5FH3TTVz$a0|rQCKd&mb8AAWThd!z$tn^Tb?>BvTV6#%-;iAwI*E{`1v}yT`ntWd^T!+|0v=-Mn147b;sk_+pJZFkdTnT*pPqt@PUAv@ITj|OUlcG4@<;v?8fv_ z`H2m+$jQk?Lr}plv-DF-=Ji? zppws4OlWxG#-4>7${YLJImwslI-rj(vOEts?hgL)qp18F)XvuW69Oa48DjvbLY( zsES*Xm1Q(&M(!)nAqMxUTP0LoBhM(=tsR*5uCLjYv&=lvaa}uiH3l-)BM@HeePXr$ z4Gc9b7OYo7f_rQFR$C6vVacE-XCcY3OI*W@3LS1UY*n>iBjqa$+^iQOET)665wS>h z$a|C6%rHx|stbP_p)g890$9ieNh8)8AJrimr`Gg@?#qn^ZYLe4t4mQR=Il~AJ=EV> zY?m5c&Gsh?JXZ3uh7#WUgZ~n-2NsG$x1%eHp0=s+jvX@L$(1FqT=uH=V09-XI~+kW z(Ve(8Nh|mzup}RDZtlN74p6C}8~#S%2#>k!gH(%FrY{?FE}zeHa2n&#(C)H^I2;;z z2oakpdS+%OgHGLxSg8Q1910$uq|s3Y9_L-Z>S~T^%c=FF+LhdljMc9X`BRoX;Y2~{ z>11G=*liaR0?_c|XiH57;uITQY}g59D|V1D2)kx0jJ`%E`^7Ws%LxfVI5|1lEyll> zwcJbH%umP*4*jB4b{3RR<-v`W5;Hb_3vqXMpIum}w3=apa9Ym_U2G3kR9ANo4TbA9 zdql;?s^%WN$7RLJcp=V2tv}SoA@QkyFef;kGM#_o6fyEH^`uaMIlt0OK zsiDGoPig5IEcaxwX3Wo@FOt|TI@UUa`bI{mxw#W=Z`}g1$cCxYy*hr9i~jxl*I*=# zpGIoxScDR6q_~VC&Xe5+t(=Z*XZLWl33FBF^8H$C%@UEjfnn~tmk5=5bY=dIsXodW zs-pK&zdAOzXQS}2w~MX*VKM2GYx~?B0X;qa;o;%w`M3+Y`%bFs>Dig#*?M=r3LO}T zh>i}iUGo)QrP&CR0~y50$!Xd5*?Vck$H(Vzr8Pa>=YB5=yN!^;a7K!~Ne`uk_+h^Ud*}{e+5&`kKd?2J8!5hWo{Kq%%hDrzF1sme2Ip zdZrr{Rtd=kw~il)_8Vet*EP*}rFm}aVauhVW_(OZLGdjkBjYp2k5pb)DmJ#5BK0x> z`xWNaf6-uf){l=P{Qcnu;utBZsB&c-!iYaa>-*dVEH3H@X?NZ%I*k~by4WQ}$HsPd zhvE}(*%D)7Vm9ZmUgJ`1&g~-Du)6lqX&8^@eCz$9NmA*p~^R4QB)Q0#m zb6+^WI_Unpe3|tk>t{*M2eX}Pj@f$ph5M_6#P>#s>Ap`NgoTBnyM{uLgt$U%LT zQe|z5aCX~-O)~-Z;ltmD8`M+d;}f$FIH@99EG3kjx2i;IgDitKJw z(UFl?)SKS6jRvK=|xhSZM6>4yi%G#55iME!nUWV!6`a(bE%{DH`<0(dKHo+a@Y5DY-lC#Cp%hmTfgt>UF=D zx4FGNUhibKR6`dVGMvgg0bZMqq{%jWT+LQlU{B=9Ghc8J@LIs)bs%ryn*WfSju7%J z(vM+fBvF|eiV#o3%;!KQ-^n4+K!#~)X(8rw`?z;5xXqN1Yde!mF#hd(9* zc*~wA{JHY!rB*)8o@C+TqMd;lC|Fo#57$R2g1%{*m8K52r)!SgoQ|8Hpc~Wjc)fr` zAv(T+?$Dwl6o5CJE0+VET#N4ip~ z`gcBnPQvrcEZsXUf`m6ZB}J#0vz)=>a`$Ud5&h0^s!`XEmspD~|8CD1^jlJ5>D9-Z z+?^V}9P|{b7KL!kaoQ~tFHW$S8wkDDX;4>d=)nDa%4=5a)o!PPQB7H%lCYx^$ABv{?TXc(v5_~g59}~ z3+PSsB1vBZUc@p3e=_UL=qlLH^CgTX-4RRE(bbjt`l6T2SH>R^V|Th_!TUzBK&6}N z7mf&yYe_j`c@xSTp)w(PAM{8Q^^dS8`~(`gFz)~^R;#v}*}gs7!1B^nX+b5aOpA~2 zy;<=cx!ju|yCsiFOq2wcJ!;NgWib&LDRBQIS2kJTbhf^}z5#_octMWoqpIp8yiQ|^ zY#T)PpVem@!=9<+TJHFt!r07vZ1msr`S9@YZXZ^B9~})} z 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 E0UjRX0ssI2 diff --git a/traffic/views.csv b/traffic/views.csv index 564c37276d..aa3114bc84 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -20,3 +20,4 @@ _date,total_views,unique_views 2021-07-19,2,1 2021-07-24,2,1 2021-07-31,2,2 +2021-08-05,1,1 From 7994d791288a177e0807807b7eea8c39acb36c2b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 9 Aug 2021 00:39:04 +0000 Subject: [PATCH 0683/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 44d47bda0e..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 42 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 28 Performance From 27269601ca9552856b584fe9c361284a649b44ad Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 9 Aug 2021 01:49:11 +0000 Subject: [PATCH 0684/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e0a18306b9..0d7163cef4 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What are some design patterns that enhance Android development?](https://www.reddit.com/r/androiddev/comments/p04zvy/what_are_some_design_patterns_that_enhance/) -- [Is this against the rules? And can it be done?](https://www.reddit.com/r/androiddev/comments/p030zd/is_this_against_the_rules_and_can_it_be_done/) -- [Is fedora good enough for development ?](https://www.reddit.com/r/androiddev/comments/p022ue/is_fedora_good_enough_for_development/) -- [Learn XML or jetpack compose ?](https://www.reddit.com/r/androiddev/comments/ozyqpu/learn_xml_or_jetpack_compose/) -- [Multibinding in Koin (almost like in Dagger 2)](https://www.reddit.com/r/androiddev/comments/ozxrlj/multibinding_in_koin_almost_like_in_dagger_2/) -- [Java or learn kotlin just to make 1 app?](https://www.reddit.com/r/androiddev/comments/ozwbyy/java_or_learn_kotlin_just_to_make_1_app/) -- [Jetpack compose Good Learning Resource or Course](https://www.reddit.com/r/androiddev/comments/ozu86g/jetpack_compose_good_learning_resource_or_course/) -- [Learning to 'Hack Android' with picoCTF](https://www.reddit.com/r/androiddev/comments/oztc8o/learning_to_hack_android_with_picoctf/) -- [App Feedback Thread - August 07, 2021](https://www.reddit.com/r/androiddev/comments/ozsteg/app_feedback_thread_august_07_2021/) -- [How do you build your structure project?](https://www.reddit.com/r/androiddev/comments/ozrsdn/how_do_you_build_your_structure_project/) +- [I want to be a mobile developer, but i don't know where to start](https://www.reddit.com/r/androiddev/comments/p0qtae/i_want_to_be_a_mobile_developer_but_i_dont_know/) +- [What benefits do repositories provide in an app with no caching?](https://www.reddit.com/r/androiddev/comments/p0q4ls/what_benefits_do_repositories_provide_in_an_app/) +- [Admob App Open ads](https://www.reddit.com/r/androiddev/comments/p0oyet/admob_app_open_ads/) +- [Send an email DIRECTLY from android App WITHOUT using intent STEP BY STEP GUIDE](https://www.reddit.com/r/androiddev/comments/p0nfww/send_an_email_directly_from_android_app_without/) +- [Can someone give me some direction with a market place crypto currency app and Google Plays terms of service?](https://www.reddit.com/r/androiddev/comments/p0n2el/can_someone_give_me_some_direction_with_a_market/) +- [Some good peers 🙏](https://www.reddit.com/r/androiddev/comments/p0lmrh/some_good_peers/) +- [Need books or courses recommendations to help me understand how Android works on a very low level. How Android exploiting works.](https://www.reddit.com/r/androiddev/comments/p0kwwr/need_books_or_courses_recommendations_to_help_me/) +- [Don't forget to turn it off!!](https://www.reddit.com/r/androiddev/comments/p0juh3/dont_forget_to_turn_it_off/) +- [I really don’t get how customization works with XML (customize buttons, checkboxes, edit texts...). Need advice !](https://www.reddit.com/r/androiddev/comments/p0hcoa/i_really_dont_get_how_customization_works_with/) +- [Actor based peaceful state management - TL;DR: Concurrency without any synchronization primitives*](https://www.reddit.com/r/androiddev/comments/p0gj17/actor_based_peaceful_state_management_tldr/) ### *InfoWorld posts* From 94c9e59ba91f7b3565fbeb4e64d7e3d2e0dd349f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 10 Aug 2021 00:39:59 +0000 Subject: [PATCH 0685/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..dd34d2c32c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 36 Performance From 4408be7e9918fab6183f2e7adc3256bf9cd3311b Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 10 Aug 2021 01:52:00 +0000 Subject: [PATCH 0686/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0d7163cef4..90f98aec7c 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I want to be a mobile developer, but i don't know where to start](https://www.reddit.com/r/androiddev/comments/p0qtae/i_want_to_be_a_mobile_developer_but_i_dont_know/) -- [What benefits do repositories provide in an app with no caching?](https://www.reddit.com/r/androiddev/comments/p0q4ls/what_benefits_do_repositories_provide_in_an_app/) -- [Admob App Open ads](https://www.reddit.com/r/androiddev/comments/p0oyet/admob_app_open_ads/) -- [Send an email DIRECTLY from android App WITHOUT using intent STEP BY STEP GUIDE](https://www.reddit.com/r/androiddev/comments/p0nfww/send_an_email_directly_from_android_app_without/) -- [Can someone give me some direction with a market place crypto currency app and Google Plays terms of service?](https://www.reddit.com/r/androiddev/comments/p0n2el/can_someone_give_me_some_direction_with_a_market/) -- [Some good peers 🙏](https://www.reddit.com/r/androiddev/comments/p0lmrh/some_good_peers/) -- [Need books or courses recommendations to help me understand how Android works on a very low level. How Android exploiting works.](https://www.reddit.com/r/androiddev/comments/p0kwwr/need_books_or_courses_recommendations_to_help_me/) -- [Don't forget to turn it off!!](https://www.reddit.com/r/androiddev/comments/p0juh3/dont_forget_to_turn_it_off/) -- [I really don’t get how customization works with XML (customize buttons, checkboxes, edit texts...). Need advice !](https://www.reddit.com/r/androiddev/comments/p0hcoa/i_really_dont_get_how_customization_works_with/) -- [Actor based peaceful state management - TL;DR: Concurrency without any synchronization primitives*](https://www.reddit.com/r/androiddev/comments/p0gj17/actor_based_peaceful_state_management_tldr/) +- [Activity Recognition on AOSP](https://www.reddit.com/r/androiddev/comments/p1ejoq/activity_recognition_on_aosp/) +- [Proper vertical scrolling of ViewPager2 Fragments nested within a scroll view](https://www.reddit.com/r/androiddev/comments/p1bxm1/proper_vertical_scrolling_of_viewpager2_fragments/) +- [On every new update, a Google bot posts private messages to random people in our app](https://www.reddit.com/r/androiddev/comments/p1a2z7/on_every_new_update_a_google_bot_posts_private/) +- [What Happened to my Subclass Android Application?](https://www.reddit.com/r/androiddev/comments/p19k5j/what_happened_to_my_subclass_android_application/) +- [Best way to get remote Android development work?](https://www.reddit.com/r/androiddev/comments/p18kh0/best_way_to_get_remote_android_development_work/) +- [Billing library warning email from Google](https://www.reddit.com/r/androiddev/comments/p16fof/billing_library_warning_email_from_google/) +- [Android Studio Bumblebee Canary 7 available](https://www.reddit.com/r/androiddev/comments/p15i4m/android_studio_bumblebee_canary_7_available/) +- [How to create checkbox multi selection in recyclerview item](https://www.reddit.com/r/androiddev/comments/p159e2/how_to_create_checkbox_multi_selection_in/) +- [Can we still follow this playlist with jetpack compose 1.0.0?](https://www.reddit.com/r/androiddev/comments/p154hi/can_we_still_follow_this_playlist_with_jetpack/) +- [BottomSheetDialog and BottomSheetDialogFragment in Compose](https://www.reddit.com/r/androiddev/comments/p123yu/bottomsheetdialog_and_bottomsheetdialogfragment/) ### *InfoWorld posts* From 4eba2ab71cd1eb7a2cf531ff0f519993b08b7545 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 11 Aug 2021 00:41:08 +0000 Subject: [PATCH 0687/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index dd34d2c32c..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 30 Performance From dd715d971c48244edbea99988f7e2a517e58ab06 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 11 Aug 2021 01:59:22 +0000 Subject: [PATCH 0688/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 90f98aec7c..cfb81c9d3d 100644 --- a/README.md +++ b/README.md @@ -250,16 +250,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Activity Recognition on AOSP](https://www.reddit.com/r/androiddev/comments/p1ejoq/activity_recognition_on_aosp/) -- [Proper vertical scrolling of ViewPager2 Fragments nested within a scroll view](https://www.reddit.com/r/androiddev/comments/p1bxm1/proper_vertical_scrolling_of_viewpager2_fragments/) -- [On every new update, a Google bot posts private messages to random people in our app](https://www.reddit.com/r/androiddev/comments/p1a2z7/on_every_new_update_a_google_bot_posts_private/) -- [What Happened to my Subclass Android Application?](https://www.reddit.com/r/androiddev/comments/p19k5j/what_happened_to_my_subclass_android_application/) -- [Best way to get remote Android development work?](https://www.reddit.com/r/androiddev/comments/p18kh0/best_way_to_get_remote_android_development_work/) -- [Billing library warning email from Google](https://www.reddit.com/r/androiddev/comments/p16fof/billing_library_warning_email_from_google/) -- [Android Studio Bumblebee Canary 7 available](https://www.reddit.com/r/androiddev/comments/p15i4m/android_studio_bumblebee_canary_7_available/) -- [How to create checkbox multi selection in recyclerview item](https://www.reddit.com/r/androiddev/comments/p159e2/how_to_create_checkbox_multi_selection_in/) -- [Can we still follow this playlist with jetpack compose 1.0.0?](https://www.reddit.com/r/androiddev/comments/p154hi/can_we_still_follow_this_playlist_with_jetpack/) -- [BottomSheetDialog and BottomSheetDialogFragment in Compose](https://www.reddit.com/r/androiddev/comments/p123yu/bottomsheetdialog_and_bottomsheetdialogfragment/) +- [So I tried asking Google to delete some of my old Apps.](https://www.reddit.com/r/androiddev/comments/p1ywk4/so_i_tried_asking_google_to_delete_some_of_my_old/) +- [Is this a scam ?](https://www.reddit.com/r/androiddev/comments/p1wacc/is_this_a_scam/) +- [Singleton alternatives](https://www.reddit.com/r/androiddev/comments/p1v3py/singleton_alternatives/) +- [Timber 5.0 is out! Rewritten in Kotlin, binary compatible with 4.x and support for AGP 7.0 lint checks](https://www.reddit.com/r/androiddev/comments/p1uvo2/timber_50_is_out_rewritten_in_kotlin_binary/) +- [Why is this happing all sudden? Projects will work fine but after add room, its start to giving the error or if I even remove them then still give an error](https://www.reddit.com/r/androiddev/comments/p1ua78/why_is_this_happing_all_sudden_projects_will_work/) +- [Someone offering to buy my dev account.](https://www.reddit.com/r/androiddev/comments/p1thi6/someone_offering_to_buy_my_dev_account/) +- [Can I globally filter the display content to only show certain colors?](https://www.reddit.com/r/androiddev/comments/p1qy40/can_i_globally_filter_the_display_content_to_only/) +- [What to do when you get 1 star ratings with no explanation](https://www.reddit.com/r/androiddev/comments/p1qr8x/what_to_do_when_you_get_1_star_ratings_with_no/) +- [Weekly Questions Thread - August 10, 2021](https://www.reddit.com/r/androiddev/comments/p1oor7/weekly_questions_thread_august_10_2021/) +- [[Tolls] Does anyone know of a library or any way for my app to know when there is a toll?](https://www.reddit.com/r/androiddev/comments/p1o02q/tolls_does_anyone_know_of_a_library_or_any_way/) ### *InfoWorld posts* From 1a7db64e32e076766705f00cdc9ee323370973b4 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Thu, 12 Aug 2021 00:13:15 +0300 Subject: [PATCH 0689/2080] Added info on workflows Updates on github-actions --- .dockerignore | 19 +- .env | 12 +- .github/community-code-of-conduct.md | 2 +- .github/workflows/docker.yaml | 39 + .gitignore | 1 + .husky/post-commit | 4 + .prettierignore | 2 + .pylintrc | 5 + .stylelintignore | 3 + .tiltignore | 0 CHANGELOG.md | 4 +- Dockerfile | 206 +- README.md | 17 + Tiltfile | 42 + default_rules.yaml | 4 +- docker-compose.yml | 56 +- docs/assets/css/asciinema-player.css | 3330 ++ docs/assets/css/extra.css | 32 + docs/assets/images/favicons/favicon.ico | Bin 0 -> 67646 bytes .../images/icons/icons8-add-property-64.png | Bin 0 -> 1189 bytes docs/assets/images/icons/icons8-attach-64.png | Bin 0 -> 2329 bytes docs/assets/images/icons/icons8-bug-64.png | Bin 0 -> 1566 bytes docs/assets/images/icons/icons8-code-64.png | Bin 0 -> 1435 bytes .../images/icons/icons8-edit-property-64.png | Bin 0 -> 1086 bytes docs/assets/images/icons/icons8-editor-64.png | Bin 0 -> 846 bytes docs/assets/images/icons/icons8-fork-64.png | Bin 0 -> 1344 bytes docs/assets/images/icons/icons8-help-64.png | Bin 0 -> 2840 bytes .../images/icons/icons8-inspect-code-64.png | Bin 0 -> 2349 bytes .../images/icons/icons8-inspector-64.png | Bin 0 -> 2262 bytes docs/assets/images/icons/icons8-list-64.png | Bin 0 -> 1134 bytes docs/assets/images/icons/icons8-module-64.png | Bin 0 -> 1622 bytes docs/assets/images/icons/icons8-plan-64.png | Bin 0 -> 597 bytes docs/assets/images/icons/icons8-plugin-64.png | Bin 0 -> 682 bytes .../assets/images/icons/icons8-program-64.png | Bin 0 -> 1173 bytes .../icons/icons8-remove-property-64.png | Bin 0 -> 1315 bytes docs/assets/images/icons/icons8-report-64.png | Bin 0 -> 911 bytes docs/assets/images/icons/icons8-source-64.png | Bin 0 -> 1485 bytes .../images/icons/icons8-sys-info-64.png | Bin 0 -> 1031 bytes .../images/icons/icons8-template-64.png | Bin 0 -> 1147 bytes .../images/icons/icons8-true-false-64.png | Bin 0 -> 938 bytes docs/assets/images/logos/logo.svg | 1 + docs/assets/js/asciinema-player.js | 32424 ++++++++++++++++ docs/requirements.txt | 20 +- k8s/README.md | 42 + k8s/backend/deployment.yaml | 68 + k8s/backend/hpa.yaml | 29 + k8s/backend/job.yaml | 25 + k8s/backend/kustomization.yaml | 6 + k8s/backend/service.yaml | 22 + k8s/common/namespace.yaml | 4 + k8s/common/reconciler-rbac.yaml | 29 + k8s/common/service-account.yaml | 5 + k8s/kind.sh | 47 + k8s/overlays/dev/kustomization.yaml | 7 + k8s/overlays/dev/labels.yaml | 10 + k8s/overlays/dev/namespace.yaml | 4 + k8s/overlays/prod/kustomization.yaml | 7 + k8s/overlays/prod/labels.yaml | 10 + k8s/overlays/prod/namespace.yaml | 4 + k8s/overlays/staging/kustomization.yaml | 7 + k8s/overlays/staging/labels.yaml | 10 + k8s/overlays/staging/namespace.yaml | 4 + k8s/secure/backend/certificate.yaml | 20 + k8s/secure/backend/deployment.yaml | 80 + k8s/secure/backend/hpa.yaml | 29 + k8s/secure/backend/service.yaml | 26 + k8s/secure/common/cluster-issuer.yaml | 6 + k8s/secure/common/config-map.yaml | 7 + k8s/secure/common/namespace.yaml | 4 + k8s/secure/common/reconciler-rbac.yaml | 29 + k8s/secure/common/service-account.yaml | 8 + mkdocs.yml | 128 +- package.json | 59 +- policy/deny.rego | 38 + policy/kubernetes.rego | 49 + policy/labels.rego | 20 + policy/rules.rego | 43 + policy/violation.rego | 10 + policy/warn.rego | 10 + record-start-time.py | 20 + record-start-time.sh | 11 + scripts/build-docs.sh | 8 +- scripts/create-changelog.sh | 24 + tilt_modules/conftest/README.md | 44 + tilt_modules/conftest/Tiltfile | 54 + tilt_modules/namespace/README.md | 52 + tilt_modules/namespace/Tiltfile | 78 + tilt_modules/namespace/test/Tiltfile | 12 + tilt_modules/namespace/test/deployment.yaml | 35 + .../namespace/test/job-default-namespace.yaml | 13 + tilt_modules/namespace/test/job.yaml | 14 + tilt_modules/namespace/test/test.sh | 7 + tilt_modules/tilt_inspector/.gitignore | 2 + tilt_modules/tilt_inspector/README.md | 24 + tilt_modules/tilt_inspector/Tiltfile | 18 + tilt_modules/tilt_inspector/test/Tiltfile | 8 + tilt_modules/tilt_inspector/test/test.sh | 7 + tilt_modules/uibutton/README.md | 124 + tilt_modules/uibutton/Tiltfile | 103 + tilt_modules/uibutton/test/Tiltfile | 10 + tilt_modules/uibutton/test/goose.svg | 4 + tilt_modules/uibutton/test/test.sh | 7 + 102 files changed, 37670 insertions(+), 138 deletions(-) create mode 100644 .github/workflows/docker.yaml create mode 100644 .husky/post-commit create mode 100644 .pylintrc create mode 100644 .tiltignore create mode 100644 Tiltfile create mode 100644 docs/assets/css/asciinema-player.css create mode 100644 docs/assets/css/extra.css create mode 100644 docs/assets/images/favicons/favicon.ico create mode 100644 docs/assets/images/icons/icons8-add-property-64.png create mode 100644 docs/assets/images/icons/icons8-attach-64.png create mode 100644 docs/assets/images/icons/icons8-bug-64.png create mode 100644 docs/assets/images/icons/icons8-code-64.png create mode 100644 docs/assets/images/icons/icons8-edit-property-64.png create mode 100644 docs/assets/images/icons/icons8-editor-64.png create mode 100644 docs/assets/images/icons/icons8-fork-64.png create mode 100644 docs/assets/images/icons/icons8-help-64.png create mode 100644 docs/assets/images/icons/icons8-inspect-code-64.png create mode 100644 docs/assets/images/icons/icons8-inspector-64.png create mode 100644 docs/assets/images/icons/icons8-list-64.png create mode 100644 docs/assets/images/icons/icons8-module-64.png create mode 100644 docs/assets/images/icons/icons8-plan-64.png create mode 100644 docs/assets/images/icons/icons8-plugin-64.png create mode 100644 docs/assets/images/icons/icons8-program-64.png create mode 100644 docs/assets/images/icons/icons8-remove-property-64.png create mode 100644 docs/assets/images/icons/icons8-report-64.png create mode 100644 docs/assets/images/icons/icons8-source-64.png create mode 100644 docs/assets/images/icons/icons8-sys-info-64.png create mode 100644 docs/assets/images/icons/icons8-template-64.png create mode 100644 docs/assets/images/icons/icons8-true-false-64.png create mode 100644 docs/assets/images/logos/logo.svg create mode 100644 docs/assets/js/asciinema-player.js create mode 100644 k8s/README.md create mode 100644 k8s/backend/deployment.yaml create mode 100644 k8s/backend/hpa.yaml create mode 100644 k8s/backend/job.yaml create mode 100644 k8s/backend/kustomization.yaml create mode 100644 k8s/backend/service.yaml create mode 100644 k8s/common/namespace.yaml create mode 100644 k8s/common/reconciler-rbac.yaml create mode 100644 k8s/common/service-account.yaml create mode 100644 k8s/kind.sh create mode 100644 k8s/overlays/dev/kustomization.yaml create mode 100644 k8s/overlays/dev/labels.yaml create mode 100644 k8s/overlays/dev/namespace.yaml create mode 100644 k8s/overlays/prod/kustomization.yaml create mode 100644 k8s/overlays/prod/labels.yaml create mode 100644 k8s/overlays/prod/namespace.yaml create mode 100644 k8s/overlays/staging/kustomization.yaml create mode 100644 k8s/overlays/staging/labels.yaml create mode 100644 k8s/overlays/staging/namespace.yaml create mode 100644 k8s/secure/backend/certificate.yaml create mode 100644 k8s/secure/backend/deployment.yaml create mode 100644 k8s/secure/backend/hpa.yaml create mode 100644 k8s/secure/backend/service.yaml create mode 100644 k8s/secure/common/cluster-issuer.yaml create mode 100644 k8s/secure/common/config-map.yaml create mode 100644 k8s/secure/common/namespace.yaml create mode 100644 k8s/secure/common/reconciler-rbac.yaml create mode 100644 k8s/secure/common/service-account.yaml create mode 100644 policy/deny.rego create mode 100644 policy/kubernetes.rego create mode 100644 policy/labels.rego create mode 100644 policy/rules.rego create mode 100644 policy/violation.rego create mode 100644 policy/warn.rego create mode 100644 record-start-time.py create mode 100644 record-start-time.sh create mode 100644 scripts/create-changelog.sh create mode 100644 tilt_modules/conftest/README.md create mode 100644 tilt_modules/conftest/Tiltfile create mode 100644 tilt_modules/namespace/README.md create mode 100644 tilt_modules/namespace/Tiltfile create mode 100644 tilt_modules/namespace/test/Tiltfile create mode 100644 tilt_modules/namespace/test/deployment.yaml create mode 100644 tilt_modules/namespace/test/job-default-namespace.yaml create mode 100644 tilt_modules/namespace/test/job.yaml create mode 100644 tilt_modules/namespace/test/test.sh create mode 100644 tilt_modules/tilt_inspector/.gitignore create mode 100644 tilt_modules/tilt_inspector/README.md create mode 100644 tilt_modules/tilt_inspector/Tiltfile create mode 100644 tilt_modules/tilt_inspector/test/Tiltfile create mode 100644 tilt_modules/tilt_inspector/test/test.sh create mode 100644 tilt_modules/uibutton/README.md create mode 100644 tilt_modules/uibutton/Tiltfile create mode 100644 tilt_modules/uibutton/test/Tiltfile create mode 100644 tilt_modules/uibutton/test/goose.svg create mode 100644 tilt_modules/uibutton/test/test.sh diff --git a/.dockerignore b/.dockerignore index 687544c95b..7c9aaa8e27 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,15 @@ -/.dependabot -/.github -/.husky -/.idea -/node_modules +.dependabot +.github +.husky +.idea +reports +scripts +images +k8s +traffic +node_modules +tilt_modules + npm-debug.log +.gitignore + diff --git a/.env b/.env index ffcb1b1946..c360b7a898 100644 --- a/.env +++ b/.env @@ -1,8 +1,14 @@ ##################################################### ###### General settings ##################################################### -APP_HOST_NAME=android-patterns -APP_CONTAINER_NAME=android-patterns -APP_IMAGE_NAME=android-patterns +IMAGE_SOURCE=node +IMAGE_TAG=12-buster + +APP_NAME=android-patterns +APP_HOST_NAME=${APP_NAME} +APP_CONTAINER_NAME=${APP_NAME} +APP_IMAGE_NAME=${APP_NAME} APP_DATA_DIR=./data + +TILT_WATCH_WINDOWS_BUFFER_SIZE=10265536 diff --git a/.github/community-code-of-conduct.md b/.github/community-code-of-conduct.md index 8f5445bd34..c13681faa7 100644 --- a/.github/community-code-of-conduct.md +++ b/.github/community-code-of-conduct.md @@ -55,4 +55,4 @@ Should incidents arise, upon adjudication those found to be in violation of this ## Policy precedence -This version of the Nullables.io Community Code of Conduct may be a copy included for your convenience, and as such may not be up to date; all versions of the Nullables.io Community Code of Conduct are superseded by the version found in the [repository](https://github.com/AlexRogalskiy/gradle-java-sample), which takes precedence over any prior versions. +This version of the Nullables.io Community Code of Conduct may be a copy included for your convenience, and as such may not be up to date; all versions of the Nullables.io Community Code of Conduct are superseded by the version found in the [repository](https://github.com/AlexRogalskiy/android-patterns), which takes precedence over any prior versions. diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 0000000000..d7462eeadb --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,39 @@ +name: Docker build and container scan + +on: + push: + branches: + - '**' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Docker build + run: | + docker build . --file Dockerfile --tag containerscanner:${{ github.sha }} + + - name: Anchore scan + uses: anchore/scan-action@1.0.6 + with: + image-reference: containerscanner:${{ github.sha }} + dockerfile-path: Dockerfile + include-app-packages: true + fail-build: true # no idea why it doesn't work + + - name: Show Anchore results + run: for j in `ls ./anchore-reports/*.json`; do echo "---- ${j} ----"; cat ${j}; echo; done + if: ${{ always() }} + + - name: Upload Anchore results + uses: actions/upload-artifact@v2 + with: + name: anchore-reports + path: ./anchore-reports/ + if: ${{ always() }} + + - name: Fail on any vulnerability + run: jq -e '.vulnerabilities | any( . ) | not' anchore-reports/vulnerabilities.json diff --git a/.gitignore b/.gitignore index 7db57f06df..76c3ac178b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ lerna-debug.log* .npm .eslintcache lunr-index.json +build.txt # Package files *.jar diff --git a/.husky/post-commit b/.husky/post-commit new file mode 100644 index 0000000000..a06768dcbf --- /dev/null +++ b/.husky/post-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run validate:commit diff --git a/.prettierignore b/.prettierignore index d69125f41a..4148ffbedd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,3 +12,5 @@ node_modules flow-typed coverage dist +helm +tilt_modules diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000000..2e278810ec --- /dev/null +++ b/.pylintrc @@ -0,0 +1,5 @@ +[FORMAT] +indent-string=\t + +[MESSAGES CONTROL] +disable=C0103,C0111,C0301,R0902,R0903,R0904,R1723,W0703 diff --git a/.stylelintignore b/.stylelintignore index 92c6cdf2d6..338f656357 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -5,5 +5,8 @@ docs images node_modules +tilt_modules +k8s +helm reports scripts diff --git a/.tiltignore b/.tiltignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9044fd7d53..f23d2f4b13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -# [0.0.0](https://github.com/AlexRogalskiy/spark-patterns/compare/v1.0.1...v0.0.0) (2021-08-04) +# [0.0.0](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v0.0.0) (2021-08-11) -## [1.0.1](https://github.com/AlexRogalskiy/spark-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...v1.0.1) (2021-02-18) diff --git a/Dockerfile b/Dockerfile index d45db1c618..f05562e721 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,45 @@ -## Setting image source variables +## +## ---- Base OS layer ---- +## docker build -t --build-arg IMAGE_SOURCE=node IMAGE_TAG=12-buster . +## ARG IMAGE_SOURCE=node ARG IMAGE_TAG=12-buster -## Setting base image -FROM ${IMAGE_SOURCE}:${IMAGE_TAG} +FROM ${IMAGE_SOURCE}:${IMAGE_TAG} AS base -## Setting argument variables +## setup base stage +RUN echo "**** Base stage ****" + +## setup image arguments ARG PYTHON_VERSION=3.8.2 -ARG LC_ALL="en_US.UTF-8" +ARG USER +ARG UID +ARG GID ARG NAME="android-patterns" -ARG VERSION="0.0.0-dev" +ARG VERSION="$(git describe --abbrev=0 --tag)" +ARG PACKAGE="AlexRogalskiy/android-patterns" +ARG DESCRIPTION="Android Design Patterns" -ARG BUILD_DATE="$(git rev-parse --short HEAD)" -ARG VCS_REF="$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")" +ARG LC_ALL="en_US.UTF-8" +ARG BUILD_DATE="$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")" +ARG VCS_REF="$(git rev-parse --short HEAD)" ARG APP_DIR="/usr/src/app" ARG DATA_DIR="/usr/src/data" +ARG TEMP_DIR="/tmp" + +ARG INSTALL_PACKAGES="git curl tini dos2unix locales" -## Setting metadata labels +## setup image labels LABEL "name"="$NAME" LABEL "version"="$VERSION" +LABEL "description"="$DESCRIPTION" -LABEL "com.github.repository"="https://github.com/AlexRogalskiy/android-patterns" -LABEL "com.github.homepage"="https://github.com/AlexRogalskiy/android-patterns" +LABEL "com.github.repository"="https://github.com/${PACKAGE}" +LABEL "com.github.homepage"="https://github.com/${PACKAGE}" +LABEL "com.github.documentation"="https://github.com/${PACKAGE}/blob/master/README.md" LABEL "com.github.maintainer"="Sensiblemetrics, Inc. (https://sensiblemetrics.io)" LABEL "com.github.version"="$VERSION" @@ -32,63 +47,172 @@ LABEL "com.github.build-date"="$BUILD_DATE" LABEL "com.github.vcs-ref"="$VCS_REF" LABEL "com.github.name"="$NAME" -LABEL "com.github.description"="Android Design Patterns" +LABEL "com.github.description"="$DESCRIPTION" -## Setting environment variables +## setup environment variables ENV PYTHON_VERSION $PYTHON_VERSION ENV APP_DIR=$APP_DIR \ - DATA_DIR=$DATA_DIR + DATA_DIR=$DATA_DIR \ + TEMP_DIR=$TEMP_DIR -# System-level base config ENV TZ=UTC \ LANGUAGE=en_US:en \ LC_ALL=$LC_ALL \ + LC_CTYPE=$LC_ALL \ LANG=$LC_ALL \ PYTHONIOENCODING=UTF-8 \ + PYTHONLEGACYWINDOWSSTDIO=UTF-8 \ PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ DEBIAN_FRONTEND=noninteractive \ - APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 - -## Mounting volumes -VOLUME ["$APP_DIR"] - -## Creating work directory + APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_NO_CACHE_DIR=1 \ + PIP_DEFAULT_TIMEOUT=100 \ + NPM_CONFIG_LOGLEVEL=error \ + IN_DOCKER=True + +ENV USER=${USER:-'devbot'} \ + UID=${UID:-5000} \ + GID=${GID:-10000} + +## create user +RUN addgroup --gid "$GID" "$USER" || exit 0 +RUN adduser \ + --disabled-password \ + --gecos "" \ + --ingroup "$USER" \ + --uid "$UID" \ + --shell /bin/bash \ + "$USER" \ + || exit 0 + +## mount volumes +VOLUME ["$APP_DIR", "$DATA_DIR", "$TEMP_DIR"] + +## create working directory WORKDIR $APP_DIR -# (workaround) Install cookiecutter and mkdocs to avoid the need to run docker in docker +## install dependencies +RUN echo "**** Installing build packages ****" +## RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list +RUN apt-get update \ + && apt-get install --assume-yes --no-install-recommends $INSTALL_PACKAGES \ + && apt-get autoclean \ + && apt-get clean \ + && apt-get autoremove \ + && rm -rf /var/lib/apt/lists/* + +## install python +RUN echo "**** Installing Python ****" RUN cd /tmp && curl -O https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz && \ tar -xvf Python-${PYTHON_VERSION}.tar.xz && \ cd Python-${PYTHON_VERSION} && \ ./configure --enable-optimizations && \ make -j 4 && \ - make altinstall + make altinstall && \ + ln -s /usr/local/bin/python3.8 /usr/bin/python3.8 + +## show versions +RUN echo "npm version: $(npm --version)" +RUN echo "node version: $(node --version | awk -F. '{print $1}')" +RUN echo "python version: $(python3 --version)" + +## setup entrypoint +ENTRYPOINT [ "/usr/bin/tini", "--" ] + +## remove cache +RUN echo "**** Cleaning cache ****" + +RUN apt-get remove -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev g++ +RUN rm -rf /var/cache/apt/* /tmp/* /var/tmp/* + +## copy project files +COPY package.json . +COPY ./docs/requirements.txt . + +## +## ---- Python Dependencies ---- +## +FROM base AS python-dependencies + +## setup python dependencies stage +RUN echo "**** Installing python modules stage ****" + +RUN /usr/bin/python3.8 -m pip install --upgrade setuptools && \ + /usr/bin/python3.8 -m pip install --upgrade pip && \ + /usr/bin/python3.8 -m pip install -r requirements.txt -RUN apt update +## remove cache +RUN echo "**** Cleaning python cache ****" -RUN pip3.8 install --upgrade pip --quiet +RUN rm -rf ~/.cache/pip -RUN pip3.8 install mkdocs --no-cache-dir --quiet -RUN pip3.8 install mkdocs-material --no-cache-dir --quiet -RUN pip3.8 install markdown-include --no-cache-dir --quiet -RUN pip3.8 install mkdocs-techdocs-core --no-cache-dir --quiet -RUN pip3.8 install click-man --no-cache-dir --quiet -## click-man --target path/to/man/pages mkdocs +## +## ---- Node Dependencies ---- +## +FROM base AS node-dependencies -RUN pip3.8 install cookiecutter --no-cache-dir --quiet && \ - apt remove -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev g++ python-pip python-dev && \ - rm -rf /var/cache/apt/* /tmp/Python-${PYTHON_VERSION} +## setup node modules stage +RUN echo "**** Installing node modules stage ****" +## update npm settings +RUN npm set progress=false && npm config set depth 0 + +## install only node_modules +## RUN npm install --no-audit --only=prod + +## copy production node_modules aside +## RUN cp -R node_modules prod_node_modules + +## install node_modules, including 'devDependencies' +RUN npm install --no-audit + +## remove cache +RUN echo "**** Cleaning node cache ****" + +RUN npm cache clean --force + +## +## ---- Testing ---- +## +FROM node-dependencies AS test + +## setup testing stage +RUN echo "**** Testing stage ****" + +## copy source files COPY . ./ -## Install dependencies -RUN npm install +## run format checking & linting +RUN npm run test:all + +## +## ---- Release ---- +## +FROM base AS release + +## setup release stage +RUN echo "**** Release stage ****" + +## copy dependencies +#COPY --from=node-dependencies ${APP_DIR}/prod_node_modules ./node_modules +COPY --from=node-dependencies ${APP_DIR}/node_modules ./node_modules +COPY --from=python-dependencies /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages + +## setup environment path +ENV PATH=/root/.local:$PATH + +## copy app sources +COPY . ./ -## Run format checking & linting -RUN npm run all +## setup user +USER $USER -## Expose port +## expose port EXPOSE 8000 -## Running package bundle -ENTRYPOINT [ "sh", "-c", "mkdocs serve --verbose --dirtyreload" ] +## define cmd +CMD [ "/usr/bin/python3.8", "-m", "mkdocs", "serve", "--verbose", "--dirtyreload", "--dev-addr=0.0.0.0:8000" ] +## CMD [ "mkdocs", "serve", "--verbose", "--dirtyreload", "-a", "0.0.0.0:8000" ] diff --git a/README.md b/README.md index 3ea3e93b9a..4527d600b0 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,9 @@ python -m mkdocs ```shell script python -m pip install mkdocs-material python -m pip install markdown-include +... +(see requirements.txt) +... ``` 4\) Start the server at ***localhost*** by running the following command: @@ -178,6 +181,20 @@ python -m mkdocs --verbose gh-deploy --force --remote-branch gh-pages 5\) Open up [localhost](http://127.0.0.1:8000/) in browser to get the default documentation homepage. +## 🧶 *Kubernetes* + +Running k8s cluster with tilt command by acquiring k8s deployment configuration: + +```shell +tilt up +``` + +Shutting down k8s cluster with provisioned resources removal: + +```shell +tilt down --delete-namespaces +``` + ## ⏰ *Statistics*

diff --git a/Tiltfile b/Tiltfile new file mode 100644 index 0000000000..f68138589b --- /dev/null +++ b/Tiltfile @@ -0,0 +1,42 @@ +# -*- mode: Python -* + +# For more on Extensions, see: https://docs.tilt.dev/extensions.html +load('ext://restart_process', 'docker_build_with_restart') +load('ext://conftest', 'conftest') +load('ext://list_port_forwards', 'display_port_forwards') +load('ext://print_tiltfile_dir', 'print_tiltfile_dir') +load('ext://min_tilt_version', 'min_tilt_version') +min_tilt_version('0.13.0') + +load('ext://tilt_inspector', 'tilt_inspector') +tilt_inspector() + +#load('ext://min_k8s_version', 'min_k8s_version') +#min_k8s_version('1.21.1') + +load('ext://namespace', 'namespace_create', 'namespace_inject') +namespace_create('webapp') + +conftest(path='k8s/backend/deployment.yaml', namespace='main') +# k8s_yaml('k8s/backend/deployment.yaml') +k8s_yaml(namespace_inject(read_file('k8s/backend/deployment.yaml'), 'webapp'), allow_duplicates=False) +k8s_resource('backend', port_forwards=8000, resource_deps=['deploy', 'conftest']) + +# Records the current time, then kicks off a server update. +# Normally, you would let Tilt do deploys automatically, but this +# shows you how to set up a custom workflow that measures it. +local_resource( + 'deploy', + 'python3 ./record-start-time.py' +) + +# Add a live_update rule to our docker_build +congrats = "🎉 Congrats, you ran a live_update! 🎉" +docker_build_with_restart('android-patterns', '.', build_args={'IMAGE_SOURCE': 'node', 'IMAGE_TAG': '12-buster'}, + dockerfile='./Dockerfile', + entrypoint=['mkdocs', 'serve', '--verbose', '--dirtyreload'], + live_update=[ + sync('.', '/usr/src/app'), + run('python3 ./record-start-time.py'), + run('cd /usr/src/app/docs && pip3.8 install -r requirements.txt --quiet', trigger='./requirements.txt') +]) diff --git a/default_rules.yaml b/default_rules.yaml index ad03c3370d..8ec28218dc 100644 --- a/default_rules.yaml +++ b/default_rules.yaml @@ -75,7 +75,7 @@ line_rules: - '_recommended_labels_for_your_project' FROM: - paramSyntaxRegex: /^[${}\w./\-:]+(:[${}\w.]+)?(-[${}\w.]+)?( as \w+)?$/i + paramSyntaxRegex: /^[${}\w./\-:]+(:[${}\w.]+)?(-[${}\w.]+)?( as [-_\w]+)?$/i rules: - label: 'is_latest_tag' regex: /latest/ @@ -206,7 +206,7 @@ line_rules: paramSyntaxRegex: /.+/ rules: [] USER: - paramSyntaxRegex: /^[a-z0-9_][a-z0-9_-]{0,40}$/ + paramSyntaxRegex: /^[a-zA-Z0-9_$][a-zA-Z0-9_-]{0,40}$/ rules: [] WORKDIR: paramSyntaxRegex: /^~?[\w\d-\/.{}$\/:]+[\s]*$/ diff --git a/docker-compose.yml b/docker-compose.yml index 8d16a1aaba..8ffc15a81d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,62 @@ version: '3.9' +x-deploy: &deploy-template + deploy: + mode: global + +x-restart-deploy: &restart-deploy-template + <<: *deploy-template + deploy: + restart_policy: + condition: on-failure + max_attempts: 3 + delay: 5s + window: 120s + +x-replica-deploy: &replica-deploy-template + <<: *deploy-template + deploy: + mode: replicated + replicas: 2 + update_config: + parallelism: 2 + delay: 10s + order: stop-first + resources: + limits: + cpus: '0.5' + memory: 1000M + reservations: + memory: 250M + +x-logging: &logging-template + logging: + options: + max-size: '100m' + max-file: '10' + +x-restart: &restart-template + restart: unless-stopped + services: app: + <<: *deploy-template + <<: *logging-template + <<: *restart-template container_name: ${APP_CONTAINER_NAME:-'android-patterns'} image: ${APP_IMAGE_NAME:-'android-patterns'} hostname: ${APP_HOST_NAME:-'android-patterns'} build: context: './' dockerfile: Dockerfile - restart: always + labels: + - 'org.opencontainers.image.authors=Alexander Rogalskiy' + - 'org.opencontainers.image.vendor=Sensiblemetrics, Inc.' + args: + IMAGE_SOURCE: '$IMAGE_SOURCE' + IMAGE_TAG: '$IMAGE_TAG' + env_file: + - .env volumes: - type: volume source: appvolume @@ -27,12 +75,6 @@ services: - default ports: - '${IP_ADDRESS:-127.0.0.1}:${APP_SERVER_PORT:-8000}:8000' - deploy: - mode: global - logging: - options: - max-size: '100m' - max-file: '10' networks: default: diff --git a/docs/assets/css/asciinema-player.css b/docs/assets/css/asciinema-player.css new file mode 100644 index 0000000000..00e9c95d3a --- /dev/null +++ b/docs/assets/css/asciinema-player.css @@ -0,0 +1,3330 @@ +.asciinema-player-wrapper { + position: relative; + text-align: center; + outline: none; +} + +.asciinema-player-wrapper .title-bar { + display: none; + top: -78px; + transition: top 0.15s linear; + position: absolute; + left: 0; + right: 0; + box-sizing: content-box; + font-size: 20px; + line-height: 1em; + padding: 15px; + font-family: sans-serif; + color: white; + background-color: rgba(0, 0, 0, 0.8); +} + +.asciinema-player-wrapper .title-bar img { + vertical-align: middle; + height: 48px; + margin-right: 16px; +} + +.asciinema-player-wrapper .title-bar a { + color: white; + text-decoration: underline; +} + +.asciinema-player-wrapper .title-bar a:hover { + text-decoration: none; +} + +.asciinema-player-wrapper:fullscreen { + background-color: #000; + width: 100%; + height: 100%; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; +} + +.asciinema-player-wrapper:fullscreen .asciinema-player { + position: static; +} + +.asciinema-player-wrapper:fullscreen .title-bar { + display: initial; +} + +.asciinema-player-wrapper:fullscreen.hud .title-bar { + top: 0; +} + +.asciinema-player-wrapper:-webkit-full-screen { + background-color: #000; + width: 100%; + height: 100%; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; +} + +.asciinema-player-wrapper:-webkit-full-screen .asciinema-player { + position: static; +} + +.asciinema-player-wrapper:-webkit-full-screen .title-bar { + display: initial; +} + +.asciinema-player-wrapper:-webkit-full-screen.hud .title-bar { + top: 0; +} + +.asciinema-player-wrapper:-moz-full-screen { + background-color: #000; + width: 100%; + height: 100%; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; +} + +.asciinema-player-wrapper:-moz-full-screen .asciinema-player { + position: static; +} + +.asciinema-player-wrapper:-moz-full-screen .title-bar { + display: initial; +} + +.asciinema-player-wrapper:-moz-full-screen.hud .title-bar { + top: 0; +} + +.asciinema-player-wrapper:-ms-fullscreen { + background-color: #000; + width: 100%; + height: 100%; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; +} + +.asciinema-player-wrapper:-ms-fullscreen .asciinema-player { + position: static; +} + +.asciinema-player-wrapper:-ms-fullscreen .title-bar { + display: initial; +} + +.asciinema-player-wrapper:-ms-fullscreen.hud .title-bar { + top: 0; +} + +.asciinema-player-wrapper .asciinema-player { + text-align: left; + display: inline-block; + padding: 0px; + position: relative; + box-sizing: content-box; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + overflow: hidden; + max-width: 100%; +} + +.asciinema-terminal { + box-sizing: content-box; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + overflow: hidden; + padding: 0; + margin: 0px; + display: block; + white-space: pre; + border: 0; + word-wrap: normal; + word-break: normal; + border-radius: 0; + border-style: solid; + cursor: text; + border-width: 0.5em; + font-family: Consolas, Menlo, 'Bitstream Vera Sans Mono', monospace, 'Powerline Symbols'; + line-height: 1.3333333333em; +} + +.asciinema-terminal .line { + letter-spacing: normal; + overflow: hidden; + height: 1.3333333333em; +} + +.asciinema-terminal .line span { + padding: 0; + display: inline-block; + height: 1.3333333333em; +} + +.asciinema-terminal .line { + display: block; + width: 200%; +} + +.asciinema-terminal .bright { + font-weight: bold; +} + +.asciinema-terminal .underline { + text-decoration: underline; +} + +.asciinema-terminal .italic { + font-style: italic; +} + +.asciinema-terminal.font-small { + font-size: 12px; +} + +.asciinema-terminal.font-medium { + font-size: 18px; +} + +.asciinema-terminal.font-big { + font-size: 24px; +} + +.asciinema-player .control-bar { + width: 100%; + height: 32px; + background: rgba(0, 0, 0, 0.8); + /* no gradient fallback */ + background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); + /* FF3.6-15 */ + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); + /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); + /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + color: #bbbbbb; + box-sizing: content-box; + line-height: 1; + position: absolute; + bottom: -35px; + left: 0; + transition: bottom 0.15s linear; +} + +.asciinema-player .control-bar * { + box-sizing: inherit; + font-size: 0; +} + +.asciinema-player .control-bar svg.icon path { + fill: #bbbbbb; +} + +.asciinema-player .control-bar .playback-button { + display: block; + float: left; + cursor: pointer; + height: 12px; + width: 12px; + padding: 10px; +} + +.asciinema-player .control-bar .playback-button svg { + height: 12px; + width: 12px; +} + +.asciinema-player .control-bar .timer { + display: block; + float: left; + width: 50px; + height: 100%; + text-align: center; + font-family: Helvetica, Arial, sans-serif; + font-size: 11px; + font-weight: bold; + line-height: 32px; + cursor: default; +} + +.asciinema-player .control-bar .timer span { + display: inline-block; + font-size: inherit; +} + +.asciinema-player .control-bar .timer .time-remaining { + display: none; +} + +.asciinema-player .control-bar .timer:hover .time-elapsed { + display: none; +} + +.asciinema-player .control-bar .timer:hover .time-remaining { + display: inline; +} + +.asciinema-player .control-bar .progressbar { + display: block; + overflow: hidden; + height: 100%; + padding: 0 10px; +} + +.asciinema-player .control-bar .progressbar .bar { + display: block; + cursor: pointer; + height: 100%; + padding-top: 15px; + font-size: 0; +} + +.asciinema-player .control-bar .progressbar .bar .gutter { + display: block; + height: 3px; + background-color: #333; +} + +.asciinema-player .control-bar .progressbar .bar .gutter span { + display: inline-block; + height: 100%; + background-color: #bbbbbb; + border-radius: 3px; +} + +.asciinema-player .control-bar.live .progressbar .bar { + cursor: default; +} + +.asciinema-player .control-bar .fullscreen-button { + display: block; + float: right; + width: 14px; + height: 14px; + padding: 9px; + cursor: pointer; +} + +.asciinema-player .control-bar .fullscreen-button svg { + width: 14px; + height: 14px; +} + +.asciinema-player .control-bar .fullscreen-button svg:first-child { + display: inline; +} + +.asciinema-player .control-bar .fullscreen-button svg:last-child { + display: none; +} + +.asciinema-player-wrapper.hud .control-bar { + bottom: 0px; +} + +.asciinema-player-wrapper:fullscreen .fullscreen-button svg:first-child { + display: none; +} + +.asciinema-player-wrapper:fullscreen .fullscreen-button svg:last-child { + display: inline; +} + +.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:first-child { + display: none; +} + +.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:last-child { + display: inline; +} + +.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:first-child { + display: none; +} + +.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:last-child { + display: inline; +} + +.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:first-child { + display: none; +} + +.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:last-child { + display: inline; +} + +.asciinema-player .loading { + z-index: 10; + background-repeat: no-repeat; + background-position: center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 32px; + background-color: rgba(0, 0, 0, 0.5); +} + +.asciinema-player .start-prompt { + z-index: 10; + background-repeat: no-repeat; + background-position: center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 32px; + z-index: 20; + cursor: pointer; +} + +.asciinema-player .start-prompt .play-button { + font-size: 0px; +} + +.asciinema-player .start-prompt .play-button { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + text-align: center; + color: white; + display: table; + width: 100%; + height: 100%; +} + +.asciinema-player .start-prompt .play-button div { + vertical-align: middle; + display: table-cell; +} + +.asciinema-player .start-prompt .play-button div span { + width: 96px; + height: 96px; + display: inline-block; +} + +@-webkit-keyframes expand { + 0% { + -webkit-transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + } + 100% { + z-index: 1; + } +} + +@-moz-keyframes expand { + 0% { + -moz-transform: scale(0); + } + 50% { + -moz-transform: scale(1); + } + 100% { + z-index: 1; + } +} + +@-o-keyframes expand { + 0% { + -o-transform: scale(0); + } + 50% { + -o-transform: scale(1); + } + 100% { + z-index: 1; + } +} + +@keyframes expand { + 0% { + transform: scale(0); + } + 50% { + transform: scale(1); + } + 100% { + z-index: 1; + } +} + +.loader { + position: absolute; + left: 50%; + top: 50%; + margin: -20px 0 0 -20px; + background-color: white; + border-radius: 50%; + box-shadow: 0 0 0 6.66667px #141414; + width: 40px; + height: 40px; +} + +.loader:before, +.loader:after { + content: ""; + position: absolute; + left: 50%; + top: 50%; + display: block; + margin: -21px 0 0 -21px; + border-radius: 50%; + z-index: 2; + width: 42px; + height: 42px; +} + +.loader:before { + background-color: #141414; + -webkit-animation: expand 1.6s linear infinite both; + -moz-animation: expand 1.6s linear infinite both; + animation: expand 1.6s linear infinite both; +} + +.loader:after { + background-color: white; + -webkit-animation: expand 1.6s linear 0.8s infinite both; + -moz-animation: expand 1.6s linear 0.8s infinite both; + animation: expand 1.6s linear 0.8s infinite both; +} + +.asciinema-terminal .fg-16 { + color: #000000; +} + +.asciinema-terminal .bg-16 { + background-color: #000000; +} + +.asciinema-terminal .fg-17 { + color: #00005f; +} + +.asciinema-terminal .bg-17 { + background-color: #00005f; +} + +.asciinema-terminal .fg-18 { + color: #000087; +} + +.asciinema-terminal .bg-18 { + background-color: #000087; +} + +.asciinema-terminal .fg-19 { + color: #0000af; +} + +.asciinema-terminal .bg-19 { + background-color: #0000af; +} + +.asciinema-terminal .fg-20 { + color: #0000d7; +} + +.asciinema-terminal .bg-20 { + background-color: #0000d7; +} + +.asciinema-terminal .fg-21 { + color: #0000ff; +} + +.asciinema-terminal .bg-21 { + background-color: #0000ff; +} + +.asciinema-terminal .fg-22 { + color: #005f00; +} + +.asciinema-terminal .bg-22 { + background-color: #005f00; +} + +.asciinema-terminal .fg-23 { + color: #005f5f; +} + +.asciinema-terminal .bg-23 { + background-color: #005f5f; +} + +.asciinema-terminal .fg-24 { + color: #005f87; +} + +.asciinema-terminal .bg-24 { + background-color: #005f87; +} + +.asciinema-terminal .fg-25 { + color: #005faf; +} + +.asciinema-terminal .bg-25 { + background-color: #005faf; +} + +.asciinema-terminal .fg-26 { + color: #005fd7; +} + +.asciinema-terminal .bg-26 { + background-color: #005fd7; +} + +.asciinema-terminal .fg-27 { + color: #005fff; +} + +.asciinema-terminal .bg-27 { + background-color: #005fff; +} + +.asciinema-terminal .fg-28 { + color: #008700; +} + +.asciinema-terminal .bg-28 { + background-color: #008700; +} + +.asciinema-terminal .fg-29 { + color: #00875f; +} + +.asciinema-terminal .bg-29 { + background-color: #00875f; +} + +.asciinema-terminal .fg-30 { + color: #008787; +} + +.asciinema-terminal .bg-30 { + background-color: #008787; +} + +.asciinema-terminal .fg-31 { + color: #0087af; +} + +.asciinema-terminal .bg-31 { + background-color: #0087af; +} + +.asciinema-terminal .fg-32 { + color: #0087d7; +} + +.asciinema-terminal .bg-32 { + background-color: #0087d7; +} + +.asciinema-terminal .fg-33 { + color: #0087ff; +} + +.asciinema-terminal .bg-33 { + background-color: #0087ff; +} + +.asciinema-terminal .fg-34 { + color: #00af00; +} + +.asciinema-terminal .bg-34 { + background-color: #00af00; +} + +.asciinema-terminal .fg-35 { + color: #00af5f; +} + +.asciinema-terminal .bg-35 { + background-color: #00af5f; +} + +.asciinema-terminal .fg-36 { + color: #00af87; +} + +.asciinema-terminal .bg-36 { + background-color: #00af87; +} + +.asciinema-terminal .fg-37 { + color: #00afaf; +} + +.asciinema-terminal .bg-37 { + background-color: #00afaf; +} + +.asciinema-terminal .fg-38 { + color: #00afd7; +} + +.asciinema-terminal .bg-38 { + background-color: #00afd7; +} + +.asciinema-terminal .fg-39 { + color: #00afff; +} + +.asciinema-terminal .bg-39 { + background-color: #00afff; +} + +.asciinema-terminal .fg-40 { + color: #00d700; +} + +.asciinema-terminal .bg-40 { + background-color: #00d700; +} + +.asciinema-terminal .fg-41 { + color: #00d75f; +} + +.asciinema-terminal .bg-41 { + background-color: #00d75f; +} + +.asciinema-terminal .fg-42 { + color: #00d787; +} + +.asciinema-terminal .bg-42 { + background-color: #00d787; +} + +.asciinema-terminal .fg-43 { + color: #00d7af; +} + +.asciinema-terminal .bg-43 { + background-color: #00d7af; +} + +.asciinema-terminal .fg-44 { + color: #00d7d7; +} + +.asciinema-terminal .bg-44 { + background-color: #00d7d7; +} + +.asciinema-terminal .fg-45 { + color: #00d7ff; +} + +.asciinema-terminal .bg-45 { + background-color: #00d7ff; +} + +.asciinema-terminal .fg-46 { + color: #00ff00; +} + +.asciinema-terminal .bg-46 { + background-color: #00ff00; +} + +.asciinema-terminal .fg-47 { + color: #00ff5f; +} + +.asciinema-terminal .bg-47 { + background-color: #00ff5f; +} + +.asciinema-terminal .fg-48 { + color: #00ff87; +} + +.asciinema-terminal .bg-48 { + background-color: #00ff87; +} + +.asciinema-terminal .fg-49 { + color: #00ffaf; +} + +.asciinema-terminal .bg-49 { + background-color: #00ffaf; +} + +.asciinema-terminal .fg-50 { + color: #00ffd7; +} + +.asciinema-terminal .bg-50 { + background-color: #00ffd7; +} + +.asciinema-terminal .fg-51 { + color: #00ffff; +} + +.asciinema-terminal .bg-51 { + background-color: #00ffff; +} + +.asciinema-terminal .fg-52 { + color: #5f0000; +} + +.asciinema-terminal .bg-52 { + background-color: #5f0000; +} + +.asciinema-terminal .fg-53 { + color: #5f005f; +} + +.asciinema-terminal .bg-53 { + background-color: #5f005f; +} + +.asciinema-terminal .fg-54 { + color: #5f0087; +} + +.asciinema-terminal .bg-54 { + background-color: #5f0087; +} + +.asciinema-terminal .fg-55 { + color: #5f00af; +} + +.asciinema-terminal .bg-55 { + background-color: #5f00af; +} + +.asciinema-terminal .fg-56 { + color: #5f00d7; +} + +.asciinema-terminal .bg-56 { + background-color: #5f00d7; +} + +.asciinema-terminal .fg-57 { + color: #5f00ff; +} + +.asciinema-terminal .bg-57 { + background-color: #5f00ff; +} + +.asciinema-terminal .fg-58 { + color: #5f5f00; +} + +.asciinema-terminal .bg-58 { + background-color: #5f5f00; +} + +.asciinema-terminal .fg-59 { + color: #5f5f5f; +} + +.asciinema-terminal .bg-59 { + background-color: #5f5f5f; +} + +.asciinema-terminal .fg-60 { + color: #5f5f87; +} + +.asciinema-terminal .bg-60 { + background-color: #5f5f87; +} + +.asciinema-terminal .fg-61 { + color: #5f5faf; +} + +.asciinema-terminal .bg-61 { + background-color: #5f5faf; +} + +.asciinema-terminal .fg-62 { + color: #5f5fd7; +} + +.asciinema-terminal .bg-62 { + background-color: #5f5fd7; +} + +.asciinema-terminal .fg-63 { + color: #5f5fff; +} + +.asciinema-terminal .bg-63 { + background-color: #5f5fff; +} + +.asciinema-terminal .fg-64 { + color: #5f8700; +} + +.asciinema-terminal .bg-64 { + background-color: #5f8700; +} + +.asciinema-terminal .fg-65 { + color: #5f875f; +} + +.asciinema-terminal .bg-65 { + background-color: #5f875f; +} + +.asciinema-terminal .fg-66 { + color: #5f8787; +} + +.asciinema-terminal .bg-66 { + background-color: #5f8787; +} + +.asciinema-terminal .fg-67 { + color: #5f87af; +} + +.asciinema-terminal .bg-67 { + background-color: #5f87af; +} + +.asciinema-terminal .fg-68 { + color: #5f87d7; +} + +.asciinema-terminal .bg-68 { + background-color: #5f87d7; +} + +.asciinema-terminal .fg-69 { + color: #5f87ff; +} + +.asciinema-terminal .bg-69 { + background-color: #5f87ff; +} + +.asciinema-terminal .fg-70 { + color: #5faf00; +} + +.asciinema-terminal .bg-70 { + background-color: #5faf00; +} + +.asciinema-terminal .fg-71 { + color: #5faf5f; +} + +.asciinema-terminal .bg-71 { + background-color: #5faf5f; +} + +.asciinema-terminal .fg-72 { + color: #5faf87; +} + +.asciinema-terminal .bg-72 { + background-color: #5faf87; +} + +.asciinema-terminal .fg-73 { + color: #5fafaf; +} + +.asciinema-terminal .bg-73 { + background-color: #5fafaf; +} + +.asciinema-terminal .fg-74 { + color: #5fafd7; +} + +.asciinema-terminal .bg-74 { + background-color: #5fafd7; +} + +.asciinema-terminal .fg-75 { + color: #5fafff; +} + +.asciinema-terminal .bg-75 { + background-color: #5fafff; +} + +.asciinema-terminal .fg-76 { + color: #5fd700; +} + +.asciinema-terminal .bg-76 { + background-color: #5fd700; +} + +.asciinema-terminal .fg-77 { + color: #5fd75f; +} + +.asciinema-terminal .bg-77 { + background-color: #5fd75f; +} + +.asciinema-terminal .fg-78 { + color: #5fd787; +} + +.asciinema-terminal .bg-78 { + background-color: #5fd787; +} + +.asciinema-terminal .fg-79 { + color: #5fd7af; +} + +.asciinema-terminal .bg-79 { + background-color: #5fd7af; +} + +.asciinema-terminal .fg-80 { + color: #5fd7d7; +} + +.asciinema-terminal .bg-80 { + background-color: #5fd7d7; +} + +.asciinema-terminal .fg-81 { + color: #5fd7ff; +} + +.asciinema-terminal .bg-81 { + background-color: #5fd7ff; +} + +.asciinema-terminal .fg-82 { + color: #5fff00; +} + +.asciinema-terminal .bg-82 { + background-color: #5fff00; +} + +.asciinema-terminal .fg-83 { + color: #5fff5f; +} + +.asciinema-terminal .bg-83 { + background-color: #5fff5f; +} + +.asciinema-terminal .fg-84 { + color: #5fff87; +} + +.asciinema-terminal .bg-84 { + background-color: #5fff87; +} + +.asciinema-terminal .fg-85 { + color: #5fffaf; +} + +.asciinema-terminal .bg-85 { + background-color: #5fffaf; +} + +.asciinema-terminal .fg-86 { + color: #5fffd7; +} + +.asciinema-terminal .bg-86 { + background-color: #5fffd7; +} + +.asciinema-terminal .fg-87 { + color: #5fffff; +} + +.asciinema-terminal .bg-87 { + background-color: #5fffff; +} + +.asciinema-terminal .fg-88 { + color: #870000; +} + +.asciinema-terminal .bg-88 { + background-color: #870000; +} + +.asciinema-terminal .fg-89 { + color: #87005f; +} + +.asciinema-terminal .bg-89 { + background-color: #87005f; +} + +.asciinema-terminal .fg-90 { + color: #870087; +} + +.asciinema-terminal .bg-90 { + background-color: #870087; +} + +.asciinema-terminal .fg-91 { + color: #8700af; +} + +.asciinema-terminal .bg-91 { + background-color: #8700af; +} + +.asciinema-terminal .fg-92 { + color: #8700d7; +} + +.asciinema-terminal .bg-92 { + background-color: #8700d7; +} + +.asciinema-terminal .fg-93 { + color: #8700ff; +} + +.asciinema-terminal .bg-93 { + background-color: #8700ff; +} + +.asciinema-terminal .fg-94 { + color: #875f00; +} + +.asciinema-terminal .bg-94 { + background-color: #875f00; +} + +.asciinema-terminal .fg-95 { + color: #875f5f; +} + +.asciinema-terminal .bg-95 { + background-color: #875f5f; +} + +.asciinema-terminal .fg-96 { + color: #875f87; +} + +.asciinema-terminal .bg-96 { + background-color: #875f87; +} + +.asciinema-terminal .fg-97 { + color: #875faf; +} + +.asciinema-terminal .bg-97 { + background-color: #875faf; +} + +.asciinema-terminal .fg-98 { + color: #875fd7; +} + +.asciinema-terminal .bg-98 { + background-color: #875fd7; +} + +.asciinema-terminal .fg-99 { + color: #875fff; +} + +.asciinema-terminal .bg-99 { + background-color: #875fff; +} + +.asciinema-terminal .fg-100 { + color: #878700; +} + +.asciinema-terminal .bg-100 { + background-color: #878700; +} + +.asciinema-terminal .fg-101 { + color: #87875f; +} + +.asciinema-terminal .bg-101 { + background-color: #87875f; +} + +.asciinema-terminal .fg-102 { + color: #878787; +} + +.asciinema-terminal .bg-102 { + background-color: #878787; +} + +.asciinema-terminal .fg-103 { + color: #8787af; +} + +.asciinema-terminal .bg-103 { + background-color: #8787af; +} + +.asciinema-terminal .fg-104 { + color: #8787d7; +} + +.asciinema-terminal .bg-104 { + background-color: #8787d7; +} + +.asciinema-terminal .fg-105 { + color: #8787ff; +} + +.asciinema-terminal .bg-105 { + background-color: #8787ff; +} + +.asciinema-terminal .fg-106 { + color: #87af00; +} + +.asciinema-terminal .bg-106 { + background-color: #87af00; +} + +.asciinema-terminal .fg-107 { + color: #87af5f; +} + +.asciinema-terminal .bg-107 { + background-color: #87af5f; +} + +.asciinema-terminal .fg-108 { + color: #87af87; +} + +.asciinema-terminal .bg-108 { + background-color: #87af87; +} + +.asciinema-terminal .fg-109 { + color: #87afaf; +} + +.asciinema-terminal .bg-109 { + background-color: #87afaf; +} + +.asciinema-terminal .fg-110 { + color: #87afd7; +} + +.asciinema-terminal .bg-110 { + background-color: #87afd7; +} + +.asciinema-terminal .fg-111 { + color: #87afff; +} + +.asciinema-terminal .bg-111 { + background-color: #87afff; +} + +.asciinema-terminal .fg-112 { + color: #87d700; +} + +.asciinema-terminal .bg-112 { + background-color: #87d700; +} + +.asciinema-terminal .fg-113 { + color: #87d75f; +} + +.asciinema-terminal .bg-113 { + background-color: #87d75f; +} + +.asciinema-terminal .fg-114 { + color: #87d787; +} + +.asciinema-terminal .bg-114 { + background-color: #87d787; +} + +.asciinema-terminal .fg-115 { + color: #87d7af; +} + +.asciinema-terminal .bg-115 { + background-color: #87d7af; +} + +.asciinema-terminal .fg-116 { + color: #87d7d7; +} + +.asciinema-terminal .bg-116 { + background-color: #87d7d7; +} + +.asciinema-terminal .fg-117 { + color: #87d7ff; +} + +.asciinema-terminal .bg-117 { + background-color: #87d7ff; +} + +.asciinema-terminal .fg-118 { + color: #87ff00; +} + +.asciinema-terminal .bg-118 { + background-color: #87ff00; +} + +.asciinema-terminal .fg-119 { + color: #87ff5f; +} + +.asciinema-terminal .bg-119 { + background-color: #87ff5f; +} + +.asciinema-terminal .fg-120 { + color: #87ff87; +} + +.asciinema-terminal .bg-120 { + background-color: #87ff87; +} + +.asciinema-terminal .fg-121 { + color: #87ffaf; +} + +.asciinema-terminal .bg-121 { + background-color: #87ffaf; +} + +.asciinema-terminal .fg-122 { + color: #87ffd7; +} + +.asciinema-terminal .bg-122 { + background-color: #87ffd7; +} + +.asciinema-terminal .fg-123 { + color: #87ffff; +} + +.asciinema-terminal .bg-123 { + background-color: #87ffff; +} + +.asciinema-terminal .fg-124 { + color: #af0000; +} + +.asciinema-terminal .bg-124 { + background-color: #af0000; +} + +.asciinema-terminal .fg-125 { + color: #af005f; +} + +.asciinema-terminal .bg-125 { + background-color: #af005f; +} + +.asciinema-terminal .fg-126 { + color: #af0087; +} + +.asciinema-terminal .bg-126 { + background-color: #af0087; +} + +.asciinema-terminal .fg-127 { + color: #af00af; +} + +.asciinema-terminal .bg-127 { + background-color: #af00af; +} + +.asciinema-terminal .fg-128 { + color: #af00d7; +} + +.asciinema-terminal .bg-128 { + background-color: #af00d7; +} + +.asciinema-terminal .fg-129 { + color: #af00ff; +} + +.asciinema-terminal .bg-129 { + background-color: #af00ff; +} + +.asciinema-terminal .fg-130 { + color: #af5f00; +} + +.asciinema-terminal .bg-130 { + background-color: #af5f00; +} + +.asciinema-terminal .fg-131 { + color: #af5f5f; +} + +.asciinema-terminal .bg-131 { + background-color: #af5f5f; +} + +.asciinema-terminal .fg-132 { + color: #af5f87; +} + +.asciinema-terminal .bg-132 { + background-color: #af5f87; +} + +.asciinema-terminal .fg-133 { + color: #af5faf; +} + +.asciinema-terminal .bg-133 { + background-color: #af5faf; +} + +.asciinema-terminal .fg-134 { + color: #af5fd7; +} + +.asciinema-terminal .bg-134 { + background-color: #af5fd7; +} + +.asciinema-terminal .fg-135 { + color: #af5fff; +} + +.asciinema-terminal .bg-135 { + background-color: #af5fff; +} + +.asciinema-terminal .fg-136 { + color: #af8700; +} + +.asciinema-terminal .bg-136 { + background-color: #af8700; +} + +.asciinema-terminal .fg-137 { + color: #af875f; +} + +.asciinema-terminal .bg-137 { + background-color: #af875f; +} + +.asciinema-terminal .fg-138 { + color: #af8787; +} + +.asciinema-terminal .bg-138 { + background-color: #af8787; +} + +.asciinema-terminal .fg-139 { + color: #af87af; +} + +.asciinema-terminal .bg-139 { + background-color: #af87af; +} + +.asciinema-terminal .fg-140 { + color: #af87d7; +} + +.asciinema-terminal .bg-140 { + background-color: #af87d7; +} + +.asciinema-terminal .fg-141 { + color: #af87ff; +} + +.asciinema-terminal .bg-141 { + background-color: #af87ff; +} + +.asciinema-terminal .fg-142 { + color: #afaf00; +} + +.asciinema-terminal .bg-142 { + background-color: #afaf00; +} + +.asciinema-terminal .fg-143 { + color: #afaf5f; +} + +.asciinema-terminal .bg-143 { + background-color: #afaf5f; +} + +.asciinema-terminal .fg-144 { + color: #afaf87; +} + +.asciinema-terminal .bg-144 { + background-color: #afaf87; +} + +.asciinema-terminal .fg-145 { + color: #afafaf; +} + +.asciinema-terminal .bg-145 { + background-color: #afafaf; +} + +.asciinema-terminal .fg-146 { + color: #afafd7; +} + +.asciinema-terminal .bg-146 { + background-color: #afafd7; +} + +.asciinema-terminal .fg-147 { + color: #afafff; +} + +.asciinema-terminal .bg-147 { + background-color: #afafff; +} + +.asciinema-terminal .fg-148 { + color: #afd700; +} + +.asciinema-terminal .bg-148 { + background-color: #afd700; +} + +.asciinema-terminal .fg-149 { + color: #afd75f; +} + +.asciinema-terminal .bg-149 { + background-color: #afd75f; +} + +.asciinema-terminal .fg-150 { + color: #afd787; +} + +.asciinema-terminal .bg-150 { + background-color: #afd787; +} + +.asciinema-terminal .fg-151 { + color: #afd7af; +} + +.asciinema-terminal .bg-151 { + background-color: #afd7af; +} + +.asciinema-terminal .fg-152 { + color: #afd7d7; +} + +.asciinema-terminal .bg-152 { + background-color: #afd7d7; +} + +.asciinema-terminal .fg-153 { + color: #afd7ff; +} + +.asciinema-terminal .bg-153 { + background-color: #afd7ff; +} + +.asciinema-terminal .fg-154 { + color: #afff00; +} + +.asciinema-terminal .bg-154 { + background-color: #afff00; +} + +.asciinema-terminal .fg-155 { + color: #afff5f; +} + +.asciinema-terminal .bg-155 { + background-color: #afff5f; +} + +.asciinema-terminal .fg-156 { + color: #afff87; +} + +.asciinema-terminal .bg-156 { + background-color: #afff87; +} + +.asciinema-terminal .fg-157 { + color: #afffaf; +} + +.asciinema-terminal .bg-157 { + background-color: #afffaf; +} + +.asciinema-terminal .fg-158 { + color: #afffd7; +} + +.asciinema-terminal .bg-158 { + background-color: #afffd7; +} + +.asciinema-terminal .fg-159 { + color: #afffff; +} + +.asciinema-terminal .bg-159 { + background-color: #afffff; +} + +.asciinema-terminal .fg-160 { + color: #d70000; +} + +.asciinema-terminal .bg-160 { + background-color: #d70000; +} + +.asciinema-terminal .fg-161 { + color: #d7005f; +} + +.asciinema-terminal .bg-161 { + background-color: #d7005f; +} + +.asciinema-terminal .fg-162 { + color: #d70087; +} + +.asciinema-terminal .bg-162 { + background-color: #d70087; +} + +.asciinema-terminal .fg-163 { + color: #d700af; +} + +.asciinema-terminal .bg-163 { + background-color: #d700af; +} + +.asciinema-terminal .fg-164 { + color: #d700d7; +} + +.asciinema-terminal .bg-164 { + background-color: #d700d7; +} + +.asciinema-terminal .fg-165 { + color: #d700ff; +} + +.asciinema-terminal .bg-165 { + background-color: #d700ff; +} + +.asciinema-terminal .fg-166 { + color: #d75f00; +} + +.asciinema-terminal .bg-166 { + background-color: #d75f00; +} + +.asciinema-terminal .fg-167 { + color: #d75f5f; +} + +.asciinema-terminal .bg-167 { + background-color: #d75f5f; +} + +.asciinema-terminal .fg-168 { + color: #d75f87; +} + +.asciinema-terminal .bg-168 { + background-color: #d75f87; +} + +.asciinema-terminal .fg-169 { + color: #d75faf; +} + +.asciinema-terminal .bg-169 { + background-color: #d75faf; +} + +.asciinema-terminal .fg-170 { + color: #d75fd7; +} + +.asciinema-terminal .bg-170 { + background-color: #d75fd7; +} + +.asciinema-terminal .fg-171 { + color: #d75fff; +} + +.asciinema-terminal .bg-171 { + background-color: #d75fff; +} + +.asciinema-terminal .fg-172 { + color: #d78700; +} + +.asciinema-terminal .bg-172 { + background-color: #d78700; +} + +.asciinema-terminal .fg-173 { + color: #d7875f; +} + +.asciinema-terminal .bg-173 { + background-color: #d7875f; +} + +.asciinema-terminal .fg-174 { + color: #d78787; +} + +.asciinema-terminal .bg-174 { + background-color: #d78787; +} + +.asciinema-terminal .fg-175 { + color: #d787af; +} + +.asciinema-terminal .bg-175 { + background-color: #d787af; +} + +.asciinema-terminal .fg-176 { + color: #d787d7; +} + +.asciinema-terminal .bg-176 { + background-color: #d787d7; +} + +.asciinema-terminal .fg-177 { + color: #d787ff; +} + +.asciinema-terminal .bg-177 { + background-color: #d787ff; +} + +.asciinema-terminal .fg-178 { + color: #d7af00; +} + +.asciinema-terminal .bg-178 { + background-color: #d7af00; +} + +.asciinema-terminal .fg-179 { + color: #d7af5f; +} + +.asciinema-terminal .bg-179 { + background-color: #d7af5f; +} + +.asciinema-terminal .fg-180 { + color: #d7af87; +} + +.asciinema-terminal .bg-180 { + background-color: #d7af87; +} + +.asciinema-terminal .fg-181 { + color: #d7afaf; +} + +.asciinema-terminal .bg-181 { + background-color: #d7afaf; +} + +.asciinema-terminal .fg-182 { + color: #d7afd7; +} + +.asciinema-terminal .bg-182 { + background-color: #d7afd7; +} + +.asciinema-terminal .fg-183 { + color: #d7afff; +} + +.asciinema-terminal .bg-183 { + background-color: #d7afff; +} + +.asciinema-terminal .fg-184 { + color: #d7d700; +} + +.asciinema-terminal .bg-184 { + background-color: #d7d700; +} + +.asciinema-terminal .fg-185 { + color: #d7d75f; +} + +.asciinema-terminal .bg-185 { + background-color: #d7d75f; +} + +.asciinema-terminal .fg-186 { + color: #d7d787; +} + +.asciinema-terminal .bg-186 { + background-color: #d7d787; +} + +.asciinema-terminal .fg-187 { + color: #d7d7af; +} + +.asciinema-terminal .bg-187 { + background-color: #d7d7af; +} + +.asciinema-terminal .fg-188 { + color: #d7d7d7; +} + +.asciinema-terminal .bg-188 { + background-color: #d7d7d7; +} + +.asciinema-terminal .fg-189 { + color: #d7d7ff; +} + +.asciinema-terminal .bg-189 { + background-color: #d7d7ff; +} + +.asciinema-terminal .fg-190 { + color: #d7ff00; +} + +.asciinema-terminal .bg-190 { + background-color: #d7ff00; +} + +.asciinema-terminal .fg-191 { + color: #d7ff5f; +} + +.asciinema-terminal .bg-191 { + background-color: #d7ff5f; +} + +.asciinema-terminal .fg-192 { + color: #d7ff87; +} + +.asciinema-terminal .bg-192 { + background-color: #d7ff87; +} + +.asciinema-terminal .fg-193 { + color: #d7ffaf; +} + +.asciinema-terminal .bg-193 { + background-color: #d7ffaf; +} + +.asciinema-terminal .fg-194 { + color: #d7ffd7; +} + +.asciinema-terminal .bg-194 { + background-color: #d7ffd7; +} + +.asciinema-terminal .fg-195 { + color: #d7ffff; +} + +.asciinema-terminal .bg-195 { + background-color: #d7ffff; +} + +.asciinema-terminal .fg-196 { + color: #ff0000; +} + +.asciinema-terminal .bg-196 { + background-color: #ff0000; +} + +.asciinema-terminal .fg-197 { + color: #ff005f; +} + +.asciinema-terminal .bg-197 { + background-color: #ff005f; +} + +.asciinema-terminal .fg-198 { + color: #ff0087; +} + +.asciinema-terminal .bg-198 { + background-color: #ff0087; +} + +.asciinema-terminal .fg-199 { + color: #ff00af; +} + +.asciinema-terminal .bg-199 { + background-color: #ff00af; +} + +.asciinema-terminal .fg-200 { + color: #ff00d7; +} + +.asciinema-terminal .bg-200 { + background-color: #ff00d7; +} + +.asciinema-terminal .fg-201 { + color: #ff00ff; +} + +.asciinema-terminal .bg-201 { + background-color: #ff00ff; +} + +.asciinema-terminal .fg-202 { + color: #ff5f00; +} + +.asciinema-terminal .bg-202 { + background-color: #ff5f00; +} + +.asciinema-terminal .fg-203 { + color: #ff5f5f; +} + +.asciinema-terminal .bg-203 { + background-color: #ff5f5f; +} + +.asciinema-terminal .fg-204 { + color: #ff5f87; +} + +.asciinema-terminal .bg-204 { + background-color: #ff5f87; +} + +.asciinema-terminal .fg-205 { + color: #ff5faf; +} + +.asciinema-terminal .bg-205 { + background-color: #ff5faf; +} + +.asciinema-terminal .fg-206 { + color: #ff5fd7; +} + +.asciinema-terminal .bg-206 { + background-color: #ff5fd7; +} + +.asciinema-terminal .fg-207 { + color: #ff5fff; +} + +.asciinema-terminal .bg-207 { + background-color: #ff5fff; +} + +.asciinema-terminal .fg-208 { + color: #ff8700; +} + +.asciinema-terminal .bg-208 { + background-color: #ff8700; +} + +.asciinema-terminal .fg-209 { + color: #ff875f; +} + +.asciinema-terminal .bg-209 { + background-color: #ff875f; +} + +.asciinema-terminal .fg-210 { + color: #ff8787; +} + +.asciinema-terminal .bg-210 { + background-color: #ff8787; +} + +.asciinema-terminal .fg-211 { + color: #ff87af; +} + +.asciinema-terminal .bg-211 { + background-color: #ff87af; +} + +.asciinema-terminal .fg-212 { + color: #ff87d7; +} + +.asciinema-terminal .bg-212 { + background-color: #ff87d7; +} + +.asciinema-terminal .fg-213 { + color: #ff87ff; +} + +.asciinema-terminal .bg-213 { + background-color: #ff87ff; +} + +.asciinema-terminal .fg-214 { + color: #ffaf00; +} + +.asciinema-terminal .bg-214 { + background-color: #ffaf00; +} + +.asciinema-terminal .fg-215 { + color: #ffaf5f; +} + +.asciinema-terminal .bg-215 { + background-color: #ffaf5f; +} + +.asciinema-terminal .fg-216 { + color: #ffaf87; +} + +.asciinema-terminal .bg-216 { + background-color: #ffaf87; +} + +.asciinema-terminal .fg-217 { + color: #ffafaf; +} + +.asciinema-terminal .bg-217 { + background-color: #ffafaf; +} + +.asciinema-terminal .fg-218 { + color: #ffafd7; +} + +.asciinema-terminal .bg-218 { + background-color: #ffafd7; +} + +.asciinema-terminal .fg-219 { + color: #ffafff; +} + +.asciinema-terminal .bg-219 { + background-color: #ffafff; +} + +.asciinema-terminal .fg-220 { + color: #ffd700; +} + +.asciinema-terminal .bg-220 { + background-color: #ffd700; +} + +.asciinema-terminal .fg-221 { + color: #ffd75f; +} + +.asciinema-terminal .bg-221 { + background-color: #ffd75f; +} + +.asciinema-terminal .fg-222 { + color: #ffd787; +} + +.asciinema-terminal .bg-222 { + background-color: #ffd787; +} + +.asciinema-terminal .fg-223 { + color: #ffd7af; +} + +.asciinema-terminal .bg-223 { + background-color: #ffd7af; +} + +.asciinema-terminal .fg-224 { + color: #ffd7d7; +} + +.asciinema-terminal .bg-224 { + background-color: #ffd7d7; +} + +.asciinema-terminal .fg-225 { + color: #ffd7ff; +} + +.asciinema-terminal .bg-225 { + background-color: #ffd7ff; +} + +.asciinema-terminal .fg-226 { + color: #ffff00; +} + +.asciinema-terminal .bg-226 { + background-color: #ffff00; +} + +.asciinema-terminal .fg-227 { + color: #ffff5f; +} + +.asciinema-terminal .bg-227 { + background-color: #ffff5f; +} + +.asciinema-terminal .fg-228 { + color: #ffff87; +} + +.asciinema-terminal .bg-228 { + background-color: #ffff87; +} + +.asciinema-terminal .fg-229 { + color: #ffffaf; +} + +.asciinema-terminal .bg-229 { + background-color: #ffffaf; +} + +.asciinema-terminal .fg-230 { + color: #ffffd7; +} + +.asciinema-terminal .bg-230 { + background-color: #ffffd7; +} + +.asciinema-terminal .fg-231 { + color: #ffffff; +} + +.asciinema-terminal .bg-231 { + background-color: #ffffff; +} + +.asciinema-terminal .fg-232 { + color: #080808; +} + +.asciinema-terminal .bg-232 { + background-color: #080808; +} + +.asciinema-terminal .fg-233 { + color: #121212; +} + +.asciinema-terminal .bg-233 { + background-color: #121212; +} + +.asciinema-terminal .fg-234 { + color: #1c1c1c; +} + +.asciinema-terminal .bg-234 { + background-color: #1c1c1c; +} + +.asciinema-terminal .fg-235 { + color: #262626; +} + +.asciinema-terminal .bg-235 { + background-color: #262626; +} + +.asciinema-terminal .fg-236 { + color: #303030; +} + +.asciinema-terminal .bg-236 { + background-color: #303030; +} + +.asciinema-terminal .fg-237 { + color: #3a3a3a; +} + +.asciinema-terminal .bg-237 { + background-color: #3a3a3a; +} + +.asciinema-terminal .fg-238 { + color: #444444; +} + +.asciinema-terminal .bg-238 { + background-color: #444444; +} + +.asciinema-terminal .fg-239 { + color: #4e4e4e; +} + +.asciinema-terminal .bg-239 { + background-color: #4e4e4e; +} + +.asciinema-terminal .fg-240 { + color: #585858; +} + +.asciinema-terminal .bg-240 { + background-color: #585858; +} + +.asciinema-terminal .fg-241 { + color: #626262; +} + +.asciinema-terminal .bg-241 { + background-color: #626262; +} + +.asciinema-terminal .fg-242 { + color: #6c6c6c; +} + +.asciinema-terminal .bg-242 { + background-color: #6c6c6c; +} + +.asciinema-terminal .fg-243 { + color: #767676; +} + +.asciinema-terminal .bg-243 { + background-color: #767676; +} + +.asciinema-terminal .fg-244 { + color: #808080; +} + +.asciinema-terminal .bg-244 { + background-color: #808080; +} + +.asciinema-terminal .fg-245 { + color: #8a8a8a; +} + +.asciinema-terminal .bg-245 { + background-color: #8a8a8a; +} + +.asciinema-terminal .fg-246 { + color: #949494; +} + +.asciinema-terminal .bg-246 { + background-color: #949494; +} + +.asciinema-terminal .fg-247 { + color: #9e9e9e; +} + +.asciinema-terminal .bg-247 { + background-color: #9e9e9e; +} + +.asciinema-terminal .fg-248 { + color: #a8a8a8; +} + +.asciinema-terminal .bg-248 { + background-color: #a8a8a8; +} + +.asciinema-terminal .fg-249 { + color: #b2b2b2; +} + +.asciinema-terminal .bg-249 { + background-color: #b2b2b2; +} + +.asciinema-terminal .fg-250 { + color: #bcbcbc; +} + +.asciinema-terminal .bg-250 { + background-color: #bcbcbc; +} + +.asciinema-terminal .fg-251 { + color: #c6c6c6; +} + +.asciinema-terminal .bg-251 { + background-color: #c6c6c6; +} + +.asciinema-terminal .fg-252 { + color: #d0d0d0; +} + +.asciinema-terminal .bg-252 { + background-color: #d0d0d0; +} + +.asciinema-terminal .fg-253 { + color: #dadada; +} + +.asciinema-terminal .bg-253 { + background-color: #dadada; +} + +.asciinema-terminal .fg-254 { + color: #e4e4e4; +} + +.asciinema-terminal .bg-254 { + background-color: #e4e4e4; +} + +.asciinema-terminal .fg-255 { + color: #eeeeee; +} + +.asciinema-terminal .bg-255 { + background-color: #eeeeee; +} + +.asciinema-theme-asciinema .asciinema-terminal { + color: #cccccc; + background-color: #121314; + border-color: #121314; +} + +.asciinema-theme-asciinema .fg-bg { + color: #121314; +} + +.asciinema-theme-asciinema .bg-fg { + background-color: #cccccc; +} + +.asciinema-theme-asciinema .fg-0 { + color: #000000; +} + +.asciinema-theme-asciinema .bg-0 { + background-color: #000000; +} + +.asciinema-theme-asciinema .fg-1 { + color: #dd3c69; +} + +.asciinema-theme-asciinema .bg-1 { + background-color: #dd3c69; +} + +.asciinema-theme-asciinema .fg-2 { + color: #4ebf22; +} + +.asciinema-theme-asciinema .bg-2 { + background-color: #4ebf22; +} + +.asciinema-theme-asciinema .fg-3 { + color: #ddaf3c; +} + +.asciinema-theme-asciinema .bg-3 { + background-color: #ddaf3c; +} + +.asciinema-theme-asciinema .fg-4 { + color: #26b0d7; +} + +.asciinema-theme-asciinema .bg-4 { + background-color: #26b0d7; +} + +.asciinema-theme-asciinema .fg-5 { + color: #b954e1; +} + +.asciinema-theme-asciinema .bg-5 { + background-color: #b954e1; +} + +.asciinema-theme-asciinema .fg-6 { + color: #54e1b9; +} + +.asciinema-theme-asciinema .bg-6 { + background-color: #54e1b9; +} + +.asciinema-theme-asciinema .fg-7 { + color: #d9d9d9; +} + +.asciinema-theme-asciinema .bg-7 { + background-color: #d9d9d9; +} + +.asciinema-theme-asciinema .fg-8 { + color: #4d4d4d; +} + +.asciinema-theme-asciinema .bg-8 { + background-color: #4d4d4d; +} + +.asciinema-theme-asciinema .fg-9 { + color: #dd3c69; +} + +.asciinema-theme-asciinema .bg-9 { + background-color: #dd3c69; +} + +.asciinema-theme-asciinema .fg-10 { + color: #4ebf22; +} + +.asciinema-theme-asciinema .bg-10 { + background-color: #4ebf22; +} + +.asciinema-theme-asciinema .fg-11 { + color: #ddaf3c; +} + +.asciinema-theme-asciinema .bg-11 { + background-color: #ddaf3c; +} + +.asciinema-theme-asciinema .fg-12 { + color: #26b0d7; +} + +.asciinema-theme-asciinema .bg-12 { + background-color: #26b0d7; +} + +.asciinema-theme-asciinema .fg-13 { + color: #b954e1; +} + +.asciinema-theme-asciinema .bg-13 { + background-color: #b954e1; +} + +.asciinema-theme-asciinema .fg-14 { + color: #54e1b9; +} + +.asciinema-theme-asciinema .bg-14 { + background-color: #54e1b9; +} + +.asciinema-theme-asciinema .fg-15 { + color: #ffffff; +} + +.asciinema-theme-asciinema .bg-15 { + background-color: #ffffff; +} + +.asciinema-theme-asciinema .fg-8, +.asciinema-theme-asciinema .fg-9, +.asciinema-theme-asciinema .fg-10, +.asciinema-theme-asciinema .fg-11, +.asciinema-theme-asciinema .fg-12, +.asciinema-theme-asciinema .fg-13, +.asciinema-theme-asciinema .fg-14, +.asciinema-theme-asciinema .fg-15 { + font-weight: bold; +} + +.asciinema-theme-tango .asciinema-terminal { + color: #cccccc; + background-color: #121314; + border-color: #121314; +} + +.asciinema-theme-tango .fg-bg { + color: #121314; +} + +.asciinema-theme-tango .bg-fg { + background-color: #cccccc; +} + +.asciinema-theme-tango .fg-0 { + color: #000000; +} + +.asciinema-theme-tango .bg-0 { + background-color: #000000; +} + +.asciinema-theme-tango .fg-1 { + color: #cc0000; +} + +.asciinema-theme-tango .bg-1 { + background-color: #cc0000; +} + +.asciinema-theme-tango .fg-2 { + color: #4e9a06; +} + +.asciinema-theme-tango .bg-2 { + background-color: #4e9a06; +} + +.asciinema-theme-tango .fg-3 { + color: #c4a000; +} + +.asciinema-theme-tango .bg-3 { + background-color: #c4a000; +} + +.asciinema-theme-tango .fg-4 { + color: #3465a4; +} + +.asciinema-theme-tango .bg-4 { + background-color: #3465a4; +} + +.asciinema-theme-tango .fg-5 { + color: #75507b; +} + +.asciinema-theme-tango .bg-5 { + background-color: #75507b; +} + +.asciinema-theme-tango .fg-6 { + color: #06989a; +} + +.asciinema-theme-tango .bg-6 { + background-color: #06989a; +} + +.asciinema-theme-tango .fg-7 { + color: #d3d7cf; +} + +.asciinema-theme-tango .bg-7 { + background-color: #d3d7cf; +} + +.asciinema-theme-tango .fg-8 { + color: #555753; +} + +.asciinema-theme-tango .bg-8 { + background-color: #555753; +} + +.asciinema-theme-tango .fg-9 { + color: #ef2929; +} + +.asciinema-theme-tango .bg-9 { + background-color: #ef2929; +} + +.asciinema-theme-tango .fg-10 { + color: #8ae234; +} + +.asciinema-theme-tango .bg-10 { + background-color: #8ae234; +} + +.asciinema-theme-tango .fg-11 { + color: #fce94f; +} + +.asciinema-theme-tango .bg-11 { + background-color: #fce94f; +} + +.asciinema-theme-tango .fg-12 { + color: #729fcf; +} + +.asciinema-theme-tango .bg-12 { + background-color: #729fcf; +} + +.asciinema-theme-tango .fg-13 { + color: #ad7fa8; +} + +.asciinema-theme-tango .bg-13 { + background-color: #ad7fa8; +} + +.asciinema-theme-tango .fg-14 { + color: #34e2e2; +} + +.asciinema-theme-tango .bg-14 { + background-color: #34e2e2; +} + +.asciinema-theme-tango .fg-15 { + color: #eeeeec; +} + +.asciinema-theme-tango .bg-15 { + background-color: #eeeeec; +} + +.asciinema-theme-tango .fg-8, +.asciinema-theme-tango .fg-9, +.asciinema-theme-tango .fg-10, +.asciinema-theme-tango .fg-11, +.asciinema-theme-tango .fg-12, +.asciinema-theme-tango .fg-13, +.asciinema-theme-tango .fg-14, +.asciinema-theme-tango .fg-15 { + font-weight: bold; +} + +.asciinema-theme-solarized-dark .asciinema-terminal { + color: #839496; + background-color: #002b36; + border-color: #002b36; +} + +.asciinema-theme-solarized-dark .fg-bg { + color: #002b36; +} + +.asciinema-theme-solarized-dark .bg-fg { + background-color: #839496; +} + +.asciinema-theme-solarized-dark .fg-0 { + color: #073642; +} + +.asciinema-theme-solarized-dark .bg-0 { + background-color: #073642; +} + +.asciinema-theme-solarized-dark .fg-1 { + color: #dc322f; +} + +.asciinema-theme-solarized-dark .bg-1 { + background-color: #dc322f; +} + +.asciinema-theme-solarized-dark .fg-2 { + color: #859900; +} + +.asciinema-theme-solarized-dark .bg-2 { + background-color: #859900; +} + +.asciinema-theme-solarized-dark .fg-3 { + color: #b58900; +} + +.asciinema-theme-solarized-dark .bg-3 { + background-color: #b58900; +} + +.asciinema-theme-solarized-dark .fg-4 { + color: #268bd2; +} + +.asciinema-theme-solarized-dark .bg-4 { + background-color: #268bd2; +} + +.asciinema-theme-solarized-dark .fg-5 { + color: #d33682; +} + +.asciinema-theme-solarized-dark .bg-5 { + background-color: #d33682; +} + +.asciinema-theme-solarized-dark .fg-6 { + color: #2aa198; +} + +.asciinema-theme-solarized-dark .bg-6 { + background-color: #2aa198; +} + +.asciinema-theme-solarized-dark .fg-7 { + color: #eee8d5; +} + +.asciinema-theme-solarized-dark .bg-7 { + background-color: #eee8d5; +} + +.asciinema-theme-solarized-dark .fg-8 { + color: #002b36; +} + +.asciinema-theme-solarized-dark .bg-8 { + background-color: #002b36; +} + +.asciinema-theme-solarized-dark .fg-9 { + color: #cb4b16; +} + +.asciinema-theme-solarized-dark .bg-9 { + background-color: #cb4b16; +} + +.asciinema-theme-solarized-dark .fg-10 { + color: #586e75; +} + +.asciinema-theme-solarized-dark .bg-10 { + background-color: #586e75; +} + +.asciinema-theme-solarized-dark .fg-11 { + color: #657b83; +} + +.asciinema-theme-solarized-dark .bg-11 { + background-color: #657b83; +} + +.asciinema-theme-solarized-dark .fg-12 { + color: #839496; +} + +.asciinema-theme-solarized-dark .bg-12 { + background-color: #839496; +} + +.asciinema-theme-solarized-dark .fg-13 { + color: #6c71c4; +} + +.asciinema-theme-solarized-dark .bg-13 { + background-color: #6c71c4; +} + +.asciinema-theme-solarized-dark .fg-14 { + color: #93a1a1; +} + +.asciinema-theme-solarized-dark .bg-14 { + background-color: #93a1a1; +} + +.asciinema-theme-solarized-dark .fg-15 { + color: #fdf6e3; +} + +.asciinema-theme-solarized-dark .bg-15 { + background-color: #fdf6e3; +} + +.asciinema-theme-solarized-light .asciinema-terminal { + color: #657b83; + background-color: #fdf6e3; + border-color: #fdf6e3; +} + +.asciinema-theme-solarized-light .fg-bg { + color: #fdf6e3; +} + +.asciinema-theme-solarized-light .bg-fg { + background-color: #657b83; +} + +.asciinema-theme-solarized-light .fg-0 { + color: #073642; +} + +.asciinema-theme-solarized-light .bg-0 { + background-color: #073642; +} + +.asciinema-theme-solarized-light .fg-1 { + color: #dc322f; +} + +.asciinema-theme-solarized-light .bg-1 { + background-color: #dc322f; +} + +.asciinema-theme-solarized-light .fg-2 { + color: #859900; +} + +.asciinema-theme-solarized-light .bg-2 { + background-color: #859900; +} + +.asciinema-theme-solarized-light .fg-3 { + color: #b58900; +} + +.asciinema-theme-solarized-light .bg-3 { + background-color: #b58900; +} + +.asciinema-theme-solarized-light .fg-4 { + color: #268bd2; +} + +.asciinema-theme-solarized-light .bg-4 { + background-color: #268bd2; +} + +.asciinema-theme-solarized-light .fg-5 { + color: #d33682; +} + +.asciinema-theme-solarized-light .bg-5 { + background-color: #d33682; +} + +.asciinema-theme-solarized-light .fg-6 { + color: #2aa198; +} + +.asciinema-theme-solarized-light .bg-6 { + background-color: #2aa198; +} + +.asciinema-theme-solarized-light .fg-7 { + color: #eee8d5; +} + +.asciinema-theme-solarized-light .bg-7 { + background-color: #eee8d5; +} + +.asciinema-theme-solarized-light .fg-8 { + color: #002b36; +} + +.asciinema-theme-solarized-light .bg-8 { + background-color: #002b36; +} + +.asciinema-theme-solarized-light .fg-9 { + color: #cb4b16; +} + +.asciinema-theme-solarized-light .bg-9 { + background-color: #cb4b16; +} + +.asciinema-theme-solarized-light .fg-10 { + color: #586e75; +} + +.asciinema-theme-solarized-light .bg-10 { + background-color: #586e75; +} + +.asciinema-theme-solarized-light .fg-11 { + color: #657c83; +} + +.asciinema-theme-solarized-light .bg-11 { + background-color: #657c83; +} + +.asciinema-theme-solarized-light .fg-12 { + color: #839496; +} + +.asciinema-theme-solarized-light .bg-12 { + background-color: #839496; +} + +.asciinema-theme-solarized-light .fg-13 { + color: #6c71c4; +} + +.asciinema-theme-solarized-light .bg-13 { + background-color: #6c71c4; +} + +.asciinema-theme-solarized-light .fg-14 { + color: #93a1a1; +} + +.asciinema-theme-solarized-light .bg-14 { + background-color: #93a1a1; +} + +.asciinema-theme-solarized-light .fg-15 { + color: #fdf6e3; +} + +.asciinema-theme-solarized-light .bg-15 { + background-color: #fdf6e3; +} + +.asciinema-theme-seti .asciinema-terminal { + color: #cacecd; + background-color: #111213; + border-color: #111213; +} + +.asciinema-theme-seti .fg-bg { + color: #111213; +} + +.asciinema-theme-seti .bg-fg { + background-color: #cacecd; +} + +.asciinema-theme-seti .fg-0 { + color: #323232; +} + +.asciinema-theme-seti .bg-0 { + background-color: #323232; +} + +.asciinema-theme-seti .fg-1 { + color: #c22832; +} + +.asciinema-theme-seti .bg-1 { + background-color: #c22832; +} + +.asciinema-theme-seti .fg-2 { + color: #8ec43d; +} + +.asciinema-theme-seti .bg-2 { + background-color: #8ec43d; +} + +.asciinema-theme-seti .fg-3 { + color: #e0c64f; +} + +.asciinema-theme-seti .bg-3 { + background-color: #e0c64f; +} + +.asciinema-theme-seti .fg-4 { + color: #43a5d5; +} + +.asciinema-theme-seti .bg-4 { + background-color: #43a5d5; +} + +.asciinema-theme-seti .fg-5 { + color: #8b57b5; +} + +.asciinema-theme-seti .bg-5 { + background-color: #8b57b5; +} + +.asciinema-theme-seti .fg-6 { + color: #8ec43d; +} + +.asciinema-theme-seti .bg-6 { + background-color: #8ec43d; +} + +.asciinema-theme-seti .fg-7 { + color: #eeeeee; +} + +.asciinema-theme-seti .bg-7 { + background-color: #eeeeee; +} + +.asciinema-theme-seti .fg-8 { + color: #323232; +} + +.asciinema-theme-seti .bg-8 { + background-color: #323232; +} + +.asciinema-theme-seti .fg-9 { + color: #c22832; +} + +.asciinema-theme-seti .bg-9 { + background-color: #c22832; +} + +.asciinema-theme-seti .fg-10 { + color: #8ec43d; +} + +.asciinema-theme-seti .bg-10 { + background-color: #8ec43d; +} + +.asciinema-theme-seti .fg-11 { + color: #e0c64f; +} + +.asciinema-theme-seti .bg-11 { + background-color: #e0c64f; +} + +.asciinema-theme-seti .fg-12 { + color: #43a5d5; +} + +.asciinema-theme-seti .bg-12 { + background-color: #43a5d5; +} + +.asciinema-theme-seti .fg-13 { + color: #8b57b5; +} + +.asciinema-theme-seti .bg-13 { + background-color: #8b57b5; +} + +.asciinema-theme-seti .fg-14 { + color: #8ec43d; +} + +.asciinema-theme-seti .bg-14 { + background-color: #8ec43d; +} + +.asciinema-theme-seti .fg-15 { + color: #ffffff; +} + +.asciinema-theme-seti .bg-15 { + background-color: #ffffff; +} + +.asciinema-theme-seti .fg-8, +.asciinema-theme-seti .fg-9, +.asciinema-theme-seti .fg-10, +.asciinema-theme-seti .fg-11, +.asciinema-theme-seti .fg-12, +.asciinema-theme-seti .fg-13, +.asciinema-theme-seti .fg-14, +.asciinema-theme-seti .fg-15 { + font-weight: bold; +} + +/* Based on Monokai from base16 collection - https://github.com/chriskempson/base16 */ +.asciinema-theme-monokai .asciinema-terminal { + color: #f8f8f2; + background-color: #272822; + border-color: #272822; +} + +.asciinema-theme-monokai .fg-bg { + color: #272822; +} + +.asciinema-theme-monokai .bg-fg { + background-color: #f8f8f2; +} + +.asciinema-theme-monokai .fg-0 { + color: #272822; +} + +.asciinema-theme-monokai .bg-0 { + background-color: #272822; +} + +.asciinema-theme-monokai .fg-1 { + color: #f92672; +} + +.asciinema-theme-monokai .bg-1 { + background-color: #f92672; +} + +.asciinema-theme-monokai .fg-2 { + color: #a6e22e; +} + +.asciinema-theme-monokai .bg-2 { + background-color: #a6e22e; +} + +.asciinema-theme-monokai .fg-3 { + color: #f4bf75; +} + +.asciinema-theme-monokai .bg-3 { + background-color: #f4bf75; +} + +.asciinema-theme-monokai .fg-4 { + color: #66d9ef; +} + +.asciinema-theme-monokai .bg-4 { + background-color: #66d9ef; +} + +.asciinema-theme-monokai .fg-5 { + color: #ae81ff; +} + +.asciinema-theme-monokai .bg-5 { + background-color: #ae81ff; +} + +.asciinema-theme-monokai .fg-6 { + color: #a1efe4; +} + +.asciinema-theme-monokai .bg-6 { + background-color: #a1efe4; +} + +.asciinema-theme-monokai .fg-7 { + color: #f8f8f2; +} + +.asciinema-theme-monokai .bg-7 { + background-color: #f8f8f2; +} + +.asciinema-theme-monokai .fg-8 { + color: #75715e; +} + +.asciinema-theme-monokai .bg-8 { + background-color: #75715e; +} + +.asciinema-theme-monokai .fg-9 { + color: #f92672; +} + +.asciinema-theme-monokai .bg-9 { + background-color: #f92672; +} + +.asciinema-theme-monokai .fg-10 { + color: #a6e22e; +} + +.asciinema-theme-monokai .bg-10 { + background-color: #a6e22e; +} + +.asciinema-theme-monokai .fg-11 { + color: #f4bf75; +} + +.asciinema-theme-monokai .bg-11 { + background-color: #f4bf75; +} + +.asciinema-theme-monokai .fg-12 { + color: #66d9ef; +} + +.asciinema-theme-monokai .bg-12 { + background-color: #66d9ef; +} + +.asciinema-theme-monokai .fg-13 { + color: #ae81ff; +} + +.asciinema-theme-monokai .bg-13 { + background-color: #ae81ff; +} + +.asciinema-theme-monokai .fg-14 { + color: #a1efe4; +} + +.asciinema-theme-monokai .bg-14 { + background-color: #a1efe4; +} + +.asciinema-theme-monokai .fg-15 { + color: #f9f8f5; +} + +.asciinema-theme-monokai .bg-15 { + background-color: #f9f8f5; +} + +.asciinema-theme-monokai .fg-8, +.asciinema-theme-monokai .fg-9, +.asciinema-theme-monokai .fg-10, +.asciinema-theme-monokai .fg-11, +.asciinema-theme-monokai .fg-12, +.asciinema-theme-monokai .fg-13, +.asciinema-theme-monokai .fg-14, +.asciinema-theme-monokai .fg-15 { + font-weight: bold; +} diff --git a/docs/assets/css/extra.css b/docs/assets/css/extra.css new file mode 100644 index 0000000000..c6a3a7fb8f --- /dev/null +++ b/docs/assets/css/extra.css @@ -0,0 +1,32 @@ +.md-header__button.md-logo img, .md-header__button.md-logo svg { + width: 3rem; +} + +.md-header-nav__button.md-logo { + margin: 0; + padding: 0; +} + +.md-header { + height: 3rem; +} + +.md-header-nav { + align-items: center; +} + +.md-ellipsis { + display: inline; +} + +.md-header-nav__topic { + position: relative; +} + +[data-md-color-primary=black] .md-tabs { + background-color: #0DCEFF; +} + +.md-tabs { + color: black; +} diff --git a/docs/assets/images/favicons/favicon.ico b/docs/assets/images/favicons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9e41a24838be1dacc53eaf2514a245460c583e28 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-add-property-64.png b/docs/assets/images/icons/icons8-add-property-64.png new file mode 100644 index 0000000000000000000000000000000000000000..53d2b16cb14b4dc40409e69f885d0443467f0a67 GIT binary patch literal 1189 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-bug-64.png b/docs/assets/images/icons/icons8-bug-64.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4b80192d56ba360b1ed9b2a589cbdf0277fabb GIT binary patch literal 1566 zcmV+(2I2XMP)Ei)yxf~H$)xT)n@H4{Y9C>#b!BQF)&W`hLkZl-iP0|+ zGF0dG(s;RuaT{nIR}8(7TF@rO47Iua6ttcyf#71k)WH_kQ>!(ha;VMir;s8#1cD0x z+jaeRv?jCoZ%$7wpj|L9F~3#^h5uC7*WTW^_Ika;z2*?oY|%^?(3|S#DmNcvNbeg*Ic| zCX#t8rhwPf(=~}Zvwn-85!b#d`X~+ZMy7$;HOzabG|<9+yj~94{K@%2(1; zICV7>B3ALZqW{*~w0!D&^j$E#$Bpy*(|T;`L#>2d(&E?9CLnYg$E%5}NwmW|U3#ze z@wREEPrWH7tid#WHTMLBrqp$e)OyJ|Ms00kr|_e2$HKQ<-qyqpUDF=z70)@tdrz}` z?p1ll3bv-KgyfZ6NilA0yBo>e)kuec4LWw6B}04FBmQ4CBV`p^eCoreW-@Zt3fhIv znK>kB?LY&W2OH=V7=X@0^aQr_|U z24rPm&RPoD8N_?=r!G-v>TIuXK+Y0S{x5U;Y1LxzCSKow+(qC`JbJe;SV&nxIxPZy zaVFCh-aeQG_dFenB)DiH*utqy7kI7l;zBn(9f}uV77*h5)Ug*UnGdWxnpvDqqEUDK z(_zzmP;Axh!JCV4Ysh?>&_W&*XC5P zg}q*P&TzZlmbv+N% zd-0%HssE$(@)VwMRpvk{OW;Yvd)HN&18QF!C|2r!X}vs-AXjA$q&=|&8{R)%mFcwh z$8u3%e;mn9cu^enmB%teeR4eS_4j~-Q`swUFqW-Ocu^en9hgdq`VPgi$Lkw#XbQ7G zi~-?$N4h?M4sp>a(GG>`w>X8lkEQ-=2kzj+)BT>ZJo7L^Jdv+x8mKnC@ zPx8QDiYg~z7C08!`;D+7k`k>~M)3QQXr8e%3&pP9D4vzx>z3IOZ0nPgXk@wnFGa^A zKo zJ?=SAp9-hR(mN5e90Q%ra*1k8px9dfJPebp-!S^F)`Z!9R1K8%#q*?EGP?TyIBBx| zlo=??qpFi{sWyyD0v1dhm19)jzV3A^^{CTfRCKSOHql%g;lck7?+P``@9CKkwx0>* zu7FY(%FlHnY?1m4^%HomyWSAQc&%C1Liwe;Zg}5pw(>jgGpZX;V0{SX4I#7(*h%}> zp}eo&fT5!EV;FHZh>UN7*w+}$1>uJ9x4{jgwpV+!H^48y{PN2$zuc~W0a6gsM3DgX Q%m4rY07*qoM6N<$f{@V$YXATM literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-code-64.png b/docs/assets/images/icons/icons8-code-64.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffa3cccf03dd3b408f30dc36dc7bc8395f16da5 GIT binary patch literal 1435 zcmV;M1!Ve(P)AWfX@OR5Vfl1-z9~y1h_J?_2I73IbY+3hRZ7 zP+Lfa50XGkYA|#QMFIo_w5WjuvLY8REs$PJl*A8w0~8QqNLcxZieE~U$8)x`WIDZU zXSTE5HSB6j=fL5 z#Up9cfT!ySJyi?C$~zqM`52WJ4H#ELMBtfP$_ILBBC8*%&V-Wt6`Xl%daHRQ?K%#pWe} zh^!a#S2MPeC{F!k$kiGaSAnAU4KRA+If9Chp5v_9A1S$7!;+Ul(ffVv1ow4-@^L#$ zt$w^5@klh@l?J@N5EQ*{Ya@8N6_hirJq@Oc@=`UZg z1mh7f`y(Y+YgqXrC{F!k$kiHZ=7QqXx3h*7yS^(8sCxmF*eVzm=JugACKT>kFhV{>Z659pZWCu`Mja|U(kCa@k;k{=;iR}W{ zWf!<^+6ByhqH9>O>$}o`jk7>;>f2evie2B82E0E56sLYNl3v7^czy{M< z!0fxF{e?UvYs_t!!6CU`5dMs=t%znHa z@vs{|7@MbZWAhZ|C)|M06j1cO{ab?V-$4{(7cl$ra>Qe>_@*gbkZXOY0{^zzJZfD- z$JEmpBQ`d#nM8hw-4+04pk2W152v;UXf|?pHwUO~@G*L*bHmjyyXnHkMd!Mz=oEOeA)SDAe4D;xL^jOW{4?|B}Ue7|YV z-R0Dpy#_yHc9zp5-tXo$jT$1mN(pI9uO^hT*6^=6dNJ-T1;wdvd%ZHMjhq+sqik6# z6kE@{rg>~nS?}KnHHYN981+hd#r_sl42o0V!FplMcc6s&K3)-#s8`hYpEdTE5Qx@N z)b}?+8DAImN;qV@pcY9e&{9ZX03T(z8qiYAubS^*3EAfH&x)xu*19!Ft+)EC_0!4Z z7;~@MF6fIw8b2?DWYbc?jN~%L?$~ZXSY9fJ3urt%iHJb5 zFgL*BZ5^mq^~|y61{h<1`BGg+Cvrs~T+sUw2f@uT?zKLYA$%#n$`-w{Xi$cfIK z$mNu8z?XR(5fI+($BU?^&FIIgH0Isx^C`|}ebmc!@Dfb6PUKN_A{UP5a?!dCp3J3D zy%_iBn8sxO7V9=Br7-Y7)WkB#fSaPylSwuCKT zgihs9Z}?Y-?S$yI+WgFK%?6>nEt{E6^PHZ*EXi?KxTiUN>7=t+G@r==p<7rR_Vs=o z22uWwP-5aaKYFmlvKVPo6w^^5kj6^&dbnxwkJM2cZA}002ovPDHLkV1i`Lwl@F( literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-edit-property-64.png b/docs/assets/images/icons/icons8-edit-property-64.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8a2c79f8fd63dec589e735f747154cce7fadb7 GIT binary patch literal 1086 zcmV-E1i|}>P)5YSS@rfziMqPXlLb}G_cX>sA==RLzj zTjPJRl8w zctGkg2leiUxLNjJ?ez*{9v+ZNW0Xt#pfno%VB$j+uYHYwq-*u}k5Q=9$2>eB?HC0i zuI~V?pR3!7+?6T3ig)m>=&Tz=Yh zP+hIbArRua1#Ca<+I#Ld2SJEy0JfiY?LGHfPlI6B-?_@QcNd`+?=5oG-tVGOKW#qk zIZnO369l_H`yj%NEFJ6Rt*!x|${IoQhTdfm)AlUWa zzk_<%`(3#Fj`#8BiGGew^--KE^5CfK7a4|=rS>F7m zEJev|xEcDeg)Gwxk3&pF07*qoM6N<$ Ef)l+T_5c6? literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-editor-64.png b/docs/assets/images/icons/icons8-editor-64.png new file mode 100644 index 0000000000000000000000000000000000000000..787b180c9055b5ca7848c7a47db29d29f31d24ed GIT binary patch literal 846 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-inspect-code-64.png b/docs/assets/images/icons/icons8-inspect-code-64.png new file mode 100644 index 0000000000000000000000000000000000000000..3d3d8471f93fd47f19aa93294a212aa91cedca94 GIT binary patch literal 2349 zcmV+|3DWk7P)TK+R3Dg>7;2J?O3fE1r!t%L7vJIK$J)b zYEZ!qR8Tal`x4E=XjHVuY*1VG6k||OR)b4WF^Lkj%}mXn*@7%-vzVCjQXEL=&i?m3Kv`CBG7U}pDt=m0LeEY}QB#yS9 z%2{#6j!}PKY-~4$IK#L3Ogstyj#J1H<${~hsfzLkr;@F*f0LcKOA?*BOd-E>64tseYiOIVsvY=ZcRFc599uxV^EsWLPJ%KEb1Q0gWpKa8W z_n63Y-4(2`^+?2GGI7_fkIG%13C#AKNQJ<&u_nQ509>fLT#`IwHjVE8=JD!a1vh1h7OWL$|NuPEEmz&)V z=6JHqaUgOU#pL^rBfvaP0gaffny+WEZI(-d{7*1 zg2qrTtp4%*%8^e>5rdW=;F7SeD5g(syYv>pvV*)_*)GD*@HP6R93afmm?1H=4jxT~ zC<`0Y@cqSYmylQ{gp2|Ovfq*Y#r=e@E}~SR`WlOcAJq1d?Qo_2Z3b7~<#5;P{k&x8 zR9;#AHj$3T4vXcGAZ!%loR$Cuu*nEwKn&Ar+fp^5w0&F_r0yflnAif|fkDxtTR@T*Dwh?xp zJ$2ZV?e?;Ddl+`DEpj;hB1V8HaasZ*Msm&w;*l7BS*_brNYs|ylnYc}T3>(ptT+7L z*u#vve9{ZCRF0)F)A#V`)dc7{@aS+*BF;E10a3##6C~=3u3DE_$QPM!LDpL&*ZW4- zGMC@K4Bwskbg$1ha~E?BKk@n1)fdh^L!&`lc3J|4MN=lOOF-T(J`;!)j_&(v$=*c| zyWf}f`DJLIkY7NW-S;2YCSdq55Y9`0E`H7kB09R}6}Yc}u)XKmlwT9R(_H zcny~1;9io=KLw)XctOo7`Jj-WN_SaUk7V(S+Im6qE6A7?RCwhEO;jlPb? zoTBR{L{O0!!IiqM`@PAe2yzt&36IqMF?8}z{Or`Wns@lA?R@;%b~u%ZpCf=;aH42%lB+OHwcDBzC`}XIA)iOJj_VYs6F+T(hG~QuT zQ;>zh#4HHrf(S!}1VM`98I606Cl`Jv{B;683o9BagOl_O6sy@inR74Z- zSI{|&gD77d2n}ILAXmieO9Sz_cB~}v z7=PuZ{=_W}V3UG9s`9KT6PLv2qGXvrsVYaT45~R{y6$nP2cmqo36}fw@hUU-rzpXy zpI%<2t0I5`V`Z6|qgcH8$;y5lU)dkThoa10-?O4WeN=vBZ?EUJyoDN}{H{MPFZRPK z5VlqQNXdw<+E%~VmnQ_P4b1f)%QZ=P&4+d`n<){9i!b@r9H_k7m&8}hlnJVN)y&jp zGkHzW{F)zU1>$5{Upx%Go&`TnHM2QYdSOfLLyF4DmF+&1r}+}mEE2G$4<~=$2SnZm zFYYsRX?}EAZXB;%0B6D{lq8I@Ny9u75wn zy%BDd8vJdjcl(x}Y)tP7;*2I)c?$JLPePBY?AS89 zv#9!Zs7tbXFg8>E;#iY^D`a-%*E_m%N+8~;-VN3#y8rLr=>ej&S?mpRyW^JQ&N)H0 zJFhmxKUcoujH$Uuo(Fvk+__ZH4f4Cy{X0eD!6%<>hM!1pR^JG_yE3G(D^_7Ebi46) zLq&S^$(FI(4a7IQTybr7A4+>&n7Y>$M1|^0_I2gAMIE?L^{9QW{9PccxR(%` T+p12@+K^C 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-list-64.png b/docs/assets/images/icons/icons8-list-64.png new file mode 100644 index 0000000000000000000000000000000000000000..eb95222f4d9942d75a86ff1e1ba7c92245d3472f GIT binary patch literal 1134 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_l-d zPZ!6Kid%1|_-4d}iX2Z56)1f!9uYWOZQ0CaD~0TZv!kXiix*k>wOQ$^n&HbOu3N4y ziYy7tP~xg{5fEf$WnI0j%JyR^trcVkDQoZcQa2fUvpznYKV&a$M1_0uWidqpZljT>*-PDFDEx!=I_xz_4Djc_6&Kp zgRa+fm3v$(iv>UZK3Z9tUTDm1)m~BgQeeMUN8wk;(6FaL?=DY~eHOPX^lrR1pP}OW zO9dC!GW+Prv&`M`|4wGcl={D(Je#y8-hTdydCA>7rY9;6JKnv$LUYGo&3BzPPIvAX zb4jVryuZ0u`|+8iPVJc5h9`6HGJkQ|cdg(;tbbF&C%q-~ic!vuWpwSGCX zS6xy6-1~RcOe~Y{mow#Lq`2Sm*(1(ozmS&_B!Gk0yjHmx0~p1-eg!W_@lsb6bTfSRJsflii} zWmU8U+4K9vmAzZp%o-9tvG+9~sXF}H(ctGw$rIh@eeOnQm*{e+#oO^zew?|oI@|U# zf73~S|7IlByTh6jJ{{l3gkQwfpP@eEz*rgj!m|3iQrlab)jk?^T%br=Q)?p6~bb`F@}G_rn3t-Fw_PBaAS@2qTOzA{sGiEhawlIv)Jr z9em0fWKLZT4{=?=!*jR%!BbZuGkGP%l$C(O6$N?BIj*_o4sNPMhUqnQn92c#-nr$d zpH+_gg(@V>D~Flpq=39{UL~^P{@@uUn2=cpSLQN6K@yh1Vk$-ApeE5A=eQ=IzD=Me z#ccy#T#6O~3Wu_T9DHDK4b`^!*Oj0-ZX1yQ3VI0yAQlu2{X3pt41sF~thpSw4Jcj$ zDAW>Cz*t;b(BFvSLI^w;kmp*9I*!{0ROA5+UzcVhu`&;}6}gbq`HIEpmQlwyau%)~ zxIQjp%_4vaoU1BA0?nBTNzD_NiTXG5Z~lW9Y<*nCTMGduSguMyf|}>+(XNkbtUr!7 z-tI=~aCIBA07kF8`500*_)r?r!`JwbVe#Q#;;)TI@o=cxIsstx$Zzsu5^4CG=&Pkh zMC9;v(>v>q;xqwb_i*)Fo&^}a@^xMKgtffeg)cV&x9i@3`Yu#|&;<}be&ikg32pm) z^by!*3jP4ZIVM=HaW=*)`M#m{-|EJFq~$zo+R}yP`u_B-xQh=>S1l4c4Dz^4cOTM_s%2q z(>#Kz(X4Bsx4$h3mi@_)2*@PCYfHg%>i9r17TA&@`twxFYg$ahe|F&5)qz!twpLvZ zzngyF_jKSIan?16(e&6Cko<^|70^DH>gxZ|-TscLcm`m=&uH@Hmmi8i})-Z|-yA z&tp!Y%YjE@wE?7YGHWFM(0ub#PFy?H3Upg>Ppme8wXsIxs^*)2K|rCGsAtbkC_(~Vn+Yi(?;|ufHY2WMQ3)ozPzqO8 zDWD)_mB13r-{U#X$u(+ynKs5|)O6%5MN3XGz~mN>+}O-{6>aJ|B5Y$bYB~xF(Muoz zu_%PGNqK>52CNC&*o>Nv(gJ`fTY_48mHgv^n~lw~d<|Q>xT&~U@Y-|Qw zKbDA^j&%!xbs>yRH9wTG8ESo8=%{%fVD!qzypGKRusMWr8E!u2b?9wu#=MSg^U=30 zgs~~-LKvG$epKJiu*18-hxB*4`@P3#=#ZmnE<^&vi5>GG1j%!5u(3(CO(vXF@_u8p z!HZK3o$!3-#df+j%XqMw<~9hN=B1if=hZRi zxW-=}U~D>_nB3+9M#wLRT-fDy-}nYvOC6(c0=@0_rNClMfkZ$i86vSDV7x${Q^!=x zYX%yd=j?c_=OFTW>{xfkf%oaP;fx)PJqNJ$TL;$nI8b=nhR5~RF{WT+vo#6k)|rqF z&IE>_*D(fTGp=;7dFh^pn#0p^(LEht07*qoM6N<$f<8JR%K!iX literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-plan-64.png b/docs/assets/images/icons/icons8-plan-64.png new file mode 100644 index 0000000000000000000000000000000000000000..475e9ba9a71fe239f6d74465fe228826a7711b5a GIT binary patch literal 597 zcmV-b0;>IqP)W$$iR=T}`Z9PfsiHLY1{zO!z`qoax z(iPyD5fwJNy2%7cM-!l{n@)i0S4uSK>gEa{1KOF)EGxHa!BhpfYJ$3Gx4`w8Ah$-F z$S&zsESn%1;AjgNGeK89z}zC#p_JBZ`cvU>I(+{Kyafg<_lCeX!GpBjQ-Mv8O;9h6 z_W&}$X9XPH^!D3fZPu)(m@`4235a@1nDYRiAF`T_c1q~#<|$z6MYh35Vy?A7`KrGY zr`-H+&xzawd&TtBaLxqha(`?Oh#EG*|9&bQ_+Mjp=l)%LVj=h~G4K{hSl$|e?*XHW zmY)c*32Mes0c?VfCV*Q&Q@73?p@#H;%aqFWD=I85rqqn|0O_Gl#nKhfLJ7bYfJ%AN zk#hL_c`8w%WCEH3yMqc43I%|^b!7trs6(LiDo~7C3u8OJx4G(=U3Z2u5B@e&(gQl- j>Vm{D48t%C!?gJVGl-*LIxqGPp*WxQ?N|9ImTpQo|`q2p7>a$R46^`|9P+1Da7i?1C^4rUQCha%#{| z4G`!{Uf)~!}u*XmNX z*-cwo?Ao|wP2IE(msU}#n-vOfqFC624?d_k5fQgJ>)H(5#KQ6>KBW&nOmGT<^Uw-*jxK`|=t$ZITdHhqL z2!9Dbl0u=+ytx9k(_$(`mz5ez=Zd}z*kMvv? zvbo-+;bKKUZ`8-Q-cbOdy`%&x`$^jAlh;45eM?PMKd(6opeDwwKy_d7BfqdHTN~%J z_UhweUk|EdJgmEgpBxRU-2;kA?_CLQlio|Y88HSI`}B39{oksKf@0c#?;ax3pA{|( zjf)w8Q|-CBzZVoIGuHR=Zhp>^(8p$D@!{Q|I0>L>gzIF+*oGc{&Cgo`UNI8C@o7-J z_z~V97jDs>6z0@}9DptMk6t$@UcQ%U>SD<9F=4xTa~CMf*q)51uW*}xeG$A z{=TJ~a?8hWwuiTNg0kF?^4lrmM^j`4{>KH!J|a(n;)S>RM-#+9o**k=G4I&N_9sE{ z%K4r;L3HW_^8$)vA3Jw~QYwM%?R4(i#Z7L8@Z;x1g?RzTK02NNr4+(C+Ub*7Sz+4k z5H21k`tzs%odU)_x^{q4k^r_5?A}4fnwgdmZgDdN2_Wv+N6$7;N+qgSLXdfx+}!P? zqb`Tw*hjPtlv0Y(5M*XX=RVUWA+)$3g0YWy1e8(>N=OKC3Bj80dI-io1|A2+4N-|L z1Z8$6x8pI=gD!?(?BlssP}~ysf`lORXLQH@R;G71af2IsjC~wv0maR?r-pDqLa=u2 zbz_IIk7ToaxoCDbfR`lz*)gMghML_8z}Ux2kAmW+d6_?B?U^2N=@c;b@#-U>xMf~u zXRICR5f?9l#y(ze0;SY~4mT2%xfz{(=plE_JMuBw2!(KJesmKVYgT$B?Ea0AvF@== zPzX~YZ;5&7&scNPN5YG9D{QR$NCPOP5TWLeHjv59+_2C*0m|Oo$jw*6WVf-8cfz2Q zA^@4wCuD``WAzKa4v&ku{Jvrs?l$Wke-MgcciwwpIt!WC(&xt?;P)$G5`d}Rz_ImE z46ppD%vkUH_kj}dcp3ZnpdJ*j2Vm^u!#cQHmU95c8b4VFSIcrWe|#M)jWvFD59Fxj zpjY4iqJKE=!*=r*cZ0>>!i%TsxYaAhzmy{{numqCybs$$POgP(3EKgju3=W-s~S4w z@sw~$fA$1x_~q*wPFmXaxj$?NaHg6mfp4l9^6E9<%o>K(gD`2kITa#uHUz?4s*<5| z)pq|~Zs}^Wij`-p7*_4-VJgH{qe0(>IDD=Wyv+GKIpiqK>D5HOU(KX2E8r1S>!fJk n8t}_6zx?vcFTecqt8o1T!qt@-TJ#DM00000NkvXXu0mjfslh$m literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-remove-property-64.png b/docs/assets/images/icons/icons8-remove-property-64.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3d23762171230907d26efa1d11d75773cc948d GIT binary patch literal 1315 zcmV+;1>E|HP)_SUz=|UGa#kd4R z+(N2$BNgL=%4Q+es0C43BG5)uB8esiOR-8y7hAfR^g#^mLxn0XNqzC5u_V6!JZEwX z!!7O1oz9)!n)^?FnaMfd_nrTD=KJm)kH?iOSFT*Sa^=d^_3~CTE2@$`QJeWI>Sb^k z!@_R$Xj=mwkOKEtf|FTXNsVm{h~31nKy)S9PCK1T%E?u4>e03$2^F9?^@`f=FR2Wa ziQ<8Ni6|oqIe+eZh-A|mc0auQ?G#S{<2;G#ikLU3E0+v zmCu9X)GJ`SzqQYS;?xG%?r+^Qpg6Sww)=bhX;7Tn0Neeo-vEj^zO9?y?LA96#Cyp%5v5VbjJZK{3Z0njsV-4{6wK>dC0Ku9Q|V)%nBx~t(|w^4EYf9O*DAsK3!64Q3W`%-gSPwIybctn zHo$g&uRaXQL~%1y%?Bb_e__*WYeAVPZf2_aKm_YAY}&dS6sH{dt*e+Tek!)D=CpiX z9`h#*2`9F!p`^NiIbkdK=1Need*iP>!ff%eOBfyVGzp_SR zxntakk(lO8{tJygjO;65o@FBkvO$S-1NLWAX4GymZ(ec-BtEz=k9)6fK92))S4 zt+@#jZ_~9TS7O=7p)61$-GD>OY1FzOXHn`OuS;jH#0Lyt14pu1sQAZpjQ^a&nUov3 zuPqy?&E#)^x=eB-*#N2etJXcdj5u>nH(V0q)3NWR~1 z?BMbAYtIC81B@}FAs@-(X`n>v3P`O>zM40<0$(JvP;vu?rvd-(nj1GhjRYhAbI69i zN@ZB!%aq7G3#3-P))UJ7ZzS0+FUZ znO5^_@MJ3cB{x{_y>{p8dHH1Gx)2SveRo{3)xZJdayRFV|_A+1Q4(S?A5Aud*rb&L$ z*=G{@QQ*5ox^zRq&TWh5E}7SD%155&c;!6Hi2J! zbK>|@Smc?>YV{J;9?$vqI524YKA!T{SQ0wC%u(86NR(f_LUQeXxPrd*E002ovPDHLkV1jqXj0pe$ literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-report-64.png b/docs/assets/images/icons/icons8-report-64.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4a5fcf795a531b19869d33dcf81637d7e22599 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR01_owF zPZ!6Kid%1I-SiGglxW|p@xN=uiA^Cq%HCShOG1si7M<{#B&NH0ff5H#m!8zpqa6xc zdKdL(1RHu^-nikZ(xP1}XYVSI`QI~dU-+>uX8AK`zAt-zqVmDcA7|%OKL1{KhUsuh zN(%&3oV0d*w!})R*V&CJtLBoURLb-z{0XlZrIyJwe0=c4N=Z}R;ac4zw@q1*5?8`M zZi(t@FE`k|bL-oQCO@kk|EM2# z%lo|dD$k8?9`XYPg9g`+!v#~QrxK9_Yi^!46UVUSs`x%;-2Hr=>)QV^t2+pH<$^tvx)8`dso z77EJ%DvRC8=n`G_wAT8x-Im55>w1?)6<@6iUkh^F&r7GytUvGY=TA!xNbmPG%pk!V zXO7J8|M}&yq5R@NHLwZ6e2a8{i*CKQH5KB=+7%)|BbTn6zEyk?k5sa6ZGHXWV%N3b zA6^ByynI)Oq^HFKkXJT_f&^k^kMyX7STk(BcRaiS=(?I(ub0o$kMuA<(=O}<1%djs z=8V&IKm$$+3FO{fzv8RiULI%&KRY7?3*lo&71CJdZ24{x&y#e4U*WB-o*ql#ny!AE z{nu08m*0E*iAmu2D+afD_p>*Bw|-x^l;g;P{j8VnEl!pDIPK?!7?;9;>HDqbAKlbk zXz-N%{v7uwZi+qJ&x_QaGFQxSf3|j~OHZLPW9f%&k#S{`pQk^*YpIYGD{dht(y*d5 z_CbY-w9DGpOvf+R2y9*VS@l!m<$3Ol3s>m!PwADGuKC!Q_PCOd_k8ig`dbrcANybD z-aUPDhqU3U|ND1X&wg~|&5nHj1?g%Xj&tAp+~<+tt*vJGdpXhM3E&7(U=CyOboFyt=akR{0FD*F8~^|S literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-source-64.png b/docs/assets/images/icons/icons8-source-64.png new file mode 100644 index 0000000000000000000000000000000000000000..c6781eafce6fecbe95a80d60c58eddc3c468626c GIT binary patch literal 1485 zcmV;;1v2`HP)(rIT{ z%I3xnrL>^dno=y95}++12w_nX4MZSDO)!)YKq#9;{ec7%lNu%bXf?(knn?RYQp4jp z%_YHhmV2k)G&APD$&*gL?=0^GbR8%9Sfuu3Wit6-I;C;7?r5IiW)!M(Ieb z;A}z#KBEUeq=NdP6%bdHv&qQ8k1WSOVigECN0d|TSBeU+-W;j38NmQz>O~9fx()DO5m~Y1#y9|`>>qk$})^q|aS|eSLmV)_qtO-j&>AwC=6W(u| zXjQ&GN@1ky(NZwqj+MR`lz6*uG3GmC5h(FC0As$h7eGAI>jC7x4Dn2_2T<@LDDid* z81wCY0hD+ffHB|x`Jlwx0F3#bIS-V+vCUmG=8|fnk}=7Y2xTkI!onV$u=`^?}A?XzSCm3OY!<#6|s=~OSy;l94`-9szW zxhHInk20&z$sT)!cx3$-YyYA=s}DxQcTlY^0>#cXT;l4i_*?qeZjUv^e5H96MS)M5 zS9~PNew$VM(i$%hne!b+uN8t4@<_f7Q!jE4EV}udrLcs)(VIb4%zb&*6a(K895m za$S2=dbwOVjfZ>d+n&K`pak2mk@HvfFIaIm#F(RRd#Vaqueom&a4=l#+NlhY*lSj= zD^-35Me5tO*5-o}ut^SsWUoc{tMh3UgQ*eJ|3UL>^6U++wty!j{%6bA)#@Pc388#D z(wkF331}vtExK2m$JN?g5}ekSgHF@@byN9WFL!qHWY~ix@5e50`BXXe?MQFsf)Z%& z?OYmlZ+$M`%K;=htu6UGtoqxX6hD-)-%;LNi*S!mT1ArgPh%DYmZ$0L#Ywynl2P(sD*l*^#R9JXRR8?q@4SGOUHLmIy&i&{HA z8gdvW@z=Y0WOMnQ$)PWUc6{5?)=W^s-Ui8yki^y9ju#qrEnv+8?w9>`;nvnHo(xxe zTPDd8+h*0hv~yDU8zH;C!)kj5C=TM63!PTpfxQ84g?D7K(AvKkuHKFeJQDZo?f5Mj z_HKop`VRi`o(zhkoOJw>(;;;3p3?KfkgT7w>aMiWf0q?|T823wn!W?--E>f#=Ixn6 z+Iy3F-rMh+#G_KLQ@FW%V(>SyJFgad(y89>@Z)f#zI$lzL{Ln9@$vpdUe|i^_eeCq zU@_+Vqcl)V8IxMyX}x`Eltgm?#(WACDu&s`uy4k@Sz|0F3!QG!7IKrVfpz zUTYm3$KGgv$7sy=C(nXn!j#lGrnNpDOIEZ8V9fXDV?Z%w?6Xu-gWVvRlri5&QbFk# zXENryX*BHuM?JCo1Ig|>HiiWCEd15$V#h~uR^a&4)WpjG#P7N;&!Y_dQ1aAM_)evO za8n-Fd>O;9gyv)t#N)ayuj2V+3dKeWpZ2inj0fV0W)B;UPWN0AzVpd63+)0iih654 nn`G#jcjd~JD_5>u{jc>e8IE;6J-ib#00000NkvXXu0mjf1%T~G literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-sys-info-64.png b/docs/assets/images/icons/icons8-sys-info-64.png new file mode 100644 index 0000000000000000000000000000000000000000..2fac87233c8d77d3ef2e98ff41d208d47ac4cef0 GIT binary patch literal 1031 zcmV+i1o-=jP)!<|R&=o0)vI{bQBvB2_7eEX&Bs7>{i7VZkK_?hD|vN0 zJ0#Ckjz`#;H;>R}>ccl{+d=(To~ayjz^A4@e6#*AsNQ_}cCD|3 zeF~~6*Mp;vnBTCvckTt%lxxkY9Iu_dPyXx!PB*0PU3)+^_bpZ*)Mq+!h>N7 zBI4A;xgk7~=I;+PK6`wG(jWcRH*d4<#PJ=VnsN}H^s#tykb;Of^<;=;Q$vi;<=nsQXJR`=KMfojT8#ai9pybG!~ zyP~NN-+a3jRBv`gQy;$R*#c_9aYFa;eF{|92N1fC^P53!RN`TnH&7OF)MsL+_R{dn@t5_W+FIuv*Vch*Yn^kX*Me$mopbcP4XUkm(cERZ z*$l3sXYehai&%9H<$)yKk+`9m7?A=+YUyw?#P5FVMP@Z+k!-X5-xp_+r1Z7*Jt8}R zTr;SyzJAsGz6$DLWCw6}CDg-2OiWBnOiYXoUI4al53+NGAaVcz002ovPDHLkV1nqD B3{U_7 literal 0 HcmV?d00001 diff --git a/docs/assets/images/icons/icons8-template-64.png b/docs/assets/images/icons/icons8-template-64.png new file mode 100644 index 0000000000000000000000000000000000000000..db225de71f957347c08f7a43413681d8aea86ddd GIT binary patch literal 1147 zcmV->1cdvEP)TBNk z%Nda5%JAzOE+&9UEej?eV|ep)0XY485d`2YXAD~bDMFS24DJOwH~5e)1S~EBvo8Pu zhoM^mi3+*^V9PoH|9nUn0y@?Mre$4S+%aqg*u>~qs&BtKBkn(W(0=}~+E#1Ur$)Fl ztHG?Oxes3fHu0JzZ@UOizof+9-8{M=n@`$bmDp_o*M}to?0(Ztp6iAglmZ;$pmt6d zWELrdk_!O9iAS1qzhuY!&cR-g4P_T-3aSdDik8MGn!W>N3wT#F{Ky#^`m&^?3gsBk z?lAdfGXO;eh=}{gDU&cz0FV}q)8-1^4JaE1a?kD>bG41hpn{-`I0Y0y)y1*f&OG0C;Ni4vZ0j(Cv{Y=rrgdaJ2^& zD?IbaHtOnN(0{fouKB6cPUm}2ZWslQx!|-+fR6Te`1gb5ae%L ziMNzE49bC=1ti4ECKp0B3FJmd>H@alQ+vF3anhR|!D5{S<@=d; zdb+X+w<9MFwsKZb5!?Wz3WzKXo`21&;4b%BH#;)^b8mP&S9XgnrR~#TGgoR=o+#2_ z89@44Z~cxmc@yNh$w?8)1f-{Hc^WCj3U=ZfAq6D39ZeFGCkZ)|P)d^J4$jYX|0>JB zQew$_lVcEaW(B31eqN3m{uH5Pif)7?a>~%M3!Hqf=SD~uPvGANv^zpS4&T^W@3UMb z9sf`t?QiZ-d#C3No^bI*{$7BCrZv3$Cb%g=PlLxk>UjfnR1;6=F3@fW-31)n+s^ah z@lTC+`u?`YJkH>;&tjg?U10gSk66H+NAm~*msAiy$L7= z_9U1L-GK4|))eed&|vCaT+vUXcn~k47gzR!VER_p_HpPo2-)%J74ReMyr|{nBTzNB zK*)}NT>?MC&Wl=JJ_2>D4+PVmZok0Bs-5y--YqZa~XbC?-NTptT1C)3<=O zkM=7dnBD+wADx#$FueiVKF(hR!Sn`b`?z!g1k)R!?W3m~gs|(bbrbLDVz5vepz9;n z+XX^c^Jw&hKlZRLxJO*QIW>v)!+5RBYDAAN8LFA!n|G z!2$JcXWq+L&2`di9Ct2E-Ob3WuJ-j3?I3K3caTWuoPk#2f{fiUow}Qq=jYYE-rY73 zvg4!5po%-`yyG5^2AFr(jf#AI1Zw0A2)S~@YQK-PlFZCer0#j_d9S)r5ypqF#!iFa zl^<_o>)0vo3o(*$x>1p@k3c;?4nnTnoHDF(PI`{x9!oBtx=|6vhp*=9LGa2yQ@6az zCo}UDsTXy@hoPXly7H>4eZALpAb929)KIGO$;>=O>Q(LEXM%2BU3t~jzTVqf5OU?- zR}+6%iz9h?b&n;NPu-{p@93%Wo2b$Wo6}|-<%-AXXB&DcK`qY M07*qoM6N<$g5jUU(f|Me literal 0 HcmV?d00001 diff --git a/docs/assets/images/logos/logo.svg b/docs/assets/images/logos/logo.svg new file mode 100644 index 0000000000..228eab724a --- /dev/null +++ b/docs/assets/images/logos/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/js/asciinema-player.js b/docs/assets/js/asciinema-player.js new file mode 100644 index 0000000000..0d14b0dfcb --- /dev/null +++ b/docs/assets/js/asciinema-player.js @@ -0,0 +1,32424 @@ +/** + * asciinema-player v2.6.1 + * + * Copyright 2011-2018, Marcin Kulik + * + */ + +// CustomEvent polyfill from MDN (https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent) + +(function () { + if (typeof window.CustomEvent === "function") { + return false; + } + + function CustomEvent(event, params) { + params = params || {bubbles: false, cancelable: false, detail: undefined}; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +})(); + +/** + * @license + * Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + * Code distributed by Google as part of the polymer project is also + * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +// @version 0.7.22 +"undefined" == typeof WeakMap && !function () { + var e = Object.defineProperty, t = Date.now() % 1e9, n = function () { + this.name = "__st" + (1e9 * Math.random() >>> 0) + (t++ + "__") + }; + n.prototype = { + set: function (t, n) { + var o = t[this.name]; + return o && o[0] === t ? o[1] = n : e(t, this.name, {value: [t, n], writable: !0}), this + }, get: function (e) { + var t; + return (t = e[this.name]) && t[0] === e ? t[1] : void 0 + }, "delete": function (e) { + var t = e[this.name]; + return t && t[0] === e ? (t[0] = t[1] = void 0, !0) : !1 + }, has: function (e) { + var t = e[this.name]; + return t ? t[0] === e : !1 + } + }, window.WeakMap = n +}(), function (e) { + function t(e) { + E.push(e), b || (b = !0, w(o)) + } + + function n(e) { + return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(e) || e + } + + function o() { + b = !1; + var e = E; + E = [], e.sort(function (e, t) { + return e.uid_ - t.uid_ + }); + var t = !1; + e.forEach(function (e) { + var n = e.takeRecords(); + r(e), n.length && (e.callback_(n, e), t = !0) + }), t && o() + } + + function r(e) { + e.nodes_.forEach(function (t) { + var n = v.get(t); + n && n.forEach(function (t) { + t.observer === e && t.removeTransientObservers() + }) + }) + } + + function i(e, t) { + for (var n = e; n; n = n.parentNode) { + var o = v.get(n); + if (o) { + for (var r = 0; r < o.length; r++) { + var i = o[r], a = i.options; + if (n === e || a.subtree) { + var d = t(a); + d && i.enqueue(d) + } + } + } + } + } + + function a(e) { + this.callback_ = e, this.nodes_ = [], this.records_ = [], this.uid_ = ++_ + } + + function d(e, t) { + this.type = e, this.target = t, this.addedNodes = [], this.removedNodes = [], this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null + } + + function s(e) { + var t = new d(e.type, e.target); + return t.addedNodes = e.addedNodes.slice(), t.removedNodes = e.removedNodes.slice(), t.previousSibling = e.previousSibling, t.nextSibling = e.nextSibling, t.attributeName = e.attributeName, t.attributeNamespace = e.attributeNamespace, t.oldValue = e.oldValue, t + } + + function u(e, t) { + return y = new d(e, t) + } + + function c(e) { + return N ? N : (N = s(y), N.oldValue = e, N) + } + + function l() { + y = N = void 0 + } + + function f(e) { + return e === N || e === y + } + + function p(e, t) { + return e === t ? e : N && f(e) ? N : null + } + + function m(e, t, n) { + this.observer = e, this.target = t, this.options = n, this.transientObservedNodes = [] + } + + if (!e.JsMutationObserver) { + var w, v = new WeakMap; + if (/Trident|Edge/.test( + navigator.userAgent)) { + w = setTimeout; + } else if (window.setImmediate) { + w = window.setImmediate; + } else { + var h = [], g = String(Math.random()); + window.addEventListener("message", function (e) { + if (e.data === g) { + var t = h; + h = [], t.forEach(function (e) { + e() + }) + } + }), w = function (e) { + h.push(e), window.postMessage(g, "*") + } + } + var b = !1, E = [], _ = 0; + a.prototype = { + observe: function (e, t) { + if (e = n(e), !t.childList && !t.attributes && !t.characterData || t.attributeOldValue + && !t.attributes || t.attributeFilter && t.attributeFilter.length && !t.attributes + || t.characterDataOldValue && !t.characterData) { + throw new SyntaxError; + } + var o = v.get(e); + o || v.set(e, o = []); + for (var r, i = 0; i < o.length; i++) { + if (o[i].observer === this) { + r = o[i], r.removeListeners(), r.options = t; + break + } + } + r || (r = new m(this, e, t), o.push(r), this.nodes_.push(e)), r.addListeners() + }, disconnect: function () { + this.nodes_.forEach(function (e) { + for (var t = v.get(e), n = 0; n < t.length; n++) { + var o = t[n]; + if (o.observer === this) { + o.removeListeners(), t.splice(n, 1); + break + } + } + }, this), this.records_ = [] + }, takeRecords: function () { + var e = this.records_; + return this.records_ = [], e + } + }; + var y, N; + m.prototype = { + enqueue: function (e) { + var n = this.observer.records_, o = n.length; + if (n.length > 0) { + var r = n[o - 1], i = p(r, e); + if (i) { + return void (n[o - 1] = i) + } + } else { + t(this.observer); + } + n[o] = e + }, addListeners: function () { + this.addListeners_(this.target) + }, addListeners_: function (e) { + var t = this.options; + t.attributes && e.addEventListener("DOMAttrModified", this, !0), t.characterData + && e.addEventListener("DOMCharacterDataModified", this, !0), t.childList + && e.addEventListener("DOMNodeInserted", this, !0), (t.childList || t.subtree) + && e.addEventListener("DOMNodeRemoved", this, !0) + }, removeListeners: function () { + this.removeListeners_(this.target) + }, removeListeners_: function (e) { + var t = this.options; + t.attributes && e.removeEventListener("DOMAttrModified", this, !0), t.characterData + && e.removeEventListener("DOMCharacterDataModified", this, !0), t.childList + && e.removeEventListener("DOMNodeInserted", this, !0), (t.childList || t.subtree) + && e.removeEventListener("DOMNodeRemoved", this, !0) + }, addTransientObserver: function (e) { + if (e !== this.target) { + this.addListeners_(e), this.transientObservedNodes.push(e); + var t = v.get(e); + t || v.set(e, t = []), t.push(this) + } + }, removeTransientObservers: function () { + var e = this.transientObservedNodes; + this.transientObservedNodes = [], e.forEach(function (e) { + this.removeListeners_(e); + for (var t = v.get(e), n = 0; n < t.length; n++) { + if (t[n] === this) { + t.splice(n, 1); + break + } + } + }, this) + }, handleEvent: function (e) { + switch (e.stopImmediatePropagation(), e.type) { + case"DOMAttrModified": + var t = e.attrName, n = e.relatedNode.namespaceURI, o = e.target, + r = new u("attributes", o); + r.attributeName = t, r.attributeNamespace = n; + var a = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue; + i(o, function (e) { + return !e.attributes || e.attributeFilter && e.attributeFilter.length && -1 + === e.attributeFilter.indexOf(t) && -1 === e.attributeFilter.indexOf(n) ? void 0 + : e.attributeOldValue ? c(a) : r + }); + break; + case"DOMCharacterDataModified": + var o = e.target, r = u("characterData", o), a = e.prevValue; + i(o, function (e) { + return e.characterData ? e.characterDataOldValue ? c(a) : r : void 0 + }); + break; + case"DOMNodeRemoved": + this.addTransientObserver(e.target); + case"DOMNodeInserted": + var d, s, f = e.target; + "DOMNodeInserted" === e.type ? (d = [f], s = []) : (d = [], s = [f]); + var p = f.previousSibling, m = f.nextSibling, r = u("childList", e.target.parentNode); + r.addedNodes = d, r.removedNodes = s, r.previousSibling = p, r.nextSibling = m, i( + e.relatedNode, function (e) { + return e.childList ? r : void 0 + }) + } + l() + } + }, e.JsMutationObserver = a, e.MutationObserver + || (e.MutationObserver = a, a._isPolyfilled = !0) + } +}(self), function (e) { + "use strict"; + if (!window.performance) { + var t = Date.now(); + window.performance = { + now: function () { + return Date.now() - t + } + } + } + window.requestAnimationFrame || (window.requestAnimationFrame = function () { + var e = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame; + return e ? function (t) { + return e(function () { + t(performance.now()) + }) + } : function (e) { + return window.setTimeout(e, 1e3 / 60) + } + }()), window.cancelAnimationFrame || (window.cancelAnimationFrame = function () { + return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function (e) { + clearTimeout(e) + } + }()); + var n = function () { + var e = document.createEvent("Event"); + return e.initEvent("foo", !0, !0), e.preventDefault(), e.defaultPrevented + }(); + if (!n) { + var o = Event.prototype.preventDefault; + Event.prototype.preventDefault = function () { + this.cancelable && (o.call(this), Object.defineProperty(this, "defaultPrevented", { + get: function () { + return !0 + }, configurable: !0 + })) + } + } + var r = /Trident/.test(navigator.userAgent); + if ((!window.CustomEvent || r && "function" != typeof window.CustomEvent) + && (window.CustomEvent = function (e, t) { + t = t || {}; + var n = document.createEvent("CustomEvent"); + return n.initCustomEvent(e, Boolean(t.bubbles), Boolean(t.cancelable), t.detail), n + }, window.CustomEvent.prototype = window.Event.prototype), !window.Event || r && "function" + != typeof window.Event) { + var i = window.Event; + window.Event = function (e, t) { + t = t || {}; + var n = document.createEvent("Event"); + return n.initEvent(e, Boolean(t.bubbles), Boolean(t.cancelable)), n + }, window.Event.prototype = i.prototype + } +}(window.WebComponents), window.CustomElements = window.CustomElements + || {flags: {}}, function (e) { + var t = e.flags, n = [], o = function (e) { + n.push(e) + }, r = function () { + n.forEach(function (t) { + t(e) + }) + }; + e.addModule = o, e.initializeModules = r, e.hasNative = Boolean( + document.registerElement), e.isIE = /Trident/.test( + navigator.userAgent), e.useNative = !t.register && e.hasNative && !window.ShadowDOMPolyfill + && (!window.HTMLImports || window.HTMLImports.useNative) +}(window.CustomElements), window.CustomElements.addModule(function (e) { + function t(e, t) { + n(e, function (e) { + return t(e) ? !0 : void o(e, t) + }), o(e, t) + } + + function n(e, t, o) { + var r = e.firstElementChild; + if (!r) { + for (r = e.firstChild; r && r.nodeType !== Node.ELEMENT_NODE;) { + r = r.nextSibling; + } + } + for (; r;) { + t(r, o) !== !0 && n(r, t, o), r = r.nextElementSibling; + } + return null + } + + function o(e, n) { + for (var o = e.shadowRoot; o;) { + t(o, n), o = o.olderShadowRoot + } + } + + function r(e, t) { + i(e, t, []) + } + + function i(e, t, n) { + if (e = window.wrap(e), !(n.indexOf(e) >= 0)) { + n.push(e); + for (var o, r = e.querySelectorAll("link[rel=" + a + "]"), d = 0, s = r.length; + s > d && (o = r[d]); d++) { + o["import"] && i(o["import"], t, n); + } + t(e) + } + } + + var a = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none"; + e.forDocumentTree = r, e.forSubtree = t +}), window.CustomElements.addModule(function (e) { + function t(e, t) { + return n(e, t) || o(e, t) + } + + function n(t, n) { + return e.upgrade(t, n) ? !0 : void (n && a(t)) + } + + function o(e, t) { + b(e, function (e) { + return n(e, t) ? !0 : void 0 + }) + } + + function r(e) { + N.push(e), y || (y = !0, setTimeout(i)) + } + + function i() { + y = !1; + for (var e, t = N, n = 0, o = t.length; o > n && (e = t[n]); n++) { + e(); + } + N = [] + } + + function a(e) { + _ ? r(function () { + d(e) + }) : d(e) + } + + function d(e) { + e.__upgraded__ && !e.__attached && (e.__attached = !0, e.attachedCallback + && e.attachedCallback()) + } + + function s(e) { + u(e), b(e, function (e) { + u(e) + }) + } + + function u(e) { + _ ? r(function () { + c(e) + }) : c(e) + } + + function c(e) { + e.__upgraded__ && e.__attached && (e.__attached = !1, e.detachedCallback + && e.detachedCallback()) + } + + function l(e) { + for (var t = e, n = window.wrap(document); t;) { + if (t == n) { + return !0; + } + t = t.parentNode || t.nodeType === Node.DOCUMENT_FRAGMENT_NODE && t.host + } + } + + function f(e) { + if (e.shadowRoot && !e.shadowRoot.__watched) { + g.dom && console.log("watching shadow-root for: ", e.localName); + for (var t = e.shadowRoot; t;) { + w(t), t = t.olderShadowRoot + } + } + } + + function p(e, n) { + if (g.dom) { + var o = n[0]; + if (o && "childList" === o.type && o.addedNodes && o.addedNodes) { + for (var r = o.addedNodes[0]; r && r !== document && !r.host;) { + r = r.parentNode; + } + var i = r && (r.URL || r._URL || r.host && r.host.localName) || ""; + i = i.split("/?").shift().split("/").pop() + } + console.group("mutations (%d) [%s]", n.length, i || "") + } + var a = l(e); + n.forEach(function (e) { + "childList" === e.type && (M(e.addedNodes, function (e) { + e.localName && t(e, a) + }), M(e.removedNodes, function (e) { + e.localName && s(e) + })) + }), g.dom && console.groupEnd() + } + + function m(e) { + for (e = window.wrap(e), e || (e = window.wrap(document)); e.parentNode;) { + e = e.parentNode; + } + var t = e.__observer; + t && (p(e, t.takeRecords()), i()) + } + + function w(e) { + if (!e.__observer) { + var t = new MutationObserver(p.bind(this, e)); + t.observe(e, {childList: !0, subtree: !0}), e.__observer = t + } + } + + function v(e) { + e = window.wrap(e), g.dom && console.group("upgradeDocument: ", e.baseURI.split("/").pop()); + var n = e === window.wrap(document); + t(e, n), w(e), g.dom && console.groupEnd() + } + + function h(e) { + E(e, v) + } + + var g = e.flags, b = e.forSubtree, E = e.forDocumentTree, + _ = window.MutationObserver._isPolyfilled && g["throttle-attached"]; + e.hasPolyfillMutations = _, e.hasThrottledAttached = _; + var y = !1, N = [], M = Array.prototype.forEach.call.bind(Array.prototype.forEach), + O = Element.prototype.createShadowRoot; + O && (Element.prototype.createShadowRoot = function () { + var e = O.call(this); + return window.CustomElements.watchShadow(this), e + }), e.watchShadow = f, e.upgradeDocumentTree = h, e.upgradeDocument = v, e.upgradeSubtree = o, e.upgradeAll = t, e.attached = a, e.takeRecords = m +}), window.CustomElements.addModule(function (e) { + function t(t, o) { + if ("template" === t.localName && window.HTMLTemplateElement && HTMLTemplateElement.decorate + && HTMLTemplateElement.decorate(t), !t.__upgraded__ && t.nodeType === Node.ELEMENT_NODE) { + var r = t.getAttribute("is"), + i = e.getRegisteredDefinition(t.localName) || e.getRegisteredDefinition(r); + if (i && (r && i.tag == t.localName || !r && !i["extends"])) { + return n(t, i, o) + } + } + } + + function n(t, n, r) { + return a.upgrade && console.group("upgrade:", t.localName), n.is && t.setAttribute("is", + n.is), o(t, n), t.__upgraded__ = !0, i(t), r && e.attached(t), e.upgradeSubtree(t, + r), a.upgrade && console.groupEnd(), t + } + + function o(e, t) { + Object.__proto__ ? e.__proto__ = t.prototype : (r(e, t.prototype, + t["native"]), e.__proto__ = t.prototype) + } + + function r(e, t, n) { + for (var o = {}, r = t; r !== n && r !== HTMLElement.prototype;) { + for (var i, a = Object.getOwnPropertyNames(r), d = 0; i = a[d]; d++) { + o[i] + || (Object.defineProperty(e, i, Object.getOwnPropertyDescriptor(r, i)), o[i] = 1); + } + r = Object.getPrototypeOf(r) + } + } + + function i(e) { + e.createdCallback && e.createdCallback() + } + + var a = e.flags; + e.upgrade = t, e.upgradeWithDefinition = n, e.implementPrototype = o +}), window.CustomElements.addModule(function (e) { + function t(t, o) { + var s = o || {}; + if (!t) { + throw new Error("document.registerElement: first argument `name` must not be empty"); + } + if (t.indexOf("-") < 0) { + throw new Error( + "document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + + String(t) + "'."); + } + if (r(t)) { + throw new Error( + "Failed to execute 'registerElement' on 'Document': Registration failed for type '" + + String( + t) + "'. The type name is invalid."); + } + if (u(t)) { + throw new Error( + "DuplicateDefinitionError: a type with name '" + String(t) + "' is already registered"); + } + return s.prototype || (s.prototype = Object.create( + HTMLElement.prototype)), s.__name = t.toLowerCase(), s["extends"] + && (s["extends"] = s["extends"].toLowerCase()), s.lifecycle = s.lifecycle || {}, s.ancestry = i( + s["extends"]), a(s), d(s), n(s.prototype), c(s.__name, s), s.ctor = l( + s), s.ctor.prototype = s.prototype, s.prototype.constructor = s.ctor, e.ready && v( + document), s.ctor + } + + function n(e) { + if (!e.setAttribute._polyfilled) { + var t = e.setAttribute; + e.setAttribute = function (e, n) { + o.call(this, e, n, t) + }; + var n = e.removeAttribute; + e.removeAttribute = function (e) { + o.call(this, e, null, n) + }, e.setAttribute._polyfilled = !0 + } + } + + function o(e, t, n) { + e = e.toLowerCase(); + var o = this.getAttribute(e); + n.apply(this, arguments); + var r = this.getAttribute(e); + this.attributeChangedCallback && r !== o && this.attributeChangedCallback(e, o, r) + } + + function r(e) { + for (var t = 0; t < _.length; t++) { + if (e === _[t]) { + return !0 + } + } + } + + function i(e) { + var t = u(e); + return t ? i(t["extends"]).concat([t]) : [] + } + + function a(e) { + for (var t, n = e["extends"], o = 0; t = e.ancestry[o]; o++) { + n = t.is && t.tag; + } + e.tag = n || e.__name, n && (e.is = e.__name) + } + + function d(e) { + if (!Object.__proto__) { + var t = HTMLElement.prototype; + if (e.is) { + var n = document.createElement(e.tag); + t = Object.getPrototypeOf(n) + } + for (var o, r = e.prototype, i = !1; r;) { + r == t && (i = !0), o = Object.getPrototypeOf(r), o + && (r.__proto__ = o), r = o; + } + i || console.warn( + e.tag + " prototype not found in prototype chain for " + e.is), e["native"] = t + } + } + + function s(e) { + return g(M(e.tag), e) + } + + function u(e) { + return e ? y[e.toLowerCase()] : void 0 + } + + function c(e, t) { + y[e] = t + } + + function l(e) { + return function () { + return s(e) + } + } + + function f(e, t, n) { + return e === N ? p(t, n) : O(e, t) + } + + function p(e, t) { + e && (e = e.toLowerCase()), t && (t = t.toLowerCase()); + var n = u(t || e); + if (n) { + if (e == n.tag && t == n.is) { + return new n.ctor; + } + if (!t && !n.is) { + return new n.ctor + } + } + var o; + return t ? (o = p(e), o.setAttribute("is", t), o) : (o = M(e), e.indexOf("-") >= 0 && b(o, + HTMLElement), o) + } + + function m(e, t) { + var n = e[t]; + e[t] = function () { + var e = n.apply(this, arguments); + return h(e), e + } + } + + var w, v = (e.isIE, e.upgradeDocumentTree), h = e.upgradeAll, g = e.upgradeWithDefinition, + b = e.implementPrototype, E = e.useNative, + _ = ["annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", + "font-face-format", "font-face-name", "missing-glyph"], y = {}, + N = "http://www.w3.org/1999/xhtml", M = document.createElement.bind(document), + O = document.createElementNS.bind(document); + w = Object.__proto__ || E ? function (e, t) { + return e instanceof t + } : function (e, t) { + if (e instanceof t) { + return !0; + } + for (var n = e; n;) { + if (n === t.prototype) { + return !0; + } + n = n.__proto__ + } + return !1 + }, m(Node.prototype, "cloneNode"), m(document, + "importNode"), document.registerElement = t, document.createElement = p, document.createElementNS = f, e.registry = y, e["instanceof"] = w, e.reservedTagList = _, e.getRegisteredDefinition = u, document.register = document.registerElement +}), function (e) { + function t() { + i(window.wrap(document)), window.CustomElements.ready = !0; + var e = window.requestAnimationFrame || function (e) { + setTimeout(e, 16) + }; + e(function () { + setTimeout(function () { + window.CustomElements.readyTime = Date.now(), window.HTMLImports + && (window.CustomElements.elapsed = window.CustomElements.readyTime + - window.HTMLImports.readyTime), document.dispatchEvent( + new CustomEvent("WebComponentsReady", {bubbles: !0})) + }) + }) + } + + var n = e.useNative, o = e.initializeModules; + e.isIE; + if (n) { + var r = function () { + }; + e.watchShadow = r, e.upgrade = r, e.upgradeAll = r, e.upgradeDocumentTree = r, e.upgradeSubtree = r, e.takeRecords = r, e["instanceof"] = function (e, + t) { + return e instanceof t + } + } else { + o(); + } + var i = e.upgradeDocumentTree, a = e.upgradeDocument; + if (window.wrap || (window.ShadowDOMPolyfill + ? (window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded, window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded) + : window.wrap = window.unwrap = function (e) { + return e + }), window.HTMLImports && (window.HTMLImports.__importsParsingHook = function (e) { + e["import"] && a(wrap(e["import"])) + }), "complete" === document.readyState || e.flags.eager) { + t(); + } else if ("interactive" + !== document.readyState || window.attachEvent || window.HTMLImports + && !window.HTMLImports.ready) { + var d = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" + : "DOMContentLoaded"; + window.addEventListener(d, t) + } else { + t() + } +}(window.CustomElements); +if (typeof Math.imul == "undefined" || (Math.imul(0xffffffff, 5) == 0)) { + Math.imul = function (a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + // the shift by 0 fixes the sign on the high part + // the final |0 converts the unsigned value into a signed value + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0); + } +} + +/** + * React v15.5.4 + * + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +!function (t) { + if ("object" == typeof exports && "undefined" + != typeof module) { + module.exports = t(); + } else if ("function" == typeof define + && define.amd) { + define([], t); + } else { + var e; + e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" + != typeof self ? self : this, e.React = t() + } +}(function () { + return function t(e, n, r) { + function o(u, a) { + if (!n[u]) { + if (!e[u]) { + var s = "function" == typeof require && require; + if (!a && s) { + return s(u, !0); + } + if (i) { + return i(u, !0); + } + var c = new Error("Cannot find module '" + u + "'"); + throw c.code = "MODULE_NOT_FOUND", c + } + var l = n[u] = {exports: {}}; + e[u][0].call(l.exports, function (t) { + var n = e[u][1][t]; + return o(n || t) + }, l, l.exports, t, e, n, r) + } + return n[u].exports + } + + for (var i = "function" == typeof require && require, u = 0; u < r.length; u++) { + o(r[u]); + } + return o + }({ + 1: [function (t, e, n) { + "use strict"; + + function r(t) { + var e = {"=": "=0", ":": "=2"}; + return "$" + ("" + t).replace(/[=:]/g, function (t) { + return e[t] + }) + } + + function o(t) { + var e = {"=0": "=", "=2": ":"}; + return ("" + ("." === t[0] && "$" === t[1] ? t.substring(2) : t.substring(1))).replace( + /(=0|=2)/g, function (t) { + return e[t] + }) + } + + var i = {escape: r, unescape: o}; + e.exports = i + }, {}], + 2: [function (t, e, n) { + "use strict"; + var r = t(20), o = (t(24), function (t) { + var e = this; + if (e.instancePool.length) { + var n = e.instancePool.pop(); + return e.call(n, t), n + } + return new e(t) + }), i = function (t, e) { + var n = this; + if (n.instancePool.length) { + var r = n.instancePool.pop(); + return n.call(r, t, e), r + } + return new n(t, e) + }, u = function (t, e, n) { + var r = this; + if (r.instancePool.length) { + var o = r.instancePool.pop(); + return r.call(o, t, e, n), o + } + return new r(t, e, n) + }, a = function (t, e, n, r) { + var o = this; + if (o.instancePool.length) { + var i = o.instancePool.pop(); + return o.call(i, t, e, n, r), i + } + return new o(t, e, n, r) + }, s = function (t) { + var e = this; + t instanceof e || r("25"), t.destructor(), e.instancePool.length < e.poolSize + && e.instancePool.push(t) + }, c = o, l = function (t, e) { + var n = t; + return n.instancePool = [], n.getPooled = e || c, n.poolSize + || (n.poolSize = 10), n.release = s, n + }, f = { + addPoolingTo: l, + oneArgumentPooler: o, + twoArgumentPooler: i, + threeArgumentPooler: u, + fourArgumentPooler: a + }; + e.exports = f + }, {20: 20, 24: 24}], + 3: [function (t, e, n) { + "use strict"; + var r = t(26), o = t(4), i = t(6), u = t(14), a = t(5), s = t(8), c = t(9), l = t(13), + f = t(16), p = t(19), d = (t(25), c.createElement), y = c.createFactory, h = c.cloneElement, + v = r, m = { + Children: { + map: o.map, + forEach: o.forEach, + count: o.count, + toArray: o.toArray, + only: p + }, + Component: i, + PureComponent: u, + createElement: d, + cloneElement: h, + isValidElement: c.isValidElement, + PropTypes: l, + createClass: a.createClass, + createFactory: y, + createMixin: function (t) { + return t + }, + DOM: s, + version: f, + __spread: v + }; + e.exports = m + }, {13: 13, 14: 14, 16: 16, 19: 19, 25: 25, 26: 26, 4: 4, 5: 5, 6: 6, 8: 8, 9: 9}], + 4: [function (t, e, n) { + "use strict"; + + function r(t) { + return ("" + t).replace(E, "$&/") + } + + function o(t, e) { + this.func = t, this.context = e, this.count = 0 + } + + function i(t, e, n) { + var r = t.func, o = t.context; + r.call(o, e, t.count++) + } + + function u(t, e, n) { + if (null == t) { + return t; + } + var r = o.getPooled(e, n); + m(t, i, r), o.release(r) + } + + function a(t, e, n, r) { + this.result = t, this.keyPrefix = e, this.func = n, this.context = r, this.count = 0 + } + + function s(t, e, n) { + var o = t.result, i = t.keyPrefix, u = t.func, a = t.context, s = u.call(a, e, t.count++); + Array.isArray(s) ? c(s, o, n, v.thatReturnsArgument) : null != s && (h.isValidElement(s) + && (s = h.cloneAndReplaceKey(s, + i + (!s.key || e && e.key === s.key ? "" : r(s.key) + "/") + n)), o.push(s)) + } + + function c(t, e, n, o, i) { + var u = ""; + null != n && (u = r(n) + "/"); + var c = a.getPooled(e, u, o, i); + m(t, s, c), a.release(c) + } + + function l(t, e, n) { + if (null == t) { + return t; + } + var r = []; + return c(t, r, null, e, n), r + } + + function f(t, e, n) { + return null + } + + function p(t, e) { + return m(t, f, null) + } + + function d(t) { + var e = []; + return c(t, e, null, v.thatReturnsArgument), e + } + + var y = t(2), h = t(9), v = t(22), m = t(21), b = y.twoArgumentPooler, + g = y.fourArgumentPooler, E = /\/+/g; + o.prototype.destructor = function () { + this.func = null, this.context = null, this.count = 0 + }, y.addPoolingTo(o, b), a.prototype.destructor = function () { + this.result = null, this.keyPrefix = null, this.func = null, this.context = null, this.count = 0 + }, y.addPoolingTo(a, g); + var x = {forEach: u, map: l, mapIntoWithKeyPrefixInternal: c, count: p, toArray: d}; + e.exports = x + }, {2: 2, 21: 21, 22: 22, 9: 9}], + 5: [function (t, e, n) { + "use strict"; + + function r(t) { + return t + } + + function o(t, e) { + var n = E.hasOwnProperty(e) ? E[e] : null; + _.hasOwnProperty(e) && "OVERRIDE_BASE" !== n && p("73", e), t && "DEFINE_MANY" !== n + && "DEFINE_MANY_MERGED" !== n && p("74", e) + } + + function i(t, e) { + if (e) { + "function" == typeof e && p("75"), h.isValidElement(e) && p("76"); + var n = t.prototype, r = n.__reactAutoBindPairs; + e.hasOwnProperty(b) && x.mixins(t, e.mixins); + for (var i in e) { + if (e.hasOwnProperty(i) && i !== b) { + var u = e[i], a = n.hasOwnProperty(i); + if (o(a, i), x.hasOwnProperty(i)) { + x[i](t, u); + } else { + var l = E.hasOwnProperty(i), f = "function" == typeof u, + d = f && !l && !a && !1 !== e.autobind; + if (d) { + r.push(i, u), n[i] = u; + } else if (a) { + var y = E[i]; + (!l || "DEFINE_MANY_MERGED" !== y && "DEFINE_MANY" !== y) && p("77", y, + i), "DEFINE_MANY_MERGED" === y ? n[i] = s(n[i], u) : "DEFINE_MANY" === y + && (n[i] = c(n[i], u)) + } else { + n[i] = u + } + } + } + } + } + } + + function u(t, e) { + if (e) { + for (var n in e) { + var r = e[n]; + if (e.hasOwnProperty(n)) { + var o = n in x; + o && p("78", n); + var i = n in t; + i && p("79", n), t[n] = r + } + } + } + } + + function a(t, e) { + t && e && "object" == typeof t && "object" == typeof e || p("80"); + for (var n in e) { + e.hasOwnProperty(n) && (void 0 !== t[n] && p("81", n), t[n] = e[n]); + } + return t + } + + function s(t, e) { + return function () { + var n = t.apply(this, arguments), r = e.apply(this, arguments); + if (null == n) { + return r; + } + if (null == r) { + return n; + } + var o = {}; + return a(o, n), a(o, r), o + } + } + + function c(t, e) { + return function () { + t.apply(this, arguments), e.apply(this, arguments) + } + } + + function l(t, e) { + return e.bind(t) + } + + function f(t) { + for (var e = t.__reactAutoBindPairs, n = 0; n < e.length; n += 2) { + var r = e[n], o = e[n + 1]; + t[r] = l(t, o) + } + } + + var p = t(20), d = t(26), y = t(6), h = t(9), v = (t(12), t(11)), m = t(23), + b = (t(24), t(25), "mixins"), g = [], E = { + mixins: "DEFINE_MANY", + statics: "DEFINE_MANY", + propTypes: "DEFINE_MANY", + contextTypes: "DEFINE_MANY", + childContextTypes: "DEFINE_MANY", + getDefaultProps: "DEFINE_MANY_MERGED", + getInitialState: "DEFINE_MANY_MERGED", + getChildContext: "DEFINE_MANY_MERGED", + render: "DEFINE_ONCE", + componentWillMount: "DEFINE_MANY", + componentDidMount: "DEFINE_MANY", + componentWillReceiveProps: "DEFINE_MANY", + shouldComponentUpdate: "DEFINE_ONCE", + componentWillUpdate: "DEFINE_MANY", + componentDidUpdate: "DEFINE_MANY", + componentWillUnmount: "DEFINE_MANY", + updateComponent: "OVERRIDE_BASE" + }, x = { + displayName: function (t, e) { + t.displayName = e + }, mixins: function (t, e) { + if (e) { + for (var n = 0; n < e.length; n++) { + i(t, e[n]) + } + } + }, childContextTypes: function (t, e) { + t.childContextTypes = d({}, t.childContextTypes, e) + }, contextTypes: function (t, e) { + t.contextTypes = d({}, t.contextTypes, e) + }, getDefaultProps: function (t, e) { + t.getDefaultProps ? t.getDefaultProps = s(t.getDefaultProps, e) : t.getDefaultProps = e + }, propTypes: function (t, e) { + t.propTypes = d({}, t.propTypes, e) + }, statics: function (t, e) { + u(t, e) + }, autobind: function () { + } + }, _ = { + replaceState: function (t, e) { + this.updater.enqueueReplaceState(this, t), e && this.updater.enqueueCallback(this, e, + "replaceState") + }, isMounted: function () { + return this.updater.isMounted(this) + } + }, P = function () { + }; + d(P.prototype, y.prototype, _); + var w = { + createClass: function (t) { + var e = r(function (t, n, r) { + this.__reactAutoBindPairs.length && f( + this), this.props = t, this.context = n, this.refs = m, this.updater = r + || v, this.state = null; + var o = this.getInitialState ? this.getInitialState() : null; + ("object" != typeof o || Array.isArray(o)) && p("82", + e.displayName || "ReactCompositeComponent"), this.state = o + }); + e.prototype = new P, e.prototype.constructor = e, e.prototype.__reactAutoBindPairs = [], g.forEach( + i.bind(null, e)), i(e, t), e.getDefaultProps + && (e.defaultProps = e.getDefaultProps()), e.prototype.render || p("83"); + for (var n in E) { + e.prototype[n] || (e.prototype[n] = null); + } + return e + }, injection: { + injectMixin: function (t) { + g.push(t) + } + } + }; + e.exports = w + }, {11: 11, 12: 12, 20: 20, 23: 23, 24: 24, 25: 25, 26: 26, 6: 6, 9: 9}], + 6: [function (t, e, n) { + "use strict"; + + function r(t, e, n) { + this.props = t, this.context = e, this.refs = u, this.updater = n || i + } + + var o = t(20), i = t(11), u = (t(17), t(23)); + t(24), t(25); + r.prototype.isReactComponent = {}, r.prototype.setState = function (t, e) { + "object" != typeof t && "function" != typeof t && null != t && o( + "85"), this.updater.enqueueSetState(this, t), e && this.updater.enqueueCallback(this, e, + "setState") + }, r.prototype.forceUpdate = function (t) { + this.updater.enqueueForceUpdate(this), t && this.updater.enqueueCallback(this, t, + "forceUpdate") + }; + e.exports = r + }, {11: 11, 17: 17, 20: 20, 23: 23, 24: 24, 25: 25}], + 7: [function (t, e, n) { + "use strict"; + var r = {current: null}; + e.exports = r + }, {}], + 8: [function (t, e, n) { + "use strict"; + var r = t(9), o = r.createFactory, i = { + a: o("a"), + abbr: o("abbr"), + address: o("address"), + area: o("area"), + article: o("article"), + aside: o("aside"), + audio: o("audio"), + b: o("b"), + base: o("base"), + bdi: o("bdi"), + bdo: o("bdo"), + big: o("big"), + blockquote: o("blockquote"), + body: o("body"), + br: o("br"), + button: o("button"), + canvas: o("canvas"), + caption: o("caption"), + cite: o("cite"), + code: o("code"), + col: o("col"), + colgroup: o("colgroup"), + data: o("data"), + datalist: o("datalist"), + dd: o("dd"), + del: o("del"), + details: o("details"), + dfn: o("dfn"), + dialog: o("dialog"), + div: o("div"), + dl: o("dl"), + dt: o("dt"), + em: o("em"), + embed: o("embed"), + fieldset: o("fieldset"), + figcaption: o("figcaption"), + figure: o("figure"), + footer: o("footer"), + form: o("form"), + h1: o("h1"), + h2: o("h2"), + h3: o("h3"), + h4: o("h4"), + h5: o("h5"), + h6: o("h6"), + head: o("head"), + header: o("header"), + hgroup: o("hgroup"), + hr: o("hr"), + html: o("html"), + i: o("i"), + iframe: o("iframe"), + img: o("img"), + input: o("input"), + ins: o("ins"), + kbd: o("kbd"), + keygen: o("keygen"), + label: o("label"), + legend: o("legend"), + li: o("li"), + link: o("link"), + main: o("main"), + map: o("map"), + mark: o("mark"), + menu: o("menu"), + menuitem: o("menuitem"), + meta: o("meta"), + meter: o("meter"), + nav: o("nav"), + noscript: o("noscript"), + object: o("object"), + ol: o("ol"), + optgroup: o("optgroup"), + option: o("option"), + output: o("output"), + p: o("p"), + param: o("param"), + picture: o("picture"), + pre: o("pre"), + progress: o("progress"), + q: o("q"), + rp: o("rp"), + rt: o("rt"), + ruby: o("ruby"), + s: o("s"), + samp: o("samp"), + script: o("script"), + section: o("section"), + select: o("select"), + small: o("small"), + source: o("source"), + span: o("span"), + strong: o("strong"), + style: o("style"), + sub: o("sub"), + summary: o("summary"), + sup: o("sup"), + table: o("table"), + tbody: o("tbody"), + td: o("td"), + textarea: o("textarea"), + tfoot: o("tfoot"), + th: o("th"), + thead: o("thead"), + time: o("time"), + title: o("title"), + tr: o("tr"), + track: o("track"), + u: o("u"), + ul: o("ul"), + var: o("var"), + video: o("video"), + wbr: o("wbr"), + circle: o("circle"), + clipPath: o("clipPath"), + defs: o("defs"), + ellipse: o("ellipse"), + g: o("g"), + image: o("image"), + line: o("line"), + linearGradient: o("linearGradient"), + mask: o("mask"), + path: o("path"), + pattern: o("pattern"), + polygon: o("polygon"), + polyline: o("polyline"), + radialGradient: o("radialGradient"), + rect: o("rect"), + stop: o("stop"), + svg: o("svg"), + text: o("text"), + tspan: o("tspan") + }; + e.exports = i + }, {9: 9}], + 9: [function (t, e, n) { + "use strict"; + + function r(t) { + return void 0 !== t.ref + } + + function o(t) { + return void 0 !== t.key + } + + var i = t(26), u = t(7), a = (t(25), t(17), Object.prototype.hasOwnProperty), s = t(10), + c = {key: !0, ref: !0, __self: !0, __source: !0}, l = function (t, e, n, r, o, i, u) { + return {$$typeof: s, type: t, key: e, ref: n, props: u, _owner: i} + }; + l.createElement = function (t, e, n) { + var i, s = {}, f = null, p = null; + if (null != e) { + r(e) && (p = e.ref), o(e) && (f = "" + e.key), void 0 === e.__self ? null + : e.__self, void 0 === e.__source ? null : e.__source; + for (i in e) { + a.call(e, i) && !c.hasOwnProperty(i) && (s[i] = e[i]) + } + } + var d = arguments.length - 2; + if (1 === d) { + s.children = n; + } else if (d > 1) { + for (var y = Array(d), h = 0; h < d; h++) { + y[h] = arguments[h + 2]; + } + s.children = y + } + if (t && t.defaultProps) { + var v = t.defaultProps; + for (i in v) { + void 0 === s[i] && (s[i] = v[i]) + } + } + return l(t, f, p, 0, 0, u.current, s) + }, l.createFactory = function (t) { + var e = l.createElement.bind(null, t); + return e.type = t, e + }, l.cloneAndReplaceKey = function (t, e) { + return l(t.type, e, t.ref, t._self, t._source, t._owner, t.props) + }, l.cloneElement = function (t, e, n) { + var s, f = i({}, t.props), p = t.key, d = t.ref, y = (t._self, t._source, t._owner); + if (null != e) { + r(e) && (d = e.ref, y = u.current), o(e) && (p = "" + e.key); + var h; + t.type && t.type.defaultProps && (h = t.type.defaultProps); + for (s in e) { + a.call(e, s) && !c.hasOwnProperty(s) && (void 0 === e[s] && void 0 !== h + ? f[s] = h[s] : f[s] = e[s]) + } + } + var v = arguments.length - 2; + if (1 === v) { + f.children = n; + } else if (v > 1) { + for (var m = Array(v), b = 0; b < v; b++) { + m[b] = arguments[b + 2]; + } + f.children = m + } + return l(t.type, p, d, 0, 0, y, f) + }, l.isValidElement = function (t) { + return "object" == typeof t && null !== t && t.$$typeof === s + }, e.exports = l + }, {10: 10, 17: 17, 25: 25, 26: 26, 7: 7}], + 10: [function (t, e, n) { + "use strict"; + var r = "function" == typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; + e.exports = r + }, {}], + 11: [function (t, e, n) { + "use strict"; + var r = (t(25), { + isMounted: function (t) { + return !1 + }, enqueueCallback: function (t, e) { + }, enqueueForceUpdate: function (t) { + }, enqueueReplaceState: function (t, e) { + }, enqueueSetState: function (t, e) { + } + }); + e.exports = r + }, {25: 25}], + 12: [function (t, e, n) { + "use strict"; + var r = {}; + e.exports = r + }, {}], + 13: [function (t, e, n) { + "use strict"; + var r = t(9), o = r.isValidElement, i = t(28); + e.exports = i(o) + }, {28: 28, 9: 9}], + 14: [function (t, e, n) { + "use strict"; + + function r(t, e, n) { + this.props = t, this.context = e, this.refs = s, this.updater = n || a + } + + function o() { + } + + var i = t(26), u = t(6), a = t(11), s = t(23); + o.prototype = u.prototype, r.prototype = new o, r.prototype.constructor = r, i(r.prototype, + u.prototype), r.prototype.isPureReactComponent = !0, e.exports = r + }, {11: 11, 23: 23, 26: 26, 6: 6}], + 15: [function (t, e, n) { + "use strict"; + var r = t(26), o = t(3), + i = r(o, {__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {ReactCurrentOwner: t(7)}}); + e.exports = i + }, {26: 26, 3: 3, 7: 7}], + 16: [function (t, e, n) { + "use strict"; + e.exports = "15.5.4" + }, {}], + 17: [function (t, e, n) { + "use strict"; + e.exports = !1 + }, {}], + 18: [function (t, e, n) { + "use strict"; + + function r(t) { + var e = t && (o && t[o] || t[i]); + if ("function" == typeof e) { + return e + } + } + + var o = "function" == typeof Symbol && Symbol.iterator, i = "@@iterator"; + e.exports = r + }, {}], + 19: [function (t, e, n) { + "use strict"; + + function r(t) { + return i.isValidElement(t) || o("143"), t + } + + var o = t(20), i = t(9); + t(24); + e.exports = r + }, {20: 20, 24: 24, 9: 9}], + 20: [function (t, e, n) { + "use strict"; + + function r(t) { + for (var e = arguments.length - 1, n = "Minified React error #" + t + + "; visit http://facebook.github.io/react/docs/error-decoder.html?invariant=" + t, r = 0; + r < e; r++) { + n += "&args[]=" + encodeURIComponent(arguments[r + 1]); + } + n += " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; + var o = new Error(n); + throw o.name = "Invariant Violation", o.framesToPop = 1, o + } + + e.exports = r + }, {}], + 21: [function (t, e, n) { + "use strict"; + + function r(t, e) { + return t && "object" == typeof t && null != t.key ? c.escape(t.key) : e.toString(36) + } + + function o(t, e, n, i) { + var p = typeof t; + if ("undefined" !== p && "boolean" !== p || (t = null), null === t || "string" === p + || "number" === p || "object" === p && t.$$typeof === a) { + return n(i, t, + "" === e ? l + r(t, 0) : e), 1; + } + var d, y, h = 0, v = "" === e ? l : e + f; + if (Array.isArray(t)) { + for (var m = 0; m < t.length; m++) { + d = t[m], y = v + r(d, m), h += o( + d, y, n, i); + } + } else { + var b = s(t); + if (b) { + var g, E = b.call(t); + if (b !== t.entries) { + for (var x = 0; !(g = E.next()).done;) { + d = g.value, y = v + r(d, + x++), h += o(d, y, n, i); + } + } else { + for (; !(g = E.next()).done;) { + var _ = g.value; + _ && (d = _[1], y = v + c.escape(_[0]) + f + r(d, 0), h += o(d, y, n, i)) + } + } + } else if ("object" === p) { + var P = String(t); + u("31", + "[object Object]" === P ? "object with keys {" + Object.keys(t).join(", ") + "}" : P, + "") + } + } + return h + } + + function i(t, e, n) { + return null == t ? 0 : o(t, "", e, n) + } + + var u = t(20), a = (t(7), t(10)), s = t(18), c = (t(24), t(1)), l = (t(25), "."), f = ":"; + e.exports = i + }, {1: 1, 10: 10, 18: 18, 20: 20, 24: 24, 25: 25, 7: 7}], + 22: [function (t, e, n) { + "use strict"; + + function r(t) { + return function () { + return t + } + } + + var o = function () { + }; + o.thatReturns = r, o.thatReturnsFalse = r(!1), o.thatReturnsTrue = r( + !0), o.thatReturnsNull = r(null), o.thatReturnsThis = function () { + return this + }, o.thatReturnsArgument = function (t) { + return t + }, e.exports = o + }, {}], + 23: [function (t, e, n) { + "use strict"; + var r = {}; + e.exports = r + }, {}], + 24: [function (t, e, n) { + "use strict"; + + function r(t, e, n, r, i, u, a, s) { + if (o(e), !t) { + var c; + if (void 0 === e) { + c = new Error( + "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); + } else { + var l = [n, r, i, u, a, s], f = 0; + c = new Error(e.replace(/%s/g, function () { + return l[f++] + })), c.name = "Invariant Violation" + } + throw c.framesToPop = 1, c + } + } + + var o = function (t) { + }; + e.exports = r + }, {}], + 25: [function (t, e, n) { + "use strict"; + var r = t(22), o = r; + e.exports = o + }, {22: 22}], + 26: [function (t, e, n) { + "use strict"; + + function r(t) { + if (null === t || void 0 === t) { + throw new TypeError( + "Object.assign cannot be called with null or undefined"); + } + return Object(t) + } + + var o = Object.getOwnPropertySymbols, i = Object.prototype.hasOwnProperty, + u = Object.prototype.propertyIsEnumerable; + e.exports = function () { + try { + if (!Object.assign) { + return !1; + } + var t = new String("abc"); + if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) { + return !1; + } + for (var e = {}, n = 0; n < 10; n++) { + e["_" + String.fromCharCode(n)] = n; + } + if ("0123456789" !== Object.getOwnPropertyNames(e).map(function (t) { + return e[t] + }).join("")) { + return !1; + } + var r = {}; + return "abcdefghijklmnopqrst".split("").forEach(function (t) { + r[t] = t + }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("") + } catch (t) { + return !1 + } + }() ? Object.assign : function (t, e) { + for (var n, a, s = r(t), c = 1; c < arguments.length; c++) { + n = Object(arguments[c]); + for (var l in n) { + i.call(n, l) && (s[l] = n[l]); + } + if (o) { + a = o(n); + for (var f = 0; f < a.length; f++) { + u.call(n, a[f]) && (s[a[f]] = n[a[f]]) + } + } + } + return s + } + }, {}], + 27: [function (t, e, n) { + "use strict"; + + function r(t, e, n, r, o) { + } + + e.exports = r + }, {24: 24, 25: 25, 30: 30}], + 28: [function (t, e, n) { + "use strict"; + var r = t(29); + e.exports = function (t) { + return r(t, !1) + } + }, {29: 29}], + 29: [function (t, e, n) { + "use strict"; + var r = t(22), o = t(24), i = (t(25), t(30)), u = t(27); + e.exports = function (t, e) { + function n(t) { + var e = t && (_ && t[_] || t[P]); + if ("function" == typeof e) { + return e + } + } + + function a(t, e) { + return t === e ? 0 !== t || 1 / t == 1 / e : t !== t && e !== e + } + + function s(t) { + this.message = t, this.stack = "" + } + + function c(t) { + function n(n, r, u, a, c, l, f) { + if (a = a || w, l = l || u, f !== i) { + if (e) { + o(!1, + "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types"); + } else { + ; + } + } + return null == r[u] ? n ? new s( + null === r[u] ? "The " + c + " `" + l + "` is marked as required in `" + a + + "`, but its value is `null`." : "The " + c + " `" + l + + "` is marked as required in `" + a + "`, but its value is `undefined`.") : null + : t(r, u, a, c, l) + } + + var r = n.bind(null, !1); + return r.isRequired = n.bind(null, !0), r + } + + function l(t) { + function e(e, n, r, o, i, u) { + var a = e[n]; + if (g(a) !== t) { + return new s( + "Invalid " + o + " `" + i + "` of type `" + E(a) + "` supplied to `" + r + + "`, expected `" + t + "`."); + } + return null + } + + return c(e) + } + + function f(t) { + function e(e, n, r, o, u) { + if ("function" != typeof t) { + return new s("Property `" + u + "` of component `" + r + + "` has invalid PropType notation inside arrayOf."); + } + var a = e[n]; + if (!Array.isArray(a)) { + return new s("Invalid " + o + " `" + u + "` of type `" + g(a) + "` supplied to `" + r + + "`, expected an array.") + } + for (var c = 0; c < a.length; c++) { + var l = t(a, c, r, o, u + "[" + c + "]", i); + if (l instanceof Error) { + return l + } + } + return null + } + + return c(e) + } + + function p(t) { + function e(e, n, r, o, i) { + if (!(e[n] instanceof t)) { + var u = t.name || w; + return new s( + "Invalid " + o + " `" + i + "` of type `" + x(e[n]) + "` supplied to `" + r + + "`, expected instance of `" + u + "`.") + } + return null + } + + return c(e) + } + + function d(t) { + function e(e, n, r, o, i) { + for (var u = e[n], c = 0; c < t.length; c++) { + if (a(u, t[c])) { + return null; + } + } + return new s("Invalid " + o + " `" + i + "` of value `" + u + "` supplied to `" + r + + "`, expected one of " + JSON.stringify(t) + ".") + } + + return Array.isArray(t) ? c(e) : r.thatReturnsNull + } + + function y(t) { + function e(e, n, r, o, u) { + if ("function" != typeof t) { + return new s("Property `" + u + "` of component `" + r + + "` has invalid PropType notation inside objectOf."); + } + var a = e[n], c = g(a); + if ("object" !== c) { + return new s( + "Invalid " + o + " `" + u + "` of type `" + c + "` supplied to `" + r + + "`, expected an object."); + } + for (var l in a) { + if (a.hasOwnProperty(l)) { + var f = t(a, l, r, o, u + "." + l, i); + if (f instanceof Error) { + return f + } + } + } + return null + } + + return c(e) + } + + function h(t) { + function e(e, n, r, o, u) { + for (var a = 0; a < t.length; a++) { + if (null == (0, t[a])(e, n, r, o, u, i)) { + return null + } + } + return new s("Invalid " + o + " `" + u + "` supplied to `" + r + "`.") + } + + return Array.isArray(t) ? c(e) : r.thatReturnsNull + } + + function v(t) { + function e(e, n, r, o, u) { + var a = e[n], c = g(a); + if ("object" !== c) { + return new s( + "Invalid " + o + " `" + u + "` of type `" + c + "` supplied to `" + r + + "`, expected `object`."); + } + for (var l in t) { + var f = t[l]; + if (f) { + var p = f(a, l, r, o, u + "." + l, i); + if (p) { + return p + } + } + } + return null + } + + return c(e) + } + + function m(e) { + switch (typeof e) { + case"number": + case"string": + case"undefined": + return !0; + case"boolean": + return !e; + case"object": + if (Array.isArray(e)) { + return e.every(m); + } + if (null === e || t(e)) { + return !0; + } + var r = n(e); + if (!r) { + return !1; + } + var o, i = r.call(e); + if (r !== e.entries) { + for (; !(o = i.next()).done;) { + if (!m(o.value)) { + return !1 + } + } + } else { + for (; !(o = i.next()).done;) { + var u = o.value; + if (u && !m(u[1])) { + return !1 + } + } + } + return !0; + default: + return !1 + } + } + + function b(t, e) { + return "symbol" === t || ("Symbol" === e["@@toStringTag"] || "function" == typeof Symbol + && e instanceof Symbol) + } + + function g(t) { + var e = typeof t; + return Array.isArray(t) ? "array" : t instanceof RegExp ? "object" : b(e, t) ? "symbol" + : e + } + + function E(t) { + var e = g(t); + if ("object" === e) { + if (t instanceof Date) { + return "date"; + } + if (t instanceof RegExp) { + return "regexp" + } + } + return e + } + + function x(t) { + return t.constructor && t.constructor.name ? t.constructor.name : w + } + + var _ = "function" == typeof Symbol && Symbol.iterator, P = "@@iterator", + w = "<>", N = { + array: l("array"), + bool: l("boolean"), + func: l("function"), + number: l("number"), + object: l("object"), + string: l("string"), + symbol: l("symbol"), + any: function () { + return c(r.thatReturnsNull) + }(), + arrayOf: f, + element: function () { + function e(e, n, r, o, i) { + var u = e[n]; + if (!t(u)) { + return new s( + "Invalid " + o + " `" + i + "` of type `" + g(u) + "` supplied to `" + r + + "`, expected a single ReactElement.") + } + return null + } + + return c(e) + }(), + instanceOf: p, + node: function () { + function t(t, e, n, r, o) { + return m(t[e]) ? null : new s( + "Invalid " + r + " `" + o + "` supplied to `" + n + "`, expected a ReactNode.") + } + + return c(t) + }(), + objectOf: y, + oneOf: d, + oneOfType: h, + shape: v + }; + return s.prototype = Error.prototype, N.checkPropTypes = u, N.PropTypes = N, N + } + }, {22: 22, 24: 24, 25: 25, 27: 27, 30: 30}], + 30: [function (t, e, n) { + "use strict"; + e.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED" + }, {}] + }, {}, [15])(15) +}); +!function (f) { + if ("object" == typeof exports && "undefined" + != typeof module) { + module.exports = f(); + } else if ("function" == typeof define + && define.amd) { + define([], f); + } else { + var g; + if (g = "undefined" != typeof window ? window : "undefined" != typeof global ? global + : "undefined" != typeof self ? self : this, void 0 === g.React) { + throw Error( + "React module should be required before createClass"); + } + g.createReactClass = f() + } +}(function () { + return function e(t, n, r) { + function s(o, u) { + if (!n[o]) { + if (!t[o]) { + var a = "function" == typeof require && require; + if (!u && a) { + return a(o, !0); + } + if (i) { + return i(o, !0); + } + var f = new Error("Cannot find module '" + o + "'"); + throw f.code = "MODULE_NOT_FOUND", f + } + var l = n[o] = {exports: {}}; + t[o][0].call(l.exports, function (e) { + var n = t[o][1][e]; + return s(n || e) + }, l, l.exports, e, t, n, r) + } + return n[o].exports + } + + for (var i = "function" == typeof require && require, o = 0; o < r.length; o++) { + s(r[o]); + } + return s + }({ + 1: [function (require, module, exports) { + "use strict"; + + function identity(fn) { + return fn + } + + function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) { + function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] + : null; + ReactClassMixin.hasOwnProperty(name) && _invariant("OVERRIDE_BASE" === specPolicy, + "ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.", + name), isAlreadyDefined && _invariant( + "DEFINE_MANY" === specPolicy || "DEFINE_MANY_MERGED" === specPolicy, + "ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.", + name) + } + + function mixSpecIntoComponent(Constructor, spec) { + if (spec) { + _invariant("function" != typeof spec, + "ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."), _invariant( + !isValidElement(spec), + "ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object."); + var proto = Constructor.prototype, autoBindPairs = proto.__reactAutoBindPairs; + spec.hasOwnProperty(MIXINS_KEY) && RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + for (var name in spec) { + if (spec.hasOwnProperty(name) && name !== MIXINS_KEY) { + var property = spec[name], isAlreadyDefined = proto.hasOwnProperty(name); + if (validateMethodOverride(isAlreadyDefined, + name), RESERVED_SPEC_KEYS.hasOwnProperty( + name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name), + isFunction = "function" == typeof property, + shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && !1 + !== spec.autobind; + if (shouldAutoBind) { + autoBindPairs.push(name, + property), proto[name] = property; + } else if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + _invariant( + isReactClassMethod && ("DEFINE_MANY_MERGED" === specPolicy || "DEFINE_MANY" + === specPolicy), + "ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.", + specPolicy, name), "DEFINE_MANY_MERGED" === specPolicy + ? proto[name] = createMergedResultFunction(proto[name], property) + : "DEFINE_MANY" === specPolicy && (proto[name] = createChainedFunction( + proto[name], property)) + } else { + proto[name] = property + } + } + } + } + } else { + ; + } + } + + function mixStaticSpecIntoComponent(Constructor, statics) { + if (statics) { + for (var name in statics) { + var property = statics[name]; + if (statics.hasOwnProperty(name)) { + var isReserved = name in RESERVED_SPEC_KEYS; + _invariant(!isReserved, + 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', + name); + var isInherited = name in Constructor; + _invariant(!isInherited, + "ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.", + name), Constructor[name] = property + } + } + } + } + + function mergeIntoWithNoDuplicateKeys(one, two) { + _invariant(one && two && "object" == typeof one && "object" == typeof two, + "mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."); + for (var key in two) { + two.hasOwnProperty(key) && (_invariant(void 0 === one[key], + "mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.", + key), one[key] = two[key]); + } + return one + } + + function createMergedResultFunction(one, two) { + return function () { + var a = one.apply(this, arguments), b = two.apply(this, arguments); + if (null == a) { + return b; + } + if (null == b) { + return a; + } + var c = {}; + return mergeIntoWithNoDuplicateKeys(c, a), mergeIntoWithNoDuplicateKeys(c, b), c + } + } + + function createChainedFunction(one, two) { + return function () { + one.apply(this, arguments), two.apply(this, arguments) + } + } + + function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + return boundMethod + } + + function bindAutoBindMethods(component) { + for (var pairs = component.__reactAutoBindPairs, i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i], method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method) + } + } + + function createClass(spec) { + var Constructor = identity(function (props, context, updater) { + this.__reactAutoBindPairs.length && bindAutoBindMethods( + this), this.props = props, this.context = context, this.refs = emptyObject, this.updater = updater + || ReactNoopUpdateQueue, this.state = null; + var initialState = this.getInitialState ? this.getInitialState() : null; + _invariant("object" == typeof initialState && !Array.isArray(initialState), + "%s.getInitialState(): must return an object or null", + Constructor.displayName || "ReactCompositeComponent"), this.state = initialState + }); + Constructor.prototype = new ReactClassComponent, Constructor.prototype.constructor = Constructor, Constructor.prototype.__reactAutoBindPairs = [], injectedMixins.forEach( + mixSpecIntoComponent.bind(null, Constructor)), mixSpecIntoComponent(Constructor, + IsMountedMixin), mixSpecIntoComponent(Constructor, spec), Constructor.getDefaultProps + && (Constructor.defaultProps = Constructor.getDefaultProps()), _invariant( + Constructor.prototype.render, + "createClass(...): Class specification must implement a `render` method."); + for (var methodName in ReactClassInterface) { + Constructor.prototype[methodName] + || (Constructor.prototype[methodName] = null); + } + return Constructor + } + + var injectedMixins = [], ReactClassInterface = { + mixins: "DEFINE_MANY", + statics: "DEFINE_MANY", + propTypes: "DEFINE_MANY", + contextTypes: "DEFINE_MANY", + childContextTypes: "DEFINE_MANY", + getDefaultProps: "DEFINE_MANY_MERGED", + getInitialState: "DEFINE_MANY_MERGED", + getChildContext: "DEFINE_MANY_MERGED", + render: "DEFINE_ONCE", + componentWillMount: "DEFINE_MANY", + componentDidMount: "DEFINE_MANY", + componentWillReceiveProps: "DEFINE_MANY", + shouldComponentUpdate: "DEFINE_ONCE", + componentWillUpdate: "DEFINE_MANY", + componentDidUpdate: "DEFINE_MANY", + componentWillUnmount: "DEFINE_MANY", + updateComponent: "OVERRIDE_BASE" + }, RESERVED_SPEC_KEYS = { + displayName: function (Constructor, displayName) { + Constructor.displayName = displayName + }, mixins: function (Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, + mixins[i]) + } + } + }, childContextTypes: function (Constructor, childContextTypes) { + Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, + childContextTypes) + }, contextTypes: function (Constructor, contextTypes) { + Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes) + }, getDefaultProps: function (Constructor, getDefaultProps) { + Constructor.getDefaultProps ? Constructor.getDefaultProps = createMergedResultFunction( + Constructor.getDefaultProps, getDefaultProps) + : Constructor.getDefaultProps = getDefaultProps + }, propTypes: function (Constructor, propTypes) { + Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes) + }, statics: function (Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics) + }, autobind: function () { + } + }, IsMountedMixin = { + componentDidMount: function () { + this.__isMounted = !0 + }, componentWillUnmount: function () { + this.__isMounted = !1 + } + }, ReactClassMixin = { + replaceState: function (newState, callback) { + this.updater.enqueueReplaceState(this, newState, callback) + }, isMounted: function () { + return !!this.__isMounted + } + }, ReactClassComponent = function () { + }; + return _assign(ReactClassComponent.prototype, ReactComponent.prototype, + ReactClassMixin), createClass + } + + var _assign = require(7), emptyObject = require(4), _invariant = require(5), + MIXINS_KEY = "mixins"; + module.exports = factory + }, {4: 4, 5: 5, 6: 6, 7: 7}], 2: [function (require, module, exports) { + "use strict"; + var factory = require(1), ReactNoopUpdateQueue = (new React.Component).updater; + module.exports = factory(React.Component, React.isValidElement, ReactNoopUpdateQueue) + }, {1: 1}], 3: [function (require, module, exports) { + "use strict"; + + function makeEmptyFunction(arg) { + return function () { + return arg + } + } + + var emptyFunction = function () { + }; + emptyFunction.thatReturns = makeEmptyFunction, emptyFunction.thatReturnsFalse = makeEmptyFunction( + !1), emptyFunction.thatReturnsTrue = makeEmptyFunction( + !0), emptyFunction.thatReturnsNull = makeEmptyFunction( + null), emptyFunction.thatReturnsThis = function () { + return this + }, emptyFunction.thatReturnsArgument = function (arg) { + return arg + }, module.exports = emptyFunction + }, {}], 4: [function (require, module, exports) { + "use strict"; + var emptyObject = {}; + module.exports = emptyObject + }, {}], 5: [function (require, module, exports) { + "use strict"; + + function invariant(condition, format, a, b, c, d, e, f) { + if (validateFormat(format), !condition) { + var error; + if (void 0 === format) { + error = new Error( + "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); + } else { + var args = [a, b, c, d, e, f], argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++] + })), error.name = "Invariant Violation" + } + throw error.framesToPop = 1, error + } + } + + var validateFormat = function (format) { + }; + module.exports = invariant + }, {}], 6: [function (require, module, exports) { + "use strict"; + var emptyFunction = require(3), warning = emptyFunction; + module.exports = warning + }, {3: 3}], 7: [function (require, module, exports) { + "use strict"; + + function toObject(val) { + if (null === val || void 0 === val) { + throw new TypeError( + "Object.assign cannot be called with null or undefined"); + } + return Object(val) + } + + var getOwnPropertySymbols = Object.getOwnPropertySymbols, + hasOwnProperty = Object.prototype.hasOwnProperty, + propIsEnumerable = Object.prototype.propertyIsEnumerable; + module.exports = function () { + try { + if (!Object.assign) { + return !1; + } + var test1 = new String("abc"); + if (test1[5] = "de", "5" === Object.getOwnPropertyNames(test1)[0]) { + return !1; + } + for (var test2 = {}, i = 0; i < 10; i++) { + test2["_" + String.fromCharCode(i)] = i; + } + if ("0123456789" !== Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n] + }).join("")) { + return !1; + } + var test3 = {}; + return "abcdefghijklmnopqrst".split("").forEach(function (letter) { + test3[letter] = letter + }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, test3)).join("") + } catch (err) { + return !1 + } + }() ? Object.assign : function (target, source) { + for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + for (var key in from) { + hasOwnProperty.call(from, key) && (to[key] = from[key]); + } + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + propIsEnumerable.call(from, symbols[i]) + && (to[symbols[i]] = from[symbols[i]]) + } + } + } + return to + } + }, {}] + }, {}, [2])(2) +}); + +/** + * ReactDOM v15.5.4 + * + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + */ +!function (e) { + if ("object" == typeof exports && "undefined" != typeof module) { + module.exports = e( + require("react")); + } else if ("function" == typeof define && define.amd) { + define(["react"], + e); + } else { + var t; + t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" + != typeof self ? self : this, t.ReactDOM = e(t.React) + } +}(function (e) { + return function (t) { + return function () { + return function e(t, n, r) { + function o(a, s) { + if (!n[a]) { + if (!t[a]) { + var u = "function" == typeof require && require; + if (!s && u) { + return u(a, !0); + } + if (i) { + return i(a, !0); + } + var l = new Error("Cannot find module '" + a + "'"); + throw l.code = "MODULE_NOT_FOUND", l + } + var c = n[a] = {exports: {}}; + t[a][0].call(c.exports, function (e) { + var n = t[a][1][e]; + return o(n || e) + }, c, c.exports, e, t, n, r) + } + return n[a].exports + } + + for (var i = "function" == typeof require && require, a = 0; a < r.length; a++) { + o(r[a]); + } + return o + }({ + 1: [function (e, t, n) { + "use strict"; + var r = { + Properties: { + "aria-current": 0, + "aria-details": 0, + "aria-disabled": 0, + "aria-hidden": 0, + "aria-invalid": 0, + "aria-keyshortcuts": 0, + "aria-label": 0, + "aria-roledescription": 0, + "aria-autocomplete": 0, + "aria-checked": 0, + "aria-expanded": 0, + "aria-haspopup": 0, + "aria-level": 0, + "aria-modal": 0, + "aria-multiline": 0, + "aria-multiselectable": 0, + "aria-orientation": 0, + "aria-placeholder": 0, + "aria-pressed": 0, + "aria-readonly": 0, + "aria-required": 0, + "aria-selected": 0, + "aria-sort": 0, + "aria-valuemax": 0, + "aria-valuemin": 0, + "aria-valuenow": 0, + "aria-valuetext": 0, + "aria-atomic": 0, + "aria-busy": 0, + "aria-live": 0, + "aria-relevant": 0, + "aria-dropeffect": 0, + "aria-grabbed": 0, + "aria-activedescendant": 0, + "aria-colcount": 0, + "aria-colindex": 0, + "aria-colspan": 0, + "aria-controls": 0, + "aria-describedby": 0, + "aria-errormessage": 0, + "aria-flowto": 0, + "aria-labelledby": 0, + "aria-owns": 0, + "aria-posinset": 0, + "aria-rowcount": 0, + "aria-rowindex": 0, + "aria-rowspan": 0, + "aria-setsize": 0 + }, DOMAttributeNames: {}, DOMPropertyNames: {} + }; + t.exports = r + }, {}], + 2: [function (e, t, n) { + "use strict"; + var r = e(33), o = e(131), i = { + focusDOMComponent: function () { + o(r.getNodeFromInstance(this)) + } + }; + t.exports = i + }, {131: 131, 33: 33}], + 3: [function (e, t, n) { + "use strict"; + + function r(e) { + return (e.ctrlKey || e.altKey || e.metaKey) && !(e.ctrlKey && e.altKey) + } + + function o(e) { + switch (e) { + case"topCompositionStart": + return T.compositionStart; + case"topCompositionEnd": + return T.compositionEnd; + case"topCompositionUpdate": + return T.compositionUpdate + } + } + + function i(e, t) { + return "topKeyDown" === e && t.keyCode === y + } + + function a(e, t) { + switch (e) { + case"topKeyUp": + return -1 !== g.indexOf(t.keyCode); + case"topKeyDown": + return t.keyCode !== y; + case"topKeyPress": + case"topMouseDown": + case"topBlur": + return !0; + default: + return !1 + } + } + + function s(e) { + var t = e.detail; + return "object" == typeof t && "data" in t ? t.data : null + } + + function u(e, t, n, r) { + var u, l; + if (_ ? u = o(e) : P ? a(e, n) && (u = T.compositionEnd) : i(e, n) + && (u = T.compositionStart), !u) { + return null; + } + E && (P || u !== T.compositionStart ? u === T.compositionEnd && P && (l = P.getData()) + : P = h.getPooled(r)); + var c = m.getPooled(u, t, n, r); + if (l) { + c.data = l; + } else { + var p = s(n); + null !== p && (c.data = p) + } + return d.accumulateTwoPhaseDispatches(c), c + } + + function l(e, t) { + switch (e) { + case"topCompositionEnd": + return s(t); + case"topKeyPress": + return t.which !== x ? null : (k = !0, w); + case"topTextInput": + var n = t.data; + return n === w && k ? null : n; + default: + return null + } + } + + function c(e, t) { + if (P) { + if ("topCompositionEnd" === e || !_ && a(e, t)) { + var n = P.getData(); + return h.release(P), P = null, n + } + return null + } + switch (e) { + case"topPaste": + return null; + case"topKeyPress": + return t.which && !r(t) ? String.fromCharCode(t.which) : null; + case"topCompositionEnd": + return E ? null : t.data; + default: + return null + } + } + + function p(e, t, n, r) { + var o; + if (!(o = b ? l(e, n) : c(e, n))) { + return null; + } + var i = v.getPooled(T.beforeInput, t, n, r); + return i.data = o, d.accumulateTwoPhaseDispatches(i), i + } + + var d = e(19), f = e(123), h = e(20), m = e(78), v = e(82), g = [9, 13, 27, 32], y = 229, + _ = f.canUseDOM && "CompositionEvent" in window, C = null; + f.canUseDOM && "documentMode" in document && (C = document.documentMode); + var b = f.canUseDOM && "TextEvent" in window && !C && !function () { + var e = window.opera; + return "object" == typeof e && "function" == typeof e.version && parseInt(e.version(), + 10) <= 12 + }(), E = f.canUseDOM && (!_ || C && C > 8 && C <= 11), x = 32, w = String.fromCharCode(x), + T = { + beforeInput: { + phasedRegistrationNames: { + bubbled: "onBeforeInput", + captured: "onBeforeInputCapture" + }, dependencies: ["topCompositionEnd", "topKeyPress", "topTextInput", "topPaste"] + }, + compositionEnd: { + phasedRegistrationNames: { + bubbled: "onCompositionEnd", + captured: "onCompositionEndCapture" + }, + dependencies: ["topBlur", "topCompositionEnd", "topKeyDown", "topKeyPress", + "topKeyUp", "topMouseDown"] + }, + compositionStart: { + phasedRegistrationNames: { + bubbled: "onCompositionStart", + captured: "onCompositionStartCapture" + }, + dependencies: ["topBlur", "topCompositionStart", "topKeyDown", "topKeyPress", + "topKeyUp", "topMouseDown"] + }, + compositionUpdate: { + phasedRegistrationNames: { + bubbled: "onCompositionUpdate", + captured: "onCompositionUpdateCapture" + }, + dependencies: ["topBlur", "topCompositionUpdate", "topKeyDown", "topKeyPress", + "topKeyUp", "topMouseDown"] + } + }, k = !1, P = null, S = { + eventTypes: T, extractEvents: function (e, t, n, r) { + return [u(e, t, n, r), p(e, t, n, r)] + } + }; + t.exports = S + }, {123: 123, 19: 19, 20: 20, 78: 78, 82: 82}], + 4: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return e + t.charAt(0).toUpperCase() + t.substring(1) + } + + var o = { + animationIterationCount: !0, + borderImageOutset: !0, + borderImageSlice: !0, + borderImageWidth: !0, + boxFlex: !0, + boxFlexGroup: !0, + boxOrdinalGroup: !0, + columnCount: !0, + flex: !0, + flexGrow: !0, + flexPositive: !0, + flexShrink: !0, + flexNegative: !0, + flexOrder: !0, + gridRow: !0, + gridColumn: !0, + fontWeight: !0, + lineClamp: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + tabSize: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeDasharray: !0, + strokeDashoffset: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + strokeWidth: !0 + }, i = ["Webkit", "ms", "Moz", "O"]; + Object.keys(o).forEach(function (e) { + i.forEach(function (t) { + o[r(t, e)] = o[e] + }) + }); + var a = { + background: { + backgroundAttachment: !0, + backgroundColor: !0, + backgroundImage: !0, + backgroundPositionX: !0, + backgroundPositionY: !0, + backgroundRepeat: !0 + }, + backgroundPosition: {backgroundPositionX: !0, backgroundPositionY: !0}, + border: {borderWidth: !0, borderStyle: !0, borderColor: !0}, + borderBottom: {borderBottomWidth: !0, borderBottomStyle: !0, borderBottomColor: !0}, + borderLeft: {borderLeftWidth: !0, borderLeftStyle: !0, borderLeftColor: !0}, + borderRight: {borderRightWidth: !0, borderRightStyle: !0, borderRightColor: !0}, + borderTop: {borderTopWidth: !0, borderTopStyle: !0, borderTopColor: !0}, + font: { + fontStyle: !0, + fontVariant: !0, + fontWeight: !0, + fontSize: !0, + lineHeight: !0, + fontFamily: !0 + }, + outline: {outlineWidth: !0, outlineStyle: !0, outlineColor: !0} + }, s = {isUnitlessNumber: o, shorthandPropertyExpansions: a}; + t.exports = s + }, {}], + 5: [function (e, t, n) { + "use strict"; + var r = e(4), o = e(123), i = (e(58), e(125), e(94)), a = e(136), s = e(140), + u = (e(142), s(function (e) { + return a(e) + })), l = !1, c = "cssFloat"; + if (o.canUseDOM) { + var p = document.createElement("div").style; + try { + p.font = "" + } catch (e) { + l = !0 + } + void 0 === document.documentElement.style.cssFloat && (c = "styleFloat") + } + var d = { + createMarkupForStyles: function (e, t) { + var n = ""; + for (var r in e) { + if (e.hasOwnProperty(r)) { + var o = e[r]; + null != o && (n += u(r) + ":", n += i(r, o, t) + ";") + } + } + return n || null + }, setValueForStyles: function (e, t, n) { + var o = e.style; + for (var a in t) { + if (t.hasOwnProperty(a)) { + var s = i(a, t[a], n); + if ("float" !== a && "cssFloat" !== a || (a = c), s) { + o[a] = s; + } else { + var u = l && r.shorthandPropertyExpansions[a]; + if (u) { + for (var p in u) { + o[p] = ""; + } + } else { + o[a] = "" + } + } + } + } + } + }; + t.exports = d + }, {123: 123, 125: 125, 136: 136, 140: 140, 142: 142, 4: 4, 58: 58, 94: 94}], + 6: [function (e, t, n) { + "use strict"; + + function r(e, t) { + if (!(e instanceof t)) { + throw new TypeError("Cannot call a class as a function") + } + } + + var o = e(112), i = e(24), a = (e(137), function () { + function e(t) { + r(this, e), this._callbacks = null, this._contexts = null, this._arg = t + } + + return e.prototype.enqueue = function (e, t) { + this._callbacks = this._callbacks || [], this._callbacks.push( + e), this._contexts = this._contexts || [], this._contexts.push(t) + }, e.prototype.notifyAll = function () { + var e = this._callbacks, t = this._contexts, n = this._arg; + if (e && t) { + e.length !== t.length && o("24"), this._callbacks = null, this._contexts = null; + for (var r = 0; r < e.length; r++) { + e[r].call(t[r], n); + } + e.length = 0, t.length = 0 + } + }, e.prototype.checkpoint = function () { + return this._callbacks ? this._callbacks.length : 0 + }, e.prototype.rollback = function (e) { + this._callbacks && this._contexts + && (this._callbacks.length = e, this._contexts.length = e) + }, e.prototype.reset = function () { + this._callbacks = null, this._contexts = null + }, e.prototype.destructor = function () { + this.reset() + }, e + }()); + t.exports = i.addPoolingTo(a) + }, {112: 112, 137: 137, 24: 24}], + 7: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e.nodeName && e.nodeName.toLowerCase(); + return "select" === t || "input" === t && "file" === e.type + } + + function o(e) { + var t = w.getPooled(S.change, M, e, T(e)); + C.accumulateTwoPhaseDispatches(t), x.batchedUpdates(i, t) + } + + function i(e) { + _.enqueueEvents(e), _.processEventQueue(!1) + } + + function a(e, t) { + N = e, M = t, N.attachEvent("onchange", o) + } + + function s() { + N && (N.detachEvent("onchange", o), N = null, M = null) + } + + function u(e, t) { + if ("topChange" === e) { + return t + } + } + + function l(e, t, n) { + "topFocus" === e ? (s(), a(t, n)) : "topBlur" === e && s() + } + + function c(e, t) { + N = e, M = t, I = e.value, O = Object.getOwnPropertyDescriptor(e.constructor.prototype, + "value"), Object.defineProperty(N, "value", D), N.attachEvent ? N.attachEvent( + "onpropertychange", d) : N.addEventListener("propertychange", d, !1) + } + + function p() { + N && (delete N.value, N.detachEvent ? N.detachEvent("onpropertychange", d) + : N.removeEventListener("propertychange", d, + !1), N = null, M = null, I = null, O = null) + } + + function d(e) { + if ("value" === e.propertyName) { + var t = e.srcElement.value; + t !== I && (I = t, o(e)) + } + } + + function f(e, t) { + if ("topInput" === e) { + return t + } + } + + function h(e, t, n) { + "topFocus" === e ? (p(), c(t, n)) : "topBlur" === e && p() + } + + function m(e, t) { + if (("topSelectionChange" === e || "topKeyUp" === e || "topKeyDown" === e) && N + && N.value !== I) { + return I = N.value, M + } + } + + function v(e) { + return e.nodeName && "input" === e.nodeName.toLowerCase() && ("checkbox" === e.type + || "radio" === e.type) + } + + function g(e, t) { + if ("topClick" === e) { + return t + } + } + + function y(e, t) { + if (null != e) { + var n = e._wrapperState || t._wrapperState; + if (n && n.controlled && "number" === t.type) { + var r = "" + t.value; + t.getAttribute("value") !== r && t.setAttribute("value", r) + } + } + } + + var _ = e(16), C = e(19), b = e(123), E = e(33), x = e(71), w = e(80), T = e(102), + k = e(109), P = e(110), S = { + change: { + phasedRegistrationNames: { + bubbled: "onChange", + captured: "onChangeCapture" + }, + dependencies: ["topBlur", "topChange", "topClick", "topFocus", "topInput", + "topKeyDown", "topKeyUp", "topSelectionChange"] + } + }, N = null, M = null, I = null, O = null, R = !1; + b.canUseDOM && (R = k("change") && (!document.documentMode || document.documentMode > 8)); + var A = !1; + b.canUseDOM && (A = k("input") && (!document.documentMode || document.documentMode > 11)); + var D = { + get: function () { + return O.get.call(this) + }, set: function (e) { + I = "" + e, O.set.call(this, e) + } + }, L = { + eventTypes: S, extractEvents: function (e, t, n, o) { + var i, a, s = t ? E.getNodeFromInstance(t) : window; + if (r(s) ? R ? i = u : a = l : P(s) ? A ? i = f : (i = m, a = h) : v(s) + && (i = g), i) { + var c = i(e, t); + if (c) { + var p = w.getPooled(S.change, c, n, o); + return p.type = "change", C.accumulateTwoPhaseDispatches(p), p + } + } + a && a(e, s, t), "topBlur" === e && y(t, s) + } + }; + t.exports = L + }, {102: 102, 109: 109, 110: 110, 123: 123, 16: 16, 19: 19, 33: 33, 71: 71, 80: 80}], + 8: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return Array.isArray(t) && (t = t[1]), t ? t.nextSibling : e.firstChild + } + + function o(e, t, n) { + c.insertTreeBefore(e, t, n) + } + + function i(e, t, n) { + Array.isArray(t) ? s(e, t[0], t[1], n) : m(e, t, n) + } + + function a(e, t) { + if (Array.isArray(t)) { + var n = t[1]; + t = t[0], u(e, t, n), e.removeChild(n) + } + e.removeChild(t) + } + + function s(e, t, n, r) { + for (var o = t; ;) { + var i = o.nextSibling; + if (m(e, o, r), o === n) { + break; + } + o = i + } + } + + function u(e, t, n) { + for (; ;) { + var r = t.nextSibling; + if (r === n) { + break; + } + e.removeChild(r) + } + } + + function l(e, t, n) { + var r = e.parentNode, o = e.nextSibling; + o === t ? n && m(r, document.createTextNode(n), o) : n ? (h(o, n), u(r, o, t)) : u(r, e, + t) + } + + var c = e(9), p = e(13), d = (e(33), e(58), e(93)), f = e(114), h = e(115), + m = d(function (e, t, n) { + e.insertBefore(t, n) + }), v = p.dangerouslyReplaceNodeWithMarkup, g = { + dangerouslyReplaceNodeWithMarkup: v, + replaceDelimitedText: l, + processUpdates: function (e, t) { + for (var n = 0; n < t.length; n++) { + var s = t[n]; + switch (s.type) { + case"INSERT_MARKUP": + o(e, s.content, r(e, s.afterNode)); + break; + case"MOVE_EXISTING": + i(e, s.fromNode, r(e, s.afterNode)); + break; + case"SET_MARKUP": + f(e, s.content); + break; + case"TEXT_CONTENT": + h(e, s.content); + break; + case"REMOVE_NODE": + a(e, s.fromNode) + } + } + } + }; + t.exports = g + }, {114: 114, 115: 115, 13: 13, 33: 33, 58: 58, 9: 9, 93: 93}], + 9: [function (e, t, n) { + "use strict"; + + function r(e) { + if (h) { + var t = e.node, n = e.children; + if (n.length) { + for (var r = 0; r < n.length; r++) { + m(t, n[r], null); + } + } else { + null != e.html + ? p(t, e.html) : null != e.text && f(t, e.text) + } + } + } + + function o(e, t) { + e.parentNode.replaceChild(t.node, e), r(t) + } + + function i(e, t) { + h ? e.children.push(t) : e.node.appendChild(t.node) + } + + function a(e, t) { + h ? e.html = t : p(e.node, t) + } + + function s(e, t) { + h ? e.text = t : f(e.node, t) + } + + function u() { + return this.node.nodeName + } + + function l(e) { + return {node: e, children: [], html: null, text: null, toString: u} + } + + var c = e(10), p = e(114), d = e(93), f = e(115), + h = "undefined" != typeof document && "number" == typeof document.documentMode + || "undefined" != typeof navigator && "string" == typeof navigator.userAgent + && /\bEdge\/\d/.test(navigator.userAgent), m = d(function (e, t, n) { + 11 === t.node.nodeType || 1 === t.node.nodeType && "object" + === t.node.nodeName.toLowerCase() && (null == t.node.namespaceURI || t.node.namespaceURI + === c.html) ? (r(t), e.insertBefore(t.node, n)) : (e.insertBefore(t.node, n), r(t)) + }); + l.insertTreeBefore = m, l.replaceChildWithTree = o, l.queueChild = i, l.queueHTML = a, l.queueText = s, t.exports = l + }, {10: 10, 114: 114, 115: 115, 93: 93}], + 10: [function (e, t, n) { + "use strict"; + var r = { + html: "http://www.w3.org/1999/xhtml", + mathml: "http://www.w3.org/1998/Math/MathML", + svg: "http://www.w3.org/2000/svg" + }; + t.exports = r + }, {}], + 11: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return (e & t) === t + } + + var o = e(112), i = (e(137), { + MUST_USE_PROPERTY: 1, + HAS_BOOLEAN_VALUE: 4, + HAS_NUMERIC_VALUE: 8, + HAS_POSITIVE_NUMERIC_VALUE: 24, + HAS_OVERLOADED_BOOLEAN_VALUE: 32, + injectDOMPropertyConfig: function (e) { + var t = i, n = e.Properties || {}, a = e.DOMAttributeNamespaces || {}, + u = e.DOMAttributeNames || {}, l = e.DOMPropertyNames || {}, + c = e.DOMMutationMethods || {}; + e.isCustomAttribute && s._isCustomAttributeFunctions.push(e.isCustomAttribute); + for (var p in n) { + s.properties.hasOwnProperty(p) && o("48", p); + var d = p.toLowerCase(), f = n[p], h = { + attributeName: d, + attributeNamespace: null, + propertyName: p, + mutationMethod: null, + mustUseProperty: r(f, t.MUST_USE_PROPERTY), + hasBooleanValue: r(f, t.HAS_BOOLEAN_VALUE), + hasNumericValue: r(f, t.HAS_NUMERIC_VALUE), + hasPositiveNumericValue: r(f, t.HAS_POSITIVE_NUMERIC_VALUE), + hasOverloadedBooleanValue: r(f, t.HAS_OVERLOADED_BOOLEAN_VALUE) + }; + if (h.hasBooleanValue + h.hasNumericValue + h.hasOverloadedBooleanValue <= 1 || o( + "50", p), u.hasOwnProperty(p)) { + var m = u[p]; + h.attributeName = m + } + a.hasOwnProperty(p) && (h.attributeNamespace = a[p]), l.hasOwnProperty(p) + && (h.propertyName = l[p]), c.hasOwnProperty(p) + && (h.mutationMethod = c[p]), s.properties[p] = h + } + } + }), + a = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD", + s = { + ID_ATTRIBUTE_NAME: "data-reactid", + ROOT_ATTRIBUTE_NAME: "data-reactroot", + ATTRIBUTE_NAME_START_CHAR: a, + ATTRIBUTE_NAME_CHAR: a + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040", + properties: {}, + getPossibleStandardName: null, + _isCustomAttributeFunctions: [], + isCustomAttribute: function (e) { + for (var t = 0; t < s._isCustomAttributeFunctions.length; + t++) { + if ((0, s._isCustomAttributeFunctions[t])(e)) { + return !0; + } + } + return !1 + }, + injection: i + }; + t.exports = s + }, {112: 112, 137: 137}], + 12: [function (e, t, n) { + "use strict"; + + function r(e) { + return !!l.hasOwnProperty(e) || !u.hasOwnProperty(e) && (s.test(e) ? (l[e] = !0, !0) + : (u[e] = !0, !1)) + } + + function o(e, t) { + return null == t || e.hasBooleanValue && !t || e.hasNumericValue && isNaN(t) + || e.hasPositiveNumericValue && t < 1 || e.hasOverloadedBooleanValue && !1 === t + } + + var i = e(11), a = (e(33), e(58), e(111)), s = (e(142), new RegExp( + "^[" + i.ATTRIBUTE_NAME_START_CHAR + "][" + i.ATTRIBUTE_NAME_CHAR + "]*$")), u = {}, + l = {}, c = { + createMarkupForID: function (e) { + return i.ID_ATTRIBUTE_NAME + "=" + a(e) + }, setAttributeForID: function (e, t) { + e.setAttribute(i.ID_ATTRIBUTE_NAME, t) + }, createMarkupForRoot: function () { + return i.ROOT_ATTRIBUTE_NAME + '=""' + }, setAttributeForRoot: function (e) { + e.setAttribute(i.ROOT_ATTRIBUTE_NAME, "") + }, createMarkupForProperty: function (e, t) { + var n = i.properties.hasOwnProperty(e) ? i.properties[e] : null; + if (n) { + if (o(n, t)) { + return ""; + } + var r = n.attributeName; + return n.hasBooleanValue || n.hasOverloadedBooleanValue && !0 === t ? r + '=""' : r + + "=" + a(t) + } + return i.isCustomAttribute(e) ? null == t ? "" : e + "=" + a(t) : null + }, createMarkupForCustomAttribute: function (e, t) { + return r(e) && null != t ? e + "=" + a(t) : "" + }, setValueForProperty: function (e, t, n) { + var r = i.properties.hasOwnProperty(t) ? i.properties[t] : null; + if (r) { + var a = r.mutationMethod; + if (a) { + a(e, n); + } else { + if (o(r, n)) { + return void this.deleteValueForProperty(e, t); + } + if (r.mustUseProperty) { + e[r.propertyName] = n; + } else { + var s = r.attributeName, u = r.attributeNamespace; + u ? e.setAttributeNS(u, s, "" + n) : r.hasBooleanValue + || r.hasOverloadedBooleanValue && !0 === n ? e.setAttribute(s, "") + : e.setAttribute(s, "" + n) + } + } + } else if (i.isCustomAttribute(t)) { + return void c.setValueForAttribute(e, t, n) + } + }, setValueForAttribute: function (e, t, n) { + r(t) && (null == n ? e.removeAttribute(t) : e.setAttribute(t, "" + n)) + }, deleteValueForAttribute: function (e, t) { + e.removeAttribute(t) + }, deleteValueForProperty: function (e, t) { + var n = i.properties.hasOwnProperty(t) ? i.properties[t] : null; + if (n) { + var r = n.mutationMethod; + if (r) { + r(e, void 0); + } else if (n.mustUseProperty) { + var o = n.propertyName; + n.hasBooleanValue ? e[o] = !1 : e[o] = "" + } else { + e.removeAttribute(n.attributeName) + } + } else { + i.isCustomAttribute(t) && e.removeAttribute(t) + } + } + }; + t.exports = c + }, {11: 11, 111: 111, 142: 142, 33: 33, 58: 58}], + 13: [function (e, t, n) { + "use strict"; + var r = e(112), o = e(9), i = e(123), a = e(128), s = e(129), u = (e(137), { + dangerouslyReplaceNodeWithMarkup: function (e, t) { + if (i.canUseDOM || r("56"), t || r("57"), "HTML" === e.nodeName && r("58"), "string" + == typeof t) { + var n = a(t, s)[0]; + e.parentNode.replaceChild(n, e) + } else { + o.replaceChildWithTree(e, t) + } + } + }); + t.exports = u + }, {112: 112, 123: 123, 128: 128, 129: 129, 137: 137, 9: 9}], + 14: [function (e, t, n) { + "use strict"; + var r = ["ResponderEventPlugin", "SimpleEventPlugin", "TapEventPlugin", + "EnterLeaveEventPlugin", "ChangeEventPlugin", "SelectEventPlugin", + "BeforeInputEventPlugin"]; + t.exports = r + }, {}], + 15: [function (e, t, n) { + "use strict"; + var r = e(19), o = e(33), i = e(84), a = { + mouseEnter: { + registrationName: "onMouseEnter", + dependencies: ["topMouseOut", "topMouseOver"] + }, + mouseLeave: { + registrationName: "onMouseLeave", + dependencies: ["topMouseOut", "topMouseOver"] + } + }, s = { + eventTypes: a, extractEvents: function (e, t, n, s) { + if ("topMouseOver" === e && (n.relatedTarget || n.fromElement)) { + return null; + } + if ("topMouseOut" !== e && "topMouseOver" !== e) { + return null; + } + var u; + if (s.window === s) { + u = s; + } else { + var l = s.ownerDocument; + u = l ? l.defaultView || l.parentWindow : window + } + var c, p; + if ("topMouseOut" === e) { + c = t; + var d = n.relatedTarget || n.toElement; + p = d ? o.getClosestInstanceFromNode(d) : null + } else { + c = null, p = t; + } + if (c === p) { + return null; + } + var f = null == c ? u : o.getNodeFromInstance(c), + h = null == p ? u : o.getNodeFromInstance(p), + m = i.getPooled(a.mouseLeave, c, n, s); + m.type = "mouseleave", m.target = f, m.relatedTarget = h; + var v = i.getPooled(a.mouseEnter, p, n, s); + return v.type = "mouseenter", v.target = h, v.relatedTarget = f, r.accumulateEnterLeaveDispatches( + m, v, c, p), [m, v] + } + }; + t.exports = s + }, {19: 19, 33: 33, 84: 84}], + 16: [function (e, t, n) { + "use strict"; + + function r(e) { + return "button" === e || "input" === e || "select" === e || "textarea" === e + } + + function o(e, t, n) { + switch (e) { + case"onClick": + case"onClickCapture": + case"onDoubleClick": + case"onDoubleClickCapture": + case"onMouseDown": + case"onMouseDownCapture": + case"onMouseMove": + case"onMouseMoveCapture": + case"onMouseUp": + case"onMouseUpCapture": + return !(!n.disabled || !r(t)); + default: + return !1 + } + } + + var i = e(112), a = e(17), s = e(18), u = e(50), l = e(91), c = e(98), p = (e(137), {}), + d = null, f = function (e, t) { + e && (s.executeDispatchesInOrder(e, t), e.isPersistent() || e.constructor.release(e)) + }, h = function (e) { + return f(e, !0) + }, m = function (e) { + return f(e, !1) + }, v = function (e) { + return "." + e._rootNodeID + }, g = { + injection: { + injectEventPluginOrder: a.injectEventPluginOrder, + injectEventPluginsByName: a.injectEventPluginsByName + }, putListener: function (e, t, n) { + "function" != typeof n && i("94", t, typeof n); + var r = v(e); + (p[t] || (p[t] = {}))[r] = n; + var o = a.registrationNameModules[t]; + o && o.didPutListener && o.didPutListener(e, t, n) + }, getListener: function (e, t) { + var n = p[t]; + if (o(t, e._currentElement.type, e._currentElement.props)) { + return null; + } + var r = v(e); + return n && n[r] + }, deleteListener: function (e, t) { + var n = a.registrationNameModules[t]; + n && n.willDeleteListener && n.willDeleteListener(e, t); + var r = p[t]; + r && delete r[v(e)] + }, deleteAllListeners: function (e) { + var t = v(e); + for (var n in p) { + if (p.hasOwnProperty(n) && p[n][t]) { + var r = a.registrationNameModules[n]; + r && r.willDeleteListener && r.willDeleteListener(e, n), delete p[n][t] + } + } + }, extractEvents: function (e, t, n, r) { + for (var o, i = a.plugins, s = 0; s < i.length; s++) { + var u = i[s]; + if (u) { + var c = u.extractEvents(e, t, n, r); + c && (o = l(o, c)) + } + } + return o + }, enqueueEvents: function (e) { + e && (d = l(d, e)) + }, processEventQueue: function (e) { + var t = d; + d = null, e ? c(t, h) : c(t, m), d && i("95"), u.rethrowCaughtError() + }, __purge: function () { + p = {} + }, __getListenerBank: function () { + return p + } + }; + t.exports = g + }, {112: 112, 137: 137, 17: 17, 18: 18, 50: 50, 91: 91, 98: 98}], + 17: [function (e, t, n) { + "use strict"; + + function r() { + if (s) { + for (var e in u) { + var t = u[e], n = s.indexOf(e); + if (n > -1 || a("96", e), !l.plugins[n]) { + t.extractEvents || a("97", e), l.plugins[n] = t; + var r = t.eventTypes; + for (var i in r) { + o(r[i], t, i) || a("98", i, e) + } + } + } + } + } + + function o(e, t, n) { + l.eventNameDispatchConfigs.hasOwnProperty(n) && a("99", + n), l.eventNameDispatchConfigs[n] = e; + var r = e.phasedRegistrationNames; + if (r) { + for (var o in r) { + if (r.hasOwnProperty(o)) { + var s = r[o]; + i(s, t, n) + } + } + return !0 + } + return !!e.registrationName && (i(e.registrationName, t, n), !0) + } + + function i(e, t, n) { + l.registrationNameModules[e] && a("100", + e), l.registrationNameModules[e] = t, l.registrationNameDependencies[e] = t.eventTypes[n].dependencies + } + + var a = e(112), s = (e(137), null), u = {}, l = { + plugins: [], + eventNameDispatchConfigs: {}, + registrationNameModules: {}, + registrationNameDependencies: {}, + possibleRegistrationNames: null, + injectEventPluginOrder: function (e) { + s && a("101"), s = Array.prototype.slice.call(e), r() + }, + injectEventPluginsByName: function (e) { + var t = !1; + for (var n in e) { + if (e.hasOwnProperty(n)) { + var o = e[n]; + u.hasOwnProperty(n) && u[n] === o || (u[n] && a("102", n), u[n] = o, t = !0) + } + } + t && r() + }, + getPluginModuleForEvent: function (e) { + var t = e.dispatchConfig; + if (t.registrationName) { + return l.registrationNameModules[t.registrationName] || null; + } + if (void 0 !== t.phasedRegistrationNames) { + var n = t.phasedRegistrationNames; + for (var r in n) { + if (n.hasOwnProperty(r)) { + var o = l.registrationNameModules[n[r]]; + if (o) { + return o + } + } + } + } + return null + }, + _resetEventPlugins: function () { + s = null; + for (var e in u) { + u.hasOwnProperty(e) && delete u[e]; + } + l.plugins.length = 0; + var t = l.eventNameDispatchConfigs; + for (var n in t) { + t.hasOwnProperty(n) && delete t[n]; + } + var r = l.registrationNameModules; + for (var o in r) { + r.hasOwnProperty(o) && delete r[o] + } + } + }; + t.exports = l + }, {112: 112, 137: 137}], + 18: [function (e, t, n) { + "use strict"; + + function r(e) { + return "topMouseUp" === e || "topTouchEnd" === e || "topTouchCancel" === e + } + + function o(e) { + return "topMouseMove" === e || "topTouchMove" === e + } + + function i(e) { + return "topMouseDown" === e || "topTouchStart" === e + } + + function a(e, t, n, r) { + var o = e.type || "unknown-event"; + e.currentTarget = g.getNodeFromInstance(r), t ? m.invokeGuardedCallbackWithCatch(o, n, + e) : m.invokeGuardedCallback(o, n, e), e.currentTarget = null + } + + function s(e, t) { + var n = e._dispatchListeners, r = e._dispatchInstances; + if (Array.isArray(n)) { + for (var o = 0; o < n.length && !e.isPropagationStopped(); o++) { + a( + e, t, n[o], r[o]); + } + } else { + n && a(e, t, n, r); + } + e._dispatchListeners = null, e._dispatchInstances = null + } + + function u(e) { + var t = e._dispatchListeners, n = e._dispatchInstances; + if (Array.isArray(t)) { + for (var r = 0; r < t.length && !e.isPropagationStopped(); r++) { + if (t[r](e, + n[r])) { + return n[r] + } + } + } else if (t && t(e, n)) { + return n; + } + return null + } + + function l(e) { + var t = u(e); + return e._dispatchInstances = null, e._dispatchListeners = null, t + } + + function c(e) { + var t = e._dispatchListeners, n = e._dispatchInstances; + Array.isArray(t) && h("103"), e.currentTarget = t ? g.getNodeFromInstance(n) : null; + var r = t ? t(e) : null; + return e.currentTarget = null, e._dispatchListeners = null, e._dispatchInstances = null, r + } + + function p(e) { + return !!e._dispatchListeners + } + + var d, f, h = e(112), m = e(50), v = (e(137), e(142), { + injectComponentTree: function (e) { + d = e + }, injectTreeTraversal: function (e) { + f = e + } + }), g = { + isEndish: r, + isMoveish: o, + isStartish: i, + executeDirectDispatch: c, + executeDispatchesInOrder: s, + executeDispatchesInOrderStopAtTrue: l, + hasDispatches: p, + getInstanceFromNode: function (e) { + return d.getInstanceFromNode(e) + }, + getNodeFromInstance: function (e) { + return d.getNodeFromInstance(e) + }, + isAncestor: function (e, t) { + return f.isAncestor(e, t) + }, + getLowestCommonAncestor: function (e, t) { + return f.getLowestCommonAncestor(e, t) + }, + getParentInstance: function (e) { + return f.getParentInstance(e) + }, + traverseTwoPhase: function (e, t, n) { + return f.traverseTwoPhase(e, t, n) + }, + traverseEnterLeave: function (e, t, n, r, o) { + return f.traverseEnterLeave(e, t, n, r, o) + }, + injection: v + }; + t.exports = g + }, {112: 112, 137: 137, 142: 142, 50: 50}], + 19: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + var r = t.dispatchConfig.phasedRegistrationNames[n]; + return g(e, r) + } + + function o(e, t, n) { + var o = r(e, n, t); + o && (n._dispatchListeners = m(n._dispatchListeners, o), n._dispatchInstances = m( + n._dispatchInstances, e)) + } + + function i(e) { + e && e.dispatchConfig.phasedRegistrationNames && h.traverseTwoPhase(e._targetInst, o, e) + } + + function a(e) { + if (e && e.dispatchConfig.phasedRegistrationNames) { + var t = e._targetInst, n = t ? h.getParentInstance(t) : null; + h.traverseTwoPhase(n, o, e) + } + } + + function s(e, t, n) { + if (n && n.dispatchConfig.registrationName) { + var r = n.dispatchConfig.registrationName, o = g(e, r); + o && (n._dispatchListeners = m(n._dispatchListeners, o), n._dispatchInstances = m( + n._dispatchInstances, e)) + } + } + + function u(e) { + e && e.dispatchConfig.registrationName && s(e._targetInst, null, e) + } + + function l(e) { + v(e, i) + } + + function c(e) { + v(e, a) + } + + function p(e, t, n, r) { + h.traverseEnterLeave(n, r, s, e, t) + } + + function d(e) { + v(e, u) + } + + var f = e(16), h = e(18), m = e(91), v = e(98), g = (e(142), f.getListener), y = { + accumulateTwoPhaseDispatches: l, + accumulateTwoPhaseDispatchesSkipTarget: c, + accumulateDirectDispatches: d, + accumulateEnterLeaveDispatches: p + }; + t.exports = y + }, {142: 142, 16: 16, 18: 18, 91: 91, 98: 98}], + 20: [function (e, t, n) { + "use strict"; + + function r(e) { + this._root = e, this._startText = this.getText(), this._fallbackText = null + } + + var o = e(143), i = e(24), a = e(106); + o(r.prototype, { + destructor: function () { + this._root = null, this._startText = null, this._fallbackText = null + }, getText: function () { + return "value" in this._root ? this._root.value : this._root[a()] + }, getData: function () { + if (this._fallbackText) { + return this._fallbackText; + } + var e, t, n = this._startText, r = n.length, o = this.getText(), i = o.length; + for (e = 0; e < r && n[e] === o[e]; e++) { + ; + } + var a = r - e; + for (t = 1; t <= a && n[r - t] === o[i - t]; t++) { + ; + } + var s = t > 1 ? 1 - t : void 0; + return this._fallbackText = o.slice(e, s), this._fallbackText + } + }), i.addPoolingTo(r), t.exports = r + }, {106: 106, 143: 143, 24: 24}], + 21: [function (e, t, n) { + "use strict"; + var r = e(11), o = r.injection.MUST_USE_PROPERTY, i = r.injection.HAS_BOOLEAN_VALUE, + a = r.injection.HAS_NUMERIC_VALUE, s = r.injection.HAS_POSITIVE_NUMERIC_VALUE, + u = r.injection.HAS_OVERLOADED_BOOLEAN_VALUE, l = { + isCustomAttribute: RegExp.prototype.test.bind( + new RegExp("^(data|aria)-[" + r.ATTRIBUTE_NAME_CHAR + "]*$")), + Properties: { + accept: 0, + acceptCharset: 0, + accessKey: 0, + action: 0, + allowFullScreen: i, + allowTransparency: 0, + alt: 0, + as: 0, + async: i, + autoComplete: 0, + autoPlay: i, + capture: i, + cellPadding: 0, + cellSpacing: 0, + charSet: 0, + challenge: 0, + checked: o | i, + cite: 0, + classID: 0, + className: 0, + cols: s, + colSpan: 0, + content: 0, + contentEditable: 0, + contextMenu: 0, + controls: i, + coords: 0, + crossOrigin: 0, + data: 0, + dateTime: 0, + default: i, + defer: i, + dir: 0, + disabled: i, + download: u, + draggable: 0, + encType: 0, + form: 0, + formAction: 0, + formEncType: 0, + formMethod: 0, + formNoValidate: i, + formTarget: 0, + frameBorder: 0, + headers: 0, + height: 0, + hidden: i, + high: 0, + href: 0, + hrefLang: 0, + htmlFor: 0, + httpEquiv: 0, + icon: 0, + id: 0, + inputMode: 0, + integrity: 0, + is: 0, + keyParams: 0, + keyType: 0, + kind: 0, + label: 0, + lang: 0, + list: 0, + loop: i, + low: 0, + manifest: 0, + marginHeight: 0, + marginWidth: 0, + max: 0, + maxLength: 0, + media: 0, + mediaGroup: 0, + method: 0, + min: 0, + minLength: 0, + multiple: o | i, + muted: o | i, + name: 0, + nonce: 0, + noValidate: i, + open: i, + optimum: 0, + pattern: 0, + placeholder: 0, + playsInline: i, + poster: 0, + preload: 0, + profile: 0, + radioGroup: 0, + readOnly: i, + referrerPolicy: 0, + rel: 0, + required: i, + reversed: i, + role: 0, + rows: s, + rowSpan: a, + sandbox: 0, + scope: 0, + scoped: i, + scrolling: 0, + seamless: i, + selected: o | i, + shape: 0, + size: s, + sizes: 0, + span: s, + spellCheck: 0, + src: 0, + srcDoc: 0, + srcLang: 0, + srcSet: 0, + start: a, + step: 0, + style: 0, + summary: 0, + tabIndex: 0, + target: 0, + title: 0, + type: 0, + useMap: 0, + value: 0, + width: 0, + wmode: 0, + wrap: 0, + about: 0, + datatype: 0, + inlist: 0, + prefix: 0, + property: 0, + resource: 0, + typeof: 0, + vocab: 0, + autoCapitalize: 0, + autoCorrect: 0, + autoSave: 0, + color: 0, + itemProp: 0, + itemScope: i, + itemType: 0, + itemID: 0, + itemRef: 0, + results: 0, + security: 0, + unselectable: 0 + }, + DOMAttributeNames: { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" + }, + DOMPropertyNames: {}, + DOMMutationMethods: { + value: function (e, t) { + if (null == t) { + return e.removeAttribute("value"); + } + "number" !== e.type || !1 === e.hasAttribute("value") ? e.setAttribute("value", + "" + t) : e.validity && !e.validity.badInput && e.ownerDocument.activeElement + !== e && e.setAttribute("value", "" + t) + } + } + }; + t.exports = l + }, {11: 11}], + 22: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = {"=": "=0", ":": "=2"}; + return "$" + ("" + e).replace(/[=:]/g, function (e) { + return t[e] + }) + } + + function o(e) { + var t = {"=0": "=", "=2": ":"}; + return ("" + ("." === e[0] && "$" === e[1] ? e.substring(2) : e.substring(1))).replace( + /(=0|=2)/g, function (e) { + return t[e] + }) + } + + var i = {escape: r, unescape: o}; + t.exports = i + }, {}], + 23: [function (e, t, n) { + "use strict"; + + function r(e) { + null != e.checkedLink && null != e.valueLink && s("87") + } + + function o(e) { + r(e), (null != e.value || null != e.onChange) && s("88") + } + + function i(e) { + r(e), (null != e.checked || null != e.onChange) && s("89") + } + + function a(e) { + if (e) { + var t = e.getName(); + if (t) { + return " Check the render method of `" + t + "`." + } + } + return "" + } + + var s = e(112), u = e(64), l = e(145), c = e(120), p = l(c.isValidElement), + d = (e(137), e(142), { + button: !0, + checkbox: !0, + image: !0, + hidden: !0, + radio: !0, + reset: !0, + submit: !0 + }), f = { + value: function (e, t, n) { + return !e[t] || d[e.type] || e.onChange || e.readOnly || e.disabled ? null + : new Error( + "You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.") + }, checked: function (e, t, n) { + return !e[t] || e.onChange || e.readOnly || e.disabled ? null : new Error( + "You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.") + }, onChange: p.func + }, h = {}, m = { + checkPropTypes: function (e, t, n) { + for (var r in f) { + if (f.hasOwnProperty(r)) { + var o = f[r](t, r, e, "prop", null, u); + } + o instanceof Error && !(o.message in h) && (h[o.message] = !0, a(n)) + } + }, getValue: function (e) { + return e.valueLink ? (o(e), e.valueLink.value) : e.value + }, getChecked: function (e) { + return e.checkedLink ? (i(e), e.checkedLink.value) : e.checked + }, executeOnChange: function (e, t) { + return e.valueLink ? (o(e), e.valueLink.requestChange(t.target.value)) : e.checkedLink + ? (i(e), e.checkedLink.requestChange(t.target.checked)) : e.onChange + ? e.onChange.call(void 0, t) : void 0 + } + }; + t.exports = m + }, {112: 112, 120: 120, 137: 137, 142: 142, 145: 145, 64: 64}], + 24: [function (e, t, n) { + "use strict"; + var r = e(112), o = (e(137), function (e) { + var t = this; + if (t.instancePool.length) { + var n = t.instancePool.pop(); + return t.call(n, e), n + } + return new t(e) + }), i = function (e, t) { + var n = this; + if (n.instancePool.length) { + var r = n.instancePool.pop(); + return n.call(r, e, t), r + } + return new n(e, t) + }, a = function (e, t, n) { + var r = this; + if (r.instancePool.length) { + var o = r.instancePool.pop(); + return r.call(o, e, t, n), o + } + return new r(e, t, n) + }, s = function (e, t, n, r) { + var o = this; + if (o.instancePool.length) { + var i = o.instancePool.pop(); + return o.call(i, e, t, n, r), i + } + return new o(e, t, n, r) + }, u = function (e) { + var t = this; + e instanceof t || r("25"), e.destructor(), t.instancePool.length < t.poolSize + && t.instancePool.push(e) + }, l = o, c = function (e, t) { + var n = e; + return n.instancePool = [], n.getPooled = t || l, n.poolSize + || (n.poolSize = 10), n.release = u, n + }, p = { + addPoolingTo: c, + oneArgumentPooler: o, + twoArgumentPooler: i, + threeArgumentPooler: a, + fourArgumentPooler: s + }; + t.exports = p + }, {112: 112, 137: 137}], + 25: [function (e, t, n) { + "use strict"; + + function r(e) { + return Object.prototype.hasOwnProperty.call(e, m) || (e[m] = f++, p[e[m]] = {}), p[e[m]] + } + + var o, i = e(143), a = e(17), s = e(51), u = e(90), l = e(107), c = e(109), p = {}, + d = !1, f = 0, h = { + topAbort: "abort", + topAnimationEnd: l("animationend") || "animationend", + topAnimationIteration: l("animationiteration") || "animationiteration", + topAnimationStart: l("animationstart") || "animationstart", + topBlur: "blur", + topCanPlay: "canplay", + topCanPlayThrough: "canplaythrough", + topChange: "change", + topClick: "click", + topCompositionEnd: "compositionend", + topCompositionStart: "compositionstart", + topCompositionUpdate: "compositionupdate", + topContextMenu: "contextmenu", + topCopy: "copy", + topCut: "cut", + topDoubleClick: "dblclick", + topDrag: "drag", + topDragEnd: "dragend", + topDragEnter: "dragenter", + topDragExit: "dragexit", + topDragLeave: "dragleave", + topDragOver: "dragover", + topDragStart: "dragstart", + topDrop: "drop", + topDurationChange: "durationchange", + topEmptied: "emptied", + topEncrypted: "encrypted", + topEnded: "ended", + topError: "error", + topFocus: "focus", + topInput: "input", + topKeyDown: "keydown", + topKeyPress: "keypress", + topKeyUp: "keyup", + topLoadedData: "loadeddata", + topLoadedMetadata: "loadedmetadata", + topLoadStart: "loadstart", + topMouseDown: "mousedown", + topMouseMove: "mousemove", + topMouseOut: "mouseout", + topMouseOver: "mouseover", + topMouseUp: "mouseup", + topPaste: "paste", + topPause: "pause", + topPlay: "play", + topPlaying: "playing", + topProgress: "progress", + topRateChange: "ratechange", + topScroll: "scroll", + topSeeked: "seeked", + topSeeking: "seeking", + topSelectionChange: "selectionchange", + topStalled: "stalled", + topSuspend: "suspend", + topTextInput: "textInput", + topTimeUpdate: "timeupdate", + topTouchCancel: "touchcancel", + topTouchEnd: "touchend", + topTouchMove: "touchmove", + topTouchStart: "touchstart", + topTransitionEnd: l("transitionend") || "transitionend", + topVolumeChange: "volumechange", + topWaiting: "waiting", + topWheel: "wheel" + }, m = "_reactListenersID" + String(Math.random()).slice(2), v = i({}, s, { + ReactEventListener: null, injection: { + injectReactEventListener: function (e) { + e.setHandleTopLevel(v.handleTopLevel), v.ReactEventListener = e + } + }, setEnabled: function (e) { + v.ReactEventListener && v.ReactEventListener.setEnabled(e) + }, isEnabled: function () { + return !(!v.ReactEventListener || !v.ReactEventListener.isEnabled()) + }, listenTo: function (e, t) { + for (var n = t, o = r(n), i = a.registrationNameDependencies[e], s = 0; s < i.length; + s++) { + var u = i[s]; + o.hasOwnProperty(u) && o[u] || ("topWheel" === u ? c("wheel") + ? v.ReactEventListener.trapBubbledEvent("topWheel", "wheel", n) : c("mousewheel") + ? v.ReactEventListener.trapBubbledEvent("topWheel", "mousewheel", n) + : v.ReactEventListener.trapBubbledEvent("topWheel", "DOMMouseScroll", n) + : "topScroll" === u ? c("scroll", !0) ? v.ReactEventListener.trapCapturedEvent( + "topScroll", "scroll", n) : v.ReactEventListener.trapBubbledEvent("topScroll", + "scroll", v.ReactEventListener.WINDOW_HANDLE) : "topFocus" === u || "topBlur" + === u ? (c("focus", !0) ? (v.ReactEventListener.trapCapturedEvent("topFocus", + "focus", n), v.ReactEventListener.trapCapturedEvent("topBlur", "blur", n)) : c( + "focusin") && (v.ReactEventListener.trapBubbledEvent("topFocus", "focusin", + n), v.ReactEventListener.trapBubbledEvent("topBlur", "focusout", + n)), o.topBlur = !0, o.topFocus = !0) : h.hasOwnProperty(u) + && v.ReactEventListener.trapBubbledEvent(u, h[u], n), o[u] = !0) + } + }, trapBubbledEvent: function (e, t, n) { + return v.ReactEventListener.trapBubbledEvent(e, t, n) + }, trapCapturedEvent: function (e, t, n) { + return v.ReactEventListener.trapCapturedEvent(e, t, n) + }, supportsEventPageXY: function () { + if (!document.createEvent) { + return !1; + } + var e = document.createEvent("MouseEvent"); + return null != e && "pageX" in e + }, ensureScrollValueMonitoring: function () { + if (void 0 === o && (o = v.supportsEventPageXY()), !o && !d) { + var e = u.refreshScrollValues; + v.ReactEventListener.monitorScrollValue(e), d = !0 + } + } + }); + t.exports = v + }, {107: 107, 109: 109, 143: 143, 17: 17, 51: 51, 90: 90}], + 26: [function (e, t, n) { + (function (n) { + "use strict"; + + function r(e, t, n, r) { + var o = void 0 === e[n]; + null != t && o && (e[n] = i(t, !0)) + } + + var o = e(66), i = e(108), a = (e(22), e(116)), s = e(117); + e(142); + void 0 !== n && n.env; + var u = { + instantiateChildren: function (e, t, n, o) { + if (null == e) { + return null; + } + var i = {}; + return s(e, r, i), i + }, updateChildren: function (e, t, n, r, s, u, l, c, p) { + if (t || e) { + var d, f; + for (d in t) { + if (t.hasOwnProperty(d)) { + f = e && e[d]; + var h = f && f._currentElement, m = t[d]; + if (null != f && a(h, m)) { + o.receiveComponent(f, m, s, c), t[d] = f; + } else { + f && (r[d] = o.getHostNode(f), o.unmountComponent(f, !1)); + var v = i(m, !0); + t[d] = v; + var g = o.mountComponent(v, s, u, l, c, p); + n.push(g) + } + } + } + for (d in e) { + !e.hasOwnProperty(d) || t && t.hasOwnProperty(d) + || (f = e[d], r[d] = o.getHostNode(f), o.unmountComponent(f, !1)) + } + } + }, unmountChildren: function (e, t) { + for (var n in e) { + if (e.hasOwnProperty(n)) { + var r = e[n]; + o.unmountComponent(r, t) + } + } + } + }; + t.exports = u + }).call(this, void 0) + }, {108: 108, 116: 116, 117: 117, 142: 142, 22: 22, 66: 66}], + 27: [function (e, t, n) { + "use strict"; + var r = e(8), o = e(37), i = { + processChildrenUpdates: o.dangerouslyProcessChildrenUpdates, + replaceNodeWithMarkup: r.dangerouslyReplaceNodeWithMarkup + }; + t.exports = i + }, {37: 37, 8: 8}], + 28: [function (e, t, n) { + "use strict"; + var r = e(112), o = (e(137), !1), i = { + replaceNodeWithMarkup: null, + processChildrenUpdates: null, + injection: { + injectEnvironment: function (e) { + o && r( + "104"), i.replaceNodeWithMarkup = e.replaceNodeWithMarkup, i.processChildrenUpdates = e.processChildrenUpdates, o = !0 + } + } + }; + t.exports = i + }, {112: 112, 137: 137}], + 29: [function (e, t, n) { + "use strict"; + + function r(e) { + } + + function o(e) { + return !(!e.prototype || !e.prototype.isReactComponent) + } + + function i(e) { + return !(!e.prototype || !e.prototype.isPureReactComponent) + } + + var a = e(112), s = e(143), u = e(120), l = e(28), c = e(119), p = e(50), d = e(57), + f = (e(58), e(62)), h = e(66), m = e(130), v = (e(137), e(141)), g = e(116), + y = (e(142), {ImpureClass: 0, PureClass: 1, StatelessFunctional: 2}); + r.prototype.render = function () { + var e = d.get(this)._currentElement.type, t = e(this.props, this.context, this.updater); + return t + }; + var _ = 1, C = { + construct: function (e) { + this._currentElement = e, this._rootNodeID = 0, this._compositeType = null, this._instance = null, this._hostParent = null, this._hostContainerInfo = null, this._updateBatchNumber = null, this._pendingElement = null, this._pendingStateQueue = null, this._pendingReplaceState = !1, this._pendingForceUpdate = !1, this._renderedNodeType = null, this._renderedComponent = null, this._context = null, this._mountOrder = 0, this._topLevelWrapper = null, this._pendingCallbacks = null, this._calledComponentWillUnmount = !1 + }, mountComponent: function (e, t, n, s) { + this._context = s, this._mountOrder = _++, this._hostParent = t, this._hostContainerInfo = n; + var l, c = this._currentElement.props, p = this._processContext(s), + f = this._currentElement.type, h = e.getUpdateQueue(), v = o(f), + g = this._constructComponent(v, c, p, h); + v || null != g && null != g.render ? i(f) ? this._compositeType = y.PureClass + : this._compositeType = y.ImpureClass : (l = g, null === g || !1 === g + || u.isValidElement(g) || a("105", f.displayName || f.name || "Component"), g = new r( + f), this._compositeType = y.StatelessFunctional), g.props = c, g.context = p, g.refs = m, g.updater = h, this._instance = g, d.set( + g, this); + var C = g.state; + void 0 === C && (g.state = C = null), ("object" != typeof C || Array.isArray(C)) && a( + "106", this.getName() + || "ReactCompositeComponent"), this._pendingStateQueue = null, this._pendingReplaceState = !1, this._pendingForceUpdate = !1; + var b; + return b = g.unstable_handleError ? this.performInitialMountWithErrorHandling(l, t, n, + e, s) : this.performInitialMount(l, t, n, e, s), g.componentDidMount + && e.getReactMountReady().enqueue(g.componentDidMount, g), b + }, _constructComponent: function (e, t, n, r) { + return this._constructComponentWithoutOwner(e, t, n, r) + }, _constructComponentWithoutOwner: function (e, t, n, r) { + var o = this._currentElement.type; + return e ? new o(t, n, r) : o(t, n, r) + }, performInitialMountWithErrorHandling: function (e, t, n, r, o) { + var i, a = r.checkpoint(); + try { + i = this.performInitialMount(e, t, n, r, o) + } catch (s) { + r.rollback(a), this._instance.unstable_handleError(s), this._pendingStateQueue + && (this._instance.state = this._processPendingState(this._instance.props, + this._instance.context)), a = r.checkpoint(), this._renderedComponent.unmountComponent( + !0), r.rollback(a), i = this.performInitialMount(e, t, n, r, o) + } + return i + }, performInitialMount: function (e, t, n, r, o) { + var i = this._instance; + i.componentWillMount && (i.componentWillMount(), this._pendingStateQueue + && (i.state = this._processPendingState(i.props, i.context))), void 0 === e + && (e = this._renderValidatedComponent()); + var a = f.getType(e); + this._renderedNodeType = a; + var s = this._instantiateReactComponent(e, a !== f.EMPTY); + return this._renderedComponent = s, h.mountComponent(s, r, t, n, + this._processChildContext(o), 0) + }, getHostNode: function () { + return h.getHostNode(this._renderedComponent) + }, unmountComponent: function (e) { + if (this._renderedComponent) { + var t = this._instance; + if (t.componentWillUnmount + && !t._calledComponentWillUnmount) { + if (t._calledComponentWillUnmount = !0, e) { + var n = this.getName() + ".componentWillUnmount()"; + p.invokeGuardedCallback(n, t.componentWillUnmount.bind(t)) + } else { + t.componentWillUnmount(); + } + } + this._renderedComponent && (h.unmountComponent(this._renderedComponent, + e), this._renderedNodeType = null, this._renderedComponent = null, this._instance = null), this._pendingStateQueue = null, this._pendingReplaceState = !1, this._pendingForceUpdate = !1, this._pendingCallbacks = null, this._pendingElement = null, this._context = null, this._rootNodeID = 0, this._topLevelWrapper = null, d.remove( + t) + } + }, _maskContext: function (e) { + var t = this._currentElement.type, n = t.contextTypes; + if (!n) { + return m; + } + var r = {}; + for (var o in n) { + r[o] = e[o]; + } + return r + }, _processContext: function (e) { + return this._maskContext(e) + }, _processChildContext: function (e) { + var t, n = this._currentElement.type, r = this._instance; + if (r.getChildContext && (t = r.getChildContext()), t) { + "object" != typeof n.childContextTypes && a("107", + this.getName() || "ReactCompositeComponent"); + for (var o in t) { + o in n.childContextTypes || a("108", + this.getName() || "ReactCompositeComponent", o); + } + return s({}, e, t) + } + return e + }, _checkContextTypes: function (e, t, n) { + }, receiveComponent: function (e, t, n) { + var r = this._currentElement, o = this._context; + this._pendingElement = null, this.updateComponent(t, r, e, o, n) + }, performUpdateIfNecessary: function (e) { + null != this._pendingElement ? h.receiveComponent(this, this._pendingElement, e, + this._context) : null !== this._pendingStateQueue || this._pendingForceUpdate + ? this.updateComponent(e, this._currentElement, this._currentElement, this._context, + this._context) : this._updateBatchNumber = null + }, updateComponent: function (e, t, n, r, o) { + var i = this._instance; + null == i && a("136", this.getName() || "ReactCompositeComponent"); + var s, u = !1; + this._context === o ? s = i.context : (s = this._processContext(o), u = !0); + var l = t.props, c = n.props; + t !== n && (u = !0), u && i.componentWillReceiveProps && i.componentWillReceiveProps( + c, s); + var p = this._processPendingState(c, s), d = !0; + this._pendingForceUpdate || (i.shouldComponentUpdate ? d = i.shouldComponentUpdate(c, + p, s) : this._compositeType === y.PureClass && (d = !v(l, c) || !v(i.state, + p))), this._updateBatchNumber = null, d + ? (this._pendingForceUpdate = !1, this._performComponentUpdate(n, c, p, s, e, o)) + : (this._currentElement = n, this._context = o, i.props = c, i.state = p, i.context = s) + }, _processPendingState: function (e, t) { + var n = this._instance, r = this._pendingStateQueue, o = this._pendingReplaceState; + if (this._pendingReplaceState = !1, this._pendingStateQueue = null, !r) { + return n.state; + } + if (o && 1 === r.length) { + return r[0]; + } + for (var i = s({}, o ? r[0] : n.state), a = o ? 1 : 0; a < r.length; a++) { + var u = r[a]; + s(i, "function" == typeof u ? u.call(n, i, e, t) : u) + } + return i + }, _performComponentUpdate: function (e, t, n, r, o, i) { + var a, s, u, l = this._instance, c = Boolean(l.componentDidUpdate); + c && (a = l.props, s = l.state, u = l.context), l.componentWillUpdate + && l.componentWillUpdate(t, n, + r), this._currentElement = e, this._context = i, l.props = t, l.state = n, l.context = r, this._updateRenderedComponent( + o, i), c && o.getReactMountReady().enqueue(l.componentDidUpdate.bind(l, a, s, u), l) + }, _updateRenderedComponent: function (e, t) { + var n = this._renderedComponent, r = n._currentElement, + o = this._renderValidatedComponent(); + if (g(r, o)) { + h.receiveComponent(n, o, e, this._processChildContext(t)); + } else { + var i = h.getHostNode(n); + h.unmountComponent(n, !1); + var a = f.getType(o); + this._renderedNodeType = a; + var s = this._instantiateReactComponent(o, a !== f.EMPTY); + this._renderedComponent = s; + var u = h.mountComponent(s, e, this._hostParent, this._hostContainerInfo, + this._processChildContext(t), 0); + this._replaceNodeWithMarkup(i, u, n) + } + }, _replaceNodeWithMarkup: function (e, t, n) { + l.replaceNodeWithMarkup(e, t, n) + }, _renderValidatedComponentWithoutOwnerOrContext: function () { + return this._instance.render() + }, _renderValidatedComponent: function () { + var e; + if (this._compositeType !== y.StatelessFunctional) { + c.current = this; + try { + e = this._renderValidatedComponentWithoutOwnerOrContext() + } finally { + c.current = null + } + } else { + e = this._renderValidatedComponentWithoutOwnerOrContext(); + } + return null === e || !1 === e || u.isValidElement(e) || a("109", + this.getName() || "ReactCompositeComponent"), e + }, attachRef: function (e, t) { + var n = this.getPublicInstance(); + null == n && a("110"); + var r = t.getPublicInstance(); + (n.refs === m ? n.refs = {} : n.refs)[e] = r + }, detachRef: function (e) { + delete this.getPublicInstance().refs[e] + }, getName: function () { + var e = this._currentElement.type, t = this._instance && this._instance.constructor; + return e.displayName || t && t.displayName || e.name || t && t.name || null + }, getPublicInstance: function () { + var e = this._instance; + return this._compositeType === y.StatelessFunctional ? null : e + }, _instantiateReactComponent: null + }; + t.exports = C + }, { + 112: 112, + 116: 116, + 119: 119, + 120: 120, + 130: 130, + 137: 137, + 141: 141, + 142: 142, + 143: 143, + 28: 28, + 50: 50, + 57: 57, + 58: 58, + 62: 62, + 66: 66 + }], + 30: [function (e, t, n) { + "use strict"; + var r = e(33), o = e(47), i = e(60), a = e(66), s = e(71), u = e(72), l = e(96), + c = e(103), p = e(113); + e(142); + o.inject(); + var d = { + findDOMNode: l, + render: i.render, + unmountComponentAtNode: i.unmountComponentAtNode, + version: u, + unstable_batchedUpdates: s.batchedUpdates, + unstable_renderSubtreeIntoContainer: p + }; + "undefined" != typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" + == typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject && __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ + ComponentTree: { + getClosestInstanceFromNode: r.getClosestInstanceFromNode, + getNodeFromInstance: function (e) { + return e._renderedComponent && (e = c(e)), e ? r.getNodeFromInstance(e) : null + } + }, Mount: i, Reconciler: a + }); + t.exports = d + }, {103: 103, 113: 113, 142: 142, 33: 33, 47: 47, 60: 60, 66: 66, 71: 71, 72: 72, 96: 96}], + 31: [function (e, t, n) { + "use strict"; + + function r(e) { + if (e) { + var t = e._currentElement._owner || null; + if (t) { + var n = t.getName(); + if (n) { + return " This DOM node was rendered by `" + n + "`." + } + } + } + return "" + } + + function o(e, t) { + t && (Y[e._tag] && (null != t.children || null != t.dangerouslySetInnerHTML) && m("137", + e._tag, e._currentElement._owner ? " Check the render method of " + + e._currentElement._owner.getName() + "." : ""), null != t.dangerouslySetInnerHTML + && (null != t.children && m("60"), "object" == typeof t.dangerouslySetInnerHTML && B + in t.dangerouslySetInnerHTML || m("61")), null != t.style && "object" != typeof t.style + && m("62", r(e))) + } + + function i(e, t, n, r) { + if (!(r instanceof R)) { + var o = e._hostContainerInfo, i = o._node && o._node.nodeType === H, + s = i ? o._node : o._ownerDocument; + F(t, s), r.getReactMountReady().enqueue(a, + {inst: e, registrationName: t, listener: n}) + } + } + + function a() { + var e = this; + x.putListener(e.inst, e.registrationName, e.listener) + } + + function s() { + var e = this; + S.postMountWrapper(e) + } + + function u() { + var e = this; + I.postMountWrapper(e) + } + + function l() { + var e = this; + N.postMountWrapper(e) + } + + function c() { + var e = this; + e._rootNodeID || m("63"); + var t = U(e); + switch (t || m("64"), e._tag) { + case"iframe": + case"object": + e._wrapperState.listeners = [T.trapBubbledEvent("topLoad", "load", t)]; + break; + case"video": + case"audio": + e._wrapperState.listeners = []; + for (var n in q) { + q.hasOwnProperty(n) && e._wrapperState.listeners.push( + T.trapBubbledEvent(n, q[n], t)); + } + break; + case"source": + e._wrapperState.listeners = [T.trapBubbledEvent("topError", "error", t)]; + break; + case"img": + e._wrapperState.listeners = [T.trapBubbledEvent("topError", "error", t), + T.trapBubbledEvent("topLoad", "load", t)]; + break; + case"form": + e._wrapperState.listeners = [T.trapBubbledEvent("topReset", "reset", t), + T.trapBubbledEvent("topSubmit", "submit", t)]; + break; + case"input": + case"select": + case"textarea": + e._wrapperState.listeners = [T.trapBubbledEvent("topInvalid", "invalid", t)] + } + } + + function p() { + M.postUpdateWrapper(this) + } + + function d(e) { + G.call(Q, e) || (X.test(e) || m("65", e), Q[e] = !0) + } + + function f(e, t) { + return e.indexOf("-") >= 0 || null != t.is + } + + function h(e) { + var t = e.type; + d(t), this._currentElement = e, this._tag = t.toLowerCase(), this._namespaceURI = null, this._renderedChildren = null, this._previousStyle = null, this._previousStyleCopy = null, this._hostNode = null, this._hostParent = null, this._rootNodeID = 0, this._domID = 0, this._hostContainerInfo = null, this._wrapperState = null, this._topLevelWrapper = null, this._flags = 0 + } + + var m = e(112), v = e(143), g = e(2), y = e(5), _ = e(9), C = e(10), b = e(11), E = e(12), + x = e(16), w = e(17), T = e(25), k = e(32), P = e(33), S = e(38), N = e(39), M = e(40), + I = e(43), O = (e(58), e(61)), R = e(68), A = (e(129), e(95)), + D = (e(137), e(109), e(141), e(118), e(142), k), L = x.deleteListener, + U = P.getNodeFromInstance, F = T.listenTo, j = w.registrationNameModules, + V = {string: !0, number: !0}, B = "__html", W = { + children: null, + dangerouslySetInnerHTML: null, + suppressContentEditableWarning: null + }, H = 11, q = { + topAbort: "abort", + topCanPlay: "canplay", + topCanPlayThrough: "canplaythrough", + topDurationChange: "durationchange", + topEmptied: "emptied", + topEncrypted: "encrypted", + topEnded: "ended", + topError: "error", + topLoadedData: "loadeddata", + topLoadedMetadata: "loadedmetadata", + topLoadStart: "loadstart", + topPause: "pause", + topPlay: "play", + topPlaying: "playing", + topProgress: "progress", + topRateChange: "ratechange", + topSeeked: "seeked", + topSeeking: "seeking", + topStalled: "stalled", + topSuspend: "suspend", + topTimeUpdate: "timeupdate", + topVolumeChange: "volumechange", + topWaiting: "waiting" + }, K = { + area: !0, + base: !0, + br: !0, + col: !0, + embed: !0, + hr: !0, + img: !0, + input: !0, + keygen: !0, + link: !0, + meta: !0, + param: !0, + source: !0, + track: !0, + wbr: !0 + }, z = {listing: !0, pre: !0, textarea: !0}, Y = v({menuitem: !0}, K), + X = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/, Q = {}, G = {}.hasOwnProperty, $ = 1; + h.displayName = "ReactDOMComponent", h.Mixin = { + mountComponent: function (e, t, n, r) { + this._rootNodeID = $++, this._domID = n._idCounter++, this._hostParent = t, this._hostContainerInfo = n; + var i = this._currentElement.props; + switch (this._tag) { + case"audio": + case"form": + case"iframe": + case"img": + case"link": + case"object": + case"source": + case"video": + this._wrapperState = {listeners: null}, e.getReactMountReady().enqueue(c, this); + break; + case"input": + S.mountWrapper(this, i, t), i = S.getHostProps(this, + i), e.getReactMountReady().enqueue(c, this); + break; + case"option": + N.mountWrapper(this, i, t), i = N.getHostProps(this, i); + break; + case"select": + M.mountWrapper(this, i, t), i = M.getHostProps(this, + i), e.getReactMountReady().enqueue(c, this); + break; + case"textarea": + I.mountWrapper(this, i, t), i = I.getHostProps(this, + i), e.getReactMountReady().enqueue(c, this) + } + o(this, i); + var a, p; + null != t ? (a = t._namespaceURI, p = t._tag) : n._tag + && (a = n._namespaceURI, p = n._tag), (null == a || a === C.svg && "foreignobject" + === p) && (a = C.html), a === C.html && ("svg" === this._tag ? a = C.svg : "math" + === this._tag && (a = C.mathml)), this._namespaceURI = a; + var d; + if (e.useCreateElement) { + var f, h = n._ownerDocument; + if (a === C.html) { + if ("script" === this._tag) { + var m = h.createElement("div"), v = this._currentElement.type; + m.innerHTML = "<" + v + ">", f = m.removeChild(m.firstChild) + } else { + f = i.is ? h.createElement(this._currentElement.type, i.is) + : h.createElement(this._currentElement.type); + } + } else { + f = h.createElementNS(a, + this._currentElement.type); + } + P.precacheNode(this, f), this._flags |= D.hasCachedChildNodes, this._hostParent + || E.setAttributeForRoot(f), this._updateDOMProperties(null, i, e); + var y = _(f); + this._createInitialChildren(e, i, r, y), d = y + } else { + var b = this._createOpenTagMarkupAndPutListeners(e, i), + x = this._createContentMarkup(e, i, r); + d = !x && K[this._tag] ? b + "/>" : b + ">" + x + "" + } + switch (this._tag) { + case"input": + e.getReactMountReady().enqueue(s, this), i.autoFocus + && e.getReactMountReady().enqueue(g.focusDOMComponent, this); + break; + case"textarea": + e.getReactMountReady().enqueue(u, this), i.autoFocus + && e.getReactMountReady().enqueue(g.focusDOMComponent, this); + break; + case"select": + case"button": + i.autoFocus && e.getReactMountReady().enqueue(g.focusDOMComponent, this); + break; + case"option": + e.getReactMountReady().enqueue(l, this) + } + return d + }, _createOpenTagMarkupAndPutListeners: function (e, t) { + var n = "<" + this._currentElement.type; + for (var r in t) { + if (t.hasOwnProperty(r)) { + var o = t[r]; + if (null != o) { + if (j.hasOwnProperty(r)) { + o && i(this, r, o, e); + } else { + "style" === r && (o && (o = this._previousStyleCopy = v({}, + t.style)), o = y.createMarkupForStyles(o, this)); + var a = null; + null != this._tag && f(this._tag, t) ? W.hasOwnProperty(r) + || (a = E.createMarkupForCustomAttribute(r, o)) + : a = E.createMarkupForProperty( + r, o), a && (n += " " + a) + } + } + } + } + return e.renderToStaticMarkup ? n : (this._hostParent || (n += " " + + E.createMarkupForRoot()), n += " " + E.createMarkupForID(this._domID)) + }, _createContentMarkup: function (e, t, n) { + var r = "", o = t.dangerouslySetInnerHTML; + if (null != o) { + null != o.__html && (r = o.__html); + } else { + var i = V[typeof t.children] ? t.children : null, a = null != i ? null : t.children; + if (null != i) { + r = A(i); + } else if (null != a) { + var s = this.mountChildren(a, e, n); + r = s.join("") + } + } + return z[this._tag] && "\n" === r.charAt(0) ? "\n" + r : r + }, _createInitialChildren: function (e, t, n, r) { + var o = t.dangerouslySetInnerHTML; + if (null != o) { + null != o.__html && _.queueHTML(r, o.__html); + } else { + var i = V[typeof t.children] ? t.children : null, a = null != i ? null : t.children; + if (null != i) { + "" !== i && _.queueText(r, i); + } else if (null + != a) { + for (var s = this.mountChildren(a, e, n), u = 0; u < s.length; + u++) { + _.queueChild(r, s[u]) + } + } + } + }, receiveComponent: function (e, t, n) { + var r = this._currentElement; + this._currentElement = e, this.updateComponent(t, r, e, n) + }, updateComponent: function (e, t, n, r) { + var i = t.props, a = this._currentElement.props; + switch (this._tag) { + case"input": + i = S.getHostProps(this, i), a = S.getHostProps(this, a); + break; + case"option": + i = N.getHostProps(this, i), a = N.getHostProps(this, a); + break; + case"select": + i = M.getHostProps(this, i), a = M.getHostProps(this, a); + break; + case"textarea": + i = I.getHostProps(this, i), a = I.getHostProps(this, a) + } + switch (o(this, a), this._updateDOMProperties(i, a, e), this._updateDOMChildren(i, a, + e, r), this._tag) { + case"input": + S.updateWrapper(this); + break; + case"textarea": + I.updateWrapper(this); + break; + case"select": + e.getReactMountReady().enqueue(p, this) + } + }, _updateDOMProperties: function (e, t, n) { + var r, o, a; + for (r in e) { + if (!t.hasOwnProperty(r) && e.hasOwnProperty(r) && null + != e[r]) { + if ("style" === r) { + var s = this._previousStyleCopy; + for (o in s) { + s.hasOwnProperty(o) && (a = a || {}, a[o] = ""); + } + this._previousStyleCopy = null + } else { + j.hasOwnProperty(r) ? e[r] && L(this, r) : f(this._tag, e) ? W.hasOwnProperty( + r) || E.deleteValueForAttribute(U(this), r) : (b.properties[r] + || b.isCustomAttribute(r)) && E.deleteValueForProperty(U(this), r); + } + } + } + for (r in t) { + var u = t[r], + l = "style" === r ? this._previousStyleCopy : null != e ? e[r] : void 0; + if (t.hasOwnProperty(r) && u !== l && (null != u || null != l)) { + if ("style" + === r) { + if (u ? u = this._previousStyleCopy = v({}, u) + : this._previousStyleCopy = null, l) { + for (o in l) { + !l.hasOwnProperty(o) || u && u.hasOwnProperty(o) || (a = a + || {}, a[o] = ""); + } + for (o in u) { + u.hasOwnProperty(o) && l[o] !== u[o] && (a = a || {}, a[o] = u[o]) + } + } else { + a = u; + } + } else if (j.hasOwnProperty(r)) { + u ? i(this, r, u, n) : l && L(this, + r); + } else if (f(this._tag, t)) { + W.hasOwnProperty(r) || E.setValueForAttribute( + U(this), r, u); + } else if (b.properties[r] || b.isCustomAttribute(r)) { + var c = U(this); + null != u ? E.setValueForProperty(c, r, u) : E.deleteValueForProperty(c, r) + } + } + } + a && y.setValueForStyles(U(this), a, this) + }, _updateDOMChildren: function (e, t, n, r) { + var o = V[typeof e.children] ? e.children : null, + i = V[typeof t.children] ? t.children : null, + a = e.dangerouslySetInnerHTML && e.dangerouslySetInnerHTML.__html, + s = t.dangerouslySetInnerHTML && t.dangerouslySetInnerHTML.__html, + u = null != o ? null : e.children, l = null != i ? null : t.children, + c = null != o || null != a, p = null != i || null != s; + null != u && null == l ? this.updateChildren(null, n, r) : c && !p + && this.updateTextContent(""), null != i ? o !== i && this.updateTextContent("" + i) + : null != s ? a !== s && this.updateMarkup("" + s) : null != l + && this.updateChildren(l, n, r) + }, getHostNode: function () { + return U(this) + }, unmountComponent: function (e) { + switch (this._tag) { + case"audio": + case"form": + case"iframe": + case"img": + case"link": + case"object": + case"source": + case"video": + var t = this._wrapperState.listeners; + if (t) { + for (var n = 0; n < t.length; n++) { + t[n].remove(); + } + } + break; + case"html": + case"head": + case"body": + m("66", this._tag) + } + this.unmountChildren(e), P.uncacheNode(this), x.deleteAllListeners( + this), this._rootNodeID = 0, this._domID = 0, this._wrapperState = null + }, getPublicInstance: function () { + return U(this) + } + }, v(h.prototype, h.Mixin, O.Mixin), t.exports = h + }, { + 10: 10, + 109: 109, + 11: 11, + 112: 112, + 118: 118, + 12: 12, + 129: 129, + 137: 137, + 141: 141, + 142: 142, + 143: 143, + 16: 16, + 17: 17, + 2: 2, + 25: 25, + 32: 32, + 33: 33, + 38: 38, + 39: 39, + 40: 40, + 43: 43, + 5: 5, + 58: 58, + 61: 61, + 68: 68, + 9: 9, + 95: 95 + }], + 32: [function (e, t, n) { + "use strict"; + var r = {hasCachedChildNodes: 1}; + t.exports = r + }, {}], + 33: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return 1 === e.nodeType && e.getAttribute(h) === String(t) || 8 === e.nodeType + && e.nodeValue === " react-text: " + t + " " || 8 === e.nodeType && e.nodeValue + === " react-empty: " + t + " " + } + + function o(e) { + for (var t; t = e._renderedComponent;) { + e = t; + } + return e + } + + function i(e, t) { + var n = o(e); + n._hostNode = t, t[v] = n + } + + function a(e) { + var t = e._hostNode; + t && (delete t[v], e._hostNode = null) + } + + function s(e, t) { + if (!(e._flags & m.hasCachedChildNodes)) { + var n = e._renderedChildren, a = t.firstChild; + e:for (var s in n) { + if (n.hasOwnProperty(s)) { + var u = n[s], l = o(u)._domID; + if (0 !== l) { + for (; null !== a; a = a.nextSibling) { + if (r(a, l)) { + i(u, a); + continue e + } + } + p("32", l) + } + } + } + e._flags |= m.hasCachedChildNodes + } + } + + function u(e) { + if (e[v]) { + return e[v]; + } + for (var t = []; !e[v];) { + if (t.push(e), !e.parentNode) { + return null; + } + e = e.parentNode + } + for (var n, r; e && (r = e[v]); e = t.pop()) { + n = r, t.length && s(r, e); + } + return n + } + + function l(e) { + var t = u(e); + return null != t && t._hostNode === e ? t : null + } + + function c(e) { + if (void 0 === e._hostNode && p("33"), e._hostNode) { + return e._hostNode; + } + for (var t = []; !e._hostNode;) { + t.push(e), e._hostParent || p("34"), e = e._hostParent; + } + for (; t.length; e = t.pop()) { + s(e, e._hostNode); + } + return e._hostNode + } + + var p = e(112), d = e(11), f = e(32), h = (e(137), d.ID_ATTRIBUTE_NAME), m = f, + v = "__reactInternalInstance$" + Math.random().toString(36).slice(2), g = { + getClosestInstanceFromNode: u, + getInstanceFromNode: l, + getNodeFromInstance: c, + precacheChildNodes: s, + precacheNode: i, + uncacheNode: a + }; + t.exports = g + }, {11: 11, 112: 112, 137: 137, 32: 32}], + 34: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return { + _topLevelWrapper: e, + _idCounter: 1, + _ownerDocument: t ? t.nodeType === o ? t : t.ownerDocument : null, + _node: t, + _tag: t ? t.nodeName.toLowerCase() : null, + _namespaceURI: t ? t.namespaceURI : null + } + } + + var o = (e(118), 9); + t.exports = r + }, {118: 118}], + 35: [function (e, t, n) { + "use strict"; + var r = e(143), o = e(9), i = e(33), a = function (e) { + this._currentElement = null, this._hostNode = null, this._hostParent = null, this._hostContainerInfo = null, this._domID = 0 + }; + r(a.prototype, { + mountComponent: function (e, t, n, r) { + var a = n._idCounter++; + this._domID = a, this._hostParent = t, this._hostContainerInfo = n; + var s = " react-empty: " + this._domID + " "; + if (e.useCreateElement) { + var u = n._ownerDocument, l = u.createComment(s); + return i.precacheNode(this, l), o(l) + } + return e.renderToStaticMarkup ? "" : "" + }, receiveComponent: function () { + }, getHostNode: function () { + return i.getNodeFromInstance(this) + }, unmountComponent: function () { + i.uncacheNode(this) + } + }), t.exports = a + }, {143: 143, 33: 33, 9: 9}], + 36: [function (e, t, n) { + "use strict"; + var r = {useCreateElement: !0, useFiber: !1}; + t.exports = r + }, {}], + 37: [function (e, t, n) { + "use strict"; + var r = e(8), o = e(33), i = { + dangerouslyProcessChildrenUpdates: function (e, t) { + var n = o.getNodeFromInstance(e); + r.processUpdates(n, t) + } + }; + t.exports = i + }, {33: 33, 8: 8}], + 38: [function (e, t, n) { + "use strict"; + + function r() { + this._rootNodeID && d.updateWrapper(this) + } + + function o(e) { + return "checkbox" === e.type || "radio" === e.type ? null != e.checked : null != e.value + } + + function i(e) { + var t = this._currentElement.props, n = l.executeOnChange(t, e); + p.asap(r, this); + var o = t.name; + if ("radio" === t.type && null != o) { + for (var i = c.getNodeFromInstance(this), s = i; s.parentNode;) { + s = s.parentNode; + } + for (var u = s.querySelectorAll( + "input[name=" + JSON.stringify("" + o) + '][type="radio"]'), d = 0; d < u.length; + d++) { + var f = u[d]; + if (f !== i && f.form === i.form) { + var h = c.getInstanceFromNode(f); + h || a("90"), p.asap(r, h) + } + } + } + return n + } + + var a = e(112), s = e(143), u = e(12), l = e(23), c = e(33), p = e(71), + d = (e(137), e(142), { + getHostProps: function (e, t) { + var n = l.getValue(t), r = l.getChecked(t); + return s({type: void 0, step: void 0, min: void 0, max: void 0}, t, { + defaultChecked: void 0, + defaultValue: void 0, + value: null != n ? n : e._wrapperState.initialValue, + checked: null != r ? r : e._wrapperState.initialChecked, + onChange: e._wrapperState.onChange + }) + }, mountWrapper: function (e, t) { + var n = t.defaultValue; + e._wrapperState = { + initialChecked: null != t.checked ? t.checked : t.defaultChecked, + initialValue: null != t.value ? t.value : n, + listeners: null, + onChange: i.bind(e), + controlled: o(t) + } + }, updateWrapper: function (e) { + var t = e._currentElement.props, n = t.checked; + null != n && u.setValueForProperty(c.getNodeFromInstance(e), "checked", n || !1); + var r = c.getNodeFromInstance(e), o = l.getValue(t); + if (null != o) { + if (0 === o && "" === r.value) { + r.value = "0"; + } else if ("number" + === t.type) { + var i = parseFloat(r.value, 10) || 0; + o != i && (r.value = "" + o) + } else { + o != r.value && (r.value = "" + o); + } + } else { + null == t.value && null + != t.defaultValue && r.defaultValue !== "" + t.defaultValue + && (r.defaultValue = "" + + t.defaultValue), null == t.checked && null != t.defaultChecked + && (r.defaultChecked = !!t.defaultChecked) + } + }, postMountWrapper: function (e) { + var t = e._currentElement.props, n = c.getNodeFromInstance(e); + switch (t.type) { + case"submit": + case"reset": + break; + case"color": + case"date": + case"datetime": + case"datetime-local": + case"month": + case"time": + case"week": + n.value = "", n.value = n.defaultValue; + break; + default: + n.value = n.value + } + var r = n.name; + "" !== r + && (n.name = ""), n.defaultChecked = !n.defaultChecked, n.defaultChecked = !n.defaultChecked, "" + !== r && (n.name = r) + } + }); + t.exports = d + }, {112: 112, 12: 12, 137: 137, 142: 142, 143: 143, 23: 23, 33: 33, 71: 71}], + 39: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = ""; + return i.Children.forEach(e, function (e) { + null != e && ("string" == typeof e || "number" == typeof e ? t += e : u || (u = !0)) + }), t + } + + var o = e(143), i = e(120), a = e(33), s = e(40), u = (e(142), !1), l = { + mountWrapper: function (e, t, n) { + var o = null; + if (null != n) { + var i = n; + "optgroup" === i._tag && (i = i._hostParent), null != i && "select" === i._tag + && (o = s.getSelectValueContext(i)) + } + var a = null; + if (null != o) { + var u; + if (u = null != t.value ? t.value + "" : r(t.children), a = !1, Array.isArray(o)) { + for (var l = 0; l < o.length; l++) { + if ("" + o[l] === u) { + a = !0; + break + } + } + } else { + a = "" + o === u + } + } + e._wrapperState = {selected: a} + }, postMountWrapper: function (e) { + var t = e._currentElement.props; + null != t.value && a.getNodeFromInstance(e).setAttribute("value", t.value) + }, getHostProps: function (e, t) { + var n = o({selected: void 0, children: void 0}, t); + null != e._wrapperState.selected && (n.selected = e._wrapperState.selected); + var i = r(t.children); + return i && (n.children = i), n + } + }; + t.exports = l + }, {120: 120, 142: 142, 143: 143, 33: 33, 40: 40}], + 40: [function (e, t, n) { + "use strict"; + + function r() { + if (this._rootNodeID && this._wrapperState.pendingUpdate) { + this._wrapperState.pendingUpdate = !1; + var e = this._currentElement.props, t = s.getValue(e); + null != t && o(this, Boolean(e.multiple), t) + } + } + + function o(e, t, n) { + var r, o, i = u.getNodeFromInstance(e).options; + if (t) { + for (r = {}, o = 0; o < n.length; o++) { + r["" + n[o]] = !0; + } + for (o = 0; o < i.length; o++) { + var a = r.hasOwnProperty(i[o].value); + i[o].selected !== a && (i[o].selected = a) + } + } else { + for (r = "" + n, o = 0; o < i.length; o++) { + if (i[o].value + === r) { + return void (i[o].selected = !0); + } + } + i.length && (i[0].selected = !0) + } + } + + function i(e) { + var t = this._currentElement.props, n = s.executeOnChange(t, e); + return this._rootNodeID && (this._wrapperState.pendingUpdate = !0), l.asap(r, this), n + } + + var a = e(143), s = e(23), u = e(33), l = e(71), c = (e(142), !1), p = { + getHostProps: function (e, t) { + return a({}, t, {onChange: e._wrapperState.onChange, value: void 0}) + }, mountWrapper: function (e, t) { + var n = s.getValue(t); + e._wrapperState = { + pendingUpdate: !1, + initialValue: null != n ? n : t.defaultValue, + listeners: null, + onChange: i.bind(e), + wasMultiple: Boolean(t.multiple) + }, void 0 === t.value || void 0 === t.defaultValue || c || (c = !0) + }, getSelectValueContext: function (e) { + return e._wrapperState.initialValue + }, postUpdateWrapper: function (e) { + var t = e._currentElement.props; + e._wrapperState.initialValue = void 0; + var n = e._wrapperState.wasMultiple; + e._wrapperState.wasMultiple = Boolean(t.multiple); + var r = s.getValue(t); + null != r ? (e._wrapperState.pendingUpdate = !1, o(e, Boolean(t.multiple), r)) : n + !== Boolean(t.multiple) && (null != t.defaultValue ? o(e, Boolean(t.multiple), + t.defaultValue) : o(e, Boolean(t.multiple), t.multiple ? [] : "")) + } + }; + t.exports = p + }, {142: 142, 143: 143, 23: 23, 33: 33, 71: 71}], + 41: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return e === n && t === r + } + + function o(e) { + var t = document.selection, n = t.createRange(), r = n.text.length, o = n.duplicate(); + o.moveToElementText(e), o.setEndPoint("EndToStart", n); + var i = o.text.length; + return {start: i, end: i + r} + } + + function i(e) { + var t = window.getSelection && window.getSelection(); + if (!t || 0 === t.rangeCount) { + return null; + } + var n = t.anchorNode, o = t.anchorOffset, i = t.focusNode, a = t.focusOffset, + s = t.getRangeAt(0); + try { + s.startContainer.nodeType, s.endContainer.nodeType + } catch (e) { + return null + } + var u = r(t.anchorNode, t.anchorOffset, t.focusNode, t.focusOffset), + l = u ? 0 : s.toString().length, c = s.cloneRange(); + c.selectNodeContents(e), c.setEnd(s.startContainer, s.startOffset); + var p = r(c.startContainer, c.startOffset, c.endContainer, c.endOffset), + d = p ? 0 : c.toString().length, f = d + l, h = document.createRange(); + h.setStart(n, o), h.setEnd(i, a); + var m = h.collapsed; + return {start: m ? f : d, end: m ? d : f} + } + + function a(e, t) { + var n, r, o = document.selection.createRange().duplicate(); + void 0 === t.end ? (n = t.start, r = n) : t.start > t.end ? (n = t.end, r = t.start) + : (n = t.start, r = t.end), o.moveToElementText(e), o.moveStart("character", + n), o.setEndPoint("EndToStart", o), o.moveEnd("character", r - n), o.select() + } + + function s(e, t) { + if (window.getSelection) { + var n = window.getSelection(), r = e[c()].length, o = Math.min(t.start, r), + i = void 0 === t.end ? o : Math.min(t.end, r); + if (!n.extend && o > i) { + var a = i; + i = o, o = a + } + var s = l(e, o), u = l(e, i); + if (s && u) { + var p = document.createRange(); + p.setStart(s.node, s.offset), n.removeAllRanges(), o > i ? (n.addRange(p), n.extend( + u.node, u.offset)) : (p.setEnd(u.node, u.offset), n.addRange(p)) + } + } + } + + var u = e(123), l = e(105), c = e(106), + p = u.canUseDOM && "selection" in document && !("getSelection" in window), + d = {getOffsets: p ? o : i, setOffsets: p ? a : s}; + t.exports = d + }, {105: 105, 106: 106, 123: 123}], + 42: [function (e, t, n) { + "use strict"; + var r = e(112), o = e(143), i = e(8), a = e(9), s = e(33), u = e(95), + l = (e(137), e(118), function (e) { + this._currentElement = e, this._stringText = "" + e, + this._hostNode = null, this._hostParent = null, this._domID = 0, this._mountIndex = 0, this._closingComment = null, this._commentNodes = null + }); + o(l.prototype, { + mountComponent: function (e, t, n, r) { + var o = n._idCounter++, i = " react-text: " + o + " "; + if (this._domID = o, this._hostParent = t, e.useCreateElement) { + var l = n._ownerDocument, c = l.createComment(i), + p = l.createComment(" /react-text "), d = a(l.createDocumentFragment()); + return a.queueChild(d, a(c)), this._stringText && a.queueChild(d, + a(l.createTextNode(this._stringText))), a.queueChild(d, a(p)), s.precacheNode( + this, c), this._closingComment = p, d + } + var f = u(this._stringText); + return e.renderToStaticMarkup ? f : "" + f + "" + }, receiveComponent: function (e, t) { + if (e !== this._currentElement) { + this._currentElement = e; + var n = "" + e; + if (n !== this._stringText) { + this._stringText = n; + var r = this.getHostNode(); + i.replaceDelimitedText(r[0], r[1], n) + } + } + }, getHostNode: function () { + var e = this._commentNodes; + if (e) { + return e; + } + if (!this._closingComment) { + for (var t = s.getNodeFromInstance(this), + n = t.nextSibling; ;) { + if (null == n && r("67", this._domID), 8 === n.nodeType && " /react-text " + === n.nodeValue) { + this._closingComment = n; + break + } + n = n.nextSibling + } + } + return e = [this._hostNode, this._closingComment], this._commentNodes = e, e + }, unmountComponent: function () { + this._closingComment = null, this._commentNodes = null, s.uncacheNode(this) + } + }), t.exports = l + }, {112: 112, 118: 118, 137: 137, 143: 143, 33: 33, 8: 8, 9: 9, 95: 95}], + 43: [function (e, t, n) { + "use strict"; + + function r() { + this._rootNodeID && c.updateWrapper(this) + } + + function o(e) { + var t = this._currentElement.props, n = s.executeOnChange(t, e); + return l.asap(r, this), n + } + + var i = e(112), a = e(143), s = e(23), u = e(33), l = e(71), c = (e(137), e(142), { + getHostProps: function (e, t) { + return null != t.dangerouslySetInnerHTML && i("91"), a({}, t, { + value: void 0, + defaultValue: void 0, + children: "" + e._wrapperState.initialValue, + onChange: e._wrapperState.onChange + }) + }, mountWrapper: function (e, t) { + var n = s.getValue(t), r = n; + if (null == n) { + var a = t.defaultValue, u = t.children; + null != u && (null != a && i("92"), Array.isArray(u) && (u.length <= 1 || i( + "93"), u = u[0]), a = "" + u), null == a && (a = ""), r = a + } + e._wrapperState = {initialValue: "" + r, listeners: null, onChange: o.bind(e)} + }, updateWrapper: function (e) { + var t = e._currentElement.props, n = u.getNodeFromInstance(e), r = s.getValue(t); + if (null != r) { + var o = "" + r; + o !== n.value && (n.value = o), null == t.defaultValue && (n.defaultValue = o) + } + null != t.defaultValue && (n.defaultValue = t.defaultValue) + }, postMountWrapper: function (e) { + var t = u.getNodeFromInstance(e), n = t.textContent; + n === e._wrapperState.initialValue && (t.value = n) + } + }); + t.exports = c + }, {112: 112, 137: 137, 142: 142, 143: 143, 23: 23, 33: 33, 71: 71}], + 44: [function (e, t, n) { + "use strict"; + + function r(e, t) { + "_hostNode" in e || u("33"), "_hostNode" in t || u("33"); + for (var n = 0, r = e; r; r = r._hostParent) { + n++; + } + for (var o = 0, i = t; i; i = i._hostParent) { + o++; + } + for (; n - o > 0;) { + e = e._hostParent, n--; + } + for (; o - n > 0;) { + t = t._hostParent, o--; + } + for (var a = n; a--;) { + if (e === t) { + return e; + } + e = e._hostParent, t = t._hostParent + } + return null + } + + function o(e, t) { + "_hostNode" in e || u("35"), "_hostNode" in t || u("35"); + for (; t;) { + if (t === e) { + return !0; + } + t = t._hostParent + } + return !1 + } + + function i(e) { + return "_hostNode" in e || u("36"), e._hostParent + } + + function a(e, t, n) { + for (var r = []; e;) { + r.push(e), e = e._hostParent; + } + var o; + for (o = r.length; o-- > 0;) { + t(r[o], "captured", n); + } + for (o = 0; o < r.length; o++) { + t(r[o], "bubbled", n) + } + } + + function s(e, t, n, o, i) { + for (var a = e && t ? r(e, t) : null, s = []; e && e !== a;) { + s.push( + e), e = e._hostParent; + } + for (var u = []; t && t !== a;) { + u.push(t), t = t._hostParent; + } + var l; + for (l = 0; l < s.length; l++) { + n(s[l], "bubbled", o); + } + for (l = u.length; l-- > 0;) { + n(u[l], "captured", i) + } + } + + var u = e(112); + e(137); + t.exports = { + isAncestor: o, + getLowestCommonAncestor: r, + getParentInstance: i, + traverseTwoPhase: a, + traverseEnterLeave: s + } + }, {112: 112, 137: 137}], + 45: [function (e, t, n) { + "use strict"; + var r = e(120), o = e(30), i = o; + r.addons + && (r.__SECRET_INJECTED_REACT_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = i), t.exports = i + }, {120: 120, 30: 30}], + 46: [function (e, t, n) { + "use strict"; + + function r() { + this.reinitializeTransaction() + } + + var o = e(143), i = e(71), a = e(89), s = e(129), u = { + initialize: s, close: function () { + d.isBatchingUpdates = !1 + } + }, l = {initialize: s, close: i.flushBatchedUpdates.bind(i)}, c = [l, u]; + o(r.prototype, a, { + getTransactionWrappers: function () { + return c + } + }); + var p = new r, d = { + isBatchingUpdates: !1, batchedUpdates: function (e, t, n, r, o, i) { + var a = d.isBatchingUpdates; + return d.isBatchingUpdates = !0, a ? e(t, n, r, o, i) : p.perform(e, null, t, n, r, o, + i) + } + }; + t.exports = d + }, {129: 129, 143: 143, 71: 71, 89: 89}], + 47: [function (e, t, n) { + "use strict"; + + function r() { + x || (x = !0, y.EventEmitter.injectReactEventListener( + g), y.EventPluginHub.injectEventPluginOrder( + s), y.EventPluginUtils.injectComponentTree(d), y.EventPluginUtils.injectTreeTraversal( + h), y.EventPluginHub.injectEventPluginsByName({ + SimpleEventPlugin: E, + EnterLeaveEventPlugin: u, + ChangeEventPlugin: a, + SelectEventPlugin: b, + BeforeInputEventPlugin: i + }), y.HostComponent.injectGenericComponentClass( + p), y.HostComponent.injectTextComponentClass( + m), y.DOMProperty.injectDOMPropertyConfig(o), y.DOMProperty.injectDOMPropertyConfig( + l), y.DOMProperty.injectDOMPropertyConfig( + C), y.EmptyComponent.injectEmptyComponentFactory(function (e) { + return new f(e) + }), y.Updates.injectReconcileTransaction(_), y.Updates.injectBatchingStrategy( + v), y.Component.injectEnvironment(c)) + } + + var o = e(1), i = e(3), a = e(7), s = e(14), u = e(15), l = e(21), c = e(27), p = e(31), + d = e(33), f = e(35), h = e(44), m = e(42), v = e(46), g = e(52), y = e(55), _ = e(65), + C = e(73), b = e(74), E = e(75), x = !1; + t.exports = {inject: r} + }, { + 1: 1, + 14: 14, + 15: 15, + 21: 21, + 27: 27, + 3: 3, + 31: 31, + 33: 33, + 35: 35, + 42: 42, + 44: 44, + 46: 46, + 52: 52, + 55: 55, + 65: 65, + 7: 7, + 73: 73, + 74: 74, + 75: 75 + }], + 48: [function (e, t, n) { + "use strict"; + var r = "function" == typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; + t.exports = r + }, {}], + 49: [function (e, t, n) { + "use strict"; + var r, o = { + injectEmptyComponentFactory: function (e) { + r = e + } + }, i = { + create: function (e) { + return r(e) + } + }; + i.injection = o, t.exports = i + }, {}], + 50: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + try { + t(n) + } catch (e) { + null === o && (o = e) + } + } + + var o = null, i = { + invokeGuardedCallback: r, + invokeGuardedCallbackWithCatch: r, + rethrowCaughtError: function () { + if (o) { + var e = o; + throw o = null, e + } + } + }; + t.exports = i + }, {}], + 51: [function (e, t, n) { + "use strict"; + + function r(e) { + o.enqueueEvents(e), o.processEventQueue(!1) + } + + var o = e(16), i = { + handleTopLevel: function (e, t, n, i) { + r(o.extractEvents(e, t, n, i)) + } + }; + t.exports = i + }, {16: 16}], + 52: [function (e, t, n) { + "use strict"; + + function r(e) { + for (; e._hostParent;) { + e = e._hostParent; + } + var t = p.getNodeFromInstance(e), n = t.parentNode; + return p.getClosestInstanceFromNode(n) + } + + function o(e, t) { + this.topLevelType = e, this.nativeEvent = t, this.ancestors = [] + } + + function i(e) { + var t = f(e.nativeEvent), n = p.getClosestInstanceFromNode(t), o = n; + do { + e.ancestors.push(o), o = o && r(o) + } while (o); + for (var i = 0; i < e.ancestors.length; i++) { + n = e.ancestors[i], m._handleTopLevel( + e.topLevelType, n, e.nativeEvent, f(e.nativeEvent)) + } + } + + function a(e) { + e(h(window)) + } + + var s = e(143), u = e(122), l = e(123), c = e(24), p = e(33), d = e(71), f = e(102), + h = e(134); + s(o.prototype, { + destructor: function () { + this.topLevelType = null, this.nativeEvent = null, this.ancestors.length = 0 + } + }), c.addPoolingTo(o, c.twoArgumentPooler); + var m = { + _enabled: !0, + _handleTopLevel: null, + WINDOW_HANDLE: l.canUseDOM ? window : null, + setHandleTopLevel: function (e) { + m._handleTopLevel = e + }, + setEnabled: function (e) { + m._enabled = !!e + }, + isEnabled: function () { + return m._enabled + }, + trapBubbledEvent: function (e, t, n) { + return n ? u.listen(n, t, m.dispatchEvent.bind(null, e)) : null + }, + trapCapturedEvent: function (e, t, n) { + return n ? u.capture(n, t, m.dispatchEvent.bind(null, e)) : null + }, + monitorScrollValue: function (e) { + var t = a.bind(null, e); + u.listen(window, "scroll", t) + }, + dispatchEvent: function (e, t) { + if (m._enabled) { + var n = o.getPooled(e, t); + try { + d.batchedUpdates(i, n) + } finally { + o.release(n) + } + } + } + }; + t.exports = m + }, {102: 102, 122: 122, 123: 123, 134: 134, 143: 143, 24: 24, 33: 33, 71: 71}], + 53: [function (e, t, n) { + "use strict"; + var r = {logTopLevelRenders: !1}; + t.exports = r + }, {}], + 54: [function (e, t, n) { + "use strict"; + + function r(e) { + return s || a("111", e.type), new s(e) + } + + function o(e) { + return new u(e) + } + + function i(e) { + return e instanceof u + } + + var a = e(112), s = (e(137), null), u = null, l = { + injectGenericComponentClass: function (e) { + s = e + }, injectTextComponentClass: function (e) { + u = e + } + }, c = { + createInternalComponent: r, + createInstanceForText: o, + isTextComponent: i, + injection: l + }; + t.exports = c + }, {112: 112, 137: 137}], + 55: [function (e, t, n) { + "use strict"; + var r = e(11), o = e(16), i = e(18), a = e(28), s = e(49), u = e(25), l = e(54), + c = e(71), p = { + Component: a.injection, + DOMProperty: r.injection, + EmptyComponent: s.injection, + EventPluginHub: o.injection, + EventPluginUtils: i.injection, + EventEmitter: u.injection, + HostComponent: l.injection, + Updates: c.injection + }; + t.exports = p + }, {11: 11, 16: 16, 18: 18, 25: 25, 28: 28, 49: 49, 54: 54, 71: 71}], + 56: [function (e, t, n) { + "use strict"; + + function r(e) { + return i(document.documentElement, e) + } + + var o = e(41), i = e(126), a = e(131), s = e(132), u = { + hasSelectionCapabilities: function (e) { + var t = e && e.nodeName && e.nodeName.toLowerCase(); + return t && ("input" === t && "text" === e.type || "textarea" === t || "true" + === e.contentEditable) + }, getSelectionInformation: function () { + var e = s(); + return { + focusedElem: e, + selectionRange: u.hasSelectionCapabilities(e) ? u.getSelection(e) : null + } + }, restoreSelection: function (e) { + var t = s(), n = e.focusedElem, o = e.selectionRange; + t !== n && r(n) && (u.hasSelectionCapabilities(n) && u.setSelection(n, o), a(n)) + }, getSelection: function (e) { + var t; + if ("selectionStart" in e) { + t = { + start: e.selectionStart, + end: e.selectionEnd + }; + } else if (document.selection && e.nodeName && "input" + === e.nodeName.toLowerCase()) { + var n = document.selection.createRange(); + n.parentElement() === e && (t = { + start: -n.moveStart("character", -e.value.length), + end: -n.moveEnd("character", -e.value.length) + }) + } else { + t = o.getOffsets(e); + } + return t || {start: 0, end: 0} + }, setSelection: function (e, t) { + var n = t.start, r = t.end; + if (void 0 === r && (r = n), "selectionStart" + in e) { + e.selectionStart = n, e.selectionEnd = Math.min(r, + e.value.length); + } else if (document.selection && e.nodeName && "input" + === e.nodeName.toLowerCase()) { + var i = e.createTextRange(); + i.collapse(!0), i.moveStart("character", n), i.moveEnd("character", + r - n), i.select() + } else { + o.setOffsets(e, t) + } + } + }; + t.exports = u + }, {126: 126, 131: 131, 132: 132, 41: 41}], + 57: [function (e, t, n) { + "use strict"; + var r = { + remove: function (e) { + e._reactInternalInstance = void 0 + }, get: function (e) { + return e._reactInternalInstance + }, has: function (e) { + return void 0 !== e._reactInternalInstance + }, set: function (e, t) { + e._reactInternalInstance = t + } + }; + t.exports = r + }, {}], + 58: [function (e, t, n) { + "use strict"; + t.exports = {debugTool: null} + }, {}], + 59: [function (e, t, n) { + "use strict"; + var r = e(92), o = /^<\!\-\-/, i = { + CHECKSUM_ATTR_NAME: "data-react-checksum", addChecksumToMarkup: function (e) { + var t = r(e); + return o.test(e) ? e : e.replace(/\/?>/, + " " + i.CHECKSUM_ATTR_NAME + '="' + t + '"$&') + }, canReuseMarkup: function (e, t) { + var n = t.getAttribute(i.CHECKSUM_ATTR_NAME); + return n = n && parseInt(n, 10), r(e) === n + } + }; + t.exports = i + }, {92: 92}], + 60: [function (e, t, n) { + "use strict"; + + function r(e, t) { + for (var n = Math.min(e.length, t.length), r = 0; r < n; r++) { + if (e.charAt(r) + !== t.charAt(r)) { + return r; + } + } + return e.length === t.length ? -1 : n + } + + function o(e) { + return e ? e.nodeType === A ? e.documentElement : e.firstChild : null + } + + function i(e) { + return e.getAttribute && e.getAttribute(I) || "" + } + + function a(e, t, n, r, o) { + var i; + if (b.logTopLevelRenders) { + var a = e._currentElement.props.child, s = a.type; + i = "React mount: " + ("string" == typeof s ? s : s.displayName + || s.name), console.time(i) + } + var u = w.mountComponent(e, n, null, _(e, t), o, 0); + i && console.timeEnd( + i), e._renderedComponent._topLevelWrapper = e, j._mountImageIntoNode(u, t, e, r, n) + } + + function s(e, t, n, r) { + var o = k.ReactReconcileTransaction.getPooled(!n && C.useCreateElement); + o.perform(a, null, e, t, o, n, r), k.ReactReconcileTransaction.release(o) + } + + function u(e, t, n) { + for (w.unmountComponent(e, n), t.nodeType === A && (t = t.documentElement); + t.lastChild;) { + t.removeChild(t.lastChild) + } + } + + function l(e) { + var t = o(e); + if (t) { + var n = y.getInstanceFromNode(t); + return !(!n || !n._hostParent) + } + } + + function c(e) { + return !(!e || e.nodeType !== R && e.nodeType !== A && e.nodeType !== D) + } + + function p(e) { + var t = o(e), n = t && y.getInstanceFromNode(t); + return n && !n._hostParent ? n : null + } + + function d(e) { + var t = p(e); + return t ? t._hostContainerInfo._topLevelWrapper : null + } + + var f = e(112), h = e(9), m = e(11), v = e(120), g = e(25), y = (e(119), e(33)), + _ = e(34), C = e(36), b = e(53), E = e(57), x = (e(58), e(59)), w = e(66), T = e(70), + k = e(71), P = e(130), S = e(108), N = (e(137), e(114)), M = e(116), + I = (e(142), m.ID_ATTRIBUTE_NAME), O = m.ROOT_ATTRIBUTE_NAME, R = 1, A = 9, D = 11, + L = {}, U = 1, F = function () { + this.rootID = U++ + }; + F.prototype.isReactComponent = {}, F.prototype.render = function () { + return this.props.child + }, F.isReactTopLevelWrapper = !0; + var j = { + TopLevelWrapper: F, _instancesByReactRootID: L, scrollMonitor: function (e, t) { + t() + }, _updateRootComponent: function (e, t, n, r, o) { + return j.scrollMonitor(r, function () { + T.enqueueElementInternal(e, t, n), o && T.enqueueCallbackInternal(e, o) + }), e + }, _renderNewRootComponent: function (e, t, n, r) { + c(t) || f("37"), g.ensureScrollValueMonitoring(); + var o = S(e, !1); + k.batchedUpdates(s, o, t, n, r); + var i = o._instance.rootID; + return L[i] = o, o + }, renderSubtreeIntoContainer: function (e, t, n, r) { + return null != e && E.has(e) || f("38"), j._renderSubtreeIntoContainer(e, t, n, r) + }, _renderSubtreeIntoContainer: function (e, t, n, r) { + T.validateCallback(r, "ReactDOM.render"), v.isValidElement(t) || f("39", + "string" == typeof t + ? " Instead of passing a string like 'div', pass React.createElement('div') or

." + : "function" == typeof t + ? " Instead of passing a class like Foo, pass React.createElement(Foo) or ." + : null != t && void 0 !== t.props + ? " This may be caused by unintentionally loading two independent copies of React." + : ""); + var a, s = v.createElement(F, {child: t}); + if (e) { + var u = E.get(e); + a = u._processChildContext(u._context) + } else { + a = P; + } + var c = d(n); + if (c) { + var p = c._currentElement, h = p.props.child; + if (M(h, t)) { + var m = c._renderedComponent.getPublicInstance(), g = r && function () { + r.call(m) + }; + return j._updateRootComponent(c, s, a, n, g), m + } + j.unmountComponentAtNode(n) + } + var y = o(n), _ = y && !!i(y), C = l(n), b = _ && !c && !C, + x = j._renderNewRootComponent(s, n, b, a)._renderedComponent.getPublicInstance(); + return r && r.call(x), x + }, render: function (e, t, n) { + return j._renderSubtreeIntoContainer(null, e, t, n) + }, unmountComponentAtNode: function (e) { + c(e) || f("40"); + var t = d(e); + return t ? (delete L[t._instance.rootID], k.batchedUpdates(u, t, e, !1), !0) : (l( + e), 1 === e.nodeType && e.hasAttribute(O), !1) + }, _mountImageIntoNode: function (e, t, n, i, a) { + if (c(t) || f("41"), i) { + var s = o(t); + if (x.canReuseMarkup(e, s)) { + return void y.precacheNode(n, s); + } + var u = s.getAttribute(x.CHECKSUM_ATTR_NAME); + s.removeAttribute(x.CHECKSUM_ATTR_NAME); + var l = s.outerHTML; + s.setAttribute(x.CHECKSUM_ATTR_NAME, u); + var p = e, d = r(p, l), + m = " (client) " + p.substring(d - 20, d + 20) + "\n (server) " + l.substring( + d - 20, d + 20); + t.nodeType === A && f("42", m) + } + if (t.nodeType === A && f("43"), a.useCreateElement) { + for (; t.lastChild;) { + t.removeChild(t.lastChild); + } + h.insertTreeBefore(t, e, null) + } else { + N(t, e), y.precacheNode(n, t.firstChild) + } + } + }; + t.exports = j + }, { + 108: 108, + 11: 11, + 112: 112, + 114: 114, + 116: 116, + 119: 119, + 120: 120, + 130: 130, + 137: 137, + 142: 142, + 25: 25, + 33: 33, + 34: 34, + 36: 36, + 53: 53, + 57: 57, + 58: 58, + 59: 59, + 66: 66, + 70: 70, + 71: 71, + 9: 9 + }], + 61: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + return { + type: "INSERT_MARKUP", + content: e, + fromIndex: null, + fromNode: null, + toIndex: n, + afterNode: t + } + } + + function o(e, t, n) { + return { + type: "MOVE_EXISTING", + content: null, + fromIndex: e._mountIndex, + fromNode: d.getHostNode(e), + toIndex: n, + afterNode: t + } + } + + function i(e, t) { + return { + type: "REMOVE_NODE", + content: null, + fromIndex: e._mountIndex, + fromNode: t, + toIndex: null, + afterNode: null + } + } + + function a(e) { + return { + type: "SET_MARKUP", + content: e, + fromIndex: null, + fromNode: null, + toIndex: null, + afterNode: null + } + } + + function s(e) { + return { + type: "TEXT_CONTENT", + content: e, + fromIndex: null, + fromNode: null, + toIndex: null, + afterNode: null + } + } + + function u(e, t) { + return t && (e = e || [], e.push(t)), e + } + + function l(e, t) { + p.processChildrenUpdates(e, t) + } + + var c = e(112), p = e(28), d = (e(57), e(58), e(119), e(66)), f = e(26), + h = (e(129), e(97)), m = (e(137), { + Mixin: { + _reconcilerInstantiateChildren: function (e, t, n) { + return f.instantiateChildren(e, t, n) + }, _reconcilerUpdateChildren: function (e, t, n, r, o, i) { + var a; + return a = h(t, 0), f.updateChildren(e, a, n, r, o, this, this._hostContainerInfo, + i, 0), a + }, mountChildren: function (e, t, n) { + var r = this._reconcilerInstantiateChildren(e, t, n); + this._renderedChildren = r; + var o = [], i = 0; + for (var a in r) { + if (r.hasOwnProperty(a)) { + var s = r[a], u = d.mountComponent(s, t, this, this._hostContainerInfo, n, 0); + s._mountIndex = i++, o.push(u) + } + } + return o + }, updateTextContent: function (e) { + var t = this._renderedChildren; + f.unmountChildren(t, !1); + for (var n in t) { + t.hasOwnProperty(n) && c("118"); + } + l(this, [s(e)]) + }, updateMarkup: function (e) { + var t = this._renderedChildren; + f.unmountChildren(t, !1); + for (var n in t) { + t.hasOwnProperty(n) && c("118"); + } + l(this, [a(e)]) + }, updateChildren: function (e, t, n) { + this._updateChildren(e, t, n) + }, _updateChildren: function (e, t, n) { + var r = this._renderedChildren, o = {}, i = [], + a = this._reconcilerUpdateChildren(r, e, i, o, t, n); + if (a || r) { + var s, c = null, p = 0, f = 0, h = 0, m = null; + for (s in a) { + if (a.hasOwnProperty(s)) { + var v = r && r[s], g = a[s]; + v === g ? (c = u(c, this.moveChild(v, m, p, f)), f = Math.max(v._mountIndex, + f), v._mountIndex = p) : (v && (f = Math.max(v._mountIndex, f)), c = u(c, + this._mountChildAtIndex(g, i[h], m, p, t, n)), h++), p++, m = d.getHostNode( + g) + } + } + for (s in o) { + o.hasOwnProperty(s) && (c = u(c, this._unmountChild(r[s], o[s]))); + } + c && l(this, c), this._renderedChildren = a + } + }, unmountChildren: function (e) { + var t = this._renderedChildren; + f.unmountChildren(t, e), this._renderedChildren = null + }, moveChild: function (e, t, n, r) { + if (e._mountIndex < r) { + return o(e, t, n) + } + }, createChild: function (e, t, n) { + return r(n, t, e._mountIndex) + }, removeChild: function (e, t) { + return i(e, t) + }, _mountChildAtIndex: function (e, t, n, r, o, i) { + return e._mountIndex = r, this.createChild(e, n, t) + }, _unmountChild: function (e, t) { + var n = this.removeChild(e, t); + return e._mountIndex = null, n + } + } + }); + t.exports = m + }, + {112: 112, 119: 119, 129: 129, 137: 137, 26: 26, 28: 28, 57: 57, 58: 58, 66: 66, 97: 97}], + 62: [function (e, t, n) { + "use strict"; + var r = e(112), o = e(120), i = (e(137), { + HOST: 0, COMPOSITE: 1, EMPTY: 2, getType: function (e) { + return null === e || !1 === e ? i.EMPTY : o.isValidElement(e) ? "function" + == typeof e.type ? i.COMPOSITE : i.HOST : void r("26", e) + } + }); + t.exports = i + }, {112: 112, 120: 120, 137: 137}], + 63: [function (e, t, n) { + "use strict"; + + function r(e) { + return !(!e || "function" != typeof e.attachRef || "function" != typeof e.detachRef) + } + + var o = e(112), i = (e(137), { + addComponentAsRefTo: function (e, t, n) { + r(n) || o("119"), n.attachRef(t, e) + }, removeComponentAsRefFrom: function (e, t, n) { + r(n) || o("120"); + var i = n.getPublicInstance(); + i && i.refs[t] === e.getPublicInstance() && n.detachRef(t) + } + }); + t.exports = i + }, {112: 112, 137: 137}], + 64: [function (e, t, n) { + "use strict"; + t.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED" + }, {}], + 65: [function (e, t, n) { + "use strict"; + + function r(e) { + this.reinitializeTransaction(), this.renderToStaticMarkup = !1, this.reactMountReady = i.getPooled( + null), this.useCreateElement = e + } + + var o = e(143), i = e(6), a = e(24), s = e(25), u = e(56), l = (e(58), e(89)), c = e(70), + p = {initialize: u.getSelectionInformation, close: u.restoreSelection}, d = { + initialize: function () { + var e = s.isEnabled(); + return s.setEnabled(!1), e + }, close: function (e) { + s.setEnabled(e) + } + }, f = { + initialize: function () { + this.reactMountReady.reset() + }, close: function () { + this.reactMountReady.notifyAll() + } + }, h = [p, d, f], m = { + getTransactionWrappers: function () { + return h + }, getReactMountReady: function () { + return this.reactMountReady + }, getUpdateQueue: function () { + return c + }, checkpoint: function () { + return this.reactMountReady.checkpoint() + }, rollback: function (e) { + this.reactMountReady.rollback(e) + }, destructor: function () { + i.release(this.reactMountReady), this.reactMountReady = null + } + }; + o(r.prototype, l, m), a.addPoolingTo(r), t.exports = r + }, {143: 143, 24: 24, 25: 25, 56: 56, 58: 58, 6: 6, 70: 70, 89: 89}], + 66: [function (e, t, n) { + "use strict"; + + function r() { + o.attachRefs(this, this._currentElement) + } + + var o = e(67), i = (e(58), e(142), { + mountComponent: function (e, t, n, o, i, a) { + var s = e.mountComponent(t, n, o, i, a); + return e._currentElement && null != e._currentElement.ref + && t.getReactMountReady().enqueue(r, e), s + }, getHostNode: function (e) { + return e.getHostNode() + }, unmountComponent: function (e, t) { + o.detachRefs(e, e._currentElement), e.unmountComponent(t) + }, receiveComponent: function (e, t, n, i) { + var a = e._currentElement; + if (t !== a || i !== e._context) { + var s = o.shouldUpdateRefs(a, t); + s && o.detachRefs(e, a), e.receiveComponent(t, n, i), s && e._currentElement && null + != e._currentElement.ref && n.getReactMountReady().enqueue(r, e) + } + }, performUpdateIfNecessary: function (e, t, n) { + e._updateBatchNumber === n && e.performUpdateIfNecessary(t) + } + }); + t.exports = i + }, {142: 142, 58: 58, 67: 67}], + 67: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + "function" == typeof e ? e(t.getPublicInstance()) : i.addComponentAsRefTo(t, e, n) + } + + function o(e, t, n) { + "function" == typeof e ? e(null) : i.removeComponentAsRefFrom(t, e, n) + } + + var i = e(63), a = {}; + a.attachRefs = function (e, t) { + if (null !== t && "object" == typeof t) { + var n = t.ref; + null != n && r(n, e, t._owner) + } + }, a.shouldUpdateRefs = function (e, t) { + var n = null, r = null; + null !== e && "object" == typeof e && (n = e.ref, r = e._owner); + var o = null, i = null; + return null !== t && "object" == typeof t && (o = t.ref, i = t._owner), n !== o + || "string" == typeof o && i !== r + }, a.detachRefs = function (e, t) { + if (null !== t && "object" == typeof t) { + var n = t.ref; + null != n && o(n, e, t._owner) + } + }, t.exports = a + }, {63: 63}], + 68: [function (e, t, n) { + "use strict"; + + function r(e) { + this.reinitializeTransaction(), this.renderToStaticMarkup = e, this.useCreateElement = !1, this.updateQueue = new s( + this) + } + + var o = e(143), i = e(24), a = e(89), s = (e(58), e(69)), u = [], l = { + enqueue: function () { + } + }, c = { + getTransactionWrappers: function () { + return u + }, getReactMountReady: function () { + return l + }, getUpdateQueue: function () { + return this.updateQueue + }, destructor: function () { + }, checkpoint: function () { + }, rollback: function () { + } + }; + o(r.prototype, a, c), i.addPoolingTo(r), t.exports = r + }, {143: 143, 24: 24, 58: 58, 69: 69, 89: 89}], + 69: [function (e, t, n) { + "use strict"; + + function r(e, t) { + if (!(e instanceof t)) { + throw new TypeError("Cannot call a class as a function") + } + } + + var o = e(70), i = (e(142), function () { + function e(t) { + r(this, e), this.transaction = t + } + + return e.prototype.isMounted = function (e) { + return !1 + }, e.prototype.enqueueCallback = function (e, t, n) { + this.transaction.isInTransaction() && o.enqueueCallback(e, t, n) + }, e.prototype.enqueueForceUpdate = function (e) { + this.transaction.isInTransaction() && o.enqueueForceUpdate(e) + }, e.prototype.enqueueReplaceState = function (e, t) { + this.transaction.isInTransaction() && o.enqueueReplaceState(e, t) + }, e.prototype.enqueueSetState = function (e, t) { + this.transaction.isInTransaction() && o.enqueueSetState(e, t) + }, e + }()); + t.exports = i + }, {142: 142, 70: 70}], + 70: [function (e, t, n) { + "use strict"; + + function r(e) { + u.enqueueUpdate(e) + } + + function o(e) { + var t = typeof e; + if ("object" !== t) { + return t; + } + var n = e.constructor && e.constructor.name || t, r = Object.keys(e); + return r.length > 0 && r.length < 20 ? n + " (keys: " + r.join(", ") + ")" : n + } + + function i(e, t) { + var n = s.get(e); + return n || null + } + + var a = e(112), s = (e(119), e(57)), u = (e(58), e(71)), l = (e(137), e(142), { + isMounted: function (e) { + var t = s.get(e); + return !!t && !!t._renderedComponent + }, enqueueCallback: function (e, t, n) { + l.validateCallback(t, n); + var o = i(e); + if (!o) { + return null; + } + o._pendingCallbacks ? o._pendingCallbacks.push(t) : o._pendingCallbacks = [t], r(o) + }, enqueueCallbackInternal: function (e, t) { + e._pendingCallbacks ? e._pendingCallbacks.push(t) : e._pendingCallbacks = [t], r(e) + }, enqueueForceUpdate: function (e) { + var t = i(e, "forceUpdate"); + t && (t._pendingForceUpdate = !0, r(t)) + }, enqueueReplaceState: function (e, t, n) { + var o = i(e, "replaceState"); + o && (o._pendingStateQueue = [t], o._pendingReplaceState = !0, void 0 !== n && null + !== n && (l.validateCallback(n, "replaceState"), o._pendingCallbacks + ? o._pendingCallbacks.push(n) : o._pendingCallbacks = [n]), r(o)) + }, enqueueSetState: function (e, t) { + var n = i(e, "setState"); + n && ((n._pendingStateQueue || (n._pendingStateQueue = [])).push(t), r(n)) + }, enqueueElementInternal: function (e, t, n) { + e._pendingElement = t, e._context = n, r(e) + }, validateCallback: function (e, t) { + e && "function" != typeof e && a("122", t, o(e)) + } + }); + t.exports = l + }, {112: 112, 119: 119, 137: 137, 142: 142, 57: 57, 58: 58, 71: 71}], + 71: [function (e, t, n) { + "use strict"; + + function r() { + P.ReactReconcileTransaction && b || c("123") + } + + function o() { + this.reinitializeTransaction(), this.dirtyComponentsLength = null, this.callbackQueue = d.getPooled(), this.reconcileTransaction = P.ReactReconcileTransaction.getPooled( + !0) + } + + function i(e, t, n, o, i, a) { + return r(), b.batchedUpdates(e, t, n, o, i, a) + } + + function a(e, t) { + return e._mountOrder - t._mountOrder + } + + function s(e) { + var t = e.dirtyComponentsLength; + t !== g.length && c("124", t, g.length), g.sort(a), y++; + for (var n = 0; n < t; n++) { + var r = g[n], o = r._pendingCallbacks; + r._pendingCallbacks = null; + var i; + if (h.logTopLevelRenders) { + var s = r; + r._currentElement.type.isReactTopLevelWrapper + && (s = r._renderedComponent), i = "React update: " + s.getName(), console.time(i) + } + if (m.performUpdateIfNecessary(r, e.reconcileTransaction, y), i && console.timeEnd( + i), o) { + for (var u = 0; u < o.length; u++) { + e.callbackQueue.enqueue(o[u], + r.getPublicInstance()) + } + } + } + } + + function u(e) { + if (r(), !b.isBatchingUpdates) { + return void b.batchedUpdates(u, e); + } + g.push(e), null == e._updateBatchNumber && (e._updateBatchNumber = y + 1) + } + + function l(e, t) { + b.isBatchingUpdates || c("125"), _.enqueue(e, t), C = !0 + } + + var c = e(112), p = e(143), d = e(6), f = e(24), h = e(53), m = e(66), v = e(89), + g = (e(137), []), y = 0, _ = d.getPooled(), C = !1, b = null, E = { + initialize: function () { + this.dirtyComponentsLength = g.length + }, close: function () { + this.dirtyComponentsLength !== g.length ? (g.splice(0, + this.dirtyComponentsLength), T()) : g.length = 0 + } + }, x = { + initialize: function () { + this.callbackQueue.reset() + }, close: function () { + this.callbackQueue.notifyAll() + } + }, w = [E, x]; + p(o.prototype, v, { + getTransactionWrappers: function () { + return w + }, destructor: function () { + this.dirtyComponentsLength = null, d.release( + this.callbackQueue), this.callbackQueue = null, P.ReactReconcileTransaction.release( + this.reconcileTransaction), this.reconcileTransaction = null + }, perform: function (e, t, n) { + return v.perform.call(this, this.reconcileTransaction.perform, + this.reconcileTransaction, e, t, n) + } + }), f.addPoolingTo(o); + var T = function () { + for (; g.length || C;) { + if (g.length) { + var e = o.getPooled(); + e.perform(s, null, e), o.release(e) + } + if (C) { + C = !1; + var t = _; + _ = d.getPooled(), t.notifyAll(), d.release(t) + } + } + }, k = { + injectReconcileTransaction: function (e) { + e || c("126"), P.ReactReconcileTransaction = e + }, injectBatchingStrategy: function (e) { + e || c("127"), "function" != typeof e.batchedUpdates && c("128"), "boolean" + != typeof e.isBatchingUpdates && c("129"), b = e + } + }, P = { + ReactReconcileTransaction: null, + batchedUpdates: i, + enqueueUpdate: u, + flushBatchedUpdates: T, + injection: k, + asap: l + }; + t.exports = P + }, {112: 112, 137: 137, 143: 143, 24: 24, 53: 53, 6: 6, 66: 66, 89: 89}], + 72: [function (e, t, n) { + "use strict"; + t.exports = "15.5.4" + }, {}], + 73: [function (e, t, n) { + "use strict"; + var r = { + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace" + }, o = { + accentHeight: "accent-height", + accumulate: 0, + additive: 0, + alignmentBaseline: "alignment-baseline", + allowReorder: "allowReorder", + alphabetic: 0, + amplitude: 0, + arabicForm: "arabic-form", + ascent: 0, + attributeName: "attributeName", + attributeType: "attributeType", + autoReverse: "autoReverse", + azimuth: 0, + baseFrequency: "baseFrequency", + baseProfile: "baseProfile", + baselineShift: "baseline-shift", + bbox: 0, + begin: 0, + bias: 0, + by: 0, + calcMode: "calcMode", + capHeight: "cap-height", + clip: 0, + clipPath: "clip-path", + clipRule: "clip-rule", + clipPathUnits: "clipPathUnits", + colorInterpolation: "color-interpolation", + colorInterpolationFilters: "color-interpolation-filters", + colorProfile: "color-profile", + colorRendering: "color-rendering", + contentScriptType: "contentScriptType", + contentStyleType: "contentStyleType", + cursor: 0, + cx: 0, + cy: 0, + d: 0, + decelerate: 0, + descent: 0, + diffuseConstant: "diffuseConstant", + direction: 0, + display: 0, + divisor: 0, + dominantBaseline: "dominant-baseline", + dur: 0, + dx: 0, + dy: 0, + edgeMode: "edgeMode", + elevation: 0, + enableBackground: "enable-background", + end: 0, + exponent: 0, + externalResourcesRequired: "externalResourcesRequired", + fill: 0, + fillOpacity: "fill-opacity", + fillRule: "fill-rule", + filter: 0, + filterRes: "filterRes", + filterUnits: "filterUnits", + floodColor: "flood-color", + floodOpacity: "flood-opacity", + focusable: 0, + fontFamily: "font-family", + fontSize: "font-size", + fontSizeAdjust: "font-size-adjust", + fontStretch: "font-stretch", + fontStyle: "font-style", + fontVariant: "font-variant", + fontWeight: "font-weight", + format: 0, + from: 0, + fx: 0, + fy: 0, + g1: 0, + g2: 0, + glyphName: "glyph-name", + glyphOrientationHorizontal: "glyph-orientation-horizontal", + glyphOrientationVertical: "glyph-orientation-vertical", + glyphRef: "glyphRef", + gradientTransform: "gradientTransform", + gradientUnits: "gradientUnits", + hanging: 0, + horizAdvX: "horiz-adv-x", + horizOriginX: "horiz-origin-x", + ideographic: 0, + imageRendering: "image-rendering", + in: 0, + in2: 0, + intercept: 0, + k: 0, + k1: 0, + k2: 0, + k3: 0, + k4: 0, + kernelMatrix: "kernelMatrix", + kernelUnitLength: "kernelUnitLength", + kerning: 0, + keyPoints: "keyPoints", + keySplines: "keySplines", + keyTimes: "keyTimes", + lengthAdjust: "lengthAdjust", + letterSpacing: "letter-spacing", + lightingColor: "lighting-color", + limitingConeAngle: "limitingConeAngle", + local: 0, + markerEnd: "marker-end", + markerMid: "marker-mid", + markerStart: "marker-start", + markerHeight: "markerHeight", + markerUnits: "markerUnits", + markerWidth: "markerWidth", + mask: 0, + maskContentUnits: "maskContentUnits", + maskUnits: "maskUnits", + mathematical: 0, + mode: 0, + numOctaves: "numOctaves", + offset: 0, + opacity: 0, + operator: 0, + order: 0, + orient: 0, + orientation: 0, + origin: 0, + overflow: 0, + overlinePosition: "overline-position", + overlineThickness: "overline-thickness", + paintOrder: "paint-order", + panose1: "panose-1", + pathLength: "pathLength", + patternContentUnits: "patternContentUnits", + patternTransform: "patternTransform", + patternUnits: "patternUnits", + pointerEvents: "pointer-events", + points: 0, + pointsAtX: "pointsAtX", + pointsAtY: "pointsAtY", + pointsAtZ: "pointsAtZ", + preserveAlpha: "preserveAlpha", + preserveAspectRatio: "preserveAspectRatio", + primitiveUnits: "primitiveUnits", + r: 0, + radius: 0, + refX: "refX", + refY: "refY", + renderingIntent: "rendering-intent", + repeatCount: "repeatCount", + repeatDur: "repeatDur", + requiredExtensions: "requiredExtensions", + requiredFeatures: "requiredFeatures", + restart: 0, + result: 0, + rotate: 0, + rx: 0, + ry: 0, + scale: 0, + seed: 0, + shapeRendering: "shape-rendering", + slope: 0, + spacing: 0, + specularConstant: "specularConstant", + specularExponent: "specularExponent", + speed: 0, + spreadMethod: "spreadMethod", + startOffset: "startOffset", + stdDeviation: "stdDeviation", + stemh: 0, + stemv: 0, + stitchTiles: "stitchTiles", + stopColor: "stop-color", + stopOpacity: "stop-opacity", + strikethroughPosition: "strikethrough-position", + strikethroughThickness: "strikethrough-thickness", + string: 0, + stroke: 0, + strokeDasharray: "stroke-dasharray", + strokeDashoffset: "stroke-dashoffset", + strokeLinecap: "stroke-linecap", + strokeLinejoin: "stroke-linejoin", + strokeMiterlimit: "stroke-miterlimit", + strokeOpacity: "stroke-opacity", + strokeWidth: "stroke-width", + surfaceScale: "surfaceScale", + systemLanguage: "systemLanguage", + tableValues: "tableValues", + targetX: "targetX", + targetY: "targetY", + textAnchor: "text-anchor", + textDecoration: "text-decoration", + textRendering: "text-rendering", + textLength: "textLength", + to: 0, + transform: 0, + u1: 0, + u2: 0, + underlinePosition: "underline-position", + underlineThickness: "underline-thickness", + unicode: 0, + unicodeBidi: "unicode-bidi", + unicodeRange: "unicode-range", + unitsPerEm: "units-per-em", + vAlphabetic: "v-alphabetic", + vHanging: "v-hanging", + vIdeographic: "v-ideographic", + vMathematical: "v-mathematical", + values: 0, + vectorEffect: "vector-effect", + version: 0, + vertAdvY: "vert-adv-y", + vertOriginX: "vert-origin-x", + vertOriginY: "vert-origin-y", + viewBox: "viewBox", + viewTarget: "viewTarget", + visibility: 0, + widths: 0, + wordSpacing: "word-spacing", + writingMode: "writing-mode", + x: 0, + xHeight: "x-height", + x1: 0, + x2: 0, + xChannelSelector: "xChannelSelector", + xlinkActuate: "xlink:actuate", + xlinkArcrole: "xlink:arcrole", + xlinkHref: "xlink:href", + xlinkRole: "xlink:role", + xlinkShow: "xlink:show", + xlinkTitle: "xlink:title", + xlinkType: "xlink:type", + xmlBase: "xml:base", + xmlns: 0, + xmlnsXlink: "xmlns:xlink", + xmlLang: "xml:lang", + xmlSpace: "xml:space", + y: 0, + y1: 0, + y2: 0, + yChannelSelector: "yChannelSelector", + z: 0, + zoomAndPan: "zoomAndPan" + }, i = { + Properties: {}, + DOMAttributeNamespaces: { + xlinkActuate: r.xlink, + xlinkArcrole: r.xlink, + xlinkHref: r.xlink, + xlinkRole: r.xlink, + xlinkShow: r.xlink, + xlinkTitle: r.xlink, + xlinkType: r.xlink, + xmlBase: r.xml, + xmlLang: r.xml, + xmlSpace: r.xml + }, + DOMAttributeNames: {} + }; + Object.keys(o).forEach(function (e) { + i.Properties[e] = 0, o[e] && (i.DOMAttributeNames[e] = o[e]) + }), t.exports = i + }, {}], + 74: [function (e, t, n) { + "use strict"; + + function r(e) { + if ("selectionStart" in e && u.hasSelectionCapabilities( + e)) { + return {start: e.selectionStart, end: e.selectionEnd}; + } + if (window.getSelection) { + var t = window.getSelection(); + return { + anchorNode: t.anchorNode, + anchorOffset: t.anchorOffset, + focusNode: t.focusNode, + focusOffset: t.focusOffset + } + } + if (document.selection) { + var n = document.selection.createRange(); + return { + parentElement: n.parentElement(), + text: n.text, + top: n.boundingTop, + left: n.boundingLeft + } + } + } + + function o(e, t) { + if (y || null == m || m !== c()) { + return null; + } + var n = r(m); + if (!g || !d(g, n)) { + g = n; + var o = l.getPooled(h.select, v, e, t); + return o.type = "select", o.target = m, i.accumulateTwoPhaseDispatches(o), o + } + return null + } + + var i = e(19), a = e(123), s = e(33), u = e(56), l = e(80), c = e(132), p = e(110), + d = e(141), + f = a.canUseDOM && "documentMode" in document && document.documentMode <= 11, h = { + select: { + phasedRegistrationNames: { + bubbled: "onSelect", + captured: "onSelectCapture" + }, + dependencies: ["topBlur", "topContextMenu", "topFocus", "topKeyDown", "topKeyUp", + "topMouseDown", "topMouseUp", "topSelectionChange"] + } + }, m = null, v = null, g = null, y = !1, _ = !1, C = { + eventTypes: h, extractEvents: function (e, t, n, r) { + if (!_) { + return null; + } + var i = t ? s.getNodeFromInstance(t) : window; + switch (e) { + case"topFocus": + (p(i) || "true" === i.contentEditable) && (m = i, v = t, g = null); + break + ; + case"topBlur": + m = null, v = null, g = null; + break; + case"topMouseDown": + y = !0; + break; + case"topContextMenu": + case"topMouseUp": + return y = !1, o(n, r); + case"topSelectionChange": + if (f) { + break; + } + case"topKeyDown": + case"topKeyUp": + return o(n, r) + } + return null + }, didPutListener: function (e, t, n) { + "onSelect" === t && (_ = !0) + } + }; + t.exports = C + }, {110: 110, 123: 123, 132: 132, 141: 141, 19: 19, 33: 33, 56: 56, 80: 80}], + 75: [function (e, t, n) { + "use strict"; + + function r(e) { + return "." + e._rootNodeID + } + + function o(e) { + return "button" === e || "input" === e || "select" === e || "textarea" === e + } + + var i = e(112), a = e(122), s = e(19), u = e(33), l = e(76), c = e(77), p = e(80), + d = e(81), f = e(83), h = e(84), m = e(79), v = e(85), g = e(86), y = e(87), _ = e(88), + C = e(129), b = e(99), E = (e(137), {}), x = {}; + ["abort", "animationEnd", "animationIteration", "animationStart", "blur", "canPlay", + "canPlayThrough", "click", "contextMenu", "copy", "cut", "doubleClick", "drag", + "dragEnd", "dragEnter", "dragExit", "dragLeave", "dragOver", "dragStart", "drop", + "durationChange", "emptied", "encrypted", "ended", "error", "focus", "input", "invalid", + "keyDown", "keyPress", "keyUp", "load", "loadedData", "loadedMetadata", "loadStart", + "mouseDown", "mouseMove", "mouseOut", "mouseOver", "mouseUp", "paste", "pause", "play", + "playing", "progress", "rateChange", "reset", "scroll", "seeked", "seeking", "stalled", + "submit", "suspend", "timeUpdate", "touchCancel", "touchEnd", "touchMove", "touchStart", + "transitionEnd", "volumeChange", "waiting", "wheel"].forEach(function (e) { + var t = e[0].toUpperCase() + e.slice(1), n = "on" + t, r = "top" + t, o = { + phasedRegistrationNames: {bubbled: n, captured: n + "Capture"}, + dependencies: [r] + }; + E[e] = o, x[r] = o + }); + var w = {}, T = { + eventTypes: E, extractEvents: function (e, t, n, r) { + var o = x[e]; + if (!o) { + return null; + } + var a; + switch (e) { + case"topAbort": + case"topCanPlay": + case"topCanPlayThrough": + case"topDurationChange": + case"topEmptied": + case"topEncrypted": + case"topEnded": + case"topError": + case"topInput": + case"topInvalid": + case"topLoad": + case"topLoadedData": + case"topLoadedMetadata": + case"topLoadStart": + case"topPause": + case"topPlay": + case"topPlaying": + case"topProgress": + case"topRateChange": + case"topReset": + case"topSeeked": + case"topSeeking": + case"topStalled": + case"topSubmit": + case"topSuspend": + case"topTimeUpdate": + case"topVolumeChange": + case"topWaiting": + a = p; + break; + case"topKeyPress": + if (0 === b(n)) { + return null; + } + case"topKeyDown": + case"topKeyUp": + a = f; + break; + case"topBlur": + case"topFocus": + a = d; + break; + case"topClick": + if (2 === n.button) { + return null; + } + case"topDoubleClick": + case"topMouseDown": + case"topMouseMove": + case"topMouseUp": + case"topMouseOut": + case"topMouseOver": + case"topContextMenu": + a = h; + break; + case"topDrag": + case"topDragEnd": + case"topDragEnter": + case"topDragExit": + case"topDragLeave": + case"topDragOver": + case"topDragStart": + case"topDrop": + a = m; + break; + case"topTouchCancel": + case"topTouchEnd": + case"topTouchMove": + case"topTouchStart": + a = v; + break; + case"topAnimationEnd": + case"topAnimationIteration": + case"topAnimationStart": + a = l; + break; + case"topTransitionEnd": + a = g; + break; + case"topScroll": + a = y; + break; + case"topWheel": + a = _; + break; + case"topCopy": + case"topCut": + case"topPaste": + a = c + } + a || i("86", e); + var u = a.getPooled(o, t, n, r); + return s.accumulateTwoPhaseDispatches(u), u + }, didPutListener: function (e, t, n) { + if ("onClick" === t && !o(e._tag)) { + var i = r(e), s = u.getNodeFromInstance(e); + w[i] || (w[i] = a.listen(s, "click", C)) + } + }, willDeleteListener: function (e, t) { + if ("onClick" === t && !o(e._tag)) { + var n = r(e); + w[n].remove(), delete w[n] + } + } + }; + t.exports = T + }, { + 112: 112, + 122: 122, + 129: 129, + 137: 137, + 19: 19, + 33: 33, + 76: 76, + 77: 77, + 79: 79, + 80: 80, + 81: 81, + 83: 83, + 84: 84, + 85: 85, + 86: 86, + 87: 87, + 88: 88, + 99: 99 + }], + 76: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = {animationName: null, elapsedTime: null, pseudoElement: null}; + o.augmentClass(r, i), t.exports = r + }, {80: 80}], + 77: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = { + clipboardData: function (e) { + return "clipboardData" in e ? e.clipboardData : window.clipboardData + } + }; + o.augmentClass(r, i), t.exports = r + }, {80: 80}], + 78: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = {data: null}; + o.augmentClass(r, i), t.exports = r + }, {80: 80}], + 79: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(84), i = {dataTransfer: null}; + o.augmentClass(r, i), t.exports = r + }, {84: 84}], + 80: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + this.dispatchConfig = e, this._targetInst = t, this.nativeEvent = n; + var o = this.constructor.Interface; + for (var i in o) { + if (o.hasOwnProperty(i)) { + var s = o[i]; + s ? this[i] = s(n) : "target" === i ? this.target = r : this[i] = n[i] + } + } + var u = null != n.defaultPrevented ? n.defaultPrevented : !1 === n.returnValue; + return this.isDefaultPrevented = u ? a.thatReturnsTrue + : a.thatReturnsFalse, this.isPropagationStopped = a.thatReturnsFalse, this + } + + var o = e(143), i = e(24), a = e(129), + s = (e(142), ["dispatchConfig", "_targetInst", "nativeEvent", "isDefaultPrevented", + "isPropagationStopped", "_dispatchListeners", "_dispatchInstances"]), u = { + type: null, + target: null, + currentTarget: a.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function (e) { + return e.timeStamp || Date.now() + }, + defaultPrevented: null, + isTrusted: null + }; + o(r.prototype, { + preventDefault: function () { + this.defaultPrevented = !0; + var e = this.nativeEvent; + e && (e.preventDefault ? e.preventDefault() : "unknown" != typeof e.returnValue + && (e.returnValue = !1), this.isDefaultPrevented = a.thatReturnsTrue) + }, stopPropagation: function () { + var e = this.nativeEvent; + e && (e.stopPropagation ? e.stopPropagation() : "unknown" != typeof e.cancelBubble + && (e.cancelBubble = !0), this.isPropagationStopped = a.thatReturnsTrue) + }, persist: function () { + this.isPersistent = a.thatReturnsTrue + }, isPersistent: a.thatReturnsFalse, destructor: function () { + var e = this.constructor.Interface; + for (var t in e) { + this[t] = null; + } + for (var n = 0; n < s.length; n++) { + this[s[n]] = null + } + } + }), r.Interface = u, r.augmentClass = function (e, t) { + var n = this, r = function () { + }; + r.prototype = n.prototype; + var a = new r; + o(a, e.prototype), e.prototype = a, e.prototype.constructor = e, e.Interface = o({}, + n.Interface, t), e.augmentClass = n.augmentClass, i.addPoolingTo(e, + i.fourArgumentPooler) + }, i.addPoolingTo(r, i.fourArgumentPooler), t.exports = r + }, {129: 129, 142: 142, 143: 143, 24: 24}], + 81: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(87), i = {relatedTarget: null}; + o.augmentClass(r, i), t.exports = r + }, {87: 87}], + 82: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = {data: null}; + o.augmentClass(r, i), t.exports = r + }, {80: 80}], + 83: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(87), i = e(99), a = e(100), s = e(101), u = { + key: a, + location: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + repeat: null, + locale: null, + getModifierState: s, + charCode: function (e) { + return "keypress" === e.type ? i(e) : 0 + }, + keyCode: function (e) { + return "keydown" === e.type || "keyup" === e.type ? e.keyCode : 0 + }, + which: function (e) { + return "keypress" === e.type ? i(e) : "keydown" === e.type || "keyup" === e.type + ? e.keyCode : 0 + } + }; + o.augmentClass(r, u), t.exports = r + }, {100: 100, 101: 101, 87: 87, 99: 99}], + 84: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(87), i = e(90), a = e(101), s = { + screenX: null, + screenY: null, + clientX: null, + clientY: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + getModifierState: a, + button: function (e) { + var t = e.button; + return "which" in e ? t : 2 === t ? 2 : 4 === t ? 1 : 0 + }, + buttons: null, + relatedTarget: function (e) { + return e.relatedTarget || (e.fromElement === e.srcElement ? e.toElement + : e.fromElement) + }, + pageX: function (e) { + return "pageX" in e ? e.pageX : e.clientX + i.currentScrollLeft + }, + pageY: function (e) { + return "pageY" in e ? e.pageY : e.clientY + i.currentScrollTop + } + }; + o.augmentClass(r, s), t.exports = r + }, {101: 101, 87: 87, 90: 90}], + 85: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(87), i = e(101), a = { + touches: null, + targetTouches: null, + changedTouches: null, + altKey: null, + metaKey: null, + ctrlKey: null, + shiftKey: null, + getModifierState: i + }; + o.augmentClass(r, a), t.exports = r + }, {101: 101, 87: 87}], + 86: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = {propertyName: null, elapsedTime: null, pseudoElement: null}; + o.augmentClass(r, i), t.exports = r + }, {80: 80}], + 87: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(80), i = e(102), a = { + view: function (e) { + if (e.view) { + return e.view; + } + var t = i(e); + if (t.window === t) { + return t; + } + var n = t.ownerDocument; + return n ? n.defaultView || n.parentWindow : window + }, detail: function (e) { + return e.detail || 0 + } + }; + o.augmentClass(r, a), t.exports = r + }, {102: 102, 80: 80}], + 88: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r) { + return o.call(this, e, t, n, r) + } + + var o = e(84), i = { + deltaX: function (e) { + return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0 + }, deltaY: function (e) { + return "deltaY" in e ? e.deltaY : "wheelDeltaY" in e ? -e.wheelDeltaY : "wheelDelta" + in e ? -e.wheelDelta : 0 + }, deltaZ: null, deltaMode: null + }; + o.augmentClass(r, i), t.exports = r + }, {84: 84}], + 89: [function (e, t, n) { + "use strict"; + var r = e(112), o = (e(137), {}), i = { + reinitializeTransaction: function () { + this.transactionWrappers = this.getTransactionWrappers(), this.wrapperInitData + ? this.wrapperInitData.length = 0 + : this.wrapperInitData = [], this._isInTransaction = !1 + }, _isInTransaction: !1, getTransactionWrappers: null, isInTransaction: function () { + return !!this._isInTransaction + }, perform: function (e, t, n, o, i, a, s, u) { + this.isInTransaction() && r("27"); + var l, c; + try { + this._isInTransaction = !0, l = !0, this.initializeAll(0), c = e.call(t, n, o, i, a, + s, u), l = !1 + } finally { + try { + if (l) { + try { + this.closeAll(0) + } catch (e) { + } + } else { + this.closeAll(0) + } + } finally { + this._isInTransaction = !1 + } + } + return c + }, initializeAll: function (e) { + for (var t = this.transactionWrappers, n = e; n < t.length; n++) { + var r = t[n]; + try { + this.wrapperInitData[n] = o, this.wrapperInitData[n] = r.initialize + ? r.initialize.call(this) : null + } finally { + if (this.wrapperInitData[n] === o) { + try { + this.initializeAll(n + 1) + } catch (e) { + } + } + } + } + }, closeAll: function (e) { + this.isInTransaction() || r("28"); + for (var t = this.transactionWrappers, n = e; n < t.length; n++) { + var i, a = t[n], s = this.wrapperInitData[n]; + try { + i = !0, s !== o && a.close && a.close.call(this, s), i = !1 + } finally { + if (i) { + try { + this.closeAll(n + 1) + } catch (e) { + } + } + } + } + this.wrapperInitData.length = 0 + } + }; + t.exports = i + }, {112: 112, 137: 137}], + 90: [function (e, t, n) { + "use strict"; + var r = { + currentScrollLeft: 0, currentScrollTop: 0, refreshScrollValues: function (e) { + r.currentScrollLeft = e.x, r.currentScrollTop = e.y + } + }; + t.exports = r + }, {}], + 91: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return null == t && o("30"), null == e ? t : Array.isArray(e) ? Array.isArray(t) + ? (e.push.apply(e, t), e) : (e.push(t), e) : Array.isArray(t) ? [e].concat(t) : [e, t] + } + + var o = e(112); + e(137); + t.exports = r + }, {112: 112, 137: 137}], + 92: [function (e, t, n) { + "use strict"; + + function r(e) { + for (var t = 1, n = 0, r = 0, i = e.length, a = -4 & i; r < a;) { + for (var s = Math.min(r + 4096, a); r < s; r += 4) { + n += (t += e.charCodeAt(r)) + + (t += e.charCodeAt(r + 1)) + (t += e.charCodeAt(r + 2)) + (t += e.charCodeAt( + r + 3)); + } + t %= o, n %= o + } + for (; r < i; r++) { + n += t += e.charCodeAt(r); + } + return t %= o, n %= o, t | n << 16 + } + + var o = 65521; + t.exports = r + }, {}], + 93: [function (e, t, n) { + "use strict"; + var r = function (e) { + return "undefined" != typeof MSApp && MSApp.execUnsafeLocalFunction ? function (t, n, r, + o) { + MSApp.execUnsafeLocalFunction(function () { + return e(t, n, r, o) + }) + } : e + }; + t.exports = r + }, {}], + 94: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + return null == t || "boolean" == typeof t || "" === t ? "" : isNaN(t) || 0 === t + || i.hasOwnProperty(e) && i[e] ? "" + t : ("string" == typeof t && (t = t.trim()), t + + "px") + } + + var o = e(4), i = (e(142), o.isUnitlessNumber); + t.exports = r + }, {142: 142, 4: 4}], + 95: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = "" + e, n = i.exec(t); + if (!n) { + return t; + } + var r, o = "", a = 0, s = 0; + for (a = n.index; a < t.length; a++) { + switch (t.charCodeAt(a)) { + case 34: + r = """; + break; + case 38: + r = "&"; + break; + case 39: + r = "'"; + break; + case 60: + r = "<"; + break; + case 62: + r = ">"; + break; + default: + continue + } + s !== a && (o += t.substring(s, a)), s = a + 1, o += r + } + return s !== a ? o + t.substring(s, a) : o + } + + function o(e) { + return "boolean" == typeof e || "number" == typeof e ? "" + e : r(e) + } + + var i = /["'&<>]/; + t.exports = o + }, {}], + 96: [function (e, t, n) { + "use strict"; + + function r(e) { + if (null == e) { + return null; + } + if (1 === e.nodeType) { + return e; + } + var t = a.get(e); + if (t) { + return t = s(t), t ? i.getNodeFromInstance(t) : null; + } + "function" == typeof e.render ? o("44") : o("45", Object.keys(e)) + } + + var o = e(112), i = (e(119), e(33)), a = e(57), s = e(103); + e(137), e(142); + t.exports = r + }, {103: 103, 112: 112, 119: 119, 137: 137, 142: 142, 33: 33, 57: 57}], + 97: [function (e, t, n) { + (function (n) { + "use strict"; + + function r(e, t, n, r) { + if (e && "object" == typeof e) { + var o = e; + void 0 === o[n] && null != t && (o[n] = t) + } + } + + function o(e, t) { + if (null == e) { + return e; + } + var n = {}; + return i(e, r, n), n + } + + var i = (e(22), e(117)); + e(142); + void 0 !== n && n.env, t.exports = o + }).call(this, void 0) + }, {117: 117, 142: 142, 22: 22}], + 98: [function (e, t, n) { + "use strict"; + + function r(e, t, n) { + Array.isArray(e) ? e.forEach(t, n) : e && t.call(n, e) + } + + t.exports = r + }, {}], + 99: [function (e, t, n) { + "use strict"; + + function r(e) { + var t, n = e.keyCode; + return "charCode" in e ? 0 === (t = e.charCode) && 13 === n && (t = 13) : t = n, t >= 32 + || 13 === t ? t : 0 + } + + t.exports = r + }, {}], + 100: [function (e, t, n) { + "use strict"; + + function r(e) { + if (e.key) { + var t = i[e.key] || e.key; + if ("Unidentified" !== t) { + return t + } + } + if ("keypress" === e.type) { + var n = o(e); + return 13 === n ? "Enter" : String.fromCharCode(n) + } + return "keydown" === e.type || "keyup" === e.type ? a[e.keyCode] || "Unidentified" : "" + } + + var o = e(99), i = { + Esc: "Escape", + Spacebar: " ", + Left: "ArrowLeft", + Up: "ArrowUp", + Right: "ArrowRight", + Down: "ArrowDown", + Del: "Delete", + Win: "OS", + Menu: "ContextMenu", + Apps: "ContextMenu", + Scroll: "ScrollLock", + MozPrintableKey: "Unidentified" + }, a = { + 8: "Backspace", + 9: "Tab", + 12: "Clear", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 19: "Pause", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 45: "Insert", + 46: "Delete", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "NumLock", + 145: "ScrollLock", + 224: "Meta" + }; + t.exports = r + }, {99: 99}], + 101: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = this, n = t.nativeEvent; + if (n.getModifierState) { + return n.getModifierState(e); + } + var r = i[e]; + return !!r && !!n[r] + } + + function o(e) { + return r + } + + var i = {Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey"}; + t.exports = o + }, {}], + 102: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e.target || e.srcElement || window; + return t.correspondingUseElement && (t = t.correspondingUseElement), 3 === t.nodeType + ? t.parentNode : t + } + + t.exports = r + }, {}], + 103: [function (e, t, n) { + "use strict"; + + function r(e) { + for (var t; (t = e._renderedNodeType) === o.COMPOSITE;) { + e = e._renderedComponent; + } + return t === o.HOST ? e._renderedComponent : t === o.EMPTY ? null : void 0 + } + + var o = e(62); + t.exports = r + }, {62: 62}], + 104: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e && (o && e[o] || e[i]); + if ("function" == typeof t) { + return t + } + } + + var o = "function" == typeof Symbol && Symbol.iterator, i = "@@iterator"; + t.exports = r + }, {}], + 105: [function (e, t, n) { + "use strict"; + + function r(e) { + for (; e && e.firstChild;) { + e = e.firstChild; + } + return e + } + + function o(e) { + for (; e;) { + if (e.nextSibling) { + return e.nextSibling; + } + e = e.parentNode + } + } + + function i(e, t) { + for (var n = r(e), i = 0, a = 0; n;) { + if (3 === n.nodeType) { + if (a = i + n.textContent.length, i <= t && a >= t) { + return {node: n, offset: t - i}; + } + i = a + } + n = r(o(n)) + } + } + + t.exports = i + }, {}], + 106: [function (e, t, n) { + "use strict"; + + function r() { + return !i && o.canUseDOM && (i = "textContent" in document.documentElement + ? "textContent" : "innerText"), i + } + + var o = e(123), i = null; + t.exports = r + }, {123: 123}], + 107: [function (e, t, n) { + "use strict"; + + function r(e, t) { + var n = {}; + return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit" + e] = "webkit" + t, n["Moz" + + e] = "moz" + t, n["ms" + e] = "MS" + t, n["O" + e] = "o" + t.toLowerCase(), n + } + + function o(e) { + if (s[e]) { + return s[e]; + } + if (!a[e]) { + return e; + } + var t = a[e]; + for (var n in t) { + if (t.hasOwnProperty(n) && n in u) { + return s[e] = t[n]; + } + } + return "" + } + + var i = e(123), a = { + animationend: r("Animation", "AnimationEnd"), + animationiteration: r("Animation", "AnimationIteration"), + animationstart: r("Animation", "AnimationStart"), + transitionend: r("Transition", "TransitionEnd") + }, s = {}, u = {}; + i.canUseDOM && (u = document.createElement("div").style, "AnimationEvent" in window + || (delete a.animationend.animation, delete a.animationiteration.animation, delete a.animationstart.animation), "TransitionEvent" + in window || delete a.transitionend.transition), t.exports = o + }, {123: 123}], + 108: [function (e, t, n) { + "use strict"; + + function r(e) { + if (e) { + var t = e.getName(); + if (t) { + return " Check the render method of `" + t + "`." + } + } + return "" + } + + function o(e) { + return "function" == typeof e && void 0 !== e.prototype && "function" + == typeof e.prototype.mountComponent && "function" + == typeof e.prototype.receiveComponent + } + + function i(e, t) { + var n; + if (null === e || !1 === e) { + n = l.create(i); + } else if ("object" == typeof e) { + var s = e, u = s.type; + if ("function" != typeof u && "string" != typeof u) { + var d = ""; + d += r(s._owner), a("130", null == u ? u : typeof u, d) + } + "string" == typeof s.type ? n = c.createInternalComponent(s) : o(s.type) + ? (n = new s.type(s), n.getHostNode || (n.getHostNode = n.getNativeNode)) + : n = new p(s) + } else { + "string" == typeof e || "number" == typeof e ? n = c.createInstanceForText(e) + : a("131", typeof e); + } + return n._mountIndex = 0, n._mountImage = null, n + } + + var a = e(112), s = e(143), u = e(29), l = e(49), c = e(54), + p = (e(121), e(137), e(142), function (e) { + this.construct(e) + }); + s(p.prototype, u, {_instantiateReactComponent: i}), t.exports = i + }, {112: 112, 121: 121, 137: 137, 142: 142, 143: 143, 29: 29, 49: 49, 54: 54}], + 109: [function (e, t, n) { + "use strict"; + + function r(e, t) { + if (!i.canUseDOM || t && !("addEventListener" in document)) { + return !1; + } + var n = "on" + e, r = n in document; + if (!r) { + var a = document.createElement("div"); + a.setAttribute(n, "return;"), r = "function" == typeof a[n] + } + return !r && o && "wheel" === e && (r = document.implementation.hasFeature( + "Events.wheel", "3.0")), r + } + + var o, i = e(123); + i.canUseDOM && (o = document.implementation && document.implementation.hasFeature && !0 + !== document.implementation.hasFeature("", "")), t.exports = r + }, {123: 123}], + 110: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e && e.nodeName && e.nodeName.toLowerCase(); + return "input" === t ? !!o[e.type] : "textarea" === t + } + + var o = { + color: !0, + date: !0, + datetime: !0, + "datetime-local": !0, + email: !0, + month: !0, + number: !0, + password: !0, + range: !0, + search: !0, + tel: !0, + text: !0, + time: !0, + url: !0, + week: !0 + }; + t.exports = r + }, {}], + 111: [function (e, t, n) { + "use strict"; + + function r(e) { + return '"' + o(e) + '"' + } + + var o = e(95); + t.exports = r + }, {95: 95}], + 112: [function (e, t, n) { + "use strict"; + + function r(e) { + for (var t = arguments.length - 1, n = "Minified React error #" + e + + "; visit http://facebook.github.io/react/docs/error-decoder.html?invariant=" + e, + r = 0; r < t; r++) { + n += "&args[]=" + encodeURIComponent(arguments[r + 1]); + } + n += " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; + var o = new Error(n); + throw o.name = "Invariant Violation", o.framesToPop = 1, o + } + + t.exports = r + }, {}], + 113: [function (e, t, n) { + "use strict"; + var r = e(60); + t.exports = r.renderSubtreeIntoContainer + }, {60: 60}], + 114: [function (e, t, n) { + "use strict"; + var r, o = e(123), i = e(10), a = /^[ \r\n\t\f]/, + s = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/, u = e(93), + l = u(function (e, t) { + if (e.namespaceURI !== i.svg || "innerHTML" in e) { + e.innerHTML = t; + } else { + r = r || document.createElement("div"), r.innerHTML = "" + t + ""; + for (var n = r.firstChild; n.firstChild;) { + e.appendChild(n.firstChild) + } + } + }); + if (o.canUseDOM) { + var c = document.createElement("div"); + c.innerHTML = " ", "" === c.innerHTML && (l = function (e, t) { + if (e.parentNode && e.parentNode.replaceChild(e, e), a.test(t) || "<" === t[0] + && s.test(t)) { + e.innerHTML = String.fromCharCode(65279) + t; + var n = e.firstChild; + 1 === n.data.length ? e.removeChild(n) : n.deleteData(0, 1) + } else { + e.innerHTML = t + } + }), c = null + } + t.exports = l + }, {10: 10, 123: 123, 93: 93}], + 115: [function (e, t, n) { + "use strict"; + var r = e(123), o = e(95), i = e(114), a = function (e, t) { + if (t) { + var n = e.firstChild; + if (n && n === e.lastChild && 3 === n.nodeType) { + return void (n.nodeValue = t) + } + } + e.textContent = t + }; + r.canUseDOM && ("textContent" in document.documentElement || (a = function (e, t) { + if (3 === e.nodeType) { + return void (e.nodeValue = t); + } + i(e, o(t)) + })), t.exports = a + }, {114: 114, 123: 123, 95: 95}], + 116: [function (e, t, n) { + "use strict"; + + function r(e, t) { + var n = null === e || !1 === e, r = null === t || !1 === t; + if (n || r) { + return n === r; + } + var o = typeof e, i = typeof t; + return "string" === o || "number" === o ? "string" === i || "number" === i : "object" + === i && e.type === t.type && e.key === t.key + } + + t.exports = r + }, {}], + 117: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return e && "object" == typeof e && null != e.key ? l.escape(e.key) : t.toString(36) + } + + function o(e, t, n, i) { + var d = typeof e; + if ("undefined" !== d && "boolean" !== d || (e = null), null === e || "string" === d + || "number" === d || "object" === d && e.$$typeof === s) { + return n(i, e, + "" === t ? c + r(e, 0) : t), 1; + } + var f, h, m = 0, v = "" === t ? c : t + p; + if (Array.isArray(e)) { + for (var g = 0; g < e.length; g++) { + f = e[g], h = v + r(f, + g), m += o(f, h, n, i); + } + } else { + var y = u(e); + if (y) { + var _, C = y.call(e); + if (y !== e.entries) { + for (var b = 0; !(_ = C.next()).done;) { + f = _.value, h = v + r( + f, b++), m += o(f, h, n, i); + } + } else { + for (; !(_ = C.next()).done;) { + var E = _.value; + E && (f = E[1], h = v + l.escape(E[0]) + p + r(f, 0), m += o(f, h, n, i)) + } + } + } else if ("object" === d) { + var x = String(e); + a("31", + "[object Object]" === x ? "object with keys {" + Object.keys(e).join(", ") + "}" + : x, "") + } + } + return m + } + + function i(e, t, n) { + return null == e ? 0 : o(e, "", t, n) + } + + var a = e(112), s = (e(119), e(48)), u = e(104), l = (e(137), e(22)), c = (e(142), "."), + p = ":"; + t.exports = i + }, {104: 104, 112: 112, 119: 119, 137: 137, 142: 142, 22: 22, 48: 48}], + 118: [function (e, t, n) { + "use strict"; + var r = (e(143), e(129)), o = (e(142), r); + t.exports = o + }, {129: 129, 142: 142, 143: 143}], + 119: [function (t, n, r) { + "use strict"; + var o = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + n.exports = o.ReactCurrentOwner + }, {}], + 120: [function (t, n, r) { + "use strict"; + n.exports = e + }, {}], + 121: [function (t, n, r) { + "use strict"; + var o = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + n.exports = o.getNextDebugID + }, {}], + 122: [function (e, t, n) { + "use strict"; + var r = e(129), o = { + listen: function (e, t, n) { + return e.addEventListener ? (e.addEventListener(t, n, !1), { + remove: function () { + e.removeEventListener(t, n, !1) + } + }) : e.attachEvent ? (e.attachEvent("on" + t, n), { + remove: function () { + e.detachEvent("on" + t, n) + } + }) : void 0 + }, capture: function (e, t, n) { + return e.addEventListener ? (e.addEventListener(t, n, !0), { + remove: function () { + e.removeEventListener(t, n, !0) + } + }) : {remove: r} + }, registerDefault: function () { + } + }; + t.exports = o + }, {129: 129}], + 123: [function (e, t, n) { + "use strict"; + var r = !("undefined" == typeof window || !window.document + || !window.document.createElement), o = { + canUseDOM: r, + canUseWorkers: "undefined" != typeof Worker, + canUseEventListeners: r && !(!window.addEventListener && !window.attachEvent), + canUseViewport: r && !!window.screen, + isInWorker: !r + }; + t.exports = o + }, {}], + 124: [function (e, t, n) { + "use strict"; + + function r(e) { + return e.replace(o, function (e, t) { + return t.toUpperCase() + }) + } + + var o = /-(.)/g; + t.exports = r + }, {}], + 125: [function (e, t, n) { + "use strict"; + + function r(e) { + return o(e.replace(i, "ms-")) + } + + var o = e(124), i = /^-ms-/; + t.exports = r + }, {124: 124}], + 126: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return !(!e || !t) && (e === t || !o(e) && (o(t) ? r(e, t.parentNode) : "contains" in e + ? e.contains(t) : !!e.compareDocumentPosition && !!(16 & e.compareDocumentPosition( + t)))) + } + + var o = e(139); + t.exports = r + }, {139: 139}], + 127: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e.length; + if ((Array.isArray(e) || "object" != typeof e && "function" != typeof e) && a( + !1), "number" != typeof t && a(!1), 0 === t || t - 1 in e || a(!1), "function" + == typeof e.callee && a(!1), e.hasOwnProperty) { + try { + return Array.prototype.slice.call(e) + } catch (e) { + } + } + for (var n = Array(t), r = 0; r < t; r++) { + n[r] = e[r]; + } + return n + } + + function o(e) { + return !!e && ("object" == typeof e || "function" == typeof e) && "length" in e + && !("setInterval" in e) && "number" != typeof e.nodeType && (Array.isArray(e) + || "callee" in e || "item" in e) + } + + function i(e) { + return o(e) ? Array.isArray(e) ? e.slice() : r(e) : [e] + } + + var a = e(137); + t.exports = i + }, {137: 137}], + 128: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e.match(c); + return t && t[1].toLowerCase() + } + + function o(e, t) { + var n = l; + l || u(!1); + var o = r(e), i = o && s(o); + if (i) { + n.innerHTML = i[1] + e + i[2]; + for (var c = i[0]; c--;) { + n = n.lastChild + } + } else { + n.innerHTML = e; + } + var p = n.getElementsByTagName("script"); + p.length && (t || u(!1), a(p).forEach(t)); + for (var d = Array.from(n.childNodes); n.lastChild;) { + n.removeChild(n.lastChild); + } + return d + } + + var i = e(123), a = e(127), s = e(133), u = e(137), + l = i.canUseDOM ? document.createElement("div") : null, c = /^\s*<(\w+)/; + t.exports = o + }, {123: 123, 127: 127, 133: 133, 137: 137}], + 129: [function (e, t, n) { + "use strict"; + + function r(e) { + return function () { + return e + } + } + + var o = function () { + }; + o.thatReturns = r, o.thatReturnsFalse = r(!1), o.thatReturnsTrue = r( + !0), o.thatReturnsNull = r(null), o.thatReturnsThis = function () { + return this + }, o.thatReturnsArgument = function (e) { + return e + }, t.exports = o + }, {}], + 130: [function (e, t, n) { + "use strict"; + var r = {}; + t.exports = r + }, {}], + 131: [function (e, t, n) { + "use strict"; + + function r(e) { + try { + e.focus() + } catch (e) { + } + } + + t.exports = r + }, {}], + 132: [function (e, t, n) { + "use strict"; + + function r(e) { + if (void 0 === (e = e || ("undefined" != typeof document ? document + : void 0))) { + return null; + } + try { + return e.activeElement || e.body + } catch (t) { + return e.body + } + } + + t.exports = r + }, {}], + 133: [function (e, t, n) { + "use strict"; + + function r(e) { + return a || i(!1), d.hasOwnProperty(e) || (e = "*"), s.hasOwnProperty(e) + || (a.innerHTML = "*" === e ? "" : "<" + e + ">", s[e] = !a.firstChild), s[e] ? d[e] : null + } + + var o = e(123), i = e(137), a = o.canUseDOM ? document.createElement("div") : null, + s = {}, u = [1, '"], + l = [1, "", "
"], c = [3, "", "
"], + p = [1, '', ""], d = { + "*": [1, "?
", "
"], + area: [1, "", ""], + col: [2, "", "
"], + legend: [1, "
", "
"], + param: [1, "", ""], + tr: [2, "", "
"], + optgroup: u, + option: u, + caption: l, + colgroup: l, + tbody: l, + tfoot: l, + thead: l, + td: c, + th: c + }; + ["circle", "clipPath", "defs", "ellipse", "g", "image", "line", "linearGradient", "mask", + "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "text", + "tspan"].forEach(function (e) { + d[e] = p, s[e] = !0 + }), t.exports = r + }, {123: 123, 137: 137}], + 134: [function (e, t, n) { + "use strict"; + + function r(e) { + return e.Window && e instanceof e.Window ? { + x: e.pageXOffset || e.document.documentElement.scrollLeft, + y: e.pageYOffset || e.document.documentElement.scrollTop + } : {x: e.scrollLeft, y: e.scrollTop} + } + + t.exports = r + }, {}], + 135: [function (e, t, n) { + "use strict"; + + function r(e) { + return e.replace(o, "-$1").toLowerCase() + } + + var o = /([A-Z])/g; + t.exports = r + }, {}], + 136: [function (e, t, n) { + "use strict"; + + function r(e) { + return o(e).replace(i, "-ms-") + } + + var o = e(135), i = /^ms-/; + t.exports = r + }, {135: 135}], + 137: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r, i, a, s, u) { + if (o(t), !e) { + var l; + if (void 0 === t) { + l = new Error( + "Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings."); + } else { + var c = [n, r, i, a, s, u], p = 0; + l = new Error(t.replace(/%s/g, function () { + return c[p++] + })), l.name = "Invariant Violation" + } + throw l.framesToPop = 1, l + } + } + + var o = function (e) { + }; + t.exports = r + }, {}], + 138: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = e ? e.ownerDocument || e : document, n = t.defaultView || window; + return !(!e || !("function" == typeof n.Node ? e instanceof n.Node : "object" + == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName)) + } + + t.exports = r + }, {}], + 139: [function (e, t, n) { + "use strict"; + + function r(e) { + return o(e) && 3 == e.nodeType + } + + var o = e(138); + t.exports = r + }, {138: 138}], + 140: [function (e, t, n) { + "use strict"; + + function r(e) { + var t = {}; + return function (n) { + return t.hasOwnProperty(n) || (t[n] = e.call(this, n)), t[n] + } + } + + t.exports = r + }, {}], + 141: [function (e, t, n) { + "use strict"; + + function r(e, t) { + return e === t ? 0 !== e || 0 !== t || 1 / e == 1 / t : e !== e && t !== t + } + + function o(e, t) { + if (r(e, t)) { + return !0; + } + if ("object" != typeof e || null === e || "object" != typeof t || null === t) { + return !1; + } + var n = Object.keys(e), o = Object.keys(t); + if (n.length !== o.length) { + return !1; + } + for (var a = 0; a < n.length; a++) { + if (!i.call(t, n[a]) || !r(e[n[a]], + t[n[a]])) { + return !1; + } + } + return !0 + } + + var i = Object.prototype.hasOwnProperty; + t.exports = o + }, {}], + 142: [function (e, t, n) { + "use strict"; + var r = e(129), o = r; + t.exports = o + }, {129: 129}], + 143: [function (e, t, n) { + "use strict"; + + function r(e) { + if (null === e || void 0 === e) { + throw new TypeError( + "Object.assign cannot be called with null or undefined"); + } + return Object(e) + } + + var o = Object.getOwnPropertySymbols, i = Object.prototype.hasOwnProperty, + a = Object.prototype.propertyIsEnumerable; + t.exports = function () { + try { + if (!Object.assign) { + return !1; + } + var e = new String("abc"); + if (e[5] = "de", "5" === Object.getOwnPropertyNames(e)[0]) { + return !1; + } + for (var t = {}, n = 0; n < 10; n++) { + t["_" + String.fromCharCode(n)] = n; + } + if ("0123456789" !== Object.getOwnPropertyNames(t).map(function (e) { + return t[e] + }).join("")) { + return !1; + } + var r = {}; + return "abcdefghijklmnopqrst".split("").forEach(function (e) { + r[e] = e + }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("") + } catch (e) { + return !1 + } + }() ? Object.assign : function (e, t) { + for (var n, s, u = r(e), l = 1; l < arguments.length; l++) { + n = Object(arguments[l]); + for (var c in n) { + i.call(n, c) && (u[c] = n[c]); + } + if (o) { + s = o(n); + for (var p = 0; p < s.length; p++) { + a.call(n, s[p]) && (u[s[p]] = n[s[p]]) + } + } + } + return u + } + }, {}], + 144: [function (e, t, n) { + "use strict"; + + function r(e, t, n, r, o) { + } + + t.exports = r + }, {137: 137, 142: 142, 147: 147}], + 145: [function (e, t, n) { + "use strict"; + var r = e(146); + t.exports = function (e) { + return r(e, !1) + } + }, {146: 146}], + 146: [function (e, t, n) { + "use strict"; + var r = e(129), o = e(137), i = (e(142), e(147)), a = e(144); + t.exports = function (e, t) { + function n(e) { + var t = e && (E && e[E] || e[x]); + if ("function" == typeof t) { + return t + } + } + + function s(e, t) { + return e === t ? 0 !== e || 1 / e == 1 / t : e !== e && t !== t + } + + function u(e) { + this.message = e, this.stack = "" + } + + function l(e) { + function n(n, r, a, s, l, c, p) { + if (s = s || w, c = c || a, p !== i) { + if (t) { + o(!1, + "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types"); + } else { + ; + } + } + return null == r[a] ? n ? new u( + null === r[a] ? "The " + l + " `" + c + "` is marked as required in `" + s + + "`, but its value is `null`." : "The " + l + " `" + c + + "` is marked as required in `" + s + "`, but its value is `undefined`.") + : null : e(r, a, s, l, c) + } + + var r = n.bind(null, !1); + return r.isRequired = n.bind(null, !0), r + } + + function c(e) { + function t(t, n, r, o, i, a) { + var s = t[n]; + if (_(s) !== e) { + return new u( + "Invalid " + o + " `" + i + "` of type `" + C(s) + "` supplied to `" + r + + "`, expected `" + e + "`."); + } + return null + } + + return l(t) + } + + function p(e) { + function t(t, n, r, o, a) { + if ("function" != typeof e) { + return new u("Property `" + a + "` of component `" + r + + "` has invalid PropType notation inside arrayOf."); + } + var s = t[n]; + if (!Array.isArray(s)) { + return new u( + "Invalid " + o + " `" + a + "` of type `" + _(s) + "` supplied to `" + r + + "`, expected an array.") + } + for (var l = 0; l < s.length; l++) { + var c = e(s, l, r, o, a + "[" + l + "]", i); + if (c instanceof Error) { + return c + } + } + return null + } + + return l(t) + } + + function d(e) { + function t(t, n, r, o, i) { + if (!(t[n] instanceof e)) { + var a = e.name || w; + return new u( + "Invalid " + o + " `" + i + "` of type `" + b(t[n]) + "` supplied to `" + r + + "`, expected instance of `" + a + "`.") + } + return null + } + + return l(t) + } + + function f(e) { + function t(t, n, r, o, i) { + for (var a = t[n], l = 0; l < e.length; l++) { + if (s(a, e[l])) { + return null; + } + } + return new u("Invalid " + o + " `" + i + "` of value `" + a + "` supplied to `" + r + + "`, expected one of " + JSON.stringify(e) + ".") + } + + return Array.isArray(e) ? l(t) : r.thatReturnsNull + } + + function h(e) { + function t(t, n, r, o, a) { + if ("function" != typeof e) { + return new u("Property `" + a + "` of component `" + r + + "` has invalid PropType notation inside objectOf."); + } + var s = t[n], l = _(s); + if ("object" !== l) { + return new u( + "Invalid " + o + " `" + a + "` of type `" + l + "` supplied to `" + r + + "`, expected an object."); + } + for (var c in s) { + if (s.hasOwnProperty(c)) { + var p = e(s, c, r, o, a + "." + c, i); + if (p instanceof Error) { + return p + } + } + } + return null + } + + return l(t) + } + + function m(e) { + function t(t, n, r, o, a) { + for (var s = 0; s < e.length; s++) { + if (null == (0, e[s])(t, n, r, o, a, i)) { + return null + } + } + return new u("Invalid " + o + " `" + a + "` supplied to `" + r + "`.") + } + + return Array.isArray(e) ? l(t) : r.thatReturnsNull + } + + function v(e) { + function t(t, n, r, o, a) { + var s = t[n], l = _(s); + if ("object" !== l) { + return new u( + "Invalid " + o + " `" + a + "` of type `" + l + "` supplied to `" + r + + "`, expected `object`."); + } + for (var c in e) { + var p = e[c]; + if (p) { + var d = p(s, c, r, o, a + "." + c, i); + if (d) { + return d + } + } + } + return null + } + + return l(t) + } + + function g(t) { + switch (typeof t) { + case"number": + case"string": + case"undefined": + return !0; + case"boolean": + return !t; + case"object": + if (Array.isArray(t)) { + return t.every(g); + } + if (null === t || e(t)) { + return !0; + } + var r = n(t); + if (!r) { + return !1; + } + var o, i = r.call(t); + if (r !== t.entries) { + for (; !(o = i.next()).done;) { + if (!g(o.value)) { + return !1 + } + } + } else { + for (; !(o = i.next()).done;) { + var a = o.value; + if (a && !g(a[1])) { + return !1 + } + } + } + return !0; + default: + return !1 + } + } + + function y(e, t) { + return "symbol" === e || ("Symbol" === t["@@toStringTag"] || "function" + == typeof Symbol && t instanceof Symbol) + } + + function _(e) { + var t = typeof e; + return Array.isArray(e) ? "array" : e instanceof RegExp ? "object" : y(t, e) + ? "symbol" : t + } + + function C(e) { + var t = _(e); + if ("object" === t) { + if (e instanceof Date) { + return "date"; + } + if (e instanceof RegExp) { + return "regexp" + } + } + return t + } + + function b(e) { + return e.constructor && e.constructor.name ? e.constructor.name : w + } + + var E = "function" == typeof Symbol && Symbol.iterator, x = "@@iterator", + w = "<>", T = { + array: c("array"), + bool: c("boolean"), + func: c("function"), + number: c("number"), + object: c("object"), + string: c("string"), + symbol: c("symbol"), + any: function () { + return l(r.thatReturnsNull) + }(), + arrayOf: p, + element: function () { + function t(t, n, r, o, i) { + var a = t[n]; + if (!e(a)) { + return new u( + "Invalid " + o + " `" + i + "` of type `" + _(a) + "` supplied to `" + r + + "`, expected a single ReactElement.") + } + return null + } + + return l(t) + }(), + instanceOf: d, + node: function () { + function e(e, t, n, r, o) { + return g(e[t]) ? null : new u( + "Invalid " + r + " `" + o + "` supplied to `" + n + "`, expected a ReactNode.") + } + + return l(e) + }(), + objectOf: h, + oneOf: f, + oneOfType: m, + shape: v + } + ; + return u.prototype = Error.prototype, T.checkPropTypes = a, T.PropTypes = T, T + } + }, {129: 129, 137: 137, 142: 142, 144: 144, 147: 147}], + 147: [function (e, t, n) { + "use strict"; + t.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED" + }, {}] + }, {}, [45])(45) + }() + }() +}); +/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ +if (!String.fromCodePoint) { + (function () { + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var stringFromCharCode = String.fromCharCode; + var floor = Math.floor; + var fromCodePoint = function () { + var MAX_SIZE = 0x4000; + var codeUnits = []; + var highSurrogate; + var lowSurrogate; + var index = -1; + var length = arguments.length; + if (!length) { + return ''; + } + var result = ''; + while (++index < length) { + var codePoint = Number(arguments[index]); + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` + codePoint < 0 || // not a valid Unicode code point + codePoint > 0x10FFFF || // not a valid Unicode code point + floor(codePoint) != codePoint // not an integer + ) { + throw RangeError('Invalid code point: ' + codePoint); + } + if (codePoint <= 0xFFFF) { // BMP code point + codeUnits.push(codePoint); + } else { // Astral code point; split in surrogate halves + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000; + highSurrogate = (codePoint >> 10) + 0xD800; + lowSurrogate = (codePoint % 0x400) + 0xDC00; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 == length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + if (defineProperty) { + defineProperty(String, 'fromCodePoint', { + 'value': fromCodePoint, + 'configurable': true, + 'writable': true + }); + } else { + String.fromCodePoint = fromCodePoint; + } + }()); +} + +/*! http://mths.be/codepointat v0.1.0 by @mathias */ +if (!String.prototype.codePointAt) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var codePointAt = function (position) { + if (this == null) { + throw TypeError(); + } + var string = String(this); + var size = string.length; + // `ToInteger` + var index = position ? Number(position) : 0; + if (index != index) { // better `isNaN` + index = 0; + } + // Account for out-of-bounds indices: + if (index < 0 || index >= size) { + return undefined; + } + // Get the first code unit + var first = string.charCodeAt(index); + var second; + if ( // check if it’s the start of a surrogate pair + first >= 0xD800 && first <= 0xDBFF && // high surrogate + size > index + 1 // there is a next code unit + ) { + second = string.charCodeAt(index + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; + }; + if (Object.defineProperty) { + Object.defineProperty(String.prototype, 'codePointAt', { + 'value': codePointAt, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.codePointAt = codePointAt; + } + }()); +} + +function registerAsciinemaPlayerElement() { + var AsciinemaPlayerProto = Object.create(HTMLElement.prototype); + + function merge() { + var merged = {}; + for (var i = 0; i < arguments.length; i++) { + var obj = arguments[i]; + for (var attrname in obj) { + merged[attrname] = obj[attrname]; + } + } + return merged; + } + + function attribute(element, attrName, optName, defaultValue, coerceFn) { + var obj = {}; + var value = element.getAttribute(attrName); + if (value !== null) { + if (value === '' && defaultValue !== undefined) { + value = defaultValue; + } else if (coerceFn) { + value = coerceFn(value); + } + obj[optName] = value; + } + return obj; + }; + + function fixEscapeCodes(text) { + if (text) { + var f = function (match, p1, offset, string) { + return String.fromCodePoint(parseInt(p1, 16)); + }; + + return text.replace(/\\u([a-z0-9]{4})/gi, f).replace(/\\x([a-z0-9]{2})/gi, f).replace(/\\e/g, + "\x1b"); + } else { + return text; + } + } + + AsciinemaPlayerProto.createdCallback = function () { + var self = this; + + var opts = merge( + attribute(this, 'cols', 'width', 0, parseInt), + attribute(this, 'rows', 'height', 0, parseInt), + attribute(this, 'autoplay', 'autoPlay', true, Boolean), + attribute(this, 'preload', 'preload', true, Boolean), + attribute(this, 'loop', 'loop', true, Boolean), + attribute(this, 'start-at', 'startAt', 0, parseInt), + attribute(this, 'speed', 'speed', 1, parseFloat), + attribute(this, 'idle-time-limit', 'idleTimeLimit', null, parseFloat), + attribute(this, 'poster', 'poster', null, fixEscapeCodes), + attribute(this, 'font-size', 'fontSize'), + attribute(this, 'theme', 'theme'), + attribute(this, 'title', 'title'), + attribute(this, 'author', 'author'), + attribute(this, 'author-url', 'authorURL'), + attribute(this, 'author-img-url', 'authorImgURL'), + { + onCanPlay: function () { + self.dispatchEvent(new CustomEvent("loadedmetadata")); + self.dispatchEvent(new CustomEvent("loadeddata")); + self.dispatchEvent(new CustomEvent("canplay")); + self.dispatchEvent(new CustomEvent("canplaythrough")); + }, + + onPlay: function () { + self.dispatchEvent(new CustomEvent("play")); + }, + + onPause: function () { + self.dispatchEvent(new CustomEvent("pause")); + } + } + ); + + this.player = asciinema.player.js.CreatePlayer(this, this.getAttribute('src'), opts); + }; + + AsciinemaPlayerProto.attachedCallback = function () { + var self = this; + setTimeout(function () { + self.dispatchEvent(new CustomEvent("attached")); + }, 0); + }; + + AsciinemaPlayerProto.detachedCallback = function () { + asciinema.player.js.UnmountPlayer(this); + this.player = undefined; + }; + + AsciinemaPlayerProto.play = function () { + this.player.play(); + }; + + AsciinemaPlayerProto.pause = function () { + this.player.pause(); + }; + + Object.defineProperty(AsciinemaPlayerProto, "duration", { + get: function () { + return this.player.getDuration() || 0; + }, + + set: function (value) { + } + }); + + Object.defineProperty(AsciinemaPlayerProto, "currentTime", { + get: function () { + return this.player.getCurrentTime(); + }, + + set: function (value) { + this.player.setCurrentTime(value); + } + }); + + document.registerElement('asciinema-player', {prototype: AsciinemaPlayerProto}); +}; + +;(function () { + var g, aa = aa || {}, ba = this; + + function ca(a) { + return "string" == typeof a + } + + function da(a, b) { + var c = a.split("."), d = ba; + c[0] in d || !d.execScript || d.execScript("var " + c[0]); + for (var e; c.length && (e = c.shift());) { + c.length || void 0 === b ? d = d[e] && d[e] + !== Object.prototype[e] ? d[e] : d[e] = {} : d[e] = b + } + } + + function ea() { + } + + function n(a) { + var b = typeof a; + if ("object" == b) { + if (a) { + if (a instanceof Array) { + return "array"; + } + if (a instanceof Object) { + return b; + } + var c = Object.prototype.toString.call(a); + if ("[object Window]" == c) { + return "object"; + } + if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice + && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable( + "splice")) { + return "array"; + } + if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" + != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) { + return "function" + } + } else { + return "null"; + } + } else if ("function" == b && "undefined" == typeof a.call) { + return "object"; + } + return b + } + + function fa(a) { + var b = n(a); + return "array" == b || "object" == b && "number" == typeof a.length + } + + function ha(a) { + return "function" == n(a) + } + + function ia(a) { + var b = typeof a; + return "object" == b && null != a || "function" == b + } + + function ja(a) { + return a[la] || (a[la] = ++ma) + } + + var la = "closure_uid_" + (1E9 * Math.random() >>> 0), ma = 0; + + function na(a, b, c) { + return a.call.apply(a.bind, arguments) + } + + function oa(a, b, c) { + if (!a) { + throw Error(); + } + if (2 < arguments.length) { + var d = Array.prototype.slice.call(arguments, 2); + return function () { + var c = Array.prototype.slice.call(arguments); + Array.prototype.unshift.apply(c, d); + return a.apply(b, c) + } + } + return function () { + return a.apply(b, arguments) + } + } + + function pa(a, b, c) { + pa = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") + ? na : oa; + return pa.apply(null, arguments) + } + + function qa(a, b) { + function c() { + } + + c.prototype = b.prototype; + a.Zd = b.prototype; + a.prototype = new c; + a.prototype.constructor = a; + a.base = function (a, c, f) { + for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++) { + d[e + - 2] = arguments[e]; + } + return b.prototype[c].apply(a, d) + } + };var ra = String.prototype.trim ? function (a) { + return a.trim() + } : function (a) { + return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "") + }, sa = String.prototype.repeat ? function (a, b) { + return a.repeat(b) + } : function (a, b) { + return Array(b + 1).join(a) + }; + + function ta(a, b) { + return a < b ? -1 : a > b ? 1 : 0 + };var ua = Array.prototype.indexOf ? function (a, b, c) { + return Array.prototype.indexOf.call(a, b, c) + } : function (a, b, c) { + c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c; + if (ca(a)) { + return ca(b) && 1 == b.length ? a.indexOf(b, c) : -1; + } + for (; c < a.length; c++) { + if (c in a && a[c] === b) { + return c; + } + } + return -1 + }, va = Array.prototype.forEach ? function (a, b, c) { + Array.prototype.forEach.call(a, b, c) + } : function (a, b, c) { + for (var d = a.length, e = ca(a) ? a.split("") : a, f = 0; f < d; f++) { + f in e && b.call(c, e[f], + f, a) + } + }; + + function wa(a) { + a:{ + var b = xa; + for (var c = a.length, d = ca(a) ? a.split("") : a, e = 0; e < c; e++) { + if (e in d && b.call( + void 0, d[e], e, a)) { + b = e; + break a + } + } + b = -1 + } + return 0 > b ? null : ca(a) ? a.charAt(b) : a[b] + } + + function ya(a, b) { + var c = ua(a, b), d; + (d = 0 <= c) && Array.prototype.splice.call(a, c, 1); + return d + } + + function za(a, b) { + a.sort(b || Aa) + } + + function Ca(a, b) { + for (var c = Array(a.length), d = 0; d < a.length; d++) { + c[d] = {index: d, value: a[d]}; + } + var e = b || Aa; + za(c, function (a, b) { + return e(a.value, b.value) || a.index - b.index + }); + for (d = 0; d < a.length; d++) { + a[d] = c[d].value + } + } + + function Aa(a, b) { + return a > b ? 1 : a < b ? -1 : 0 + }; + + function Da(a) { + var b = [], c = 0, d; + for (d in a) { + b[c++] = a[d]; + } + return b + } + + function Ea(a) { + var b = [], c = 0, d; + for (d in a) { + b[c++] = d; + } + return b + } + + var Fa = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split( + " "); + + function Ia(a, b) { + for (var c, d, e = 1; e < arguments.length; e++) { + d = arguments[e]; + for (c in d) { + a[c] = d[c]; + } + for (var f = 0; f < Fa.length; f++) { + c = Fa[f], Object.prototype.hasOwnProperty.call(d, c) + && (a[c] = d[c]) + } + } + }; + + function Ka(a) { + if (a.Yc && "function" == typeof a.Yc) { + return a.Yc(); + } + if (ca(a)) { + return a.split(""); + } + if (fa(a)) { + for (var b = [], c = a.length, d = 0; d < c; d++) { + b.push(a[d]); + } + return b + } + return Da(a) + } + + function La(a, b) { + if (a.forEach && "function" == typeof a.forEach) { + a.forEach(b, void 0); + } else if (fa(a) || ca( + a)) { + va(a, b, void 0); + } else { + if (a.Xc && "function" == typeof a.Xc) { + var c = a.Xc(); + } else if (a.Yc && "function" + == typeof a.Yc) { + c = void 0; + } else if (fa(a) || ca(a)) { + c = []; + for (var d = a.length, e = 0; e < d; e++) { + c.push(e) + } + } else { + c = Ea(a); + } + d = Ka(a); + e = d.length; + for (var f = 0; f < e; f++) { + b.call(void 0, d[f], c && c[f], a) + } + } + }; + + function Ma(a, b) { + this.ic = {}; + this.ib = []; + this.Fc = 0; + var c = arguments.length; + if (1 < c) { + if (c % 2) { + throw Error("Uneven number of arguments"); + } + for (var d = 0; d < c; d += 2) { + this.set(arguments[d], arguments[d + 1]) + } + } else { + a && this.addAll(a) + } + } + + g = Ma.prototype; + g.Yc = function () { + Na(this); + for (var a = [], b = 0; b < this.ib.length; b++) { + a.push(this.ic[this.ib[b]]); + } + return a + }; + g.Xc = function () { + Na(this); + return this.ib.concat() + }; + g.Td = function () { + return 0 == this.Fc + }; + g.clear = function () { + this.ic = {}; + this.Fc = this.ib.length = 0 + }; + g.remove = function (a) { + return Object.prototype.hasOwnProperty.call(this.ic, a) + ? (delete this.ic[a], this.Fc--, this.ib.length > 2 * this.Fc && Na(this), !0) : !1 + }; + + function Na(a) { + if (a.Fc != a.ib.length) { + for (var b = 0, c = 0; b < a.ib.length;) { + var d = a.ib[b]; + Object.prototype.hasOwnProperty.call(a.ic, d) && (a.ib[c++] = d); + b++ + } + a.ib.length = c + } + if (a.Fc != a.ib.length) { + var e = {}; + for (c = b = 0; b < a.ib.length;) { + d = a.ib[b], Object.prototype.hasOwnProperty.call(e, d) + || (a.ib[c++] = d, e[d] = 1), b++; + } + a.ib.length = c + } + } + + g.get = function (a, b) { + return Object.prototype.hasOwnProperty.call(this.ic, a) ? this.ic[a] : b + }; + g.set = function (a, b) { + Object.prototype.hasOwnProperty.call(this.ic, a) || (this.Fc++, this.ib.push(a)); + this.ic[a] = b + }; + g.addAll = function (a) { + if (a instanceof Ma) { + var b = a.Xc(); + a = a.Yc() + } else { + b = Ea(a), a = Da(a); + } + for (var c = 0; c < b.length; c++) { + this.set(b[c], a[c]) + } + }; + g.forEach = function (a, b) { + for (var c = this.Xc(), d = 0; d < c.length; d++) { + var e = c[d], f = this.get(e); + a.call(b, f, e, this) + } + }; + g.clone = function () { + return new Ma(this) + }; + var Pa = /^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/; + + function Qa(a, b) { + this.Ma = []; + this.Lc = b; + for (var c = !0, d = a.length - 1; 0 <= d; d--) { + var e = a[d] | 0; + c && e == b || (this.Ma[d] = e, c = !1) + } + } + + var Ra = {}; + + function Sa(a) { + if (-128 <= a && 128 > a) { + var b = Ra[a]; + if (b) { + return b + } + } + b = new Qa([a | 0], 0 > a ? -1 : 0); + -128 <= a && 128 > a && (Ra[a] = b); + return b + } + + function Ta(a) { + if (isNaN(a) || !isFinite(a)) { + return Ua; + } + if (0 > a) { + return Ta(-a).kb(); + } + for (var b = [], c = 1, d = 0; a >= c; d++) { + b[d] = a / c | 0, c *= Va; + } + return new Qa(b, 0) + } + + var Va = 4294967296, Ua = Sa(0), Wa = Sa(1), Xa = Sa(16777216); + g = Qa.prototype; + g.Of = function () { + return 0 < this.Ma.length ? this.Ma[0] : this.Lc + }; + g.vd = function () { + if (this.Eb()) { + return -this.kb().vd(); + } + for (var a = 0, b = 1, c = 0; c < this.Ma.length; c++) { + var d = Ya(this, c); + a += (0 <= d ? d : Va + d) * b; + b *= Va + } + return a + }; + g.toString = function (a) { + a = a || 10; + if (2 > a || 36 < a) { + throw Error("radix out of range: " + a); + } + if (this.hc()) { + return "0"; + } + if (this.Eb()) { + return "-" + this.kb().toString(a); + } + for (var b = Ta(Math.pow(a, 6)), c = this, d = ""; ;) { + var e = Za(c, b), f = (c.ze(e.multiply(b)).Of() >>> 0).toString(a); + c = e; + if (c.hc()) { + return f + d; + } + for (; 6 > f.length;) { + f = "0" + f; + } + d = "" + f + d + } + }; + + function Ya(a, b) { + return 0 > b ? 0 : b < a.Ma.length ? a.Ma[b] : a.Lc + } + + g.hc = function () { + if (0 != this.Lc) { + return !1; + } + for (var a = 0; a < this.Ma.length; a++) { + if (0 != this.Ma[a]) { + return !1; + } + } + return !0 + }; + g.Eb = function () { + return -1 == this.Lc + }; + g.xf = function (a) { + return 0 < this.compare(a) + }; + g.yf = function (a) { + return 0 <= this.compare(a) + }; + g.Ue = function () { + return 0 > this.compare(Xa) + }; + g.Ve = function (a) { + return 0 >= this.compare(a) + }; + g.compare = function (a) { + a = this.ze(a); + return a.Eb() ? -1 : a.hc() ? 0 : 1 + }; + g.kb = function () { + return this.Hf().add(Wa) + }; + g.add = function (a) { + for (var b = Math.max(this.Ma.length, a.Ma.length), c = [], d = 0, e = 0; e <= b; e++) { + var f = d + (Ya(this, e) & 65535) + (Ya(a, e) & 65535), + h = (f >>> 16) + (Ya(this, e) >>> 16) + (Ya(a, e) >>> 16); + d = h >>> 16; + f &= 65535; + h &= 65535; + c[e] = h << 16 | f + } + return new Qa(c, c[c.length - 1] & -2147483648 ? -1 : 0) + }; + g.ze = function (a) { + return this.add(a.kb()) + }; + g.multiply = function (a) { + if (this.hc() || a.hc()) { + return Ua; + } + if (this.Eb()) { + return a.Eb() ? this.kb().multiply(a.kb()) : this.kb().multiply(a).kb(); + } + if (a.Eb()) { + return this.multiply(a.kb()).kb(); + } + if (this.Ue() && a.Ue()) { + return Ta(this.vd() * a.vd()); + } + for (var b = this.Ma.length + a.Ma.length, c = [], d = 0; d < 2 * b; d++) { + c[d] = 0; + } + for (d = 0; d < this.Ma.length; d++) { + for (var e = 0; e < a.Ma.length; e++) { + var f = Ya(this, d) >>> 16, h = Ya(this, d) & 65535, k = Ya(a, e) >>> 16, + l = Ya(a, e) & 65535; + c[2 * d + 2 * e] += h * l; + ab(c, 2 * d + 2 * e); + c[2 * d + 2 * e + 1] += f * l; + ab(c, 2 * d + 2 * e + 1); + c[2 * d + 2 * e + 1] += + h * k; + ab(c, 2 * d + 2 * e + 1); + c[2 * d + 2 * e + 2] += f * k; + ab(c, 2 * d + 2 * e + 2) + } + } + for (d = 0; d < b; d++) { + c[d] = c[2 * d + 1] << 16 | c[2 * d]; + } + for (d = b; d < 2 * b; d++) { + c[d] = 0; + } + return new Qa(c, 0) + }; + + function ab(a, b) { + for (; (a[b] & 65535) != a[b];) { + a[b + 1] += a[b] >>> 16, a[b] &= 65535, b++ + } + } + + function Za(a, b) { + if (b.hc()) { + throw Error("division by zero"); + } + if (a.hc()) { + return Ua; + } + if (a.Eb()) { + return b.Eb() ? Za(a.kb(), b.kb()) : Za(a.kb(), b).kb(); + } + if (b.Eb()) { + return Za(a, b.kb()).kb(); + } + if (30 < a.Ma.length) { + if (a.Eb() || b.Eb()) { + throw Error("slowDivide_ only works with positive integers."); + } + for (var c = Wa, d = b; d.Ve(a);) { + c = c.shiftLeft(1), d = d.shiftLeft(1); + } + var e = c.ad(1), f = d.ad(1); + d = d.ad(2); + for (c = c.ad(2); !d.hc();) { + var h = f.add(d); + h.Ve(a) && (e = e.add(c), f = h); + d = d.ad(1); + c = c.ad(1) + } + return e + } + c = Ua; + for (d = a; d.yf(b);) { + e = Math.max(1, Math.floor(d.vd() / + b.vd())); + f = Math.ceil(Math.log(e) / Math.LN2); + f = 48 >= f ? 1 : Math.pow(2, f - 48); + h = Ta(e); + for (var k = h.multiply(b); k.Eb() || k.xf(d);) { + e -= f, h = Ta(e), k = h.multiply(b); + } + h.hc() && (h = Wa); + c = c.add(h); + d = d.ze(k) + } + return c + } + + g.Hf = function () { + for (var a = this.Ma.length, b = [], c = 0; c < a; c++) { + b[c] = ~this.Ma[c]; + } + return new Qa(b, ~this.Lc) + }; + g.shiftLeft = function (a) { + var b = a >> 5; + a %= 32; + for (var c = this.Ma.length + b + (0 < a ? 1 : 0), d = [], e = 0; e < c; e++) { + d[e] = 0 < a ? Ya( + this, e - b) << a | Ya(this, e - b - 1) >>> 32 - a : Ya(this, e - b); + } + return new Qa(d, this.Lc) + }; + g.ad = function (a) { + var b = a >> 5; + a %= 32; + for (var c = this.Ma.length - b, d = [], e = 0; e < c; e++) { + d[e] = 0 < a ? Ya(this, e + b) >>> a + | Ya(this, e + b + 1) << 32 - a : Ya(this, e + b); + } + return new Qa(d, this.Lc) + }; + + function cb(a, b) { + null != a && this.append.apply(this, arguments) + } + + g = cb.prototype; + g.xc = ""; + g.set = function (a) { + this.xc = "" + a + }; + g.append = function (a, b, c) { + this.xc += String(a); + if (null != b) { + for (var d = 1; d < arguments.length; d++) { + this.xc += arguments[d]; + } + } + return this + }; + g.clear = function () { + this.xc = "" + }; + g.toString = function () { + return this.xc + }; + + function eb(a) { + eb[" "](a); + return a + } + + eb[" "] = ea; + + function fb(a, b) { + var c = gb; + return Object.prototype.hasOwnProperty.call(c, a) ? c[a] : c[a] = b(a) + };var hb; + if ("undefined" === typeof q) { + var q = {}; + } + if ("undefined" === typeof ib) { + var ib = null; + } + if ("undefined" === typeof kb) { + var kb = null; + } + var lb = null; + if ("undefined" === typeof mb) { + var mb = null; + } + + function ob() { + return new r(null, 5, [pb, !0, qb, !0, rb, !1, sb, !1, tb, null], null) + } + + function t(a) { + return null != a && !1 !== a + } + + function ub(a) { + return null == a + } + + function vb(a) { + return a instanceof Array + } + + function wb(a) { + return null == a ? !0 : !1 === a ? !0 : !1 + } + + function yb(a) { + return ca(a) + } + + function Ab(a, b) { + return a[n(null == b ? null : b)] ? !0 : a._ ? !0 : !1 + } + + function Bb(a) { + return null == a ? null : a.constructor + } + + function Cb(a, b) { + var c = Bb(b); + c = t(t(c) ? c.qc : c) ? c.Tb : n(b); + return Error(["No protocol method ", a, " defined for type ", c, ": ", b].join("")) + } + + function Db(a) { + var b = a.Tb; + return t(b) ? b : "" + v.h(a) + } + + var Fb = "undefined" !== typeof Symbol && "function" === n(Symbol) ? Symbol.iterator + : "@@iterator"; + + function Gb(a) { + for (var b = a.length, c = Array(b), d = 0; ;) { + if (d < b) { + c[d] = a[d], d += 1; + } else { + break; + } + } + return c + } + + var Hb = function Hb(a) { + switch (arguments.length) { + case 2: + return Hb.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Hb.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + Hb.c = function (a, b) { + return a[b] + }; + Hb.A = function (a, b, c) { + return Kb(Hb, a[b], c) + }; + Hb.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return Hb.A(b, a, c) + }; + Hb.L = 2; + + function Lb(a) { + return Mb(function (a, c) { + a.push(c); + return a + }, [], a) + } + + function Nb() { + } + + function Ob() { + } + + function Pb() { + } + + var Qb = function Qb(a) { + if (null != a && null != a.W) { + return a.W(a); + } + var c = Qb[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Qb._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("ICounted.-count", a); + }, Rb = function Rb(a) { + if (null != a && null != a.oa) { + return a.oa(a); + } + var c = Rb[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Rb._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IEmptyableCollection.-empty", a); + }; + + function Sb() { + } + + var Tb = function Tb(a, b) { + if (null != a && null != a.X) { + return a.X(a, b); + } + var d = Tb[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Tb._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("ICollection.-conj", a); + }; + + function Ub() { + } + + var A = function A(a) { + switch (arguments.length) { + case 2: + return A.c(arguments[0], arguments[1]); + case 3: + return A.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + A.c = function (a, b) { + if (null != a && null != a.$) { + return a.$(a, b); + } + var c = A[n(null == a ? null : a)]; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + c = A._; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + throw Cb("IIndexed.-nth", a); + }; + A.l = function (a, b, c) { + if (null != a && null != a.ka) { + return a.ka(a, b, c); + } + var d = A[n(null == a ? null : a)]; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + d = A._; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + throw Cb("IIndexed.-nth", a); + }; + A.L = 3; + + function Vb() { + } + + var Wb = function Wb(a) { + if (null != a && null != a.Ia) { + return a.Ia(a); + } + var c = Wb[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Wb._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("ISeq.-first", a); + }, Yb = function Yb(a) { + if (null != a && null != a.bb) { + return a.bb(a); + } + var c = Yb[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Yb._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("ISeq.-rest", a); + }; + + function Zb() { + } + + function $b() { + } + + var cc = function cc(a) { + switch (arguments.length) { + case 2: + return cc.c(arguments[0], arguments[1]); + case 3: + return cc.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + cc.c = function (a, b) { + if (null != a && null != a.V) { + return a.V(a, b); + } + var c = cc[n(null == a ? null : a)]; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + c = cc._; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + throw Cb("ILookup.-lookup", a); + }; + cc.l = function (a, b, c) { + if (null != a && null != a.I) { + return a.I(a, b, c); + } + var d = cc[n(null == a ? null : a)]; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + d = cc._; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + throw Cb("ILookup.-lookup", a); + }; + cc.L = 3; + var dc = function dc(a, b) { + if (null != a && null != a.yc) { + return a.yc(a, b); + } + var d = dc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = dc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IAssociative.-contains-key?", a); + }, ec = function ec(a, b, c) { + if (null != a && null != a.O) { + return a.O(a, b, c); + } + var e = ec[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = ec._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("IAssociative.-assoc", a); + }; + + function fc() { + } + + var gc = function gc(a, b) { + if (null != a && null != a.ga) { + return a.ga(a, b); + } + var d = gc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = gc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IMap.-dissoc", a); + }; + + function hc() { + } + + var jc = function jc(a) { + if (null != a && null != a.fd) { + return a.fd(a); + } + var c = jc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = jc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IMapEntry.-key", a); + }, kc = function kc(a) { + if (null != a && null != a.gd) { + return a.gd(a); + } + var c = kc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = kc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IMapEntry.-val", a); + }; + + function lc() { + } + + var mc = function mc(a, b) { + if (null != a && null != a.ie) { + return a.ie(a, b); + } + var d = mc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = mc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("ISet.-disjoin", a); + }, nc = function nc(a) { + if (null != a && null != a.Ac) { + return a.Ac(a); + } + var c = nc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = nc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IStack.-peek", a); + }, oc = function oc(a) { + if (null != a && null != a.Bc) { + return a.Bc(a); + } + var c = oc[n(null == + a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = oc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IStack.-pop", a); + }; + + function pc() { + } + + var qc = function qc(a, b, c) { + if (null != a && null != a.dc) { + return a.dc(a, b, c); + } + var e = qc[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = qc._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("IVector.-assoc-n", a); + }, B = function B(a) { + if (null != a && null != a.pc) { + return a.pc(a); + } + var c = B[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = B._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IDeref.-deref", a); + }; + + function rc() { + } + + var sc = function sc(a) { + if (null != a && null != a.P) { + return a.P(a); + } + var c = sc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = sc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IMeta.-meta", a); + }, tc = function tc(a, b) { + if (null != a && null != a.T) { + return a.T(a, b); + } + var d = tc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = tc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IWithMeta.-with-meta", a); + }; + + function uc() { + } + + var vc = function vc(a) { + switch (arguments.length) { + case 2: + return vc.c(arguments[0], arguments[1]); + case 3: + return vc.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + vc.c = function (a, b) { + if (null != a && null != a.Fa) { + return a.Fa(a, b); + } + var c = vc[n(null == a ? null : a)]; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + c = vc._; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + throw Cb("IReduce.-reduce", a); + }; + vc.l = function (a, b, c) { + if (null != a && null != a.Ga) { + return a.Ga(a, b, c); + } + var d = vc[n(null == a ? null : a)]; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + d = vc._; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + throw Cb("IReduce.-reduce", a); + }; + vc.L = 3; + + function wc() { + } + + var yc = function yc(a, b, c) { + if (null != a && null != a.Qc) { + return a.Qc(a, b, c); + } + var e = yc[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = yc._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("IKVReduce.-kv-reduce", a); + }, zc = function zc(a, b) { + if (null != a && null != a.K) { + return a.K(a, b); + } + var d = zc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = zc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IEquiv.-equiv", a); + }, Ac = function Ac(a) { + if (null != a && null != a.U) { + return a.U(a); + } + var c = Ac[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Ac._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IHash.-hash", a); + }; + + function Bc() { + } + + var Cc = function Cc(a) { + if (null != a && null != a.S) { + return a.S(a); + } + var c = Cc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Cc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("ISeqable.-seq", a); + }; + + function Ec() { + } + + function Fc() { + } + + function Gc() { + } + + function Hc() { + } + + var Ic = function Ic(a) { + if (null != a && null != a.Rc) { + return a.Rc(a); + } + var c = Ic[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Ic._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IReversible.-rseq", a); + }, Jc = function Jc(a, b) { + if (null != a && null != a.Re) { + return a.Re(0, b); + } + var d = Jc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Jc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IWriter.-write", a); + }; + + function Kc() { + } + + var Lc = function Lc(a, b, c) { + if (null != a && null != a.Kd) { + return a.Kd(a, b, c); + } + var e = Lc[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = Lc._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("IWatchable.-notify-watches", a); + }, Mc = function Mc(a, b, c) { + if (null != a && null != a.Jd) { + return a.Jd(a, b, c); + } + var e = Mc[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = Mc._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("IWatchable.-add-watch", a); + }, Nc = function Nc(a, + b) { + if (null != a && null != a.Ld) { + return a.Ld(a, b); + } + var d = Nc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Nc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IWatchable.-remove-watch", a); + }, Oc = function Oc(a) { + if (null != a && null != a.Pc) { + return a.Pc(a); + } + var c = Oc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Oc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IEditableCollection.-as-transient", a); + }, Pc = function Pc(a, b) { + if (null != a && null != a.Dc) { + return a.Dc(a, + b); + } + var d = Pc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Pc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("ITransientCollection.-conj!", a); + }, Qc = function Qc(a) { + if (null != a && null != a.kd) { + return a.kd(a); + } + var c = Qc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Qc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("ITransientCollection.-persistent!", a); + }, Rc = function Rc(a, b, c) { + if (null != a && null != a.Cc) { + return a.Cc(a, b, c); + } + var e = Rc[n(null == a ? null : a)]; + if (null != + e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = Rc._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("ITransientAssociative.-assoc!", a); + }; + + function Tc() { + } + + var Uc = function Uc(a, b) { + if (null != a && null != a.cc) { + return a.cc(a, b); + } + var d = Uc[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Uc._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IComparable.-compare", a); + }, Vc = function Vc(a) { + if (null != a && null != a.Le) { + return a.Le(); + } + var c = Vc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Vc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IChunk.-drop-first", a); + }, Wc = function Wc(a) { + if (null != a && null != a.ge) { + return a.ge(a); + } + var c = Wc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Wc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IChunkedSeq.-chunked-first", a); + }, Xc = function Xc(a) { + if (null != a && null != a.Hd) { + return a.Hd(a); + } + var c = Xc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Xc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IChunkedSeq.-chunked-rest", a); + }, Yc = function Yc(a) { + if (null != a && null != a.hd) { + return a.hd(a); + } + var c = Yc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, + a); + } + c = Yc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("INamed.-name", a); + }, Zc = function Zc(a) { + if (null != a && null != a.jd) { + return a.jd(a); + } + var c = Zc[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Zc._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("INamed.-namespace", a); + }, $c = function $c(a, b) { + if (null != a && null != a.Gb) { + return a.Gb(a, b); + } + var d = $c[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = $c._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IReset.-reset!", + a); + }, ad = function ad(a) { + switch (arguments.length) { + case 2: + return ad.c(arguments[0], arguments[1]); + case 3: + return ad.l(arguments[0], arguments[1], arguments[2]); + case 4: + return ad.M(arguments[0], arguments[1], arguments[2], arguments[3]); + case 5: + return ad.Z(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + ad.c = function (a, b) { + if (null != a && null != a.je) { + return a.je(a, b); + } + var c = ad[n(null == a ? null : a)]; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + c = ad._; + if (null != c) { + return c.c ? c.c(a, b) : c.call(null, a, b); + } + throw Cb("ISwap.-swap!", a); + }; + ad.l = function (a, b, c) { + if (null != a && null != a.ke) { + return a.ke(a, b, c); + } + var d = ad[n(null == a ? null : a)]; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + d = ad._; + if (null != d) { + return d.l ? d.l(a, b, c) : d.call(null, a, b, c); + } + throw Cb("ISwap.-swap!", a); + }; + ad.M = function (a, b, c, d) { + if (null != a && null != a.le) { + return a.le(a, b, c, d); + } + var e = ad[n(null == a ? null : a)]; + if (null != e) { + return e.M ? e.M(a, b, c, d) : e.call(null, a, b, c, d); + } + e = ad._; + if (null != e) { + return e.M ? e.M(a, b, c, d) : e.call(null, a, b, c, d); + } + throw Cb("ISwap.-swap!", a); + }; + ad.Z = function (a, b, c, d, e) { + if (null != a && null != a.me) { + return a.me(a, b, c, d, e); + } + var f = ad[n(null == a ? null : a)]; + if (null != f) { + return f.Z ? f.Z(a, b, c, d, e) : f.call(null, a, b, c, d, e); + } + f = ad._; + if (null != f) { + return f.Z ? f.Z(a, b, c, d, e) : f.call(null, a, b, c, d, e); + } + throw Cb("ISwap.-swap!", a); + }; + ad.L = 5; + var bd = function bd(a, b) { + if (null != a && null != a.Qe) { + return a.Qe(0, b); + } + var d = bd[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = bd._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IVolatile.-vreset!", a); + }; + + function cd() { + } + + var dd = function dd(a) { + if (null != a && null != a.ba) { + return a.ba(a); + } + var c = dd[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = dd._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IIterable.-iterator", a); + }; + + function ed(a) { + this.Nf = a; + this.m = 1073741824; + this.J = 0 + } + + ed.prototype.Re = function (a, b) { + return this.Nf.append(b) + }; + + function fd(a) { + var b = new cb; + a.R(null, new ed(b), ob()); + return "" + v.h(b) + } + + var gd = "undefined" !== typeof Math.imul && 0 !== Math.imul(4294967295, 5) ? function (a, b) { + return Math.imul(a, b) + } : function (a, b) { + var c = a & 65535, d = b & 65535; + return c * d + ((a >>> 16 & 65535) * d + c * (b >>> 16 & 65535) << 16 >>> 0) | 0 + }; + + function hd(a) { + a = gd(a | 0, -862048943); + return gd(a << 15 | a >>> -15, 461845907) + } + + function id(a, b) { + var c = (a | 0) ^ (b | 0); + return gd(c << 13 | c >>> -13, 5) + -430675100 | 0 + } + + function jd(a, b) { + var c = (a | 0) ^ b; + c = gd(c ^ c >>> 16, -2048144789); + c = gd(c ^ c >>> 13, -1028477387); + return c ^ c >>> 16 + } + + function kd(a) { + a:{ + var b = 1; + for (var c = 0; ;) { + if (b < a.length) { + var d = b + 2; + c = id(c, hd(a.charCodeAt(b - 1) | a.charCodeAt(b) << 16)); + b = d + } else { + b = c; + break a + } + } + } + b = 1 === (a.length & 1) ? b ^ hd(a.charCodeAt(a.length - 1)) : b; + return jd(b, gd(2, a.length)) + } + + var ld = {}, md = 0; + + function nd(a) { + 255 < md && (ld = {}, md = 0); + if (null == a) { + return 0; + } + var b = ld[a]; + if ("number" !== typeof b) { + a:if (null != a) { + if (b = a.length, 0 < b) { + for (var c = 0, d = 0; ;) { + if (c < b) { + var e = c + 1; + d = gd(31, d) + a.charCodeAt(c); + c = e + } else { + b = d; + break a + } + } + } else { + b = 0; + } + } else { + b = 0; + } + ld[a] = b; + md += 1 + } + return a = b + } + + function od(a) { + if (null != a && (a.m & 4194304 || q === a.Sf)) { + return a.U(null) ^ 0; + } + if ("number" === typeof a) { + if (t(isFinite(a))) { + return Math.floor(a) % 2147483647; + } + switch (a) { + case Infinity: + return 2146435072; + case -Infinity: + return -1048576; + default: + return 2146959360 + } + } else { + return !0 === a ? a = 1231 : !1 === a ? a = 1237 : "string" === typeof a ? (a = nd(a), 0 + !== a && (a = hd(a), a = id(0, a), a = jd(a, 4))) : a = a instanceof Date ? a.valueOf() ^ 0 + : null == a ? 0 : Ac(a) ^ 0, a + } + } + + function pd(a, b) { + return a ^ b + 2654435769 + (a << 6) + (a >> 2) + } + + function qd(a) { + return a instanceof rd + } + + function sd(a, b) { + if (a.Zb === b.Zb) { + return 0; + } + var c = wb(a.fb); + if (t(c ? b.fb : c)) { + return -1; + } + if (t(a.fb)) { + if (wb(b.fb)) { + return 1; + } + c = Aa(a.fb, b.fb); + return 0 === c ? Aa(a.name, b.name) : c + } + return Aa(a.name, b.name) + } + + function rd(a, b, c, d, e) { + this.fb = a; + this.name = b; + this.Zb = c; + this.Oc = d; + this.hb = e; + this.m = 2154168321; + this.J = 4096 + } + + g = rd.prototype; + g.toString = function () { + return this.Zb + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.K = function (a, b) { + return b instanceof rd ? this.Zb === b.Zb : !1 + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return D.c(c, this); + case 3: + return D.l(c, this, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return D.c(c, this) + }; + a.l = function (a, c, d) { + return D.l(c, this, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return D.c(a, this) + }; + g.c = function (a, b) { + return D.l(a, this, b) + }; + g.P = function () { + return this.hb + }; + g.T = function (a, b) { + return new rd(this.fb, this.name, this.Zb, this.Oc, b) + }; + g.U = function () { + var a = this.Oc; + return null != a ? a : this.Oc = a = pd(kd(this.name), nd(this.fb)) + }; + g.hd = function () { + return this.name + }; + g.jd = function () { + return this.fb + }; + g.R = function (a, b) { + return Jc(b, this.Zb) + }; + var td = function td(a) { + switch (arguments.length) { + case 1: + return td.h(arguments[0]); + case 2: + return td.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + td.h = function (a) { + if (a instanceof rd) { + return a; + } + var b = a.indexOf("/"); + return 1 > b ? td.c(null, a) : td.c(a.substring(0, b), a.substring(b + 1, a.length)) + }; + td.c = function (a, b) { + var c = null != a ? [v.h(a), "/", v.h(b)].join("") : b; + return new rd(a, b, c, null, null) + }; + td.L = 2; + + function ud(a) { + return null != a ? a.J & 131072 || q === a.Tf ? !0 : a.J ? !1 : Ab(cd, a) : Ab(cd, a) + } + + function E(a) { + if (null == a) { + return null; + } + if (null != a && (a.m & 8388608 || q === a.Pe)) { + return a.S(null); + } + if (vb(a) || "string" === typeof a) { + return 0 === a.length ? null : new Jb(a, 0, null); + } + if (Ab(Bc, a)) { + return Cc(a); + } + throw Error([v.h(a), " is not ISeqable"].join("")); + } + + function y(a) { + if (null == a) { + return null; + } + if (null != a && (a.m & 64 || q === a.G)) { + return a.Ia(null); + } + a = E(a); + return null == a ? null : Wb(a) + } + + function vd(a) { + return null != a ? null != a && (a.m & 64 || q === a.G) ? a.bb(null) : (a = E(a)) ? Yb(a) : wd + : wd + } + + function z(a) { + return null == a ? null : null != a && (a.m & 128 || q === a.Id) ? a.Ka(null) : E(vd(a)) + } + + var G = function G(a) { + switch (arguments.length) { + case 1: + return G.h(arguments[0]); + case 2: + return G.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return G.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + G.h = function () { + return !0 + }; + G.c = function (a, b) { + return null == a ? null == b : a === b || zc(a, b) + }; + G.A = function (a, b, c) { + for (; ;) { + if (G.c(a, b)) { + if (z(c)) { + a = b, b = y(c), c = z(c); + } else { + return G.c(b, + y(c)); + } + } else { + return !1 + } + } + }; + G.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return G.A(b, a, c) + }; + G.L = 2; + + function xd(a) { + this.s = a + } + + xd.prototype.next = function () { + if (null != this.s) { + var a = y(this.s); + this.s = z(this.s); + return {value: a, done: !1} + } + return {value: null, done: !0} + }; + + function yd(a) { + return new xd(E(a)) + } + + function zd(a, b) { + var c = hd(a); + c = id(0, c); + return jd(c, b) + } + + function Ad(a) { + var b = 0, c = 1; + for (a = E(a); ;) { + if (null != a) { + b += 1, c = gd(31, c) + od(y(a)) | 0, a = z(a); + } else { + return zd( + c, b) + } + } + } + + var Cd = zd(1, 0); + + function Dd(a) { + var b = 0, c = 0; + for (a = E(a); ;) { + if (null != a) { + b += 1, c = c + od(y(a)) | 0, a = z(a); + } else { + return zd(c, b) + } + } + } + + var Ed = zd(0, 0); + Pb["null"] = !0; + Qb["null"] = function () { + return 0 + }; + Date.prototype.K = function (a, b) { + return b instanceof Date && this.valueOf() === b.valueOf() + }; + Date.prototype.zc = q; + Date.prototype.cc = function (a, b) { + if (b instanceof Date) { + return Aa(this.valueOf(), b.valueOf()); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + zc.number = function (a, b) { + return a === b + }; + Nb["function"] = !0; + rc["function"] = !0; + sc["function"] = function () { + return null + }; + Ac._ = function (a) { + return ja(a) + }; + + function Fd(a) { + return a + 1 + } + + function Gd(a) { + this.H = a; + this.m = 32768; + this.J = 0 + } + + Gd.prototype.pc = function () { + return this.H + }; + + function Hd(a) { + return a instanceof Gd + } + + function Id(a) { + return Hd(a) ? a : new Gd(a) + } + + function Jd(a) { + return Hd(a) ? B(a) : a + } + + function Kd(a, b) { + var c = Qb(a); + if (0 === c) { + return b.B ? b.B() : b.call(null); + } + for (var d = A.c(a, 0), e = 1; ;) { + if (e < c) { + var f = A.c(a, e); + d = b.c ? b.c(d, f) : b.call(null, d, f); + if (Hd(d)) { + return B(d); + } + e += 1 + } else { + return d + } + } + } + + function Ld(a, b, c) { + var d = Qb(a), e = c; + for (c = 0; ;) { + if (c < d) { + var f = A.c(a, c); + e = b.c ? b.c(e, f) : b.call(null, e, f); + if (Hd(e)) { + return B(e); + } + c += 1 + } else { + return e + } + } + } + + function Md(a, b) { + var c = a.length; + if (0 === a.length) { + return b.B ? b.B() : b.call(null); + } + for (var d = a[0], e = 1; ;) { + if (e < c) { + var f = a[e]; + d = b.c ? b.c(d, f) : b.call(null, d, f); + if (Hd(d)) { + return B(d); + } + e += 1 + } else { + return d + } + } + } + + function Nd(a, b, c) { + var d = a.length, e = c; + for (c = 0; ;) { + if (c < d) { + var f = a[c]; + e = b.c ? b.c(e, f) : b.call(null, e, f); + if (Hd(e)) { + return B(e); + } + c += 1 + } else { + return e + } + } + } + + function Od(a, b, c, d) { + for (var e = a.length; ;) { + if (d < e) { + var f = a[d]; + c = b.c ? b.c(c, f) : b.call(null, c, f); + if (Hd(c)) { + return B(c); + } + d += 1 + } else { + return c + } + } + } + + function Pd(a) { + return null != a ? a.m & 2 || q === a.jf ? !0 : a.m ? !1 : Ab(Pb, a) : Ab(Pb, a) + } + + function Qd(a) { + return null != a ? a.m & 16 || q === a.Ne ? !0 : a.m ? !1 : Ab(Ub, a) : Ab(Ub, a) + } + + function Ud(a, b, c) { + var d = H(a); + if (c >= d) { + return -1; + } + !(0 < c) && 0 > c && (c += d, c = 0 > c ? 0 : c); + for (; ;) { + if (c < d) { + if (G.c(Vd(a, c), b)) { + return c; + } + c += 1 + } else { + return -1 + } + } + } + + function Xd(a, b, c) { + var d = H(a); + if (0 === d) { + return -1; + } + 0 < c ? (--d, c = d < c ? d : c) : c = 0 > c ? d + c : c; + for (; ;) { + if (0 <= c) { + if (G.c(Vd(a, c), b)) { + return c; + } + --c + } else { + return -1 + } + } + } + + function Yd(a, b) { + this.o = a; + this.i = b + } + + Yd.prototype.ja = function () { + return this.i < this.o.length + }; + Yd.prototype.next = function () { + var a = this.o[this.i]; + this.i += 1; + return a + }; + + function Jb(a, b, c) { + this.o = a; + this.i = b; + this.meta = c; + this.m = 166592766; + this.J = 139264 + } + + g = Jb.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.$ = function (a, b) { + var c = b + this.i; + if (0 <= c && c < this.o.length) { + return this.o[c]; + } + throw Error("Index out of bounds"); + }; + g.ka = function (a, b, c) { + a = b + this.i; + return 0 <= a && a < this.o.length ? this.o[a] : c + }; + g.ba = function () { + return new Yd(this.o, this.i) + }; + g.P = function () { + return this.meta + }; + g.Ka = function () { + return this.i + 1 < this.o.length ? new Jb(this.o, this.i + 1, null) : null + }; + g.W = function () { + var a = this.o.length - this.i; + return 0 > a ? 0 : a + }; + g.Rc = function () { + var a = this.W(null); + return 0 < a ? new Zd(this, a - 1, null) : null + }; + g.U = function () { + return Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return wd + }; + g.Fa = function (a, b) { + return Od(this.o, b, this.o[this.i], this.i + 1) + }; + g.Ga = function (a, b, c) { + return Od(this.o, b, c, this.i) + }; + g.Ia = function () { + return this.o[this.i] + }; + g.bb = function () { + return this.i + 1 < this.o.length ? new Jb(this.o, this.i + 1, null) : wd + }; + g.S = function () { + return this.i < this.o.length ? this : null + }; + g.T = function (a, b) { + return new Jb(this.o, this.i, b) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Jb.prototype[Fb] = function () { + return yd(this) + }; + + function be(a) { + return 0 < a.length ? new Jb(a, 0, null) : null + } + + function Zd(a, b, c) { + this.Gd = a; + this.i = b; + this.meta = c; + this.m = 32374990; + this.J = 8192 + } + + g = Zd.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return 0 < this.i ? new Zd(this.Gd, this.i - 1, null) : null + }; + g.W = function () { + return this.i + 1 + }; + g.U = function () { + return Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return A.c(this.Gd, this.i) + }; + g.bb = function () { + return 0 < this.i ? new Zd(this.Gd, this.i - 1, null) : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new Zd(this.Gd, this.i, b) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Zd.prototype[Fb] = function () { + return yd(this) + }; + + function ee(a) { + return y(z(a)) + } + + function fe(a) { + for (; ;) { + var b = z(a); + if (null != b) { + a = b; + } else { + return y(a) + } + } + } + + zc._ = function (a, b) { + return a === b + }; + var ge = function ge(a) { + switch (arguments.length) { + case 0: + return ge.B(); + case 1: + return ge.h(arguments[0]); + case 2: + return ge.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return ge.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + ge.B = function () { + return he + }; + ge.h = function (a) { + return a + }; + ge.c = function (a, b) { + return null != a ? Tb(a, b) : Tb(wd, b) + }; + ge.A = function (a, b, c) { + for (; ;) { + if (t(c)) { + a = ge.c(a, b), b = y(c), c = z(c); + } else { + return ge.c(a, b) + } + } + }; + ge.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return ge.A(b, a, c) + }; + ge.L = 2; + + function ie(a) { + return null == a ? null : Rb(a) + } + + function H(a) { + if (null != a) { + if (null != a && (a.m & 2 || q === a.jf)) { + a = a.W(null); + } else if (vb( + a)) { + a = a.length; + } else if ("string" === typeof a) { + a = a.length; + } else if (null != a && (a.m + & 8388608 || q === a.Pe)) { + a:{ + a = E(a); + for (var b = 0; ;) { + if (Pd(a)) { + a = b + Qb(a); + break a + } + a = z(a); + b += 1 + } + } + } else { + a = Qb(a); + } + } else { + a = 0; + } + return a + } + + function je(a, b, c) { + for (; ;) { + if (null == a) { + return c; + } + if (0 === b) { + return E(a) ? y(a) : c; + } + if (Qd(a)) { + return A.l(a, b, c); + } + if (E(a)) { + a = z(a), --b; + } else { + return c + } + } + } + + function Vd(a, b) { + if ("number" !== typeof b) { + throw Error("Index argument to nth must be a number"); + } + if (null == a) { + return a; + } + if (null != a && (a.m & 16 || q === a.Ne)) { + return a.$(null, b); + } + if (vb(a)) { + if (0 <= b && b < a.length) { + return a[b]; + } + throw Error("Index out of bounds"); + } + if ("string" === typeof a) { + if (0 <= b && b < a.length) { + return a.charAt(b); + } + throw Error("Index out of bounds"); + } + if (null != a && (a.m & 64 || q === a.G)) { + a:{ + var c = a; + for (var d = b; ;) { + if (null == c) { + throw Error("Index out of bounds"); + } + if (0 === d) { + if (E(c)) { + c = y(c); + break a + } + throw Error("Index out of bounds"); + } + if (Qd(c)) { + c = A.c(c, d); + break a + } + if (E(c)) { + c = z(c), --d; + } else { + throw Error("Index out of bounds"); + } + } + } + return c + } + if (Ab(Ub, a)) { + return A.c(a, b); + } + throw Error(["nth not supported on this type ", v.h(Db(Bb(a)))].join("")); + } + + function J(a, b, c) { + if ("number" !== typeof b) { + throw Error("Index argument to nth must be a number."); + } + if (null == a) { + return c; + } + if (null != a && (a.m & 16 || q === a.Ne)) { + return a.ka(null, b, c); + } + if (vb(a)) { + return 0 <= b && b < a.length ? a[b] : c; + } + if ("string" === typeof a) { + return 0 <= b && b < a.length ? a.charAt(b) : c; + } + if (null != a && (a.m & 64 || q === a.G)) { + return je(a, b, c); + } + if (Ab(Ub, a)) { + return A.l(a, b, c); + } + throw Error(["nth not supported on this type ", v.h(Db(Bb(a)))].join("")); + } + + var D = function D(a) { + switch (arguments.length) { + case 2: + return D.c(arguments[0], arguments[1]); + case 3: + return D.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + D.c = function (a, b) { + return null == a ? null : null != a && (a.m & 256 || q === a.rf) ? a.V(null, b) : vb(a) ? null + != b && b < a.length ? a[b | 0] : null : "string" === typeof a ? null != b && b < a.length + ? a.charAt(b | 0) : null : Ab($b, a) ? cc.c(a, b) : null + }; + D.l = function (a, b, c) { + return null != a ? null != a && (a.m & 256 || q === a.rf) ? a.I(null, b, c) : vb(a) ? null != b + && 0 <= b && b < a.length ? a[b | 0] : c : "string" === typeof a ? null != b && 0 <= b && b + < a.length ? a.charAt(b | 0) : c : Ab($b, a) ? cc.l(a, b, c) : c : c + }; + D.L = 3; + var K = function K(a) { + switch (arguments.length) { + case 3: + return K.l(arguments[0], arguments[1], arguments[2]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return K.A(arguments[0], arguments[1], arguments[2], new Jb(c.slice(3), 0, null)) + } + }; + K.l = function (a, b, c) { + return null != a ? ec(a, b, c) : ke([b, c]) + }; + K.A = function (a, b, c, d) { + for (; ;) { + if (a = K.l(a, b, c), t(d)) { + b = y(d), c = ee(d), d = z(z(d)); + } else { + return a + } + } + }; + K.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + d = z(d); + return K.A(b, a, c, d) + }; + K.L = 3; + var le = function le(a) { + switch (arguments.length) { + case 1: + return le.h(arguments[0]); + case 2: + return le.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return le.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + le.h = function (a) { + return a + }; + le.c = function (a, b) { + return null == a ? null : gc(a, b) + }; + le.A = function (a, b, c) { + for (; ;) { + if (null == a) { + return null; + } + a = le.c(a, b); + if (t(c)) { + b = y(c), c = z(c); + } else { + return a + } + } + }; + le.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return le.A(b, a, c) + }; + le.L = 2; + + function me(a) { + var b = ha(a); + return b ? b : null != a ? q === a.hf ? !0 : a.Tc ? !1 : Ab(Nb, a) : Ab(Nb, a) + } + + function ne(a, b) { + this.C = a; + this.meta = b; + this.m = 393217; + this.J = 0 + } + + g = ne.prototype; + g.P = function () { + return this.meta + }; + g.T = function (a, b) { + return new ne(this.C, b) + }; + g.hf = q; + g.call = function () { + function a(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X, Q, Ga) { + return oe(this.C, b, c, d, e, be([f, h, k, m, l, p, u, w, x, C, F, I, M, S, X, Q, Ga])) + } + + function b(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X, Q) { + a = this; + return a.C.Xa ? a.C.Xa(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X, Q) : a.C.call( + null, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X, Q) + } + + function c(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X) { + a = this; + return a.C.Wa ? a.C.Wa(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X) : a.C.call( + null, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S, X) + } + + function d(a, + b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S) { + a = this; + return a.C.Va ? a.C.Va(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S) : a.C.call(null, + b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M, S) + } + + function e(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M) { + a = this; + return a.C.Ua ? a.C.Ua(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M) : a.C.call(null, b, + c, d, e, f, h, k, m, l, p, u, w, x, C, F, I, M) + } + + function f(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I) { + a = this; + return a.C.Ta ? a.C.Ta(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F, I) : a.C.call(null, b, c, + d, e, f, h, k, m, l, p, u, w, x, C, F, I) + } + + function h(a, b, c, d, e, f, h, k, m, l, p, u, + w, x, C, F) { + a = this; + return a.C.Sa ? a.C.Sa(b, c, d, e, f, h, k, m, l, p, u, w, x, C, F) : a.C.call(null, b, c, d, + e, f, h, k, m, l, p, u, w, x, C, F) + } + + function k(a, b, c, d, e, f, h, k, m, l, p, u, w, x, C) { + a = this; + return a.C.Ra ? a.C.Ra(b, c, d, e, f, h, k, m, l, p, u, w, x, C) : a.C.call(null, b, c, d, e, + f, h, k, m, l, p, u, w, x, C) + } + + function l(a, b, c, d, e, f, h, k, m, l, p, u, w, x) { + a = this; + return a.C.Qa ? a.C.Qa(b, c, d, e, f, h, k, m, l, p, u, w, x) : a.C.call(null, b, c, d, e, f, + h, k, m, l, p, u, w, x) + } + + function p(a, b, c, d, e, f, h, k, m, l, p, u, w) { + a = this; + return a.C.Pa ? a.C.Pa(b, c, d, e, f, h, k, m, l, p, u, w) : a.C.call(null, b, c, d, + e, f, h, k, m, l, p, u, w) + } + + function m(a, b, c, d, e, f, h, k, m, l, p, u) { + a = this; + return a.C.Oa ? a.C.Oa(b, c, d, e, f, h, k, m, l, p, u) : a.C.call(null, b, c, d, e, f, h, k, + m, l, p, u) + } + + function u(a, b, c, d, e, f, h, k, m, l, p) { + a = this; + return a.C.Na ? a.C.Na(b, c, d, e, f, h, k, m, l, p) : a.C.call(null, b, c, d, e, f, h, k, m, + l, p) + } + + function w(a, b, c, d, e, f, h, k, m, l) { + a = this; + return a.C.Za ? a.C.Za(b, c, d, e, f, h, k, m, l) : a.C.call(null, b, c, d, e, f, h, k, m, l) + } + + function x(a, b, c, d, e, f, h, k, m) { + a = this; + return a.C.Ha ? a.C.Ha(b, c, d, e, f, h, k, m) : a.C.call(null, b, c, d, e, f, h, k, m) + } + + function C(a, b, c, d, e, f, + h, k) { + a = this; + return a.C.Ya ? a.C.Ya(b, c, d, e, f, h, k) : a.C.call(null, b, c, d, e, f, h, k) + } + + function F(a, b, c, d, e, f, h) { + a = this; + return a.C.Ca ? a.C.Ca(b, c, d, e, f, h) : a.C.call(null, b, c, d, e, f, h) + } + + function I(a, b, c, d, e, f) { + a = this; + return a.C.Z ? a.C.Z(b, c, d, e, f) : a.C.call(null, b, c, d, e, f) + } + + function M(a, b, c, d, e) { + a = this; + return a.C.M ? a.C.M(b, c, d, e) : a.C.call(null, b, c, d, e) + } + + function S(a, b, c, d) { + a = this; + return a.C.l ? a.C.l(b, c, d) : a.C.call(null, b, c, d) + } + + function X(a, b, c) { + a = this; + return a.C.c ? a.C.c(b, c) : a.C.call(null, b, c) + } + + function Ga(a, b) { + a = this; + return a.C.h ? a.C.h(b) : a.C.call(null, b) + } + + function db(a) { + a = this; + return a.C.B ? a.C.B() : a.C.call(null) + } + + var Q = null; + Q = function (xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc, Bd, se, Lf, Ih, + kl) { + switch (arguments.length) { + case 1: + return db.call(this, xb); + case 2: + return Ga.call(this, xb, Ha); + case 3: + return X.call(this, xb, Ha, Ja); + case 4: + return S.call(this, xb, Ha, Ja, Oa); + case 5: + return M.call(this, xb, Ha, Ja, Oa, Ba); + case 6: + return I.call(this, xb, Ha, Ja, Oa, Ba, W); + case 7: + return F.call(this, xb, Ha, Ja, Oa, Ba, W, $a); + case 8: + return C.call(this, + xb, Ha, Ja, Oa, Ba, W, $a, ka); + case 9: + return x.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb); + case 10: + return w.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb); + case 11: + return u.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb); + case 12: + return m.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib); + case 13: + return p.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q); + case 14: + return l.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb); + case 15: + return k.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic); + case 16: + return h.call(this, xb, Ha, Ja, Oa, Ba, + W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc); + case 17: + return f.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc); + case 18: + return e.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc, Bd); + case 19: + return d.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc, Bd, + se); + case 20: + return c.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc, Bd, + se, Lf); + case 21: + return b.call(this, xb, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Q, Xb, ic, xc, Sc, Bd, + se, Lf, Ih); + case 22: + return a.call(this, 0, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, + zb, Ib, Q, Xb, ic, xc, Sc, Bd, se, Lf, Ih, kl) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + Q.h = db; + Q.c = Ga; + Q.l = X; + Q.M = S; + Q.Z = M; + Q.Ca = I; + Q.Ya = F; + Q.Ha = C; + Q.Za = x; + Q.Na = w; + Q.Oa = u; + Q.Pa = m; + Q.Qa = p; + Q.Ra = l; + Q.Sa = k; + Q.Ta = h; + Q.Ua = f; + Q.Va = e; + Q.Wa = d; + Q.Xa = c; + Q.he = b; + Q.qf = a; + return Q + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.B = function () { + return this.C.B ? this.C.B() : this.C.call(null) + }; + g.h = function (a) { + return this.C.h ? this.C.h(a) : this.C.call(null, a) + }; + g.c = function (a, b) { + return this.C.c ? this.C.c(a, b) : this.C.call(null, a, b) + }; + g.l = function (a, b, c) { + return this.C.l ? this.C.l(a, b, c) : this.C.call(null, a, b, c) + }; + g.M = function (a, b, c, d) { + return this.C.M ? this.C.M(a, b, c, d) : this.C.call(null, a, b, c, d) + }; + g.Z = function (a, b, c, d, e) { + return this.C.Z ? this.C.Z(a, b, c, d, e) : this.C.call(null, a, b, c, d, e) + }; + g.Ca = function (a, b, c, d, e, f) { + return this.C.Ca ? this.C.Ca(a, b, c, d, e, f) : this.C.call(null, a, b, c, d, e, f) + }; + g.Ya = function (a, b, c, d, e, f, h) { + return this.C.Ya ? this.C.Ya(a, b, c, d, e, f, h) : this.C.call(null, a, b, c, d, e, f, h) + }; + g.Ha = function (a, b, c, d, e, f, h, k) { + return this.C.Ha ? this.C.Ha(a, b, c, d, e, f, h, k) : this.C.call(null, a, b, c, d, e, f, h, k) + }; + g.Za = function (a, b, c, d, e, f, h, k, l) { + return this.C.Za ? this.C.Za(a, b, c, d, e, f, h, k, l) : this.C.call(null, a, b, c, d, e, f, h, + k, l) + }; + g.Na = function (a, b, c, d, e, f, h, k, l, p) { + return this.C.Na ? this.C.Na(a, b, c, d, e, f, h, k, l, p) : this.C.call(null, a, b, c, d, e, f, + h, k, l, p) + }; + g.Oa = function (a, b, c, d, e, f, h, k, l, p, m) { + return this.C.Oa ? this.C.Oa(a, b, c, d, e, f, h, k, l, p, m) : this.C.call(null, a, b, c, d, e, + f, h, k, l, p, m) + }; + g.Pa = function (a, b, c, d, e, f, h, k, l, p, m, u) { + return this.C.Pa ? this.C.Pa(a, b, c, d, e, f, h, k, l, p, m, u) : this.C.call(null, a, b, c, d, + e, f, h, k, l, p, m, u) + }; + g.Qa = function (a, b, c, d, e, f, h, k, l, p, m, u, w) { + return this.C.Qa ? this.C.Qa(a, b, c, d, e, f, h, k, l, p, m, u, w) : this.C.call(null, a, b, c, + d, e, f, h, k, l, p, m, u, w) + }; + g.Ra = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x) { + return this.C.Ra ? this.C.Ra(a, b, c, d, e, f, h, k, l, p, m, u, w, x) : this.C.call(null, a, b, + c, d, e, f, h, k, l, p, m, u, w, x) + }; + g.Sa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C) { + return this.C.Sa ? this.C.Sa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C) : this.C.call(null, a, + b, c, d, e, f, h, k, l, p, m, u, w, x, C) + }; + g.Ta = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) { + return this.C.Ta ? this.C.Ta(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) : this.C.call(null, + a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) + }; + g.Ua = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) { + return this.C.Ua ? this.C.Ua(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) : this.C.call( + null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) + }; + g.Va = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) { + return this.C.Va ? this.C.Va(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) + : this.C.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) + }; + g.Wa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) { + return this.C.Wa ? this.C.Wa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) + : this.C.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) + }; + g.Xa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) { + return this.C.Xa ? this.C.Xa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) + : this.C.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) + }; + g.he = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga) { + return oe(this.C, a, b, c, d, be([e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga])) + }; + + function pe(a, b) { + return ha(a) ? new ne(a, b) : null == a ? null : tc(a, b) + } + + function qe(a) { + var b = null != a; + return (b ? null != a ? a.m & 131072 || q === a.tf || (a.m ? 0 : Ab(rc, a)) : Ab(rc, a) : b) + ? sc(a) : null + } + + var re = function re(a) { + switch (arguments.length) { + case 1: + return re.h(arguments[0]); + case 2: + return re.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return re.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + re.h = function (a) { + return a + }; + re.c = function (a, b) { + return null == a ? null : mc(a, b) + }; + re.A = function (a, b, c) { + for (; ;) { + if (null == a) { + return null; + } + a = re.c(a, b); + if (t(c)) { + b = y(c), c = z(c); + } else { + return a + } + } + }; + re.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return re.A(b, a, c) + }; + re.L = 2; + + function te(a) { + return null == a || wb(E(a)) + } + + function ue(a) { + return null == a ? !1 : null != a ? a.m & 8 || q === a.Qf ? !0 : a.m ? !1 : Ab(Sb, a) : Ab(Sb, + a) + } + + function ve(a) { + return null == a ? !1 : null != a ? a.m & 4096 || q === a.$f ? !0 : a.m ? !1 : Ab(lc, a) : Ab( + lc, a) + } + + function we(a) { + return null != a ? a.m & 16777216 || q === a.Zf ? !0 : a.m ? !1 : Ab(Ec, a) : Ab(Ec, a) + } + + function xe(a) { + return null == a ? !1 : null != a ? a.m & 1024 || q === a.Wf ? !0 : a.m ? !1 : Ab(fc, a) : Ab( + fc, a) + } + + function ye(a) { + return null != a ? a.m & 67108864 || q === a.Xf ? !0 : a.m ? !1 : Ab(Gc, a) : Ab(Gc, a) + } + + function ze(a) { + return null != a ? a.m & 16384 || q === a.ag ? !0 : a.m ? !1 : Ab(pc, a) : Ab(pc, a) + } + + function Ae(a) { + return null != a ? a.J & 512 || q === a.Pf ? !0 : !1 : !1 + } + + function Be(a, b, c, d, e) { + for (; 0 !== e;) { + c[d] = a[b], d += 1, --e, b += 1 + } + } + + var Ce = {}; + + function De(a) { + return null == a ? !1 : null != a ? a.m & 64 || q === a.G ? !0 : a.m ? !1 : Ab(Vb, a) : Ab(Vb, + a) + } + + function Ee(a) { + return null == a ? !1 : !1 === a ? !1 : !0 + } + + function Fe(a) { + var b = me(a); + return b ? b : null != a ? a.m & 1 || q === a.Rf ? !0 : a.m ? !1 : Ab(Ob, a) : Ab(Ob, a) + } + + function Ge(a) { + return "number" === typeof a && !isNaN(a) && Infinity !== a && parseFloat(a) === parseInt(a, 10) + } + + function He(a, b) { + return D.l(a, b, Ce) === Ce ? !1 : !0 + } + + var Ie = function Ie(a) { + switch (arguments.length) { + case 1: + return Ie.h(arguments[0]); + case 2: + return Ie.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Ie.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + Ie.h = function () { + return !0 + }; + Ie.c = function (a, b) { + return !G.c(a, b) + }; + Ie.A = function (a, b, c) { + if (G.c(a, b)) { + return !1; + } + a = Je([a, b]); + for (b = c; ;) { + var d = y(b); + c = z(b); + if (t(b)) { + if (He(a, d)) { + return !1; + } + a = ge.c(a, d); + b = c + } else { + return !0 + } + } + }; + Ie.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return Ie.A(b, a, c) + }; + Ie.L = 2; + + function Ke(a, b) { + if (a === b) { + return 0; + } + if (null == a) { + return -1; + } + if (null == b) { + return 1; + } + if ("number" === typeof a) { + if ("number" === typeof b) { + return Aa(a, b); + } + throw Error(["Cannot compare ", v.h(a), " to ", v.h(b)].join("")); + } + if (null != a ? a.J & 2048 || q === a.zc || (a.J ? 0 : Ab(Tc, a)) : Ab(Tc, a)) { + return Uc(a, b); + } + if ("string" !== typeof a && !vb(a) && !0 !== a && !1 !== a || Bb(a) !== Bb(b)) { + throw Error( + ["Cannot compare ", v.h(a), " to ", v.h(b)].join("")); + } + return Aa(a, b) + } + + function Le(a, b) { + var c = H(a), d = H(b); + if (c < d) { + c = -1; + } else if (c > d) { + c = 1; + } else if (0 === c) { + c = 0; + } else { + a:for (d = 0; ;) { + var e = Ke(Vd(a, d), Vd(b, d)); + if (0 === e && d + 1 < c) { + d += 1; + } else { + c = e; + break a + } + } + } + return c + } + + function Me(a) { + return G.c(a, Ke) ? Ke : function (b, c) { + var d = a.c ? a.c(b, c) : a.call(null, b, c); + return "number" === typeof d ? d : t(d) ? -1 : t(a.c ? a.c(c, b) : a.call(null, c, b)) ? 1 : 0 + } + } + + function Ne(a, b) { + if (E(b)) { + a:{ + var c = []; + for (var d = E(b); ;) { + if (null != d) { + c.push(y(d)), d = z(d); + } else { + break a + } + } + } + d = Me(a); + Ca(c, d); + return E(c) + } + return wd + } + + function Oe(a) { + var b = Pe("@!\"#%\x26'*+-/:[{\x3c\\|\x3d]}\x3e^~?".split(""), + "_CIRCA_ _BANG_ _DOUBLEQUOTE_ _SHARP_ _PERCENT_ _AMPERSAND_ _SINGLEQUOTE_ _STAR_ _PLUS_ _ _SLASH_ _COLON_ _LBRACK_ _LBRACE_ _LT_ _BSLASH_ _BAR_ _EQ_ _RBRACK_ _RBRACE_ _GT_ _CARET_ _TILDE_ _QMARK_".split( + " ")); + return Qe(a, b) + } + + function Qe(a, b) { + return Ne(function (b, d) { + var c = a.h ? a.h(b) : a.call(null, b), f = a.h ? a.h(d) : a.call(null, d), h = Me(Ke); + return h.c ? h.c(c, f) : h.call(null, c, f) + }, b) + } + + function ce(a, b) { + var c = E(b); + return c ? Mb(a, y(c), z(c)) : a.B ? a.B() : a.call(null) + } + + function de(a, b, c) { + for (c = E(c); ;) { + if (c) { + var d = y(c); + b = a.c ? a.c(b, d) : a.call(null, b, d); + if (Hd(b)) { + return B(b); + } + c = z(c) + } else { + return b + } + } + } + + function Re(a, b) { + var c = dd(a); + if (t(c.ja())) { + for (var d = c.next(); ;) { + if (c.ja()) { + var e = c.next(); + d = b.c ? b.c(d, e) : b.call(null, d, e); + if (Hd(d)) { + return B(d) + } + } else { + return d; + } + } + } else { + return b.B ? b.B() : b.call(null) + } + } + + function Se(a, b, c) { + for (a = dd(a); ;) { + if (a.ja()) { + var d = a.next(); + c = b.c ? b.c(c, d) : b.call(null, c, d); + if (Hd(c)) { + return B(c) + } + } else { + return c + } + } + } + + function Te(a, b) { + return null != b && (b.m & 524288 || q === b.uf) ? b.Fa(null, a) : vb(b) ? Md(b, a) : "string" + === typeof b ? Md(b, a) : Ab(uc, b) ? vc.c(b, a) : ud(b) ? Re(b, a) : ce(a, b) + } + + function Mb(a, b, c) { + return null != c && (c.m & 524288 || q === c.uf) ? c.Ga(null, a, b) : vb(c) ? Nd(c, a, b) + : "string" === typeof c ? Nd(c, a, b) : Ab(uc, c) ? vc.l(c, a, b) : ud(c) ? Se(c, a, b) : de( + a, b, c) + } + + function Ue(a, b, c) { + return null != c ? yc(c, a, b) : b + } + + function Ve(a) { + return a + } + + function We(a, b, c, d) { + a = a.h ? a.h(b) : a.call(null, b); + c = Mb(a, c, d); + return a.h ? a.h(c) : a.call(null, c) + } + + var Xe = function Xe(a) { + switch (arguments.length) { + case 0: + return Xe.B(); + case 1: + return Xe.h(arguments[0]); + case 2: + return Xe.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Xe.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + Xe.B = function () { + return 0 + }; + Xe.h = function (a) { + return a + }; + Xe.c = function (a, b) { + return a + b + }; + Xe.A = function (a, b, c) { + return Mb(Xe, a + b, c) + }; + Xe.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return Xe.A(b, a, c) + }; + Xe.L = 2; + var Ye = function Ye(a) { + switch (arguments.length) { + case 0: + return Ye.B(); + case 1: + return Ye.h(arguments[0]); + case 2: + return Ye.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Ye.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + Ye.B = function () { + return 1 + }; + Ye.h = function (a) { + return a + }; + Ye.c = function (a, b) { + return a * b + }; + Ye.A = function (a, b, c) { + return Mb(Ye, a * b, c) + }; + Ye.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return Ye.A(b, a, c) + }; + Ye.L = 2; + + function Ze(a) { + a = (a - a % 2) / 2; + return 0 <= a ? Math.floor(a) : Math.ceil(a) + } + + function $e(a) { + a -= a >> 1 & 1431655765; + a = (a & 858993459) + (a >> 2 & 858993459); + return 16843009 * (a + (a >> 4) & 252645135) >> 24 + } + + var v = function v(a) { + switch (arguments.length) { + case 0: + return v.B(); + case 1: + return v.h(arguments[0]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return v.A(arguments[0], new Jb(c.slice(1), 0, null)) + } + }; + v.B = function () { + return "" + }; + v.h = function (a) { + return null == a ? "" : "" + a + }; + v.A = function (a, b) { + for (var c = new cb("" + v.h(a)), d = b; ;) { + if (t(d)) { + c = c.append("" + v.h(y(d))), d = z( + d); + } else { + return c.toString() + } + } + }; + v.N = function (a) { + var b = y(a); + a = z(a); + return v.A(b, a) + }; + v.L = 1; + + function $d(a, b) { + if (we(b)) { + if (Pd(a) && Pd(b) && H(a) !== H(b)) { + var c = !1; + } else { + a:{ + c = E(a); + for (var d = E(b); ;) { + if (null == c) { + c = null == d; + break a + } + if (null != d && G.c(y(c), y(d))) { + c = z(c), d = z(d); + } else { + c = !1; + break a + } + } + } + } + } else { + c = null; + } + return Ee(c) + } + + function af(a, b, c, d, e) { + this.meta = a; + this.first = b; + this.kc = c; + this.count = d; + this.w = e; + this.m = 65937646; + this.J = 8192 + } + + g = af.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, this.count) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return 1 === this.count ? null : this.kc + }; + g.W = function () { + return this.count + }; + g.Ac = function () { + return this.first + }; + g.Bc = function () { + return this.bb(null) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return this.first + }; + g.bb = function () { + return 1 === this.count ? wd : this.kc + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new af(b, this.first, this.kc, this.count, this.w) + }; + g.X = function (a, b) { + return new af(this.meta, b, this, this.count + 1, null) + }; + af.prototype[Fb] = function () { + return yd(this) + }; + + function bf(a) { + this.meta = a; + this.m = 65937614; + this.J = 8192 + } + + g = bf.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return null + }; + g.W = function () { + return 0 + }; + g.Ac = function () { + return null + }; + g.Bc = function () { + throw Error("Can't pop empty list"); + }; + g.U = function () { + return Cd + }; + g.K = function (a, b) { + return (null != b ? b.m & 33554432 || q === b.Vf || (b.m ? 0 : Ab(Fc, b)) : Ab(Fc, b)) || we(b) + ? null == E(b) : !1 + }; + g.oa = function () { + return this + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return null + }; + g.bb = function () { + return wd + }; + g.S = function () { + return null + }; + g.T = function (a, b) { + return new bf(b) + }; + g.X = function (a, b) { + return new af(this.meta, b, null, 1, null) + }; + var wd = new bf(null); + bf.prototype[Fb] = function () { + return yd(this) + }; + + function cf(a) { + return (null != a ? a.m & 134217728 || q === a.Yf || (a.m ? 0 : Ab(Hc, a)) : Ab(Hc, a)) ? Ic(a) + : Mb(ge, wd, a) + } + + var df = function df(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return df.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + df.A = function (a) { + if (a instanceof Jb && 0 === a.i) { + var b = a.o; + } else { + a:for (b = []; ;) { + if (null != a) { + b.push( + a.Ia(null)), a = a.Ka(null); + } else { + break a; + } + } + } + a = b.length; + for (var c = wd; ;) { + if (0 < a) { + var d = a - 1; + c = c.X(null, b[a - 1]); + a = d + } else { + return c + } + } + }; + df.L = 0; + df.N = function (a) { + return df.A(E(a)) + }; + + function ef(a, b, c, d) { + this.meta = a; + this.first = b; + this.kc = c; + this.w = d; + this.m = 65929452; + this.J = 8192 + } + + g = ef.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return null == this.kc ? null : E(this.kc) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return this.first + }; + g.bb = function () { + return null == this.kc ? wd : this.kc + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new ef(b, this.first, this.kc, this.w) + }; + g.X = function (a, b) { + return new ef(null, b, this, null) + }; + ef.prototype[Fb] = function () { + return yd(this) + }; + + function ae(a, b) { + return null == b || null != b && (b.m & 64 || q === b.G) ? new ef(null, a, b, null) : new ef( + null, a, E(b), null) + } + + function ff(a, b) { + if (a.ea === b.ea) { + return 0; + } + var c = wb(a.fb); + if (t(c ? b.fb : c)) { + return -1; + } + if (t(a.fb)) { + if (wb(b.fb)) { + return 1; + } + c = Aa(a.fb, b.fb); + return 0 === c ? Aa(a.name, b.name) : c + } + return Aa(a.name, b.name) + } + + function L(a, b, c, d) { + this.fb = a; + this.name = b; + this.ea = c; + this.Oc = d; + this.m = 2153775105; + this.J = 4096 + } + + g = L.prototype; + g.toString = function () { + return [":", v.h(this.ea)].join("") + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.K = function (a, b) { + return b instanceof L ? this.ea === b.ea : !1 + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return D.c(c, this); + case 3: + return D.l(c, this, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return D.c(c, this) + }; + a.l = function (a, c, d) { + return D.l(c, this, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return D.c(a, this) + }; + g.c = function (a, b) { + return D.l(a, this, b) + }; + g.U = function () { + var a = this.Oc; + return null != a ? a : this.Oc = a = pd(kd(this.name), nd(this.fb)) + 2654435769 | 0 + }; + g.hd = function () { + return this.name + }; + g.jd = function () { + return this.fb + }; + g.R = function (a, b) { + return Jc(b, [":", v.h(this.ea)].join("")) + }; + + function gf(a) { + return a instanceof L + } + + function N(a, b) { + return a === b ? !0 : a instanceof L && b instanceof L ? a.ea === b.ea : !1 + } + + var hf = function hf(a) { + switch (arguments.length) { + case 1: + return hf.h(arguments[0]); + case 2: + return hf.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + hf.h = function (a) { + if (a instanceof L) { + return a; + } + if (a instanceof rd) { + if (null != a && (a.J & 4096 || q === a.Oe)) { + var b = a.jd(null); + } else { + throw Error( + ["Doesn't support namespace: ", v.h(a)].join("")); + } + return new L(b, jf(a), a.Zb, null) + } + return "string" === typeof a ? (b = a.split("/"), 2 === b.length ? new L(b[0], b[1], a, null) + : new L(null, b[0], a, null)) : null + }; + hf.c = function (a, b) { + var c = a instanceof L ? jf(a) : a instanceof rd ? jf(a) : a, + d = b instanceof L ? jf(b) : b instanceof rd ? jf(b) : b; + return new L(c, d, [v.h(t(c) ? [v.h(c), "/"].join("") : null), v.h(d)].join(""), null) + }; + hf.L = 2; + + function kf(a, b, c, d) { + this.meta = a; + this.Vc = b; + this.s = c; + this.w = d; + this.m = 32374988; + this.J = 1 + } + + g = kf.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + + function lf(a) { + null != a.Vc && (a.s = a.Vc.B ? a.Vc.B() : a.Vc.call(null), a.Vc = null); + return a.s + } + + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + this.S(null); + return null == this.s ? null : z(this.s) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + this.S(null); + return null == this.s ? null : y(this.s) + }; + g.bb = function () { + this.S(null); + return null != this.s ? vd(this.s) : wd + }; + g.S = function () { + lf(this); + if (null == this.s) { + return null; + } + for (var a = this.s; ;) { + if (a instanceof kf) { + a = lf(a); + } else { + return this.s = a, E(this.s) + } + } + }; + g.T = function (a, b) { + return new kf(b, this.Vc, this.s, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + kf.prototype[Fb] = function () { + return yd(this) + }; + + function mf(a, b) { + this.aa = a; + this.end = b; + this.m = 2; + this.J = 0 + } + + mf.prototype.add = function (a) { + this.aa[this.end] = a; + return this.end += 1 + }; + mf.prototype.Da = function () { + var a = new nf(this.aa, 0, this.end); + this.aa = null; + return a + }; + mf.prototype.W = function () { + return this.end + }; + + function of(a) { + return new mf(Array(a), 0) + } + + function nf(a, b, c) { + this.o = a; + this.ab = b; + this.end = c; + this.m = 524306; + this.J = 0 + } + + g = nf.prototype; + g.W = function () { + return this.end - this.ab + }; + g.$ = function (a, b) { + return this.o[this.ab + b] + }; + g.ka = function (a, b, c) { + return 0 <= b && b < this.end - this.ab ? this.o[this.ab + b] : c + }; + g.Le = function () { + if (this.ab === this.end) { + throw Error("-drop-first of empty chunk"); + } + return new nf(this.o, this.ab + 1, this.end) + }; + g.Fa = function (a, b) { + return Od(this.o, b, this.o[this.ab], this.ab + 1) + }; + g.Ga = function (a, b, c) { + return Od(this.o, b, c, this.ab) + }; + + function pf(a, b, c, d) { + this.Da = a; + this.Wb = b; + this.meta = c; + this.w = d; + this.m = 31850732; + this.J = 1536 + } + + g = pf.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + if (1 < Qb(this.Da)) { + return new pf(Vc(this.Da), this.Wb, this.meta, null); + } + var a = Cc(this.Wb); + return null == a ? null : a + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Ia = function () { + return A.c(this.Da, 0) + }; + g.bb = function () { + return 1 < Qb(this.Da) ? new pf(Vc(this.Da), this.Wb, this.meta, null) : null == this.Wb ? wd + : this.Wb + }; + g.S = function () { + return this + }; + g.ge = function () { + return this.Da + }; + g.Hd = function () { + return null == this.Wb ? wd : this.Wb + }; + g.T = function (a, b) { + return new pf(this.Da, this.Wb, b, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + g.Me = function () { + return null == this.Wb ? null : this.Wb + }; + pf.prototype[Fb] = function () { + return yd(this) + }; + + function qf(a, b) { + return 0 === Qb(a) ? b : new pf(a, b, null, null) + } + + function rf(a, b) { + a.add(b) + } + + function sf(a, b) { + if (Pd(b)) { + return H(b); + } + for (var c = 0, d = E(b); ;) { + if (null != d && c < a) { + c += 1, d = z(d); + } else { + return c + } + } + } + + var tf = function tf(a) { + if (null == a) { + return null; + } + var c = z(a); + return null == c ? E(y(a)) : ae(y(a), tf.h ? tf.h(c) : tf.call(null, c)) + }, O = function O(a) { + switch (arguments.length) { + case 0: + return O.B(); + case 1: + return O.h(arguments[0]); + case 2: + return O.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return O.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + O.B = function () { + return new kf(null, function () { + return null + }, null, null) + }; + O.h = function (a) { + return new kf(null, function () { + return a + }, null, null) + }; + O.c = function (a, b) { + return new kf(null, function () { + var c = E(a); + return c ? Ae(c) ? qf(Wc(c), O.c(Xc(c), b)) : ae(y(c), O.c(vd(c), b)) : b + }, null, null) + }; + O.A = function (a, b, c) { + return function h(a, b) { + return new kf(null, function () { + var c = E(a); + return c ? Ae(c) ? qf(Wc(c), h(Xc(c), b)) : ae(y(c), h(vd(c), b)) : t(b) ? h(y(b), z(b)) + : null + }, null, null) + }(O.c(a, b), c) + }; + O.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return O.A(b, a, c) + }; + O.L = 2; + var uf = function uf(a) { + switch (arguments.length) { + case 0: + return uf.B(); + case 1: + return uf.h(arguments[0]); + case 2: + return uf.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return uf.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + uf.B = function () { + return Oc(he) + }; + uf.h = function (a) { + return a + }; + uf.c = function (a, b) { + return Pc(a, b) + }; + uf.A = function (a, b, c) { + for (; ;) { + if (a = Pc(a, b), t(c)) { + b = y(c), c = z(c); + } else { + return a + } + } + }; + uf.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return uf.A(b, a, c) + }; + uf.L = 2; + + function vf(a, b, c) { + var d = E(c); + if (0 === b) { + return a.B ? a.B() : a.call(null); + } + c = Wb(d); + var e = Yb(d); + if (1 === b) { + return a.h ? a.h(c) : a.call(null, c); + } + d = Wb(e); + var f = Yb(e); + if (2 === b) { + return a.c ? a.c(c, d) : a.call(null, c, d); + } + e = Wb(f); + var h = Yb(f); + if (3 === b) { + return a.l ? a.l(c, d, e) : a.call(null, c, d, e); + } + f = Wb(h); + var k = Yb(h); + if (4 === b) { + return a.M ? a.M(c, d, e, f) : a.call(null, c, d, e, f); + } + h = Wb(k); + var l = Yb(k); + if (5 === b) { + return a.Z ? a.Z(c, d, e, f, h) : a.call(null, c, d, e, f, h); + } + k = Wb(l); + var p = Yb(l); + if (6 === b) { + return a.Ca ? a.Ca(c, d, e, f, h, k) : a.call(null, c, d, e, f, h, k); + } + l = Wb(p); + var m = Yb(p); + if (7 === b) { + return a.Ya ? a.Ya(c, d, e, f, h, k, l) : a.call(null, c, d, e, f, h, k, l); + } + p = Wb(m); + var u = Yb(m); + if (8 === b) { + return a.Ha ? a.Ha(c, d, e, f, h, k, l, p) : a.call(null, c, d, e, f, h, k, l, p); + } + m = Wb(u); + var w = Yb(u); + if (9 === b) { + return a.Za ? a.Za(c, d, e, f, h, k, l, p, m) : a.call(null, c, d, e, f, h, k, l, + p, m); + } + u = Wb(w); + var x = Yb(w); + if (10 === b) { + return a.Na ? a.Na(c, d, e, f, h, k, l, p, m, u) : a.call(null, c, d, e, f, h, k, + l, p, m, u); + } + w = Wb(x); + var C = Yb(x); + if (11 === b) { + return a.Oa ? a.Oa(c, d, e, f, h, k, l, p, m, u, w) : a.call(null, c, d, e, f, h, + k, l, p, m, u, w); + } + x = Wb(C); + var F = Yb(C); + if (12 === b) { + return a.Pa ? a.Pa(c, d, e, f, h, k, l, p, m, u, w, x) : a.call(null, c, d, e, f, + h, k, l, p, m, u, w, x); + } + C = Wb(F); + var I = Yb(F); + if (13 === b) { + return a.Qa ? a.Qa(c, d, e, f, h, k, l, p, m, u, w, x, C) : a.call(null, c, d, e, + f, h, k, l, p, m, u, w, x, C); + } + F = Wb(I); + var M = Yb(I); + if (14 === b) { + return a.Ra ? a.Ra(c, d, e, f, h, k, l, p, m, u, w, x, C, F) : a.call(null, c, d, + e, f, h, k, l, p, m, u, w, x, C, F); + } + I = Wb(M); + var S = Yb(M); + if (15 === b) { + return a.Sa ? a.Sa(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) : a.call(null, c, + d, e, f, h, k, l, p, m, u, w, x, C, F, I); + } + M = Wb(S); + var X = Yb(S); + if (16 === b) { + return a.Ta ? a.Ta(c, d, e, f, h, k, l, + p, m, u, w, x, C, F, I, M) : a.call(null, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M); + } + S = Wb(X); + var Ga = Yb(X); + if (17 === b) { + return a.Ua ? a.Ua(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) : a.call( + null, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S); + } + X = Wb(Ga); + var db = Yb(Ga); + if (18 === b) { + return a.Va ? a.Va(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) : a.call( + null, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X); + } + Ga = Wb(db); + db = Yb(db); + if (19 === b) { + return a.Wa ? a.Wa(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga) + : a.call(null, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga); + } + var Q = Wb(db); + Yb(db); + if (20 === b) { + return a.Xa ? + a.Xa(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga, Q) : a.call(null, c, d, e, f, + h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga, Q); + } + throw Error("Only up to 20 arguments supported on functions"); + } + + function wf(a, b, c) { + return null == c ? a.h ? a.h(b) : a.call(a, b) : xf(a, b, Wb(c), z(c)) + } + + function xf(a, b, c, d) { + return null == d ? a.c ? a.c(b, c) : a.call(a, b, c) : yf(a, b, c, Wb(d), z(d)) + } + + function yf(a, b, c, d, e) { + return null == e ? a.l ? a.l(b, c, d) : a.call(a, b, c, d) : zf(a, b, c, d, Wb(e), z(e)) + } + + function zf(a, b, c, d, e, f) { + if (null == f) { + return a.M ? a.M(b, c, d, e) : a.call(a, b, c, d, e); + } + var h = Wb(f), k = z(f); + if (null == k) { + return a.Z ? a.Z(b, c, d, e, h) : a.call(a, b, c, d, e, h); + } + f = Wb(k); + var l = z(k); + if (null == l) { + return a.Ca ? a.Ca(b, c, d, e, h, f) : a.call(a, b, c, d, e, h, f); + } + k = Wb(l); + var p = z(l); + if (null == p) { + return a.Ya ? a.Ya(b, c, d, e, h, f, k) : a.call(a, b, c, d, e, h, f, k); + } + l = Wb(p); + var m = z(p); + if (null == m) { + return a.Ha ? a.Ha(b, c, d, e, h, f, k, l) : a.call(a, b, c, d, e, h, f, k, l); + } + p = Wb(m); + var u = z(m); + if (null == u) { + return a.Za ? a.Za(b, c, d, e, h, f, k, l, p) : a.call(a, b, c, d, e, h, f, k, + l, p); + } + m = Wb(u); + var w = z(u); + if (null == w) { + return a.Na ? a.Na(b, c, d, e, h, f, k, l, p, m) : a.call(a, b, c, d, e, h, f, k, + l, p, m); + } + u = Wb(w); + var x = z(w); + if (null == x) { + return a.Oa ? a.Oa(b, c, d, e, h, f, k, l, p, m, u) : a.call(a, b, c, d, e, h, f, + k, l, p, m, u); + } + w = Wb(x); + var C = z(x); + if (null == C) { + return a.Pa ? a.Pa(b, c, d, e, h, f, k, l, p, m, u, w) : a.call(a, b, c, d, e, h, + f, k, l, p, m, u, w); + } + x = Wb(C); + var F = z(C); + if (null == F) { + return a.Qa ? a.Qa(b, c, d, e, h, f, k, l, p, m, u, w, x) : a.call(a, b, c, d, e, + h, f, k, l, p, m, u, w, x); + } + C = Wb(F); + var I = z(F); + if (null == I) { + return a.Ra ? a.Ra(b, c, d, e, h, f, k, l, p, m, u, w, x, C) : a.call(a, + b, c, d, e, h, f, k, l, p, m, u, w, x, C); + } + F = Wb(I); + var M = z(I); + if (null == M) { + return a.Sa ? a.Sa(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F) : a.call(a, b, c, + d, e, h, f, k, l, p, m, u, w, x, C, F); + } + I = Wb(M); + var S = z(M); + if (null == S) { + return a.Ta ? a.Ta(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I) : a.call(a, b, + c, d, e, h, f, k, l, p, m, u, w, x, C, F, I); + } + M = Wb(S); + var X = z(S); + if (null == X) { + return a.Ua ? a.Ua(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M) : a.call(a, + b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M); + } + S = Wb(X); + var Ga = z(X); + if (null == Ga) { + return a.Va ? a.Va(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S) + : a.call(a, b, c, d, e, h, f, + k, l, p, m, u, w, x, C, F, I, M, S); + } + X = Wb(Ga); + var db = z(Ga); + if (null == db) { + return a.Wa ? a.Wa(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S, X) + : a.call(a, b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S, X); + } + Ga = Wb(db); + db = z(db); + if (null == db) { + return a.Xa ? a.Xa(b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga) + : a.call(a, b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga); + } + b = [b, c, d, e, h, f, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga]; + for (c = db; ;) { + if (c) { + b.push(Wb(c)), c = z(c); + } else { + break; + } + } + return a.apply(a, b) + } + + function P(a, b) { + if (a.N) { + var c = a.L, d = sf(c + 1, b); + return d <= c ? vf(a, d, b) : a.N(b) + } + c = E(b); + return null == c ? a.B ? a.B() : a.call(a) : wf(a, Wb(c), z(c)) + } + + function Kb(a, b, c) { + if (a.N) { + b = ae(b, c); + var d = a.L; + c = sf(d, c) + 1; + return c <= d ? vf(a, c, b) : a.N(b) + } + return wf(a, b, E(c)) + } + + function Af(a, b, c, d, e) { + return a.N ? (b = ae(b, ae(c, ae(d, e))), c = a.L, e = 3 + sf(c - 2, e), e <= c ? vf(a, e, b) + : a.N(b)) : yf(a, b, c, d, E(e)) + } + + function oe(a, b, c, d, e, f) { + return a.N ? (f = tf(f), b = ae(b, ae(c, ae(d, ae(e, f)))), c = a.L, f = 4 + sf(c - 3, f), f + <= c ? vf(a, f, b) : a.N(b)) : zf(a, b, c, d, e, tf(f)) + } + + function Bf(a) { + return E(a) ? a : null + } + + function Cf() { + "undefined" === typeof hb && (hb = function (a) { + this.zf = a; + this.m = 393216; + this.J = 0 + }, hb.prototype.T = function (a, b) { + return new hb(b) + }, hb.prototype.P = function () { + return this.zf + }, hb.prototype.ja = function () { + return !1 + }, hb.prototype.next = function () { + return Error("No such element") + }, hb.prototype.remove = function () { + return Error("Unsupported operation") + }, hb.Wc = function () { + return new R(null, 1, 5, T, [Df], null) + }, hb.qc = !0, hb.Tb = "cljs.core/t_cljs$core34616", hb.Ec = function (a, b) { + return Jc(b, "cljs.core/t_cljs$core34616") + }); + return new hb(Ef) + } + + function Ff(a, b) { + this.s = a; + this.i = b + } + + Ff.prototype.ja = function () { + return this.i < this.s.length + }; + Ff.prototype.next = function () { + var a = this.s.charAt(this.i); + this.i += 1; + return a + }; + Ff.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function Gf(a, b) { + this.o = a; + this.i = b + } + + Gf.prototype.ja = function () { + return this.i < this.o.length + }; + Gf.prototype.next = function () { + var a = this.o[this.i]; + this.i += 1; + return a + }; + Gf.prototype.remove = function () { + return Error("Unsupported operation") + }; + var Hf = {}, If = {}; + + function Jf(a, b) { + this.cd = a; + this.ub = b + } + + Jf.prototype.ja = function () { + this.cd === Hf ? (this.cd = If, this.ub = E(this.ub)) : this.cd === this.ub && (this.ub = z( + this.cd)); + return null != this.ub + }; + Jf.prototype.next = function () { + if (this.ja()) { + return this.cd = this.ub, y(this.ub); + } + throw Error("No such element"); + }; + Jf.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function Kf(a) { + if (ud(a)) { + return dd(a); + } + if (null == a) { + return Cf(); + } + if ("string" === typeof a) { + return new Ff(a, 0); + } + if (vb(a)) { + return new Gf(a, 0); + } + if ((null != a ? a.m & 8388608 || q === a.Pe || (a.m ? 0 : Ab(Bc, a)) : Ab(Bc, a)) || vb(a) + || "string" === typeof a) { + return new Jf(Hf, a); + } + throw Error(["Cannot create iterator from ", v.h(a)].join("")); + } + + function Mf(a) { + this.ae = a + } + + Mf.prototype.add = function (a) { + this.ae.push(a); + return this + }; + Mf.prototype.remove = function () { + return this.ae.shift() + }; + Mf.prototype.Td = function () { + return 0 === this.ae.length + }; + Mf.prototype.toString = function () { + return ["Many: ", v.h(this.ae)].join("") + }; + var Nf = {}; + + function Of(a) { + this.H = a + } + + Of.prototype.add = function (a) { + return this.H === Nf ? (this.H = a, this) : new Mf([this.H, a]) + }; + Of.prototype.remove = function () { + if (this.H === Nf) { + throw Error("Removing object from empty buffer"); + } + var a = this.H; + this.H = Nf; + return a + }; + Of.prototype.Td = function () { + return this.H === Nf + }; + Of.prototype.toString = function () { + return ["Single: ", v.h(this.H)].join("") + }; + + function Pf() { + } + + Pf.prototype.add = function (a) { + return new Of(a) + }; + Pf.prototype.remove = function () { + throw Error("Removing object from empty buffer"); + }; + Pf.prototype.Td = function () { + return !0 + }; + Pf.prototype.toString = function () { + return "Empty" + }; + var Qf = new Pf, Rf = function Rf(a) { + return new kf(null, function () { + if (a.ja()) { + for (var c = [], d = 0; ;) { + var e = a.ja(); + if (t(t(e) ? 32 > d : e)) { + c[d] = a.next(), d += 1; + } else { + return qf(new nf(c, 0, d), + Rf.h ? Rf.h(a) : Rf.call(null, a)) + } + } + } else { + return null + } + }, null, null) + }; + + function Sf(a, b, c, d, e, f) { + this.buffer = a; + this.ub = b; + this.pe = c; + this.Rb = d; + this.ye = e; + this.Gf = f + } + + Sf.prototype.step = function () { + if (this.ub !== Nf) { + return !0; + } + for (; ;) { + if (this.ub === Nf) { + if (this.buffer.Td()) { + if (this.pe) { + return !1; + } + if (this.ye.ja()) { + if (this.Gf) { + var a = P(this.Rb, + ae(null, this.ye.next())); + } else { + a = this.ye.next(), a = this.Rb.c ? this.Rb.c(null, a) + : this.Rb.call(null, null, a); + } + Hd(a) && (this.Rb.h ? this.Rb.h(null) : this.Rb.call(null, null), this.pe = !0) + } else { + this.Rb.h ? this.Rb.h(null) : this.Rb.call(null, null), this.pe = !0 + } + } else { + this.ub = this.buffer.remove(); + } + } else { + return !0 + } + } + }; + Sf.prototype.ja = function () { + return this.step() + }; + Sf.prototype.next = function () { + if (this.ja()) { + var a = this.ub; + this.ub = Nf; + return a + } + throw Error("No such element"); + }; + Sf.prototype.remove = function () { + return Error("Unsupported operation") + }; + Sf.prototype[Fb] = function () { + return yd(this) + }; + + function Tf(a, b) { + var c = new Sf(Qf, Nf, !1, null, b, !1); + c.Rb = function () { + var b = function (a) { + return function () { + function b(b, c) { + a.buffer = a.buffer.add(c); + return b + } + + var c = null; + c = function (a, c) { + switch (arguments.length) { + case 0: + return null; + case 1: + return a; + case 2: + return b.call(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + c.B = function () { + return null + }; + c.h = function (a) { + return a + }; + c.c = b; + return c + }() + }(c); + return a.h ? a.h(b) : a.call(null, b) + }(); + return c + } + + function Uf(a, b) { + var c = Kf(b); + c = Tf(a, c); + c = Rf(c); + return t(c) ? c : wd + } + + function Vf(a, b) { + for (; ;) { + if (null == E(b)) { + return !0; + } + var c = y(b); + c = a.h ? a.h(c) : a.call(null, c); + if (t(c)) { + c = a; + var d = z(b); + a = c; + b = d + } else { + return !1 + } + } + } + + function Wf(a, b) { + for (; ;) { + if (E(b)) { + var c = y(b); + c = a.h ? a.h(c) : a.call(null, c); + if (t(c)) { + return c; + } + c = a; + var d = z(b); + a = c; + b = d + } else { + return null + } + } + } + + function Xf(a) { + if (Ge(a)) { + return 0 === (a & 1); + } + throw Error(["Argument must be an integer: ", v.h(a)].join("")); + } + + function Yf(a) { + return function () { + function b(b, c) { + return wb(a.c ? a.c(b, c) : a.call(null, b, c)) + } + + function c(b) { + return wb(a.h ? a.h(b) : a.call(null, b)) + } + + function d() { + return wb(a.B ? a.B() : a.call(null)) + } + + var e = null, f = function () { + function b(a, b, d) { + var e = null; + if (2 < arguments.length) { + e = 0; + for (var f = Array(arguments.length - 2); e < f.length;) { + f[e] = arguments[e + 2], ++e; + } + e = new Jb(f, 0, null) + } + return c.call(this, a, b, e) + } + + function c(b, c, d) { + a.N ? (b = ae(b, ae(c, d)), c = a.L, d = 2 + sf(c - 1, d), d = d <= c ? vf(a, d, b) : a.N( + b)) : d = xf(a, b, c, E(d)); + return wb(d) + } + + b.L = + 2; + b.N = function (a) { + var b = y(a); + a = z(a); + var d = y(a); + a = vd(a); + return c(b, d, a) + }; + b.A = c; + return b + }(); + e = function (a, e, l) { + switch (arguments.length) { + case 0: + return d.call(this); + case 1: + return c.call(this, a); + case 2: + return b.call(this, a, e); + default: + var h = null; + if (2 < arguments.length) { + h = 0; + for (var k = Array(arguments.length - 2); h < k.length;) { + k[h] = arguments[h + 2], ++h; + } + h = new Jb(k, 0, null) + } + return f.A(a, e, h) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + e.L = 2; + e.N = f.N; + e.B = d; + e.h = c; + e.c = b; + e.A = f.A; + return e + }() + } + + function Zf(a) { + return function () { + function b(b) { + if (0 < arguments.length) { + for (var c = 0, e = Array(arguments.length - 0); + c < e.length;) { + e[c] = arguments[c + 0], ++c; + } + } + return a + } + + b.L = 0; + b.N = function (b) { + E(b); + return a + }; + b.A = function () { + return a + }; + return b + }() + } + + var $f = function $f(a) { + switch (arguments.length) { + case 0: + return $f.B(); + case 1: + return $f.h(arguments[0]); + case 2: + return $f.c(arguments[0], arguments[1]); + case 3: + return $f.l(arguments[0], arguments[1], arguments[2]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return $f.A(arguments[0], arguments[1], arguments[2], new Jb(c.slice(3), 0, null)) + } + }; + $f.B = function () { + return Ve + }; + $f.h = function (a) { + return a + }; + $f.c = function (a, b) { + return function () { + function c(c, d, e) { + c = b.l ? b.l(c, d, e) : b.call(null, c, d, e); + return a.h ? a.h(c) : a.call(null, c) + } + + function d(c, d) { + var e = b.c ? b.c(c, d) : b.call(null, c, d); + return a.h ? a.h(e) : a.call(null, e) + } + + function e(c) { + c = b.h ? b.h(c) : b.call(null, c); + return a.h ? a.h(c) : a.call(null, c) + } + + function f() { + var c = b.B ? b.B() : b.call(null); + return a.h ? a.h(c) : a.call(null, c) + } + + var h = null, k = function () { + function c(a, b, c, e) { + var f = null; + if (3 < arguments.length) { + f = 0; + for (var h = Array(arguments.length - 3); f < h.length;) { + h[f] = arguments[f + + 3], ++f; + } + f = new Jb(h, 0, null) + } + return d.call(this, a, b, c, f) + } + + function d(c, d, e, f) { + c = Af(b, c, d, e, f); + return a.h ? a.h(c) : a.call(null, c) + } + + c.L = 3; + c.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var e = y(a); + a = vd(a); + return d(b, c, e, a) + }; + c.A = d; + return c + }(); + h = function (a, b, h, u) { + switch (arguments.length) { + case 0: + return f.call(this); + case 1: + return e.call(this, a); + case 2: + return d.call(this, a, b); + case 3: + return c.call(this, a, b, h); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var p = Array(arguments.length - 3); m < p.length;) { + p[m] = + arguments[m + 3], ++m; + } + m = new Jb(p, 0, null) + } + return k.A(a, b, h, m) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + h.L = 3; + h.N = k.N; + h.B = f; + h.h = e; + h.c = d; + h.l = c; + h.A = k.A; + return h + }() + }; + $f.l = function (a, b, c) { + return function () { + function d(d, e, f) { + d = c.l ? c.l(d, e, f) : c.call(null, d, e, f); + d = b.h ? b.h(d) : b.call(null, d); + return a.h ? a.h(d) : a.call(null, d) + } + + function e(d, e) { + var f = c.c ? c.c(d, e) : c.call(null, d, e); + f = b.h ? b.h(f) : b.call(null, f); + return a.h ? a.h(f) : a.call(null, f) + } + + function f(d) { + d = c.h ? c.h(d) : c.call(null, d); + d = b.h ? b.h(d) : b.call(null, d); + return a.h ? a.h(d) : a.call(null, d) + } + + function h() { + var d = c.B ? c.B() : c.call(null); + d = b.h ? b.h(d) : b.call(null, d); + return a.h ? a.h(d) : a.call(null, d) + } + + var k = null, l = function () { + function d(a, + b, c, d) { + var f = null; + if (3 < arguments.length) { + f = 0; + for (var h = Array(arguments.length - 3); f < h.length;) { + h[f] = arguments[f + 3], ++f; + } + f = new Jb(h, 0, null) + } + return e.call(this, a, b, c, f) + } + + function e(d, e, f, h) { + d = Af(c, d, e, f, h); + d = b.h ? b.h(d) : b.call(null, d); + return a.h ? a.h(d) : a.call(null, d) + } + + d.L = 3; + d.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var d = y(a); + a = vd(a); + return e(b, c, d, a) + }; + d.A = e; + return d + }(); + k = function (a, b, c, k) { + switch (arguments.length) { + case 0: + return h.call(this); + case 1: + return f.call(this, a); + case 2: + return e.call(this, + a, b); + case 3: + return d.call(this, a, b, c); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var p = Array(arguments.length - 3); m < p.length;) { + p[m] = arguments[m + 3], ++m; + } + m = new Jb(p, 0, null) + } + return l.A(a, b, c, m) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + k.L = 3; + k.N = l.N; + k.B = h; + k.h = f; + k.c = e; + k.l = d; + k.A = l.A; + return k + }() + }; + $f.A = function (a, b, c, d) { + return function (a) { + return function () { + function b(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var d = Array(arguments.length - 0); b < d.length;) { + d[b] = arguments[b + 0], ++b; + } + b = new Jb(d, 0, null) + } + return c.call(this, b) + } + + function c(b) { + b = P(y(a), b); + for (var c = z(a); ;) { + if (c) { + var d = y(c); + b = d.h ? d.h(b) : d.call(null, b); + c = z(c) + } else { + return b + } + } + } + + b.L = 0; + b.N = function (a) { + a = E(a); + return c(a) + }; + b.A = c; + return b + }() + }(cf(ae(a, ae(b, ae(c, d))))) + }; + $f.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + d = z(d); + return $f.A(b, a, c, d) + }; + $f.L = 3; + var ag = function ag(a) { + switch (arguments.length) { + case 1: + return ag.h(arguments[0]); + case 2: + return ag.c(arguments[0], arguments[1]); + case 3: + return ag.l(arguments[0], arguments[1], arguments[2]); + case 4: + return ag.M(arguments[0], arguments[1], arguments[2], arguments[3]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return ag.A(arguments[0], arguments[1], arguments[2], arguments[3], + new Jb(c.slice(4), 0, null)) + } + }; + ag.h = function (a) { + return a + }; + ag.c = function (a, b) { + return function () { + function c(c, d, e) { + return a.M ? a.M(b, c, d, e) : a.call(null, b, c, d, e) + } + + function d(c, d) { + return a.l ? a.l(b, c, d) : a.call(null, b, c, d) + } + + function e(c) { + return a.c ? a.c(b, c) : a.call(null, b, c) + } + + function f() { + return a.h ? a.h(b) : a.call(null, b) + } + + var h = null, k = function () { + function c(a, b, c, e) { + var f = null; + if (3 < arguments.length) { + f = 0; + for (var h = Array(arguments.length - 3); f < h.length;) { + h[f] = arguments[f + 3], ++f; + } + f = new Jb(h, 0, null) + } + return d.call(this, a, b, c, f) + } + + function d(c, d, e, f) { + return oe(a, b, c, d, e, be([f])) + } + + c.L = 3; + c.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var e = y(a); + a = vd(a); + return d(b, c, e, a) + }; + c.A = d; + return c + }(); + h = function (a, b, h, u) { + switch (arguments.length) { + case 0: + return f.call(this); + case 1: + return e.call(this, a); + case 2: + return d.call(this, a, b); + case 3: + return c.call(this, a, b, h); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var l = Array(arguments.length - 3); m < l.length;) { + l[m] = arguments[m + 3], ++m; + } + m = new Jb(l, 0, null) + } + return k.A(a, b, h, m) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + h.L = 3; + h.N = k.N; + h.B = f; + h.h = e; + h.c = d; + h.l = c; + h.A = k.A; + return h + }() + }; + ag.l = function (a, b, c) { + return function () { + function d(d, e, f) { + return a.Z ? a.Z(b, c, d, e, f) : a.call(null, b, c, d, e, f) + } + + function e(d, e) { + return a.M ? a.M(b, c, d, e) : a.call(null, b, c, d, e) + } + + function f(d) { + return a.l ? a.l(b, c, d) : a.call(null, b, c, d) + } + + function h() { + return a.c ? a.c(b, c) : a.call(null, b, c) + } + + var k = null, l = function () { + function d(a, b, c, d) { + var f = null; + if (3 < arguments.length) { + f = 0; + for (var h = Array(arguments.length - 3); f < h.length;) { + h[f] = arguments[f + 3], ++f; + } + f = new Jb(h, 0, null) + } + return e.call(this, a, b, c, f) + } + + function e(d, e, f, h) { + return oe(a, + b, c, d, e, be([f, h])) + } + + d.L = 3; + d.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var d = y(a); + a = vd(a); + return e(b, c, d, a) + }; + d.A = e; + return d + }(); + k = function (a, b, c, k) { + switch (arguments.length) { + case 0: + return h.call(this); + case 1: + return f.call(this, a); + case 2: + return e.call(this, a, b); + case 3: + return d.call(this, a, b, c); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var p = Array(arguments.length - 3); m < p.length;) { + p[m] = arguments[m + 3], ++m; + } + m = new Jb(p, 0, null) + } + return l.A(a, b, c, m) + } + throw Error("Invalid arity: " + (arguments.length - + 1)); + }; + k.L = 3; + k.N = l.N; + k.B = h; + k.h = f; + k.c = e; + k.l = d; + k.A = l.A; + return k + }() + }; + ag.M = function (a, b, c, d) { + return function () { + function e(e, f, h) { + return a.Ca ? a.Ca(b, c, d, e, f, h) : a.call(null, b, c, d, e, f, h) + } + + function f(e, f) { + return a.Z ? a.Z(b, c, d, e, f) : a.call(null, b, c, d, e, f) + } + + function h(e) { + return a.M ? a.M(b, c, d, e) : a.call(null, b, c, d, e) + } + + function k() { + return a.l ? a.l(b, c, d) : a.call(null, b, c, d) + } + + var l = null, p = function () { + function e(a, b, c, d) { + var e = null; + if (3 < arguments.length) { + e = 0; + for (var h = Array(arguments.length - 3); e < h.length;) { + h[e] = arguments[e + 3], ++e; + } + e = new Jb(h, 0, null) + } + return f.call(this, a, b, c, e) + } + + function f(e, + f, h, k) { + return oe(a, b, c, d, e, be([f, h, k])) + } + + e.L = 3; + e.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var d = y(a); + a = vd(a); + return f(b, c, d, a) + }; + e.A = f; + return e + }(); + l = function (a, b, c, d) { + switch (arguments.length) { + case 0: + return k.call(this); + case 1: + return h.call(this, a); + case 2: + return f.call(this, a, b); + case 3: + return e.call(this, a, b, c); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var l = Array(arguments.length - 3); m < l.length;) { + l[m] = arguments[m + 3], ++m; + } + m = new Jb(l, 0, null) + } + return p.A(a, b, c, m) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + l.L = 3; + l.N = p.N; + l.B = k; + l.h = h; + l.c = f; + l.l = e; + l.A = p.A; + return l + }() + }; + ag.A = function (a, b, c, d, e) { + return function () { + function f(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var c = Array(arguments.length - 0); b < c.length;) { + c[b] = arguments[b + 0], ++b; + } + b = new Jb(c, 0, null) + } + return h.call(this, b) + } + + function h(f) { + return Af(a, b, c, d, O.c(e, f)) + } + + f.L = 0; + f.N = function (a) { + a = E(a); + return h(a) + }; + f.A = h; + return f + }() + }; + ag.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + var e = z(d); + d = y(e); + e = z(e); + return ag.A(b, a, c, d, e) + }; + ag.L = 4; + + function bg(a, b) { + return function f(b, e) { + return new kf(null, function () { + var d = E(e); + if (d) { + if (Ae(d)) { + for (var k = Wc(d), l = H(k), p = of(l), m = 0; ;) { + if (m < l) { + rf(p, function () { + var d = b + m, e = A.c(k, m); + return a.c ? a.c(d, e) : a.call(null, d, e) + }()), m += 1; + } else { + break; + } + } + return qf(p.Da(), f(b + l, Xc(d))) + } + return ae(function () { + var e = y(d); + return a.c ? a.c(b, e) : a.call(null, b, e) + }(), f(b + 1, vd(d))) + } + return null + }, null, null) + }(0, b) + } + + function cg(a, b, c, d) { + this.state = a; + this.meta = b; + this.df = c; + this.gb = d; + this.J = 16386; + this.m = 6455296 + } + + g = cg.prototype; + g.equiv = function (a) { + return this.K(null, a) + }; + g.K = function (a, b) { + return this === b + }; + g.pc = function () { + return this.state + }; + g.P = function () { + return this.meta + }; + g.Kd = function (a, b, c) { + a = E(this.gb); + for (var d = null, e = 0, f = 0; ;) { + if (f < e) { + var h = d.$(null, f), k = J(h, 0, null); + h = J(h, 1, null); + h.M ? h.M(k, this, b, c) : h.call(null, k, this, b, c); + f += 1 + } else if (a = E(a)) { + Ae(a) ? (d = Wc(a), a = Xc(a), k = d, e = H(d), d = k) : (d = y(a), k = J( + d, 0, null), h = J(d, 1, null), h.M ? h.M(k, this, b, c) : h.call(null, k, this, b, + c), a = z( + a), d = null, e = 0), f = 0; + } else { + return null + } + } + }; + g.Jd = function (a, b, c) { + this.gb = K.l(this.gb, b, c); + return this + }; + g.Ld = function (a, b) { + return this.gb = le.c(this.gb, b) + }; + g.U = function () { + return ja(this) + }; + var dg = function dg(a) { + switch (arguments.length) { + case 1: + return dg.h(arguments[0]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return dg.A(arguments[0], new Jb(c.slice(1), 0, null)) + } + }; + dg.h = function (a) { + return new cg(a, null, null, null) + }; + dg.A = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, rb); + c = D.c(c, eg); + return new cg(a, d, c, null) + }; + dg.N = function (a) { + var b = y(a); + a = z(a); + return dg.A(b, a) + }; + dg.L = 1; + + function fg(a, b) { + if (a instanceof cg) { + var c = a.df; + if (null != c && !t(c.h ? c.h(b) : c.call(null, b))) { + throw Error( + "Validator rejected reference state"); + } + c = a.state; + a.state = b; + null != a.gb && Lc(a, c, b); + return b + } + return $c(a, b) + } + + var gg = function gg(a) { + switch (arguments.length) { + case 2: + return gg.c(arguments[0], arguments[1]); + case 3: + return gg.l(arguments[0], arguments[1], arguments[2]); + case 4: + return gg.M(arguments[0], arguments[1], arguments[2], arguments[3]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return gg.A(arguments[0], arguments[1], arguments[2], arguments[3], + new Jb(c.slice(4), 0, null)) + } + }; + gg.c = function (a, b) { + if (a instanceof cg) { + var c = a.state; + c = b.h ? b.h(c) : b.call(null, c); + c = fg(a, c) + } else { + c = ad.c(a, b); + } + return c + }; + gg.l = function (a, b, c) { + if (a instanceof cg) { + var d = a.state; + b = b.c ? b.c(d, c) : b.call(null, d, c); + a = fg(a, b) + } else { + a = ad.l(a, b, c); + } + return a + }; + gg.M = function (a, b, c, d) { + if (a instanceof cg) { + var e = a.state; + b = b.l ? b.l(e, c, d) : b.call(null, e, c, d); + a = fg(a, b) + } else { + a = ad.M(a, b, c, d); + } + return a + }; + gg.A = function (a, b, c, d, e) { + return a instanceof cg ? fg(a, Af(b, a.state, c, d, e)) : ad.Z(a, b, c, d, e) + }; + gg.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + var e = z(d); + d = y(e); + e = z(e); + return gg.A(b, a, c, d, e) + }; + gg.L = 4; + + function hg(a) { + this.state = a; + this.m = 32768; + this.J = 0 + } + + hg.prototype.Qe = function (a, b) { + return this.state = b + }; + hg.prototype.pc = function () { + return this.state + }; + var ig = function ig(a) { + switch (arguments.length) { + case 1: + return ig.h(arguments[0]); + case 2: + return ig.c(arguments[0], arguments[1]); + case 3: + return ig.l(arguments[0], arguments[1], arguments[2]); + case 4: + return ig.M(arguments[0], arguments[1], arguments[2], arguments[3]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return ig.A(arguments[0], arguments[1], arguments[2], arguments[3], + new Jb(c.slice(4), 0, null)) + } + }; + ig.h = function (a) { + return function (b) { + return function () { + function c(c, d) { + var e = a.h ? a.h(d) : a.call(null, d); + return b.c ? b.c(c, e) : b.call(null, c, e) + } + + function d(a) { + return b.h ? b.h(a) : b.call(null, a) + } + + function e() { + return b.B ? b.B() : b.call(null) + } + + var f = null, h = function () { + function c(a, b, c) { + var e = null; + if (2 < arguments.length) { + e = 0; + for (var f = Array(arguments.length - 2); e < f.length;) { + f[e] = arguments[e + 2], ++e; + } + e = new Jb(f, 0, null) + } + return d.call(this, a, b, e) + } + + function d(c, d, e) { + d = Kb(a, d, e); + return b.c ? b.c(c, d) : b.call(null, c, d) + } + + c.L = 2; + c.N = + function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = vd(a); + return d(b, c, a) + }; + c.A = d; + return c + }(); + f = function (a, b, f) { + switch (arguments.length) { + case 0: + return e.call(this); + case 1: + return d.call(this, a); + case 2: + return c.call(this, a, b); + default: + var k = null; + if (2 < arguments.length) { + k = 0; + for (var l = Array(arguments.length - 2); k < l.length;) { + l[k] = arguments[k + + 2], ++k; + } + k = new Jb(l, 0, null) + } + return h.A(a, b, k) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + f.L = 2; + f.N = h.N; + f.B = e; + f.h = d; + f.c = c; + f.A = h.A; + return f + }() + } + }; + ig.c = function (a, b) { + return new kf(null, function () { + var c = E(b); + if (c) { + if (Ae(c)) { + for (var d = Wc(c), e = H(d), f = of(e), h = 0; ;) { + if (h < e) { + rf(f, function () { + var b = A.c(d, h); + return a.h ? a.h(b) : a.call(null, b) + }()), h += 1; + } else { + break; + } + } + return qf(f.Da(), ig.c(a, Xc(c))) + } + return ae(function () { + var b = y(c); + return a.h ? a.h(b) : a.call(null, b) + }(), ig.c(a, vd(c))) + } + return null + }, null, null) + }; + ig.l = function (a, b, c) { + return new kf(null, function () { + var d = E(b), e = E(c); + if (d && e) { + var f = ae; + var h = y(d); + var k = y(e); + h = a.c ? a.c(h, k) : a.call(null, h, k); + d = f(h, ig.l(a, vd(d), vd(e))) + } else { + d = null; + } + return d + }, null, null) + }; + ig.M = function (a, b, c, d) { + return new kf(null, function () { + var e = E(b), f = E(c), h = E(d); + if (e && f && h) { + var k = ae; + var l = y(e); + var p = y(f), m = y(h); + l = a.l ? a.l(l, p, m) : a.call(null, l, p, m); + e = k(l, ig.M(a, vd(e), vd(f), vd(h))) + } else { + e = null; + } + return e + }, null, null) + }; + ig.A = function (a, b, c, d, e) { + var f = function l(a) { + return new kf(null, function () { + var b = ig.c(E, a); + return Vf(Ve, b) ? ae(ig.c(y, b), l(ig.c(vd, b))) : null + }, null, null) + }; + return ig.c(function () { + return function (b) { + return P(a, b) + } + }(f), f(ge.A(e, d, be([c, b])))) + }; + ig.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + var e = z(d); + d = y(e); + e = z(e); + return ig.A(b, a, c, d, e) + }; + ig.L = 4; + + function jg(a, b) { + return new kf(null, function () { + if (0 < a) { + var c = E(b); + return c ? ae(y(c), jg(a - 1, vd(c))) : null + } + return null + }, null, null) + } + + function kg(a, b) { + return new kf(null, function (c) { + return function () { + return c(a, b) + } + }(function (a, b) { + for (; ;) { + var c = E(b); + if (0 < a && c) { + var d = a - 1; + c = vd(c); + a = d; + b = c + } else { + return c + } + } + }), null, null) + } + + function lg(a) { + return ig.l(function (a) { + return a + }, a, kg(2, a)) + } + + function mg(a) { + return function (b) { + return function (c) { + return function () { + function d(d, e) { + var f = B(c); + if (t(t(f) ? a.h ? a.h(e) : a.call(null, e) : f)) { + return d; + } + bd(c, null); + return b.c ? b.c(d, e) : b.call(null, d, e) + } + + function e(a) { + return b.h ? b.h(a) : b.call(null, a) + } + + function f() { + return b.B ? b.B() : b.call(null) + } + + var h = null; + h = function (a, b) { + switch (arguments.length) { + case 0: + return f.call(this); + case 1: + return e.call(this, a); + case 2: + return d.call(this, a, b) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + h.B = f; + h.h = e; + h.c = d; + return h + }() + }(new hg(!0)) + } + } + + function ng(a, b) { + return new kf(null, function (c) { + return function () { + return c(a, b) + } + }(function (a, b) { + for (; ;) { + var c = E(b), d; + if (d = c) { + d = y(c), d = a.h ? a.h(d) : a.call(null, d); + } + if (t(d)) { + d = a, c = vd(c), a = d, b = c; + } else { + return c + } + } + }), null, null) + } + + var og = function og(a) { + return new kf(null, function () { + var c = E(a); + return c ? O.c(c, og.h ? og.h(c) : og.call(null, c)) : null + }, null, null) + }; + + function pg(a) { + return new kf(null, function () { + return ae(a, pg(a)) + }, null, null) + } + + function qg(a, b) { + return jg(a, pg(b)) + } + + var rg = function rg(a, b) { + return ae(b, new kf(null, function () { + var d = a.h ? a.h(b) : a.call(null, b); + return rg.c ? rg.c(a, d) : rg.call(null, a, d) + }, null, null)) + }; + + function sg(a, b) { + return P(O, Kb(ig, a, b)) + } + + function tg(a) { + return function (b) { + return function () { + function c(c, d) { + return t(a.h ? a.h(d) : a.call(null, d)) ? b.c ? b.c(c, d) : b.call(null, c, d) : c + } + + function d(a) { + return b.h ? b.h(a) : b.call(null, a) + } + + function e() { + return b.B ? b.B() : b.call(null) + } + + var f = null; + f = function (a, b) { + switch (arguments.length) { + case 0: + return e.call(this); + case 1: + return d.call(this, a); + case 2: + return c.call(this, a, b) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + f.B = e; + f.h = d; + f.c = c; + return f + }() + } + } + + function ug(a, b) { + return new kf(null, function () { + var c = E(b); + if (c) { + if (Ae(c)) { + for (var d = Wc(c), e = H(d), f = of(e), h = 0; ;) { + if (h < e) { + var k = A.c(d, h); + k = a.h ? a.h(k) : a.call(null, k); + t(k) && (k = A.c(d, h), f.add(k)); + h += 1 + } else { + break; + } + } + return qf(f.Da(), ug(a, Xc(c))) + } + d = y(c); + c = vd(c); + return t(a.h ? a.h(d) : a.call(null, d)) ? ae(d, ug(a, c)) : ug(a, c) + } + return null + }, null, null) + } + + function vg(a, b) { + return ug(Yf(a), b) + } + + var wg = function wg(a) { + switch (arguments.length) { + case 0: + return wg.B(); + case 1: + return wg.h(arguments[0]); + case 2: + return wg.c(arguments[0], arguments[1]); + case 3: + return wg.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + wg.B = function () { + return he + }; + wg.h = function (a) { + return a + }; + wg.c = function (a, b) { + return null != a ? null != a && (a.J & 4 || q === a.kf) ? tc(Qc(Mb(Pc, Oc(a), b)), qe(a)) : Mb( + Tb, a, b) : Mb(ge, wd, b) + }; + wg.l = function (a, b, c) { + return null != a && (a.J & 4 || q === a.kf) ? tc(Qc(We(b, uf, Oc(a), c)), qe(a)) : We(b, ge, a, + c) + }; + wg.L = 3; + + function xg(a, b) { + return Qc(Mb(function (b, d) { + return uf.c(b, a.h ? a.h(d) : a.call(null, d)) + }, Oc(he), b)) + } + + function yg(a, b, c) { + return new kf(null, function () { + var d = E(c); + if (d) { + var e = jg(a, d); + return a === H(e) ? ae(e, yg(a, b, kg(b, d))) : null + } + return null + }, null, null) + } + + var zg = function zg(a, b, c) { + b = E(b); + var e = y(b), f = z(b); + return f ? K.l(a, e, function () { + var b = D.c(a, e); + return zg.l ? zg.l(b, f, c) : zg.call(null, b, f, c) + }()) : K.l(a, e, c) + }, Ag = function Ag(a) { + switch (arguments.length) { + case 3: + return Ag.l(arguments[0], arguments[1], arguments[2]); + case 4: + return Ag.M(arguments[0], arguments[1], arguments[2], arguments[3]); + case 5: + return Ag.Z(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); + case 6: + return Ag.Ca(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], + arguments[5]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Ag.A(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], + arguments[5], new Jb(c.slice(6), 0, null)) + } + }; + Ag.l = function (a, b, c) { + b = E(b); + var d = y(b); + return (b = z(b)) ? K.l(a, d, Ag.l(D.c(a, d), b, c)) : K.l(a, d, function () { + var b = D.c(a, d); + return c.h ? c.h(b) : c.call(null, b) + }()) + }; + Ag.M = function (a, b, c, d) { + b = E(b); + var e = y(b); + return (b = z(b)) ? K.l(a, e, Ag.M(D.c(a, e), b, c, d)) : K.l(a, e, function () { + var b = D.c(a, e); + return c.c ? c.c(b, d) : c.call(null, b, d) + }()) + }; + Ag.Z = function (a, b, c, d, e) { + b = E(b); + var f = y(b); + return (b = z(b)) ? K.l(a, f, Ag.Z(D.c(a, f), b, c, d, e)) : K.l(a, f, function () { + var b = D.c(a, f); + return c.l ? c.l(b, d, e) : c.call(null, b, d, e) + }()) + }; + Ag.Ca = function (a, b, c, d, e, f) { + b = E(b); + var h = y(b); + return (b = z(b)) ? K.l(a, h, Ag.Ca(D.c(a, h), b, c, d, e, f)) : K.l(a, h, function () { + var b = D.c(a, h); + return c.M ? c.M(b, d, e, f) : c.call(null, b, d, e, f) + }()) + }; + Ag.A = function (a, b, c, d, e, f, h) { + var k = E(b); + b = y(k); + return (k = z(k)) ? K.l(a, b, oe(Ag, D.c(a, b), k, c, d, be([e, f, h]))) : K.l(a, b, + oe(c, D.c(a, b), d, e, f, be([h]))) + }; + Ag.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + var e = z(d); + d = y(e); + var f = z(e); + e = y(f); + var h = z(f); + f = y(h); + h = z(h); + return Ag.A(b, a, c, d, e, f, h) + }; + Ag.L = 6; + + function Bg(a, b, c) { + return K.l(a, b, function () { + var d = D.c(a, b); + return c.h ? c.h(d) : c.call(null, d) + }()) + } + + function Cg(a, b, c, d) { + return K.l(a, b, function () { + var e = D.c(a, b); + return c.c ? c.c(e, d) : c.call(null, e, d) + }()) + } + + function Dg(a, b, c) { + var d = V, e = Eg; + return K.l(a, d, function () { + var f = D.c(a, d); + return e.l ? e.l(f, b, c) : e.call(null, f, b, c) + }()) + } + + function Fg(a, b) { + this.la = a; + this.o = b + } + + function Gg(a) { + return new Fg(a, + [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null]) + } + + function Hg(a) { + return new Fg(a.la, Gb(a.o)) + } + + function Ig(a) { + a = a.F; + return 32 > a ? 0 : a - 1 >>> 5 << 5 + } + + function Jg(a, b, c) { + for (; ;) { + if (0 === b) { + return c; + } + var d = Gg(a); + d.o[0] = c; + c = d; + b -= 5 + } + } + + var Kg = function Kg(a, b, c, d) { + var f = Hg(c), h = a.F - 1 >>> b & 31; + 5 === b ? f.o[h] = d : (c = c.o[h], null != c ? (b -= 5, a = Kg.M ? Kg.M(a, b, c, d) : Kg.call( + null, a, b, c, d)) : a = Jg(null, b - 5, d), f.o[h] = a); + return f + }; + + function Lg(a, b) { + throw Error(["No item ", v.h(a), " in vector of length ", v.h(b)].join("")); + } + + function Mg(a, b) { + if (b >= Ig(a)) { + return a.fa; + } + for (var c = a.root, d = a.shift; ;) { + if (0 < d) { + var e = d - 5; + c = c.o[b >>> d & 31]; + d = e + } else { + return c.o + } + } + } + + var Ng = function Ng(a, b, c, d, e) { + var h = Hg(c); + if (0 === b) { + h.o[d & 31] = e; + } else { + var k = d >>> b & 31; + b -= 5; + c = c.o[k]; + a = Ng.Z ? Ng.Z(a, b, c, d, e) : Ng.call(null, a, b, c, d, e); + h.o[k] = a + } + return h + }, Og = function Og(a, b, c) { + var e = a.F - 2 >>> b & 31; + if (5 < b) { + b -= 5; + var f = c.o[e]; + a = Og.l ? Og.l(a, b, f) : Og.call(null, a, b, f); + if (null == a && 0 === e) { + return null; + } + c = Hg(c); + c.o[e] = a; + return c + } + if (0 === e) { + return null; + } + c = Hg(c); + c.o[e] = null; + return c + }; + + function Pg(a, b, c, d, e, f) { + this.i = a; + this.base = b; + this.o = c; + this.Ja = d; + this.start = e; + this.end = f + } + + Pg.prototype.ja = function () { + return this.i < this.end + }; + Pg.prototype.next = function () { + 32 === this.i - this.base && (this.o = Mg(this.Ja, this.i), this.base += 32); + var a = this.o[this.i & 31]; + this.i += 1; + return a + }; + + function Qg(a, b, c) { + return new Pg(b, b - b % 32, b < H(a) ? Mg(a, b) : null, a, b, c) + } + + function Rg(a, b, c, d) { + return c < d ? Sg(a, b, Vd(a, c), c + 1, d) : b.B ? b.B() : b.call(null) + } + + function Sg(a, b, c, d, e) { + var f = c; + c = d; + for (d = Mg(a, d); ;) { + if (c < e) { + var h = c & 31; + d = 0 === h ? Mg(a, c) : d; + h = d[h]; + f = b.c ? b.c(f, h) : b.call(null, f, h); + if (Hd(f)) { + return B(f); + } + c += 1 + } else { + return f + } + } + } + + function R(a, b, c, d, e, f) { + this.meta = a; + this.F = b; + this.shift = c; + this.root = d; + this.fa = e; + this.w = f; + this.m = 167668511; + this.J = 139268 + } + + g = R.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return "number" === typeof b ? this.ka(null, b, c) : c + }; + g.Qc = function (a, b, c) { + a = 0; + for (var d = c; ;) { + if (a < this.F) { + var e = Mg(this, a); + c = e.length; + a:for (var f = 0; ;) { + if (f < c) { + var h = f + a, k = e[f]; + d = b.l ? b.l(d, h, k) : b.call(null, d, h, k); + if (Hd(d)) { + e = d; + break a + } + f += 1 + } else { + e = d; + break a + } + } + if (Hd(e)) { + return B(e); + } + a += c; + d = e + } else { + return d + } + } + }; + g.fe = q; + g.$ = function (a, b) { + return (0 <= b && b < this.F ? Mg(this, b) : Lg(b, this.F))[b & 31] + }; + g.ka = function (a, b, c) { + return 0 <= b && b < this.F ? Mg(this, b)[b & 31] : c + }; + g.dc = function (a, b, c) { + if (0 <= b && b < this.F) { + return Ig(this) <= b ? (a = Gb(this.fa), a[b & 31] = c, new R( + this.meta, this.F, this.shift, this.root, a, null)) : new R(this.meta, this.F, this.shift, + Ng(this, this.shift, this.root, b, c), this.fa, null); + } + if (b === this.F) { + return this.X(null, c); + } + throw Error(["Index ", v.h(b), " out of bounds [0,", v.h(this.F), "]"].join("")); + }; + g.ba = function () { + return Qg(this, 0, this.F) + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return this.F + }; + g.fd = function () { + return this.$(null, 0) + }; + g.gd = function () { + return this.$(null, 1) + }; + g.Ac = function () { + return 0 < this.F ? this.$(null, this.F - 1) : null + }; + g.Bc = function () { + if (0 === this.F) { + throw Error("Can't pop empty vector"); + } + if (1 === this.F) { + return tc(he, this.meta); + } + if (1 < this.F - Ig(this)) { + return new R(this.meta, this.F - 1, this.shift, this.root, + this.fa.slice(0, -1), null); + } + var a = Mg(this, this.F - 2), b = Og(this, this.shift, this.root); + b = null == b ? T : b; + var c = this.F - 1; + return 5 < this.shift && null == b.o[1] ? new R(this.meta, c, this.shift - 5, b.o[0], a, null) + : new R(this.meta, c, this.shift, b, a, null) + }; + g.Rc = function () { + return 0 < this.F ? new Zd(this, this.F - 1, null) : null + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + if (b instanceof R) { + if (this.F === H(b)) { + for (var c = this.ba(null), d = dd(b); ;) { + if (c.ja()) { + var e = c.next(), f = d.next(); + if (!G.c(e, f)) { + return !1 + } + } else { + return !0; + } + } + } else { + return !1; + } + } else { + return $d(this, b) + } + }; + g.Pc = function () { + var a = this.F, b = this.shift, c = new Fg({}, Gb(this.root.o)), d = this.fa, + e = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null]; + Be(d, 0, e, 0, d.length); + return new Tg(a, b, c, e) + }; + g.oa = function () { + return tc(he, this.meta) + }; + g.Fa = function (a, b) { + return Rg(this, b, 0, this.F) + }; + g.Ga = function (a, b, c) { + a = 0; + for (var d = c; ;) { + if (a < this.F) { + var e = Mg(this, a); + c = e.length; + a:for (var f = 0; ;) { + if (f < c) { + var h = e[f]; + d = b.c ? b.c(d, h) : b.call(null, d, h); + if (Hd(d)) { + e = d; + break a + } + f += 1 + } else { + e = d; + break a + } + } + if (Hd(e)) { + return B(e); + } + a += c; + d = e + } else { + return d + } + } + }; + g.O = function (a, b, c) { + if ("number" === typeof b) { + return this.dc(null, b, c); + } + throw Error("Vector's key for assoc must be a number."); + }; + g.yc = function (a, b) { + return Ge(b) ? 0 <= b && b < this.F : !1 + }; + g.S = function () { + if (0 === this.F) { + var a = null; + } else if (32 >= this.F) { + a = new Jb(this.fa, 0, null); + } else { + a:{ + a = this.root; + for (var b = this.shift; ;) { + if (0 < b) { + b -= 5, a = a.o[0]; + } else { + a = a.o; + break a + } + } + } + a = new Ug(this, a, 0, 0, null, null) + } + return a + }; + g.T = function (a, b) { + return new R(b, this.F, this.shift, this.root, this.fa, this.w) + }; + g.X = function (a, b) { + if (32 > this.F - Ig(this)) { + for (var c = this.fa.length, d = Array(c + 1), e = 0; ;) { + if (e + < c) { + d[e] = this.fa[e], e += 1; + } else { + break; + } + } + d[c] = b; + return new R(this.meta, this.F + 1, this.shift, this.root, d, null) + } + c = (d = this.F >>> 5 > 1 << this.shift) ? this.shift + 5 : this.shift; + d ? (d = Gg(null), d.o[0] = this.root, e = Jg(null, this.shift, + new Fg(null, this.fa)), d.o[1] = e) : d = Kg(this, this.shift, this.root, + new Fg(null, this.fa)); + return new R(this.meta, this.F + 1, c, d, [b], null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.$(null, c); + case 3: + return this.ka(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.$(null, c) + }; + a.l = function (a, c, d) { + return this.ka(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.$(null, a) + }; + g.c = function (a, b) { + return this.ka(null, a, b) + }; + var T = new Fg(null, + [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null]), he = new R(null, 0, 5, T, [], Cd); + + function Vg(a) { + var b = a.length; + if (32 > b) { + return new R(null, b, 5, T, a, null); + } + for (var c = 32, d = (new R(null, 32, 5, T, a.slice(0, 32), null)).Pc(null); ;) { + if (c < b) { + var e = c + 1; + d = uf.c(d, a[c]); + c = e + } else { + return Qc(d) + } + } + } + + R.prototype[Fb] = function () { + return yd(this) + }; + + function Wg(a) { + return vb(a) ? Vg(a) : Qc(Mb(Pc, Oc(he), a)) + } + + var Xg = function Xg(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Xg.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + Xg.A = function (a) { + return a instanceof Jb && 0 === a.i ? Vg(a.o) : Wg(a) + }; + Xg.L = 0; + Xg.N = function (a) { + return Xg.A(E(a)) + }; + + function Ug(a, b, c, d, e, f) { + this.zb = a; + this.node = b; + this.i = c; + this.ab = d; + this.meta = e; + this.w = f; + this.m = 32375020; + this.J = 1536 + } + + g = Ug.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + if (this.ab + 1 < this.node.length) { + var a = new Ug(this.zb, this.node, this.i, this.ab + 1, null, null); + return null == a ? null : a + } + return this.Me(null) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(he, this.meta) + }; + g.Fa = function (a, b) { + return Rg(this.zb, b, this.i + this.ab, H(this.zb)) + }; + g.Ga = function (a, b, c) { + return Sg(this.zb, b, c, this.i + this.ab, H(this.zb)) + }; + g.Ia = function () { + return this.node[this.ab] + }; + g.bb = function () { + if (this.ab + 1 < this.node.length) { + var a = new Ug(this.zb, this.node, this.i, this.ab + 1, null, null); + return null == a ? wd : a + } + return this.Hd(null) + }; + g.S = function () { + return this + }; + g.ge = function () { + var a = this.node; + return new nf(a, this.ab, a.length) + }; + g.Hd = function () { + var a = this.i + this.node.length; + return a < Qb(this.zb) ? new Ug(this.zb, Mg(this.zb, a), a, 0, null, null) : wd + }; + g.T = function (a, b) { + return new Ug(this.zb, this.node, this.i, this.ab, b, null) + }; + g.X = function (a, b) { + return ae(b, this) + }; + g.Me = function () { + var a = this.i + this.node.length; + return a < Qb(this.zb) ? new Ug(this.zb, Mg(this.zb, a), a, 0, null, null) : null + }; + Ug.prototype[Fb] = function () { + return yd(this) + }; + + function Yg(a, b, c, d, e) { + this.meta = a; + this.Ja = b; + this.start = c; + this.end = d; + this.w = e; + this.m = 167666463; + this.J = 139264 + } + + g = Yg.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return "number" === typeof b ? this.ka(null, b, c) : c + }; + g.Qc = function (a, b, c) { + a = this.start; + for (var d = 0; ;) { + if (a < this.end) { + var e = d, f = A.c(this.Ja, a); + c = b.l ? b.l(c, e, f) : b.call(null, c, e, f); + if (Hd(c)) { + return B(c); + } + d += 1; + a += 1 + } else { + return c + } + } + }; + g.$ = function (a, b) { + return 0 > b || this.end <= this.start + b ? Lg(b, this.end - this.start) : A.c(this.Ja, + this.start + b) + }; + g.ka = function (a, b, c) { + return 0 > b || this.end <= this.start + b ? c : A.l(this.Ja, this.start + b, c) + }; + g.dc = function (a, b, c) { + a = this.start + b; + if (0 > b || this.end + 1 <= a) { + throw Error( + ["Index ", v.h(b), " out of bounds [0,", v.h(this.W(null)), "]"].join("")); + } + b = this.meta; + c = K.l(this.Ja, a, c); + var d = this.end; + a += 1; + return Zg(b, c, this.start, d > a ? d : a, null) + }; + g.ba = function () { + return null != this.Ja && q === this.Ja.fe ? Qg(this.Ja, this.start, this.end) : new Jf(Hf, + this) + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return this.end - this.start + }; + g.Ac = function () { + return A.c(this.Ja, this.end - 1) + }; + g.Bc = function () { + if (this.start === this.end) { + throw Error("Can't pop empty vector"); + } + return Zg(this.meta, this.Ja, this.start, this.end - 1, null) + }; + g.Rc = function () { + return this.start !== this.end ? new Zd(this, this.end - this.start - 1, null) : null + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(he, this.meta) + }; + g.Fa = function (a, b) { + return null != this.Ja && q === this.Ja.fe ? Rg(this.Ja, b, this.start, this.end) : Kd(this, b) + }; + g.Ga = function (a, b, c) { + return null != this.Ja && q === this.Ja.fe ? Sg(this.Ja, b, c, this.start, this.end) : Ld(this, + b, c) + }; + g.O = function (a, b, c) { + if ("number" === typeof b) { + return this.dc(null, b, c); + } + throw Error("Subvec's key for assoc must be a number."); + }; + g.S = function () { + var a = this; + return function (b) { + return function e(d) { + return d === a.end ? null : ae(A.c(a.Ja, d), new kf(null, function () { + return function () { + return e(d + 1) + } + }(b), null, null)) + } + }(this)(a.start) + }; + g.T = function (a, b) { + return Zg(b, this.Ja, this.start, this.end, this.w) + }; + g.X = function (a, b) { + return Zg(this.meta, qc(this.Ja, this.end, b), this.start, this.end + 1, null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.$(null, c); + case 3: + return this.ka(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.$(null, c) + }; + a.l = function (a, c, d) { + return this.ka(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.$(null, a) + }; + g.c = function (a, b) { + return this.ka(null, a, b) + }; + Yg.prototype[Fb] = function () { + return yd(this) + }; + + function Zg(a, b, c, d, e) { + for (; ;) { + if (b instanceof Yg) { + c = b.start + c, d = b.start + d, b = b.Ja; + } else { + if (!ze(b)) { + throw Error("v must satisfy IVector"); + } + var f = H(b); + if (0 > c || 0 > d || c > f || d > f) { + throw Error("Index out of bounds"); + } + return new Yg(a, b, c, d, e) + } + } + } + + function $g(a, b) { + return a === b.la ? b : new Fg(a, Gb(b.o)) + } + + var ah = function ah(a, b, c, d) { + c = $g(a.root.la, c); + var f = a.F - 1 >>> b & 31; + if (5 === b) { + a = d; + } else { + var h = c.o[f]; + null != h ? (b -= 5, a = ah.M ? ah.M(a, b, h, d) : ah.call(null, a, b, h, d)) : a = Jg( + a.root.la, b - 5, d) + } + c.o[f] = a; + return c + }; + + function Tg(a, b, c, d) { + this.F = a; + this.shift = b; + this.root = c; + this.fa = d; + this.J = 88; + this.m = 275 + } + + g = Tg.prototype; + g.Dc = function (a, b) { + if (this.root.la) { + if (32 > this.F - Ig(this)) { + this.fa[this.F & 31] = b; + } else { + var c = new Fg(this.root.la, this.fa), + d = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null]; + d[0] = b; + this.fa = d; + if (this.F >>> 5 > 1 << this.shift) { + d = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null]; + var e = this.shift + + 5; + d[0] = this.root; + d[1] = Jg(this.root.la, this.shift, c); + this.root = new Fg(this.root.la, d); + this.shift = e + } else { + this.root = ah(this, this.shift, this.root, c) + } + } + this.F += 1; + return this + } + throw Error("conj! after persistent!"); + }; + g.kd = function () { + if (this.root.la) { + this.root.la = null; + var a = this.F - Ig(this), b = Array(a); + Be(this.fa, 0, b, 0, a); + return new R(null, this.F, this.shift, this.root, b, null) + } + throw Error("persistent! called twice"); + }; + g.Cc = function (a, b, c) { + if ("number" === typeof b) { + return bh(this, b, c); + } + throw Error("TransientVector's key for assoc! must be a number."); + }; + + function bh(a, b, c) { + if (a.root.la) { + if (0 <= b && b < a.F) { + if (Ig(a) <= b) { + a.fa[b & 31] = c; + } else { + var d = function () { + return function () { + return function k(d, h) { + var f = $g(a.root.la, h); + if (0 === d) { + f.o[b & 31] = c; + } else { + var p = b >>> d & 31, m = k(d - 5, f.o[p]); + f.o[p] = m + } + return f + } + }(a)(a.shift, a.root) + }(); + a.root = d + } + return a + } + if (b === a.F) { + return a.Dc(null, c); + } + throw Error( + ["Index ", v.h(b), " out of bounds for TransientVector of length", v.h(a.F)].join("")); + } + throw Error("assoc! after persistent!"); + } + + g.W = function () { + if (this.root.la) { + return this.F; + } + throw Error("count after persistent!"); + }; + g.$ = function (a, b) { + if (this.root.la) { + return (0 <= b && b < this.F ? Mg(this, b) : Lg(b, this.F))[b & 31]; + } + throw Error("nth after persistent!"); + }; + g.ka = function (a, b, c) { + return 0 <= b && b < this.F ? this.$(null, b) : c + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return "number" === typeof b ? this.ka(null, b, c) : c + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + + function ch() { + this.m = 2097152; + this.J = 0 + } + + ch.prototype.equiv = function (a) { + return this.K(null, a) + }; + ch.prototype.K = function () { + return !1 + }; + var dh = new ch; + + function eh(a, b) { + return Ee( + xe(b) && !ye(b) ? H(a) === H(b) ? (null != a ? a.m & 1048576 || q === a.Uf || (a.m ? 0 : Ab( + wc, a)) : Ab(wc, a)) ? Ue(function (a, d, e) { + return G.c(D.l(b, d, dh), e) ? !0 : new Gd(!1) + }, !0, a) : Vf(function (a) { + return G.c(D.l(b, y(a), dh), ee(a)) + }, a) : null : null) + } + + function fh(a, b, c, d, e) { + this.i = a; + this.Mf = b; + this.Ie = c; + this.wf = d; + this.Se = e + } + + fh.prototype.ja = function () { + var a = this.i < this.Ie; + return a ? a : this.Se.ja() + }; + fh.prototype.next = function () { + if (this.i < this.Ie) { + var a = Vd(this.wf, this.i); + this.i += 1; + return new R(null, 2, 5, T, [a, cc.c(this.Mf, a)], null) + } + return this.Se.next() + }; + fh.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function gh(a) { + this.s = a + } + + gh.prototype.next = function () { + if (null != this.s) { + var a = y(this.s), b = J(a, 0, null); + a = J(a, 1, null); + this.s = z(this.s); + return {value: [b, a], done: !1} + } + return {value: null, done: !0} + }; + + function hh(a) { + this.s = a + } + + hh.prototype.next = function () { + if (null != this.s) { + var a = y(this.s); + this.s = z(this.s); + return {value: [a, a], done: !1} + } + return {value: null, done: !0} + }; + + function ih(a, b) { + if (b instanceof L) { + a:{ + var c = a.length; + for (var d = b.ea, e = 0; ;) { + if (c <= e) { + c = -1; + break a + } + if (a[e] instanceof L && d === a[e].ea) { + c = e; + break a + } + e += 2 + } + } + } else if (ca(b) || "number" === typeof b) { + a:for (c = a.length, d = 0; ;) { + if (c <= d) { + c = -1; + break a + } + if (b === a[d]) { + c = d; + break a + } + d += 2 + } + } else if (b instanceof rd) { + a:for (c = a.length, d = b.Zb, e = 0; ;) { + if (c <= e) { + c = -1; + break a + } + if (a[e] instanceof rd && d === a[e].Zb) { + c = e; + break a + } + e += 2 + } + } else if (null == b) { + a:for (c = a.length, d = 0; ;) { + if (c <= d) { + c = -1; + break a + } + if (null == a[d]) { + c = d; + break a + } + d += 2 + } + } else { + a:for (c = a.length, + d = 0; ;) { + if (c <= d) { + c = -1; + break a + } + if (G.c(b, a[d])) { + c = d; + break a + } + d += 2 + } + } + return c + } + + function jh(a, b, c) { + this.o = a; + this.i = b; + this.hb = c; + this.m = 32374990; + this.J = 0 + } + + g = jh.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.hb + }; + g.Ka = function () { + return this.i < this.o.length - 2 ? new jh(this.o, this.i + 2, this.hb) : null + }; + g.W = function () { + return (this.o.length - this.i) / 2 + }; + g.U = function () { + return Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.hb) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return new R(null, 2, 5, T, [this.o[this.i], this.o[this.i + 1]], null) + }; + g.bb = function () { + return this.i < this.o.length - 2 ? new jh(this.o, this.i + 2, this.hb) : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new jh(this.o, this.i, b) + }; + g.X = function (a, b) { + return ae(b, this) + }; + jh.prototype[Fb] = function () { + return yd(this) + }; + + function kh(a, b, c) { + this.o = a; + this.i = b; + this.F = c + } + + kh.prototype.ja = function () { + return this.i < this.F + }; + kh.prototype.next = function () { + var a = new R(null, 2, 5, T, [this.o[this.i], this.o[this.i + 1]], null); + this.i += 2; + return a + }; + + function r(a, b, c, d) { + this.meta = a; + this.F = b; + this.o = c; + this.w = d; + this.m = 16647951; + this.J = 139268 + } + + g = r.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.keys = function () { + return yd(lh(this)) + }; + g.entries = function () { + return new gh(E(E(this))) + }; + g.values = function () { + return yd(mh(this)) + }; + g.has = function (a) { + return He(this, a) + }; + g.get = function (a, b) { + return this.I(null, a, b) + }; + g.forEach = function (a) { + for (var b = E(this), c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e), h = J(f, 0, null); + f = J(f, 1, null); + a.c ? a.c(f, h) : a.call(null, f, h); + e += 1 + } else if (b = E(b)) { + Ae(b) ? (c = Wc(b), b = Xc(b), h = c, d = H(c), c = h) : (c = y(b), h = J( + c, 0, null), f = J(c, 1, null), a.c ? a.c(f, h) : a.call(null, f, h), b = z( + b), c = null, d = 0), e = 0; + } else { + return null + } + } + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + a = ih(this.o, b); + return -1 === a ? c : this.o[a + 1] + }; + g.Qc = function (a, b, c) { + a = this.o.length; + for (var d = 0; ;) { + if (d < a) { + var e = this.o[d], f = this.o[d + 1]; + c = b.l ? b.l(c, e, f) : b.call(null, c, e, f); + if (Hd(c)) { + return B(c); + } + d += 2 + } else { + return c + } + } + }; + g.ba = function () { + return new kh(this.o, 0, 2 * this.F) + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return this.F + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Dd(this) + }; + g.K = function (a, b) { + if (xe(b) && !ye(b)) { + var c = this.o.length; + if (this.F === b.W(null)) { + for (var d = 0; ;) { + if (d < c) { + var e = b.I(null, this.o[d], Ce); + if (e !== Ce) { + if (G.c(this.o[d + 1], e)) { + d += 2; + } else { + return !1; + } + } else { + return !1 + } + } else { + return !0; + } + } + } else { + return !1 + } + } else { + return !1 + } + }; + g.Pc = function () { + return new nh({}, this.o.length, Gb(this.o)) + }; + g.oa = function () { + return tc(Ef, this.meta) + }; + g.Fa = function (a, b) { + return Re(this, b) + }; + g.Ga = function (a, b, c) { + return Se(this, b, c) + }; + g.ga = function (a, b) { + if (0 <= ih(this.o, b)) { + var c = this.o.length, d = c - 2; + if (0 === d) { + return this.oa(null); + } + d = Array(d); + for (var e = 0, f = 0; ;) { + if (e >= c) { + return new r(this.meta, this.F - 1, d, null); + } + G.c(b, this.o[e]) || (d[f] = this.o[e], d[f + 1] = this.o[e + 1], f += 2); + e += 2 + } + } else { + return this + } + }; + g.O = function (a, b, c) { + a = ih(this.o, b); + if (-1 === a) { + if (this.F < oh) { + a = this.o; + for (var d = a.length, e = Array(d + 2), f = 0; ;) { + if (f + < d) { + e[f] = a[f], f += 1; + } else { + break; + } + } + e[d] = b; + e[d + 1] = c; + return new r(this.meta, this.F + 1, e, null) + } + return tc(ec(wg.c(ph, this), b, c), this.meta) + } + if (c === this.o[a + 1]) { + return this; + } + b = Gb(this.o); + b[a + 1] = c; + return new r(this.meta, this.F, b, null) + }; + g.yc = function (a, b) { + return -1 !== ih(this.o, b) + }; + g.S = function () { + var a = this.o; + return 0 <= a.length - 2 ? new jh(a, 0, null) : null + }; + g.T = function (a, b) { + return new r(b, this.F, this.o, this.w) + }; + g.X = function (a, b) { + if (ze(b)) { + return this.O(null, A.c(b, 0), A.c(b, 1)); + } + for (var c = this, d = E(b); ;) { + if (null == d) { + return c; + } + var e = y(d); + if (ze(e)) { + c = c.O(null, A.c(e, 0), A.c(e, 1)), d = z(d); + } else { + throw Error( + "conj on a map takes map entries or seqables of map entries"); + } + } + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + var Ef = new r(null, 0, [], Ed), oh = 8; + + function ke(a) { + for (var b = [], c = 0; ;) { + if (c < a.length) { + var d = a[c], e = a[c + 1], f = ih(b, d); + -1 === f ? (f = b, f.push(d), f.push(e)) : b[f + 1] = e; + c += 2 + } else { + break; + } + } + return new r(null, b.length / 2, b, null) + } + + r.prototype[Fb] = function () { + return yd(this) + }; + + function nh(a, b, c) { + this.Uc = a; + this.Zc = b; + this.o = c; + this.m = 258; + this.J = 56 + } + + g = nh.prototype; + g.W = function () { + if (t(this.Uc)) { + return Ze(this.Zc); + } + throw Error("count after persistent!"); + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + if (t(this.Uc)) { + return a = ih(this.o, b), -1 === a ? c : this.o[a + 1]; + } + throw Error("lookup after persistent!"); + }; + g.Dc = function (a, b) { + if (t(this.Uc)) { + if (null != b ? b.m & 2048 || q === b.sf || (b.m ? 0 : Ab(hc, b)) : Ab(hc, b)) { + return this.Cc( + null, jc(b), kc(b)); + } + for (var c = E(b), d = this; ;) { + var e = y(c); + if (t(e)) { + c = z(c), d = d.Cc(null, jc(e), kc(e)); + } else { + return d + } + } + } else { + throw Error("conj! after persistent!"); + } + }; + g.kd = function () { + if (t(this.Uc)) { + return this.Uc = !1, new r(null, Ze(this.Zc), this.o, null); + } + throw Error("persistent! called twice"); + }; + g.Cc = function (a, b, c) { + if (t(this.Uc)) { + a = ih(this.o, b); + if (-1 === a) { + if (this.Zc + 2 <= 2 * oh) { + return this.Zc += 2, this.o.push(b), this.o.push(c), this; + } + a:{ + a = this.Zc; + var d = this.o; + var e = Oc(ph); + for (var f = 0; ;) { + if (f < a) { + e = Rc(e, d[f], d[f + 1]), f += 2; + } else { + break a + } + } + } + return Rc(e, b, c) + } + c !== this.o[a + 1] && (this.o[a + 1] = c); + return this + } + throw Error("assoc! after persistent!"); + }; + + function qh() { + this.H = !1 + } + + function rh(a, b) { + return a === b ? !0 : N(a, b) ? !0 : G.c(a, b) + } + + function sh(a, b, c) { + a = Gb(a); + a[b] = c; + return a + } + + function th(a, b) { + var c = Array(a.length - 2); + Be(a, 0, c, 0, 2 * b); + Be(a, 2 * (b + 1), c, 2 * b, c.length - 2 * b); + return c + } + + function uh(a, b, c, d) { + a = a.Gc(b); + a.o[c] = d; + return a + } + + function vh(a, b, c) { + for (var d = a.length, e = 0, f = c; ;) { + if (e < d) { + c = a[e]; + if (null != c) { + var h = a[e + 1]; + c = b.l ? b.l(f, c, h) : b.call(null, f, c, h) + } else { + c = a[e + 1], c = null != c ? c.Jc(b, f) : f; + } + if (Hd(c)) { + return c; + } + e += 2; + f = c + } else { + return f + } + } + } + + function wh(a, b, c, d) { + this.o = a; + this.i = b; + this.sd = c; + this.Lb = d + } + + wh.prototype.advance = function () { + for (var a = this.o.length; ;) { + if (this.i < a) { + var b = this.o[this.i], c = this.o[this.i + 1]; + null != b ? b = this.sd = new R(null, 2, 5, T, [b, c], null) : null != c ? (b = dd( + c), b = b.ja() ? this.Lb = b : !1) : b = !1; + this.i += 2; + if (b) { + return !0 + } + } else { + return !1 + } + } + }; + wh.prototype.ja = function () { + var a = null != this.sd; + return a ? a : (a = null != this.Lb) ? a : this.advance() + }; + wh.prototype.next = function () { + if (null != this.sd) { + var a = this.sd; + this.sd = null; + return a + } + if (null != this.Lb) { + return a = this.Lb.next(), this.Lb.ja() || (this.Lb = null), a; + } + if (this.advance()) { + return this.next(); + } + throw Error("No such element"); + }; + wh.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function xh(a, b, c) { + this.la = a; + this.na = b; + this.o = c; + this.J = 131072; + this.m = 0 + } + + g = xh.prototype; + g.Gc = function (a) { + if (a === this.la) { + return this; + } + var b = $e(this.na), c = Array(0 > b ? 4 : 2 * (b + 1)); + Be(this.o, 0, c, 0, 2 * b); + return new xh(a, this.na, c) + }; + g.qd = function () { + return yh(this.o, 0, null) + }; + g.Jc = function (a, b) { + return vh(this.o, a, b) + }; + g.sc = function (a, b, c, d) { + var e = 1 << (b >>> a & 31); + if (0 === (this.na & e)) { + return d; + } + var f = $e(this.na & e - 1); + e = this.o[2 * f]; + f = this.o[2 * f + 1]; + return null == e ? f.sc(a + 5, b, c, d) : rh(c, e) ? f : d + }; + g.Kb = function (a, b, c, d, e, f) { + var h = 1 << (c >>> b & 31), k = $e(this.na & h - 1); + if (0 === (this.na & h)) { + var l = $e(this.na); + if (2 * l < this.o.length) { + a = this.Gc(a); + b = a.o; + f.H = !0; + a:for (c = 2 * (l - k), f = 2 * k + (c - 1), l = 2 * (k + 1) + (c - 1); ;) { + if (0 === c) { + break a; + } + b[l] = b[f]; + --l; + --c; + --f + } + b[2 * k] = d; + b[2 * k + 1] = e; + a.na |= h; + return a + } + if (16 <= l) { + k = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null]; + k[c >>> b & 31] = zh.Kb(a, b + 5, c, d, e, f); + for (e = d = 0; ;) { + if (32 > d) { + 0 !== + (this.na >>> d & 1) && (k[d] = null != this.o[e] ? zh.Kb(a, b + 5, od(this.o[e]), + this.o[e], + this.o[e + 1], f) : this.o[e + 1], e += 2), d += 1; + } else { + break; + } + } + return new Ah(a, l + 1, k) + } + b = Array(2 * (l + 4)); + Be(this.o, 0, b, 0, 2 * k); + b[2 * k] = d; + b[2 * k + 1] = e; + Be(this.o, 2 * k, b, 2 * (k + 1), 2 * (l - k)); + f.H = !0; + a = this.Gc(a); + a.o = b; + a.na |= h; + return a + } + l = this.o[2 * k]; + h = this.o[2 * k + 1]; + if (null == l) { + return l = h.Kb(a, b + 5, c, d, e, f), l === h ? this : uh(this, a, 2 * k + 1, + l); + } + if (rh(d, l)) { + return e === h ? this : uh(this, a, 2 * k + 1, e); + } + f.H = !0; + f = b + 5; + b = od(l); + if (b === c) { + e = new Bh(null, b, 2, [l, h, d, e]); + } else { + var p = new qh; + e = zh.Kb(a, f, b, l, h, p).Kb(a, f, c, d, e, p) + } + d = 2 * k; + k = 2 * k + 1; + a = this.Gc(a); + a.o[d] = null; + a.o[k] = e; + return a + }; + g.Jb = function (a, b, c, d, e) { + var f = 1 << (b >>> a & 31), h = $e(this.na & f - 1); + if (0 === (this.na & f)) { + var k = $e(this.na); + if (16 <= k) { + h = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null]; + h[b >>> a & 31] = zh.Jb(a + 5, b, c, d, e); + for (d = c = 0; ;) { + if (32 > c) { + 0 !== (this.na >>> c & 1) && (h[c] = null != this.o[d] + ? zh.Jb(a + 5, od(this.o[d]), this.o[d], this.o[d + 1], e) : this.o[d + + 1], d += 2), c += 1; + } else { + break; + } + } + return new Ah(null, k + 1, h) + } + a = Array(2 * (k + 1)); + Be(this.o, + 0, a, 0, 2 * h); + a[2 * h] = c; + a[2 * h + 1] = d; + Be(this.o, 2 * h, a, 2 * (h + 1), 2 * (k - h)); + e.H = !0; + return new xh(null, this.na | f, a) + } + var l = this.o[2 * h]; + f = this.o[2 * h + 1]; + if (null == l) { + return k = f.Jb(a + 5, b, c, d, e), k === f ? this : new xh(null, this.na, + sh(this.o, 2 * h + 1, k)); + } + if (rh(c, l)) { + return d === f ? this : new xh(null, this.na, sh(this.o, 2 * h + 1, d)); + } + e.H = !0; + e = this.na; + k = this.o; + a += 5; + var p = od(l); + if (p === b) { + c = new Bh(null, p, 2, [l, f, c, d]); + } else { + var m = new qh; + c = zh.Jb(a, p, l, f, m).Jb(a, b, c, d, m) + } + a = 2 * h; + h = 2 * h + 1; + d = Gb(k); + d[a] = null; + d[h] = c; + return new xh(null, e, d) + }; + g.rd = function (a, b, c) { + var d = 1 << (b >>> a & 31); + if (0 === (this.na & d)) { + return this; + } + var e = $e(this.na & d - 1), f = this.o[2 * e], h = this.o[2 * e + 1]; + return null == f ? (a = h.rd(a + 5, b, c), a === h ? this : null != a ? new xh(null, this.na, + sh(this.o, 2 * e + 1, a)) : this.na === d ? null : new xh(null, this.na ^ d, th(this.o, e))) + : rh(c, f) ? new xh(null, this.na ^ d, th(this.o, e)) : this + }; + g.ba = function () { + return new wh(this.o, 0, null, null) + }; + var zh = new xh(null, 0, []); + + function Ch(a, b, c) { + this.o = a; + this.i = b; + this.Lb = c + } + + Ch.prototype.ja = function () { + for (var a = this.o.length; ;) { + if (null != this.Lb && this.Lb.ja()) { + return !0; + } + if (this.i < a) { + var b = this.o[this.i]; + this.i += 1; + null != b && (this.Lb = dd(b)) + } else { + return !1 + } + } + }; + Ch.prototype.next = function () { + if (this.ja()) { + return this.Lb.next(); + } + throw Error("No such element"); + }; + Ch.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function Ah(a, b, c) { + this.la = a; + this.F = b; + this.o = c; + this.J = 131072; + this.m = 0 + } + + g = Ah.prototype; + g.Gc = function (a) { + return a === this.la ? this : new Ah(a, this.F, Gb(this.o)) + }; + g.qd = function () { + return Dh(this.o, 0, null) + }; + g.Jc = function (a, b) { + for (var c = this.o.length, d = 0, e = b; ;) { + if (d < c) { + var f = this.o[d]; + if (null != f && (e = f.Jc(a, e), Hd(e))) { + return e; + } + d += 1 + } else { + return e + } + } + }; + g.sc = function (a, b, c, d) { + var e = this.o[b >>> a & 31]; + return null != e ? e.sc(a + 5, b, c, d) : d + }; + g.Kb = function (a, b, c, d, e, f) { + var h = c >>> b & 31, k = this.o[h]; + if (null == k) { + return a = uh(this, a, h, zh.Kb(a, b + 5, c, d, e, f)), a.F += 1, a; + } + b = k.Kb(a, b + 5, c, d, e, f); + return b === k ? this : uh(this, a, h, b) + }; + g.Jb = function (a, b, c, d, e) { + var f = b >>> a & 31, h = this.o[f]; + if (null == h) { + return new Ah(null, this.F + 1, sh(this.o, f, zh.Jb(a + 5, b, c, d, e))); + } + a = h.Jb(a + 5, b, c, d, e); + return a === h ? this : new Ah(null, this.F, sh(this.o, f, a)) + }; + g.rd = function (a, b, c) { + var d = b >>> a & 31, e = this.o[d]; + if (null != e) { + a = e.rd(a + 5, b, c); + if (a === e) { + d = this; + } else if (null == a) { + if (8 >= this.F) { + a:{ + e = this.o; + a = e.length; + b = Array(2 * (this.F - 1)); + c = 0; + for (var f = 1, h = 0; ;) { + if (c < a) { + c !== d && null != e[c] && (b[f] = e[c], f += 2, h |= 1 + << c), c += 1; + } else { + d = new xh(null, h, b); + break a + } + } + } + } else { + d = new Ah(null, this.F - 1, sh(this.o, d, a)); + } + } else { + d = new Ah(null, this.F, + sh(this.o, d, a)); + } + return d + } + return this + }; + g.ba = function () { + return new Ch(this.o, 0, null) + }; + + function Eh(a, b, c) { + b *= 2; + for (var d = 0; ;) { + if (d < b) { + if (rh(c, a[d])) { + return d; + } + d += 2 + } else { + return -1 + } + } + } + + function Bh(a, b, c, d) { + this.la = a; + this.ec = b; + this.F = c; + this.o = d; + this.J = 131072; + this.m = 0 + } + + g = Bh.prototype; + g.Gc = function (a) { + if (a === this.la) { + return this; + } + var b = Array(2 * (this.F + 1)); + Be(this.o, 0, b, 0, 2 * this.F); + return new Bh(a, this.ec, this.F, b) + }; + g.qd = function () { + return yh(this.o, 0, null) + }; + g.Jc = function (a, b) { + return vh(this.o, a, b) + }; + g.sc = function (a, b, c, d) { + a = Eh(this.o, this.F, c); + return 0 > a ? d : rh(c, this.o[a]) ? this.o[a + 1] : d + }; + g.Kb = function (a, b, c, d, e, f) { + if (c === this.ec) { + b = Eh(this.o, this.F, d); + if (-1 === b) { + if (this.o.length > 2 * this.F) { + return b = 2 * this.F, c = 2 * this.F + 1, a = this.Gc( + a), a.o[b] = d, a.o[c] = e, f.H = !0, a.F += 1, a; + } + c = this.o.length; + b = Array(c + 2); + Be(this.o, 0, b, 0, c); + b[c] = d; + b[c + 1] = e; + f.H = !0; + d = this.F + 1; + a === this.la ? (this.o = b, this.F = d, a = this) : a = new Bh(this.la, this.ec, d, b); + return a + } + return this.o[b + 1] === e ? this : uh(this, a, b + 1, e) + } + return (new xh(a, 1 << (this.ec >>> b & 31), [null, this, null, null])).Kb(a, b, c, d, e, f) + }; + g.Jb = function (a, b, c, d, e) { + return b === this.ec ? (a = Eh(this.o, this.F, c), -1 === a ? (a = 2 * this.F, b = Array( + a + 2), Be(this.o, 0, b, 0, a), b[a] = c, b[a + 1] = d, e.H = !0, new Bh(null, this.ec, + this.F + 1, b)) : G.c(this.o[a + 1], d) ? this : new Bh(null, this.ec, this.F, + sh(this.o, a + 1, d))) : (new xh(null, 1 << (this.ec >>> a & 31), [null, this])).Jb(a, b, c, + d, e) + }; + g.rd = function (a, b, c) { + a = Eh(this.o, this.F, c); + return -1 === a ? this : 1 === this.F ? null : new Bh(null, this.ec, this.F - 1, + th(this.o, Ze(a))) + }; + g.ba = function () { + return new wh(this.o, 0, null, null) + }; + + function Fh(a, b, c, d, e) { + this.meta = a; + this.Mb = b; + this.i = c; + this.s = d; + this.w = e; + this.m = 32374988; + this.J = 0 + } + + g = Fh.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return null == this.s ? yh(this.Mb, this.i + 2, null) : yh(this.Mb, this.i, z(this.s)) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return null == this.s ? new R(null, 2, 5, T, [this.Mb[this.i], this.Mb[this.i + 1]], null) : y( + this.s) + }; + g.bb = function () { + var a = null == this.s ? yh(this.Mb, this.i + 2, null) : yh(this.Mb, this.i, z(this.s)); + return null != a ? a : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new Fh(b, this.Mb, this.i, this.s, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Fh.prototype[Fb] = function () { + return yd(this) + }; + + function yh(a, b, c) { + if (null == c) { + for (c = a.length; ;) { + if (b < c) { + if (null != a[b]) { + return new Fh(null, a, b, null, null); + } + var d = a[b + 1]; + if (t(d) && (d = d.qd(), t(d))) { + return new Fh(null, a, b + 2, d, null); + } + b += 2 + } else { + return null; + } + } + } else { + return new Fh(null, a, b, c, null) + } + } + + function Gh(a, b, c, d, e) { + this.meta = a; + this.Mb = b; + this.i = c; + this.s = d; + this.w = e; + this.m = 32374988; + this.J = 0 + } + + g = Gh.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + return Dh(this.Mb, this.i, z(this.s)) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return y(this.s) + }; + g.bb = function () { + var a = Dh(this.Mb, this.i, z(this.s)); + return null != a ? a : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new Gh(b, this.Mb, this.i, this.s, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Gh.prototype[Fb] = function () { + return yd(this) + }; + + function Dh(a, b, c) { + if (null == c) { + for (c = a.length; ;) { + if (b < c) { + var d = a[b]; + if (t(d) && (d = d.qd(), t(d))) { + return new Gh(null, a, b + 1, d, null); + } + b += 1 + } else { + return null; + } + } + } else { + return new Gh(null, a, b, c, null) + } + } + + function Hh(a, b, c) { + this.eb = a; + this.bf = b; + this.xe = c + } + + Hh.prototype.ja = function () { + return !this.xe || this.bf.ja() + }; + Hh.prototype.next = function () { + if (this.xe) { + return this.bf.next(); + } + this.xe = !0; + return new R(null, 2, 5, T, [null, this.eb], null) + }; + Hh.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function Jh(a, b, c, d, e, f) { + this.meta = a; + this.F = b; + this.root = c; + this.cb = d; + this.eb = e; + this.w = f; + this.m = 16123663; + this.J = 139268 + } + + g = Jh.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.keys = function () { + return yd(lh(this)) + }; + g.entries = function () { + return new gh(E(E(this))) + }; + g.values = function () { + return yd(mh(this)) + }; + g.has = function (a) { + return He(this, a) + }; + g.get = function (a, b) { + return this.I(null, a, b) + }; + g.forEach = function (a) { + for (var b = E(this), c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e), h = J(f, 0, null); + f = J(f, 1, null); + a.c ? a.c(f, h) : a.call(null, f, h); + e += 1 + } else if (b = E(b)) { + Ae(b) ? (c = Wc(b), b = Xc(b), h = c, d = H(c), c = h) : (c = y(b), h = J( + c, 0, null), f = J(c, 1, null), a.c ? a.c(f, h) : a.call(null, f, h), b = z( + b), c = null, d = 0), e = 0; + } else { + return null + } + } + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return null == b ? this.cb ? this.eb : c : null == this.root ? c : this.root.sc(0, od(b), b, c) + }; + g.Qc = function (a, b, c) { + a = this.cb ? b.l ? b.l(c, null, this.eb) : b.call(null, c, null, this.eb) : c; + return Hd(a) ? B(a) : null != this.root ? Jd(this.root.Jc(b, a)) : a + }; + g.ba = function () { + var a = this.root ? dd(this.root) : Cf(); + return this.cb ? new Hh(this.eb, a, !1) : a + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return this.F + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Dd(this) + }; + g.K = function (a, b) { + return eh(this, b) + }; + g.Pc = function () { + return new Kh({}, this.root, this.F, this.cb, this.eb) + }; + g.oa = function () { + return tc(ph, this.meta) + }; + g.ga = function (a, b) { + if (null == b) { + return this.cb ? new Jh(this.meta, this.F - 1, this.root, !1, null, null) : this; + } + if (null == this.root) { + return this; + } + var c = this.root.rd(0, od(b), b); + return c === this.root ? this : new Jh(this.meta, this.F - 1, c, this.cb, this.eb, null) + }; + g.O = function (a, b, c) { + if (null == b) { + return this.cb && c === this.eb ? this : new Jh(this.meta, + this.cb ? this.F : this.F + 1, this.root, !0, c, null); + } + a = new qh; + b = (null == this.root ? zh : this.root).Jb(0, od(b), b, c, a); + return b === this.root ? this : new Jh(this.meta, a.H ? this.F + 1 : this.F, b, this.cb, + this.eb, null) + }; + g.yc = function (a, b) { + return null == b ? this.cb : null == this.root ? !1 : this.root.sc(0, od(b), b, Ce) !== Ce + }; + g.S = function () { + if (0 < this.F) { + var a = null != this.root ? this.root.qd() : null; + return this.cb ? ae(new R(null, 2, 5, T, [null, this.eb], null), a) : a + } + return null + }; + g.T = function (a, b) { + return new Jh(b, this.F, this.root, this.cb, this.eb, this.w) + }; + g.X = function (a, b) { + if (ze(b)) { + return this.O(null, A.c(b, 0), A.c(b, 1)); + } + for (var c = this, d = E(b); ;) { + if (null == d) { + return c; + } + var e = y(d); + if (ze(e)) { + c = c.O(null, A.c(e, 0), A.c(e, 1)), d = z(d); + } else { + throw Error( + "conj on a map takes map entries or seqables of map entries"); + } + } + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + var ph = new Jh(null, 0, null, !1, null, Ed); + + function Pe(a, b) { + for (var c = a.length, d = 0, e = Oc(ph); ;) { + if (d < c) { + var f = d + 1; + e = e.Cc(null, a[d], b[d]); + d = f + } else { + return Qc(e) + } + } + } + + Jh.prototype[Fb] = function () { + return yd(this) + }; + + function Kh(a, b, c, d, e) { + this.la = a; + this.root = b; + this.count = c; + this.cb = d; + this.eb = e; + this.m = 258; + this.J = 56 + } + + function Lh(a, b, c) { + if (a.la) { + if (null == b) { + a.eb !== c && (a.eb = c), a.cb || (a.count += 1, a.cb = !0); + } else { + var d = new qh; + b = (null == a.root ? zh : a.root).Kb(a.la, 0, od(b), b, c, d); + b !== a.root && (a.root = b); + d.H && (a.count += 1) + } + return a + } + throw Error("assoc! after persistent!"); + } + + g = Kh.prototype; + g.W = function () { + if (this.la) { + return this.count; + } + throw Error("count after persistent!"); + }; + g.V = function (a, b) { + return null == b ? this.cb ? this.eb : null : null == this.root ? null : this.root.sc(0, od(b), + b) + }; + g.I = function (a, b, c) { + return null == b ? this.cb ? this.eb : c : null == this.root ? c : this.root.sc(0, od(b), b, c) + }; + g.Dc = function (a, b) { + a:if (this.la) { + if (null != b ? b.m & 2048 || q === b.sf || (b.m ? 0 : Ab(hc, b)) : Ab(hc, + b)) { + var c = Lh(this, jc(b), kc(b)); + } else { + c = E(b); + for (var d = this; ;) { + var e = y(c); + if (t(e)) { + c = z(c), d = Lh(d, jc(e), kc(e)); + } else { + c = d; + break a + } + } + } + } else { + throw Error("conj! after persistent"); + } + return c + }; + g.kd = function () { + if (this.la) { + this.la = null; + var a = new Jh(null, this.count, this.root, this.cb, this.eb, null) + } else { + throw Error("persistent! called twice"); + } + return a + }; + g.Cc = function (a, b, c) { + return Lh(this, b, c) + }; + + function Mh(a, b, c) { + for (var d = b; ;) { + if (null != a) { + b = c ? a.left : a.right, d = ge.c(d, a), a = b; + } else { + return d + } + } + } + + function Nh(a, b, c, d, e) { + this.meta = a; + this.stack = b; + this.vc = c; + this.F = d; + this.w = e; + this.m = 32374990; + this.J = 0 + } + + g = Nh.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.meta + }; + g.Ka = function () { + var a = y(this.stack); + a = Mh(this.vc ? a.right : a.left, z(this.stack), this.vc); + return null == a ? null : new Nh(null, a, this.vc, this.F - 1, null) + }; + g.W = function () { + return 0 > this.F ? H(z(this)) + 1 : this.F + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + var a = this.stack; + return null == a ? null : nc(a) + }; + g.bb = function () { + var a = y(this.stack); + a = Mh(this.vc ? a.right : a.left, z(this.stack), this.vc); + return null != a ? new Nh(null, a, this.vc, this.F - 1, null) : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new Nh(b, this.stack, this.vc, this.F, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Nh.prototype[Fb] = function () { + return yd(this) + }; + + function Oh(a, b, c) { + return new Nh(null, Mh(a, null, b), b, c, null) + } + + function Ph(a, b, c, d) { + return c instanceof Qh ? c.left instanceof Qh ? new Qh(c.key, c.H, c.left.bc(), + new Rh(a, b, c.right, d, null), null) : c.right instanceof Qh ? new Qh(c.right.key, c.right.H, + new Rh(c.key, c.H, c.left, c.right.left, null), new Rh(a, b, c.right.right, d, null), null) + : new Rh(a, b, c, d, null) : new Rh(a, b, c, d, null) + } + + function Sh(a, b, c, d) { + return d instanceof Qh ? d.right instanceof Qh ? new Qh(d.key, d.H, + new Rh(a, b, c, d.left, null), d.right.bc(), null) : d.left instanceof Qh ? new Qh(d.left.key, + d.left.H, new Rh(a, b, c, d.left.left, null), new Rh(d.key, d.H, d.left.right, d.right, null), + null) : new Rh(a, b, c, d, null) : new Rh(a, b, c, d, null) + } + + function Th(a, b, c, d) { + if (c instanceof Qh) { + return new Qh(a, b, c.bc(), d, null); + } + if (d instanceof Rh) { + return Sh(a, b, c, d.ud()); + } + if (d instanceof Qh && d.left instanceof Rh) { + return new Qh(d.left.key, d.left.H, + new Rh(a, b, c, d.left.left, null), Sh(d.key, d.H, d.left.right, d.right.ud()), null); + } + throw Error("red-black tree invariant violation"); + } + + function Uh(a, b, c, d) { + if (d instanceof Qh) { + return new Qh(a, b, c, d.bc(), null); + } + if (c instanceof Rh) { + return Ph(a, b, c.ud(), d); + } + if (c instanceof Qh && c.right instanceof Rh) { + return new Qh(c.right.key, c.right.H, + Ph(c.key, c.H, c.left.ud(), c.right.left), new Rh(a, b, c.right.right, d, null), null); + } + throw Error("red-black tree invariant violation"); + } + + var Vh = function Vh(a, b, c) { + var e = null != a.left ? function () { + var e = a.left; + return Vh.l ? Vh.l(e, b, c) : Vh.call(null, e, b, c) + }() : c; + if (Hd(e)) { + return e; + } + var f = function () { + var c = a.key, f = a.H; + return b.l ? b.l(e, c, f) : b.call(null, e, c, f) + }(); + if (Hd(f)) { + return f; + } + if (null != a.right) { + var h = a.right; + return Vh.l ? Vh.l(h, b, f) : Vh.call(null, h, b, f) + } + return f + }; + + function Rh(a, b, c, d, e) { + this.key = a; + this.H = b; + this.left = c; + this.right = d; + this.w = e; + this.m = 32402207; + this.J = 0 + } + + g = Rh.prototype; + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.Ee = function (a) { + return a.He(this) + }; + g.ud = function () { + return new Qh(this.key, this.H, this.left, this.right, null) + }; + g.bc = function () { + return this + }; + g.De = function (a) { + return a.Ge(this) + }; + g.replace = function (a, b, c, d) { + return new Rh(a, b, c, d, null) + }; + g.Ge = function (a) { + return new Rh(a.key, a.H, this, a.right, null) + }; + g.He = function (a) { + return new Rh(a.key, a.H, a.left, this, null) + }; + g.Jc = function (a, b) { + return Vh(this, a, b) + }; + g.V = function (a, b) { + return this.ka(null, b, null) + }; + g.I = function (a, b, c) { + return this.ka(null, b, c) + }; + g.$ = function (a, b) { + if (0 === b) { + return this.key; + } + if (1 === b) { + return this.H; + } + throw Error("Index out of bounds"); + }; + g.ka = function (a, b, c) { + return 0 === b ? this.key : 1 === b ? this.H : c + }; + g.dc = function (a, b, c) { + return (new R(null, 2, 5, T, [this.key, this.H], null)).dc(null, b, c) + }; + g.P = function () { + return null + }; + g.W = function () { + return 2 + }; + g.fd = function () { + return this.key + }; + g.gd = function () { + return this.H + }; + g.Ac = function () { + return this.H + }; + g.Bc = function () { + return new R(null, 1, 5, T, [this.key], null) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return he + }; + g.Fa = function (a, b) { + return Kd(this, b) + }; + g.Ga = function (a, b, c) { + return Ld(this, b, c) + }; + g.O = function (a, b, c) { + return K.l(new R(null, 2, 5, T, [this.key, this.H], null), b, c) + }; + g.yc = function (a, b) { + return 0 === b || 1 === b + }; + g.S = function () { + var a = this.key; + return Tb(Tb(wd, this.H), a) + }; + g.T = function (a, b) { + return tc(new R(null, 2, 5, T, [this.key, this.H], null), b) + }; + g.X = function (a, b) { + return new R(null, 3, 5, T, [this.key, this.H, b], null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.$(null, c); + case 3: + return this.ka(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.$(null, c) + }; + a.l = function (a, c, d) { + return this.ka(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.$(null, a) + }; + g.c = function (a, b) { + return this.ka(null, a, b) + }; + Rh.prototype[Fb] = function () { + return yd(this) + }; + + function Qh(a, b, c, d, e) { + this.key = a; + this.H = b; + this.left = c; + this.right = d; + this.w = e; + this.m = 32402207; + this.J = 0 + } + + g = Qh.prototype; + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.Ee = function (a) { + return new Qh(this.key, this.H, this.left, a, null) + }; + g.ud = function () { + throw Error("red-black tree invariant violation"); + }; + g.bc = function () { + return new Rh(this.key, this.H, this.left, this.right, null) + }; + g.De = function (a) { + return new Qh(this.key, this.H, a, this.right, null) + }; + g.replace = function (a, b, c, d) { + return new Qh(a, b, c, d, null) + }; + g.Ge = function (a) { + return this.left instanceof Qh ? new Qh(this.key, this.H, this.left.bc(), + new Rh(a.key, a.H, this.right, a.right, null), null) : this.right instanceof Qh ? new Qh( + this.right.key, this.right.H, new Rh(this.key, this.H, this.left, this.right.left, null), + new Rh(a.key, a.H, this.right.right, a.right, null), null) : new Rh(a.key, a.H, this, a.right, + null) + }; + g.He = function (a) { + return this.right instanceof Qh ? new Qh(this.key, this.H, + new Rh(a.key, a.H, a.left, this.left, null), this.right.bc(), null) : this.left instanceof Qh + ? new Qh(this.left.key, this.left.H, new Rh(a.key, a.H, a.left, this.left.left, null), + new Rh(this.key, this.H, this.left.right, this.right, null), null) : new Rh(a.key, a.H, + a.left, this, null) + }; + g.Jc = function (a, b) { + return Vh(this, a, b) + }; + g.V = function (a, b) { + return this.ka(null, b, null) + }; + g.I = function (a, b, c) { + return this.ka(null, b, c) + }; + g.$ = function (a, b) { + if (0 === b) { + return this.key; + } + if (1 === b) { + return this.H; + } + throw Error("Index out of bounds"); + }; + g.ka = function (a, b, c) { + return 0 === b ? this.key : 1 === b ? this.H : c + }; + g.dc = function (a, b, c) { + return (new R(null, 2, 5, T, [this.key, this.H], null)).dc(null, b, c) + }; + g.P = function () { + return null + }; + g.W = function () { + return 2 + }; + g.fd = function () { + return this.key + }; + g.gd = function () { + return this.H + }; + g.Ac = function () { + return this.H + }; + g.Bc = function () { + return new R(null, 1, 5, T, [this.key], null) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return he + }; + g.Fa = function (a, b) { + return Kd(this, b) + }; + g.Ga = function (a, b, c) { + return Ld(this, b, c) + }; + g.O = function (a, b, c) { + return K.l(new R(null, 2, 5, T, [this.key, this.H], null), b, c) + }; + g.yc = function (a, b) { + return 0 === b || 1 === b + }; + g.S = function () { + var a = this.key; + return Tb(Tb(wd, this.H), a) + }; + g.T = function (a, b) { + return tc(new R(null, 2, 5, T, [this.key, this.H], null), b) + }; + g.X = function (a, b) { + return new R(null, 3, 5, T, [this.key, this.H, b], null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.$(null, c); + case 3: + return this.ka(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.$(null, c) + }; + a.l = function (a, c, d) { + return this.ka(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.$(null, a) + }; + g.c = function (a, b) { + return this.ka(null, a, b) + }; + Qh.prototype[Fb] = function () { + return yd(this) + }; + var Wh = function Wh(a, b, c, d, e) { + if (null == b) { + return new Qh(c, d, null, null, null); + } + var h = function () { + var d = b.key; + return a.c ? a.c(c, d) : a.call(null, c, d) + }(); + if (0 === h) { + return e[0] = b, null; + } + if (0 > h) { + return h = function () { + var h = b.left; + return Wh.Z ? Wh.Z(a, h, c, d, e) : Wh.call(null, a, h, c, d, e) + }(), null != h ? b.De(h) : null; + } + h = function () { + var h = b.right; + return Wh.Z ? Wh.Z(a, h, c, d, e) : Wh.call(null, a, h, c, d, e) + }(); + return null != h ? b.Ee(h) : null + }, Xh = function Xh(a, b) { + if (null == a) { + return b; + } + if (null == b) { + return a; + } + if (a instanceof Qh) { + if (b instanceof Qh) { + var d = + function () { + var d = a.right, f = b.left; + return Xh.c ? Xh.c(d, f) : Xh.call(null, d, f) + }(); + return d instanceof Qh ? new Qh(d.key, d.H, new Qh(a.key, a.H, a.left, d.left, null), + new Qh(b.key, b.H, d.right, b.right, null), null) : new Qh(a.key, a.H, a.left, + new Qh(b.key, b.H, d, b.right, null), null) + } + return new Qh(a.key, a.H, a.left, function () { + var d = a.right; + return Xh.c ? Xh.c(d, b) : Xh.call(null, d, b) + }(), null) + } + if (b instanceof Qh) { + return new Qh(b.key, b.H, function () { + var d = b.left; + return Xh.c ? Xh.c(a, d) : Xh.call(null, a, d) + }(), b.right, null); + } + d = function () { + var d = + a.right, f = b.left; + return Xh.c ? Xh.c(d, f) : Xh.call(null, d, f) + }(); + return d instanceof Qh ? new Qh(d.key, d.H, new Rh(a.key, a.H, a.left, d.left, null), + new Rh(b.key, b.H, d.right, b.right, null), null) : Th(a.key, a.H, a.left, + new Rh(b.key, b.H, d, b.right, null)) + }, Yh = function Yh(a, b, c, d) { + if (null != b) { + var f = function () { + var d = b.key; + return a.c ? a.c(c, d) : a.call(null, c, d) + }(); + if (0 === f) { + return d[0] = b, Xh(b.left, b.right); + } + if (0 > f) { + return f = function () { + var f = b.left; + return Yh.M ? Yh.M(a, f, c, d) : Yh.call(null, a, f, c, d) + }(), null != f || null != d[0] ? b.left instanceof + Rh ? Th(b.key, b.H, f, b.right) : new Qh(b.key, b.H, f, b.right, null) : null; + } + f = function () { + var f = b.right; + return Yh.M ? Yh.M(a, f, c, d) : Yh.call(null, a, f, c, d) + }(); + return null != f || null != d[0] ? b.right instanceof Rh ? Uh(b.key, b.H, b.left, f) : new Qh( + b.key, b.H, b.left, f, null) : null + } + return null + }, Zh = function Zh(a, b, c, d) { + var f = b.key, h = a.c ? a.c(c, f) : a.call(null, c, f); + return 0 === h ? b.replace(f, d, b.left, b.right) : 0 > h ? b.replace(f, b.H, function () { + var f = b.left; + return Zh.M ? Zh.M(a, f, c, d) : Zh.call(null, a, f, c, d) + }(), b.right) : b.replace(f, b.H, b.left, + function () { + var f = b.right; + return Zh.M ? Zh.M(a, f, c, d) : Zh.call(null, a, f, c, d) + }()) + }; + + function $h(a, b, c, d, e) { + this.Bb = a; + this.mc = b; + this.F = c; + this.meta = d; + this.w = e; + this.m = 418776847; + this.J = 8192 + } + + g = $h.prototype; + g.forEach = function (a) { + for (var b = E(this), c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e), h = J(f, 0, null); + f = J(f, 1, null); + a.c ? a.c(f, h) : a.call(null, f, h); + e += 1 + } else if (b = E(b)) { + Ae(b) ? (c = Wc(b), b = Xc(b), h = c, d = H(c), c = h) : (c = y(b), h = J( + c, 0, null), f = J(c, 1, null), a.c ? a.c(f, h) : a.call(null, f, h), b = z( + b), c = null, d = 0), e = 0; + } else { + return null + } + } + }; + g.get = function (a, b) { + return this.I(null, a, b) + }; + g.entries = function () { + return new gh(E(E(this))) + }; + g.toString = function () { + return fd(this) + }; + g.keys = function () { + return yd(lh(this)) + }; + g.values = function () { + return yd(mh(this)) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + + function ai(a, b) { + for (var c = a.mc; ;) { + if (null != c) { + var d = c.key; + d = a.Bb.c ? a.Bb.c(b, d) : a.Bb.call(null, b, d); + if (0 === d) { + return c; + } + c = 0 > d ? c.left : c.right + } else { + return null + } + } + } + + g.has = function (a) { + return He(this, a) + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + a = ai(this, b); + return null != a ? a.H : c + }; + g.Qc = function (a, b, c) { + return null != this.mc ? Jd(Vh(this.mc, b, c)) : c + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return this.F + }; + g.Rc = function () { + return 0 < this.F ? Oh(this.mc, !1, this.F) : null + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Dd(this) + }; + g.K = function (a, b) { + return eh(this, b) + }; + g.oa = function () { + return new $h(this.Bb, null, 0, this.meta, 0) + }; + g.ga = function (a, b) { + var c = [null], d = Yh(this.Bb, this.mc, b, c); + return null == d ? null == Vd(c, 0) ? this : new $h(this.Bb, null, 0, this.meta, null) : new $h( + this.Bb, d.bc(), this.F - 1, this.meta, null) + }; + g.O = function (a, b, c) { + a = [null]; + var d = Wh(this.Bb, this.mc, b, c, a); + return null == d ? (a = Vd(a, 0), G.c(c, a.H) ? this : new $h(this.Bb, + Zh(this.Bb, this.mc, b, c), this.F, this.meta, null)) : new $h(this.Bb, d.bc(), this.F + 1, + this.meta, null) + }; + g.yc = function (a, b) { + return null != ai(this, b) + }; + g.S = function () { + return 0 < this.F ? Oh(this.mc, !0, this.F) : null + }; + g.T = function (a, b) { + return new $h(this.Bb, this.mc, this.F, b, this.w) + }; + g.X = function (a, b) { + if (ze(b)) { + return this.O(null, A.c(b, 0), A.c(b, 1)); + } + for (var c = this, d = E(b); ;) { + if (null == d) { + return c; + } + var e = y(d); + if (ze(e)) { + c = c.O(null, A.c(e, 0), A.c(e, 1)), d = z(d); + } else { + throw Error( + "conj on a map takes map entries or seqables of map entries"); + } + } + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + var bi = new $h(Ke, null, 0, null, Ed); + $h.prototype[Fb] = function () { + return yd(this) + }; + var U = function U(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return U.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + U.A = function (a) { + for (var b = E(a), c = Oc(ph); ;) { + if (b) { + a = z(z(b)); + var d = y(b); + b = ee(b); + c = Rc(c, d, b); + b = a + } else { + return Qc(c) + } + } + }; + U.L = 0; + U.N = function (a) { + return U.A(E(a)) + }; + var ci = function ci(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return ci.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + ci.A = function (a) { + a = a instanceof Jb && 0 === a.i ? a.o : Lb(a); + return ke(a) + }; + ci.L = 0; + ci.N = function (a) { + return ci.A(E(a)) + }; + + function di(a) { + for (var b = [], c = arguments.length, d = 0; ;) { + if (d < c) { + b.push( + arguments[d]), d += 1; + } else { + break; + } + } + a:for (b = E(0 < b.length ? new Jb(b.slice(0), 0, null) : null), d = bi; ;) { + if (b) { + c = z( + z(b)), d = K.l(d, y(b), ee(b)), b = c; + } else { + break a; + } + } + return d + } + + function ei(a, b) { + this.da = a; + this.hb = b; + this.m = 32374988; + this.J = 0 + } + + g = ei.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.hb + }; + g.Ka = function () { + var a = (null != this.da ? this.da.m & 128 || q === this.da.Id || (this.da.m ? 0 : Ab(Zb, + this.da)) : Ab(Zb, this.da)) ? this.da.Ka(null) : z(this.da); + return null == a ? null : new ei(a, this.hb) + }; + g.U = function () { + return Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.hb) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return this.da.Ia(null).fd(null) + }; + g.bb = function () { + var a = (null != this.da ? this.da.m & 128 || q === this.da.Id || (this.da.m ? 0 : Ab(Zb, + this.da)) : Ab(Zb, this.da)) ? this.da.Ka(null) : z(this.da); + return null != a ? new ei(a, this.hb) : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new ei(this.da, b) + }; + g.X = function (a, b) { + return ae(b, this) + }; + ei.prototype[Fb] = function () { + return yd(this) + }; + + function lh(a) { + return (a = E(a)) ? new ei(a, null) : null + } + + function fi(a) { + return jc(a) + } + + function gi(a, b) { + this.da = a; + this.hb = b; + this.m = 32374988; + this.J = 0 + } + + g = gi.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.P = function () { + return this.hb + }; + g.Ka = function () { + var a = (null != this.da ? this.da.m & 128 || q === this.da.Id || (this.da.m ? 0 : Ab(Zb, + this.da)) : Ab(Zb, this.da)) ? this.da.Ka(null) : z(this.da); + return null == a ? null : new gi(a, this.hb) + }; + g.U = function () { + return Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.hb) + }; + g.Fa = function (a, b) { + return ce(b, this) + }; + g.Ga = function (a, b, c) { + return de(b, c, this) + }; + g.Ia = function () { + return this.da.Ia(null).gd(null) + }; + g.bb = function () { + var a = (null != this.da ? this.da.m & 128 || q === this.da.Id || (this.da.m ? 0 : Ab(Zb, + this.da)) : Ab(Zb, this.da)) ? this.da.Ka(null) : z(this.da); + return null != a ? new gi(a, this.hb) : wd + }; + g.S = function () { + return this + }; + g.T = function (a, b) { + return new gi(this.da, b) + }; + g.X = function (a, b) { + return ae(b, this) + }; + gi.prototype[Fb] = function () { + return yd(this) + }; + + function mh(a) { + return (a = E(a)) ? new gi(a, null) : null + } + + var hi = function hi(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return hi.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + hi.A = function (a) { + return t(Wf(Ve, a)) ? Te(function (a, c) { + return ge.c(t(a) ? a : Ef, c) + }, a) : null + }; + hi.L = 0; + hi.N = function (a) { + return hi.A(E(a)) + }; + var ii = function ii(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return ii.A(arguments[0], 1 < c.length ? new Jb(c.slice(1), 0, null) : null) + }; + ii.A = function (a, b) { + return t(Wf(Ve, b)) ? Te(function (a) { + return function (b, c) { + return Mb(a, t(b) ? b : Ef, E(c)) + } + }(function (b, d) { + var c = y(d), f = ee(d); + return He(b, c) ? K.l(b, c, function () { + var d = D.c(b, c); + return a.c ? a.c(d, f) : a.call(null, d, f) + }()) : K.l(b, c, f) + }), b) : null + }; + ii.L = 1; + ii.N = function (a) { + var b = y(a); + a = z(a); + return ii.A(b, a) + }; + + function ji(a) { + for (var b = Ef, c = E(new R(null, 7, 5, T, [ki, li, mi, ni, oi, pi, qi], null)); ;) { + if (c) { + var d = y(c), e = D.l(a, d, ri); + b = G.c(e, ri) ? b : K.l(b, d, e); + c = z(c) + } else { + return tc(b, qe(a)) + } + } + } + + function si(a) { + this.te = a + } + + si.prototype.ja = function () { + return this.te.ja() + }; + si.prototype.next = function () { + if (this.te.ja()) { + return this.te.next().fa[0]; + } + throw Error("No such element"); + }; + si.prototype.remove = function () { + return Error("Unsupported operation") + }; + + function ti(a, b, c) { + this.meta = a; + this.gc = b; + this.w = c; + this.m = 15077647; + this.J = 139268 + } + + g = ti.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.keys = function () { + return yd(E(this)) + }; + g.entries = function () { + return new hh(E(E(this))) + }; + g.values = function () { + return yd(E(this)) + }; + g.has = function (a) { + return He(this, a) + }; + g.forEach = function (a) { + for (var b = E(this), c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e), h = J(f, 0, null); + f = J(f, 1, null); + a.c ? a.c(f, h) : a.call(null, f, h); + e += 1 + } else if (b = E(b)) { + Ae(b) ? (c = Wc(b), b = Xc(b), h = c, d = H(c), c = h) : (c = y(b), h = J( + c, 0, null), f = J(c, 1, null), a.c ? a.c(f, h) : a.call(null, f, h), b = z( + b), c = null, d = 0), e = 0; + } else { + return null + } + } + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return dc(this.gc, b) ? b : c + }; + g.ba = function () { + return new si(dd(this.gc)) + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return Qb(this.gc) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Dd(this) + }; + g.K = function (a, b) { + return ve(b) && H(this) === H(b) && Ue(function () { + return function (a, d) { + var c = He(b, d); + return c ? c : new Gd(!1) + } + }(this), !0, this.gc) + }; + g.Pc = function () { + return new ui(Oc(this.gc)) + }; + g.oa = function () { + return tc(vi, this.meta) + }; + g.ie = function (a, b) { + return new ti(this.meta, gc(this.gc, b), null) + }; + g.S = function () { + return lh(this.gc) + }; + g.T = function (a, b) { + return new ti(b, this.gc, this.w) + }; + g.X = function (a, b) { + return new ti(this.meta, K.l(this.gc, b, null), null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + var vi = new ti(null, Ef, Ed); + + function Je(a) { + for (var b = a.length, c = Oc(vi), d = 0; ;) { + if (d < b) { + Pc(c, a[d]), d += 1; + } else { + break; + } + } + return Qc(c) + } + + ti.prototype[Fb] = function () { + return yd(this) + }; + + function ui(a) { + this.lc = a; + this.J = 136; + this.m = 259 + } + + g = ui.prototype; + g.Dc = function (a, b) { + this.lc = Rc(this.lc, b, null); + return this + }; + g.kd = function () { + return new ti(null, Qc(this.lc), null) + }; + g.W = function () { + return H(this.lc) + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return cc.l(this.lc, b, Ce) === Ce ? c : b + }; + g.call = function () { + function a(a, b, c) { + return cc.l(this.lc, b, Ce) === Ce ? c : b + } + + function b(a, b) { + return cc.l(this.lc, b, Ce) === Ce ? null : b + } + + var c = null; + c = function (c, e, f) { + switch (arguments.length) { + case 2: + return b.call(this, 0, e); + case 3: + return a.call(this, 0, e, f) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + c.c = b; + c.l = a; + return c + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return cc.l(this.lc, a, Ce) === Ce ? null : a + }; + g.c = function (a, b) { + return cc.l(this.lc, a, Ce) === Ce ? b : a + }; + + function wi(a, b, c) { + this.meta = a; + this.$b = b; + this.w = c; + this.m = 417730831; + this.J = 8192 + } + + g = wi.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.keys = function () { + return yd(E(this)) + }; + g.entries = function () { + return new hh(E(E(this))) + }; + g.values = function () { + return yd(E(this)) + }; + g.has = function (a) { + return He(this, a) + }; + g.forEach = function (a) { + for (var b = E(this), c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e), h = J(f, 0, null); + f = J(f, 1, null); + a.c ? a.c(f, h) : a.call(null, f, h); + e += 1 + } else if (b = E(b)) { + Ae(b) ? (c = Wc(b), b = Xc(b), h = c, d = H(c), c = h) : (c = y(b), h = J( + c, 0, null), f = J(c, 1, null), a.c ? a.c(f, h) : a.call(null, f, h), b = z( + b), c = null, d = 0), e = 0; + } else { + return null + } + } + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + a = ai(this.$b, b); + return null != a ? a.key : c + }; + g.P = function () { + return this.meta + }; + g.W = function () { + return H(this.$b) + }; + g.Rc = function () { + return 0 < H(this.$b) ? ig.c(fi, Ic(this.$b)) : null + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Dd(this) + }; + g.K = function (a, b) { + return ve(b) && H(this) === H(b) && Ue(function () { + return function (a, d) { + var c = He(b, d); + return c ? c : new Gd(!1) + } + }(this), !0, this.$b) + }; + g.oa = function () { + return new wi(this.meta, Rb(this.$b), 0) + }; + g.ie = function (a, b) { + return new wi(this.meta, le.c(this.$b, b), null) + }; + g.S = function () { + return lh(this.$b) + }; + g.T = function (a, b) { + return new wi(b, this.$b, this.w) + }; + g.X = function (a, b) { + return new wi(this.meta, K.l(this.$b, b, null), null) + }; + g.call = function () { + var a = null; + a = function (a, c, d) { + switch (arguments.length) { + case 2: + return this.V(null, c); + case 3: + return this.I(null, c, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.c = function (a, c) { + return this.V(null, c) + }; + a.l = function (a, c, d) { + return this.I(null, c, d) + }; + return a + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.h = function (a) { + return this.V(null, a) + }; + g.c = function (a, b) { + return this.I(null, a, b) + }; + var xi = new wi(null, bi, Ed); + wi.prototype[Fb] = function () { + return yd(this) + }; + + function yi(a) { + a = E(a); + if (null == a) { + return vi; + } + if (a instanceof Jb && 0 === a.i) { + return Je(a.o); + } + for (var b = Oc(vi); ;) { + if (null != a) { + var c = z(a); + b = b.Dc(null, a.Ia(null)); + a = c + } else { + return Qc(b) + } + } + } + + var zi = function zi(a) { + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return zi.A(0 < c.length ? new Jb(c.slice(0), 0, null) : null) + }; + zi.A = function (a) { + return Mb(Tb, xi, a) + }; + zi.L = 0; + zi.N = function (a) { + return zi.A(E(a)) + }; + + function jf(a) { + if (null != a && (a.J & 4096 || q === a.Oe)) { + return a.hd(null); + } + if ("string" === typeof a) { + return a; + } + throw Error(["Doesn't support name: ", v.h(a)].join("")); + } + + var Ai = function Ai(a) { + switch (arguments.length) { + case 2: + return Ai.c(arguments[0], arguments[1]); + case 3: + return Ai.l(arguments[0], arguments[1], arguments[2]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return Ai.A(arguments[0], arguments[1], arguments[2], new Jb(c.slice(3), 0, null)) + } + }; + Ai.c = function (a, b) { + return b + }; + Ai.l = function (a, b, c) { + return (a.h ? a.h(b) : a.call(null, b)) > (a.h ? a.h(c) : a.call(null, c)) ? b : c + }; + Ai.A = function (a, b, c, d) { + return Mb(function (b, c) { + return Ai.l(a, b, c) + }, Ai.l(a, b, c), d) + }; + Ai.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + var d = z(c); + c = y(d); + d = z(d); + return Ai.A(b, a, c, d) + }; + Ai.L = 3; + + function Bi(a, b) { + return new kf(null, function () { + var c = E(b); + if (c) { + var d = y(c); + d = a.h ? a.h(d) : a.call(null, d); + c = t(d) ? ae(y(c), Bi(a, vd(c))) : null + } else { + c = null; + } + return c + }, null, null) + } + + function Di(a, b, c) { + this.i = a; + this.end = b; + this.step = c + } + + Di.prototype.ja = function () { + return 0 < this.step ? this.i < this.end : this.i > this.end + }; + Di.prototype.next = function () { + var a = this.i; + this.i += this.step; + return a + }; + + function Ei(a, b, c, d, e) { + this.meta = a; + this.start = b; + this.end = c; + this.step = d; + this.w = e; + this.m = 32375006; + this.J = 139264 + } + + g = Ei.prototype; + g.toString = function () { + return fd(this) + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.indexOf = function () { + var a = null; + a = function (a, c) { + switch (arguments.length) { + case 1: + return Ud(this, a, 0); + case 2: + return Ud(this, a, c) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + a.h = function (a) { + return Ud(this, a, 0) + }; + a.c = function (a, c) { + return Ud(this, a, c) + }; + return a + }(); + g.lastIndexOf = function () { + function a(a) { + return Xd(this, a, H(this)) + } + + var b = null; + b = function (b, d) { + switch (arguments.length) { + case 1: + return a.call(this, b); + case 2: + return Xd(this, b, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + b.h = a; + b.c = function (a, b) { + return Xd(this, a, b) + }; + return b + }(); + g.$ = function (a, b) { + if (0 <= b && b < this.W(null)) { + return this.start + b * this.step; + } + if (0 <= b && this.start > this.end && 0 === this.step) { + return this.start; + } + throw Error("Index out of bounds"); + }; + g.ka = function (a, b, c) { + return 0 <= b && b < this.W(null) ? this.start + b * this.step : 0 <= b && this.start > this.end + && 0 === this.step ? this.start : c + }; + g.ba = function () { + return new Di(this.start, this.end, this.step) + }; + g.P = function () { + return this.meta + }; + g.Ka = function () { + return 0 < this.step ? this.start + this.step < this.end ? new Ei(this.meta, + this.start + this.step, this.end, this.step, null) : null : this.start + this.step > this.end + ? new Ei(this.meta, this.start + this.step, this.end, this.step, null) : null + }; + g.W = function () { + return wb(this.S(null)) ? 0 : Math.ceil((this.end - this.start) / this.step) + }; + g.U = function () { + var a = this.w; + return null != a ? a : this.w = a = Ad(this) + }; + g.K = function (a, b) { + return $d(this, b) + }; + g.oa = function () { + return tc(wd, this.meta) + }; + g.Fa = function (a, b) { + return Kd(this, b) + }; + g.Ga = function (a, b, c) { + for (a = this.start; ;) { + if (0 < this.step ? a < this.end : a > this.end) { + c = b.c ? b.c(c, a) : b.call(null, c, a); + if (Hd(c)) { + return B(c); + } + a += this.step + } else { + return c + } + } + }; + g.Ia = function () { + return null == this.S(null) ? null : this.start + }; + g.bb = function () { + return null != this.S(null) ? new Ei(this.meta, this.start + this.step, this.end, this.step, + null) : wd + }; + g.S = function () { + return 0 < this.step ? this.start < this.end ? this : null : 0 > this.step ? this.start + > this.end ? this : null : this.start === this.end ? null : this + }; + g.T = function (a, b) { + return new Ei(b, this.start, this.end, this.step, this.w) + }; + g.X = function (a, b) { + return ae(b, this) + }; + Ei.prototype[Fb] = function () { + return yd(this) + }; + + function Fi(a, b, c) { + return new Ei(null, a, b, c, null) + } + + function Gi(a, b) { + return new R(null, 2, 5, T, [Bi(a, b), ng(a, b)], null) + } + + function Hi(a) { + var b = y; + return function () { + function c(c, d, e) { + return new R(null, 2, 5, T, + [b.l ? b.l(c, d, e) : b.call(null, c, d, e), a.l ? a.l(c, d, e) : a.call(null, c, d, e)], + null) + } + + function d(c, d) { + return new R(null, 2, 5, T, + [b.c ? b.c(c, d) : b.call(null, c, d), a.c ? a.c(c, d) : a.call(null, c, d)], null) + } + + function e(c) { + return new R(null, 2, 5, T, + [b.h ? b.h(c) : b.call(null, c), a.h ? a.h(c) : a.call(null, c)], null) + } + + function f() { + return new R(null, 2, 5, T, [b.B ? b.B() : b.call(null), a.B ? a.B() : a.call(null)], null) + } + + var h = null, k = function () { + function c(a, b, c, e) { + var f = + null; + if (3 < arguments.length) { + f = 0; + for (var h = Array(arguments.length - 3); f < h.length;) { + h[f] = arguments[f + 3], ++f; + } + f = new Jb(h, 0, null) + } + return d.call(this, a, b, c, f) + } + + function d(c, d, e, f) { + return new R(null, 2, 5, T, [Af(b, c, d, e, f), Af(a, c, d, e, f)], null) + } + + c.L = 3; + c.N = function (a) { + var b = y(a); + a = z(a); + var c = y(a); + a = z(a); + var e = y(a); + a = vd(a); + return d(b, c, e, a) + }; + c.A = d; + return c + }(); + h = function (a, b, h, u) { + switch (arguments.length) { + case 0: + return f.call(this); + case 1: + return e.call(this, a); + case 2: + return d.call(this, a, b); + case 3: + return c.call(this, + a, b, h); + default: + var m = null; + if (3 < arguments.length) { + m = 0; + for (var l = Array(arguments.length - 3); m < l.length;) { + l[m] = arguments[m + 3], ++m; + } + m = new Jb(l, 0, null) + } + return k.A(a, b, h, m) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + h.L = 3; + h.N = k.N; + h.B = f; + h.h = e; + h.c = d; + h.l = c; + h.A = k.A; + return h + }() + } + + function Ii(a) { + a:for (var b = a; ;) { + if (E(b)) { + b = z(b); + } else { + break a; + } + } + return a + } + + function Ji(a, b) { + if ("string" === typeof b) { + var c = a.exec(b); + return G.c(y(c), b) ? 1 === H(c) ? y(c) : Wg(c) : null + } + throw new TypeError("re-matches must match against a string."); + } + + function Y(a, b, c, d, e, f, h) { + var k = lb; + lb = null == lb ? null : lb - 1; + try { + if (null != lb && 0 > lb) { + return Jc(a, "#"); + } + Jc(a, c); + if (0 === tb.h(f)) { + E(h) && Jc(a, function () { + var a = Ki.h(f); + return t(a) ? a : "..." + }()); + } else { + if (E(h)) { + var l = y(h); + b.l ? b.l(l, a, f) : b.call(null, l, a, f) + } + for (var p = z(h), m = tb.h(f) - 1; ;) { + if (!p || null != m && 0 === m) { + E(p) && 0 === m && (Jc(a, d), Jc(a, function () { + var a = Ki.h(f); + return t(a) ? a : "..." + }())); + break + } else { + Jc(a, d); + var u = y(p); + c = a; + h = f; + b.l ? b.l(u, c, h) : b.call(null, u, c, h); + var w = z(p); + c = m - 1; + p = w; + m = c + } + } + } + return Jc(a, e) + } finally { + lb = k + } + } + + function Li(a, b) { + for (var c = E(b), d = null, e = 0, f = 0; ;) { + if (f < e) { + var h = d.$(null, f); + Jc(a, h); + f += 1 + } else if (c = E(c)) { + d = c, Ae(d) ? (c = Wc(d), e = Xc(d), d = c, h = H(c), c = e, e = h) + : (h = y(d), Jc(a, h), c = z(d), d = null, e = 0), f = 0; + } else { + return null + } + } + } + + var Mi = { + '"': '\\"', + "\\": "\\\\", + "\b": "\\b", + "\f": "\\f", + "\n": "\\n", + "\r": "\\r", + "\t": "\\t" + }; + + function Ni(a) { + return [v.h('"'), v.h(a.replace(RegExp('[\\\\"\b\f\n\r\t]', "g"), function (a) { + return Mi[a] + })), v.h('"')].join("") + } + + function Oi(a, b) { + var c = Ee(D.c(a, rb)); + return c ? (c = null != b ? b.m & 131072 || q === b.tf ? !0 : !1 : !1) ? null != qe(b) : c : c + } + + function Pi(a, b, c) { + if (null == a) { + return Jc(b, "nil"); + } + Oi(c, a) && (Jc(b, "^"), Qi(qe(a), b, c), Jc(b, " ")); + if (a.qc) { + return a.Ec(a, b, c); + } + if (null != a && (a.m & 2147483648 || q === a.ma)) { + return a.R(null, b, c); + } + if (!0 === a || !1 === a) { + return Jc(b, "" + v.h(a)); + } + if ("number" === typeof a) { + return Jc(b, + isNaN(a) ? "##NaN" : a === Number.POSITIVE_INFINITY ? "##Inf" : a + === Number.NEGATIVE_INFINITY + ? "##-Inf" : "" + v.h(a)); + } + if (null != a && a.constructor === Object) { + return Jc(b, "#js "), Ri(ig.c(function (b) { + return new R(null, 2, 5, T, [null != Ji(/[A-Za-z_\*\+\?!\-'][\w\*\+\?!\-']*/, + b) ? hf.h(b) : b, a[b]], null) + }, Ea(a)), b, c); + } + if (vb(a)) { + return Y(b, Qi, "#js [", " ", "]", c, a); + } + if (ca(a)) { + return t(qb.h(c)) ? Jc(b, Ni(a)) : Jc(b, a); + } + if (ha(a)) { + var d = a.name; + c = t(function () { + var a = null == d; + return a ? a : /^[\s\xa0]*$/.test(d) + }()) ? "Function" : d; + return Li(b, be(["#object[", c, "", "]"])) + } + if (a instanceof Date) { + return c = function (a, b) { + for (var c = "" + v.h(a); ;) { + if (H(c) < b) { + c = ["0", v.h(c)].join(""); + } else { + return c + } + } + }, Li(b, be(['#inst "', "" + v.h(a.getUTCFullYear()), "-", c(a.getUTCMonth() + 1, 2), "-", + c(a.getUTCDate(), 2), "T", c(a.getUTCHours(), + 2), ":", c(a.getUTCMinutes(), 2), ":", c(a.getUTCSeconds(), 2), ".", + c(a.getUTCMilliseconds(), 3), "-", '00:00"'])); + } + if (a instanceof RegExp) { + return Li(b, be(['#"', a.source, '"'])); + } + if (t(function () { + var b = null == a ? null : a.constructor; + return null == b ? null : b.Tb + }())) { + return Li(b, be(["#object[", a.constructor.Tb.replace(RegExp("/", "g"), "."), "]"])); + } + d = function () { + var b = null == a ? null : a.constructor; + return null == b ? null : b.name + }(); + c = t(function () { + var a = null == d; + return a ? a : /^[\s\xa0]*$/.test(d) + }()) ? "Object" : d; + return null == a.constructor ? + Li(b, be(["#object[", c, "]"])) : Li(b, be(["#object[", c, " ", "" + v.h(a), "]"])) + } + + function Qi(a, b, c) { + var d = Si.h(c); + return t(d) ? (c = K.l(c, Ti, Pi), d.l ? d.l(a, b, c) : d.call(null, a, b, c)) : Pi(a, b, c) + } + + function Ui(a, b) { + var c = new cb; + a:{ + var d = new ed(c); + Qi(y(a), d, b); + for (var e = E(z(a)), f = null, h = 0, k = 0; ;) { + if (k < h) { + var l = f.$(null, k); + Jc(d, " "); + Qi(l, d, b); + k += 1 + } else if (e = E(e)) { + f = e, Ae(f) ? (e = Wc(f), h = Xc(f), f = e, l = H(e), e = h, h = l) + : (l = y(f), Jc(d, " "), Qi(l, d, b), e = z(f), f = null, h = 0), k = 0; + } else { + break a + } + } + } + return c + } + + function Vi(a) { + var b = ob(); + return te(a) ? "" : "" + v.h(Ui(a, b)) + } + + function Wi(a, b, c, d, e) { + return Y(d, function (a, b, d) { + var e = jc(a); + c.l ? c.l(e, b, d) : c.call(null, e, b, d); + Jc(b, " "); + a = kc(a); + return c.l ? c.l(a, b, d) : c.call(null, a, b, d) + }, [v.h(a), "{"].join(""), ", ", "}", e, E(b)) + } + + function Ri(a, b, c) { + var d = Qi, e = (xe(a), null), f = J(e, 0, null); + e = J(e, 1, null); + return t(f) ? Wi(["#:", v.h(f)].join(""), e, d, b, c) : Wi(null, a, d, b, c) + } + + hg.prototype.ma = q; + hg.prototype.R = function (a, b, c) { + Jc(b, "#object [cljs.core.Volatile "); + Qi(new r(null, 1, [Xi, this.state], null), b, c); + return Jc(b, "]") + }; + Jb.prototype.ma = q; + Jb.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + kf.prototype.ma = q; + kf.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Nh.prototype.ma = q; + Nh.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Fh.prototype.ma = q; + Fh.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Rh.prototype.ma = q; + Rh.prototype.R = function (a, b, c) { + return Y(b, Qi, "[", " ", "]", c, this) + }; + jh.prototype.ma = q; + jh.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + wi.prototype.ma = q; + wi.prototype.R = function (a, b, c) { + return Y(b, Qi, "#{", " ", "}", c, this) + }; + Ug.prototype.ma = q; + Ug.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + ef.prototype.ma = q; + ef.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Zd.prototype.ma = q; + Zd.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Jh.prototype.ma = q; + Jh.prototype.R = function (a, b, c) { + return Ri(this, b, c) + }; + Gh.prototype.ma = q; + Gh.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Yg.prototype.ma = q; + Yg.prototype.R = function (a, b, c) { + return Y(b, Qi, "[", " ", "]", c, this) + }; + $h.prototype.ma = q; + $h.prototype.R = function (a, b, c) { + return Ri(this, b, c) + }; + ti.prototype.ma = q; + ti.prototype.R = function (a, b, c) { + return Y(b, Qi, "#{", " ", "}", c, this) + }; + pf.prototype.ma = q; + pf.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + cg.prototype.ma = q; + cg.prototype.R = function (a, b, c) { + Jc(b, "#object [cljs.core.Atom "); + Qi(new r(null, 1, [Xi, this.state], null), b, c); + return Jc(b, "]") + }; + gi.prototype.ma = q; + gi.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Qh.prototype.ma = q; + Qh.prototype.R = function (a, b, c) { + return Y(b, Qi, "[", " ", "]", c, this) + }; + R.prototype.ma = q; + R.prototype.R = function (a, b, c) { + return Y(b, Qi, "[", " ", "]", c, this) + }; + bf.prototype.ma = q; + bf.prototype.R = function (a, b) { + return Jc(b, "()") + }; + r.prototype.ma = q; + r.prototype.R = function (a, b, c) { + return Ri(this, b, c) + }; + Ei.prototype.ma = q; + Ei.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + Sf.prototype.ma = q; + Sf.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + ei.prototype.ma = q; + ei.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + af.prototype.ma = q; + af.prototype.R = function (a, b, c) { + return Y(b, Qi, "(", " ", ")", c, this) + }; + rd.prototype.zc = q; + rd.prototype.cc = function (a, b) { + if (b instanceof rd) { + return sd(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + L.prototype.zc = q; + L.prototype.cc = function (a, b) { + if (b instanceof L) { + return ff(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + Yg.prototype.zc = q; + Yg.prototype.cc = function (a, b) { + if (ze(b)) { + return Le(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + R.prototype.zc = q; + R.prototype.cc = function (a, b) { + if (ze(b)) { + return Le(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + Rh.prototype.zc = q; + Rh.prototype.cc = function (a, b) { + if (ze(b)) { + return Le(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + Qh.prototype.zc = q; + Qh.prototype.cc = function (a, b) { + if (ze(b)) { + return Le(this, b); + } + throw Error(["Cannot compare ", v.h(this), " to ", v.h(b)].join("")); + }; + var Yi = null; + + function Zi() { + null == Yi && (Yi = dg.h(0)); + return td.h([v.h("reagent"), v.h(gg.c(Yi, Fd))].join("")) + } + + function $i() { + } + + var aj = function aj(a) { + if (null != a && null != a.pf) { + return a.pf(a); + } + var c = aj[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = aj._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IEncodeJS.-clj-\x3ejs", a); + }; + + function bj(a) { + return (null != a ? q === a.nf || (a.Tc ? 0 : Ab($i, a)) : Ab($i, a)) ? aj(a) : "string" + === typeof a || "number" === typeof a || a instanceof L || a instanceof rd ? cj(a) : Vi(be([a])) + } + + var cj = function cj(a) { + if (null == a) { + return null; + } + if (null != a ? q === a.nf || (a.Tc ? 0 : Ab($i, a)) : Ab($i, a)) { + return aj(a); + } + if (a instanceof L) { + return jf(a); + } + if (a instanceof rd) { + return "" + v.h(a); + } + if (xe(a)) { + var c = {}; + a = E(a); + for (var d = null, e = 0, f = 0; ;) { + if (f < e) { + var h = d.$(null, f), k = J(h, 0, null), l = J(h, 1, null); + h = c; + k = bj(k); + l = cj.h ? cj.h(l) : cj.call(null, l); + h[k] = l; + f += 1 + } else if (a = E(a)) { + Ae(a) ? (e = Wc(a), a = Xc(a), d = e, e = H(e)) : (d = y(a), e = J(d, 0, + null), f = J(d, 1, null), d = c, e = bj(e), f = cj.h ? cj.h(f) : cj.call(null, + f), d[e] = f, a = z(a), d = null, e = 0), f = 0; + } else { + break; + } + } + return c + } + if (ue(a)) { + c = []; + a = E(ig.c(cj, a)); + d = null; + for (f = e = 0; ;) { + if (f < e) { + h = d.$(null, f), c.push(h), f += 1; + } else if (a = E( + a)) { + d = a, Ae(d) ? (a = Wc(d), f = Xc(d), d = a, e = H(a), a = f) : (a = y(d), c.push( + a), a = z(d), d = null, e = 0), f = 0; + } else { + break; + } + } + return c + } + return a + }; + + function dj() { + } + + var ej = function ej(a, b) { + if (null != a && null != a.mf) { + return a.mf(a, b); + } + var d = ej[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = ej._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("IEncodeClojure.-js-\x3eclj", a); + }; + + function fj(a) { + var b = be([gj, !0]), c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, gj); + return function (a, c, d, k) { + return function m(e) { + return (null != e ? q === e.lf || (e.Tc ? 0 : Ab(dj, e)) : Ab(dj, e)) ? ej(e, P(ci, b)) + : De(e) ? Ii(ig.c(m, e)) : ue(e) ? wg.c(ie(e), ig.c(m, e)) : vb(e) ? Wg(ig.c(m, e)) : Bb( + e) === Object ? wg.c(Ef, function () { + return function (a, b, c, d) { + return function M(f) { + return new kf(null, function (a, b, c, d) { + return function () { + for (; ;) { + var a = E(f); + if (a) { + if (Ae(a)) { + var b = Wc(a), c = H(b), h = of(c); + a:for (var k = 0; ;) { + if (k < c) { + var p = A.c(b, k); + p = + new R(null, 2, 5, T, [d.h ? d.h(p) : d.call(null, p), m(e[p])], + null); + h.add(p); + k += 1 + } else { + b = !0; + break a + } + } + return b ? qf(h.Da(), M(Xc(a))) : qf(h.Da(), null) + } + h = y(a); + return ae( + new R(null, 2, 5, T, [d.h ? d.h(h) : d.call(null, h), m(e[h])], null), + M(vd(a))) + } + return null + } + } + }(a, b, c, d), null, null) + } + }(a, c, d, k)(Ea(e)) + }()) : e + } + }(b, c, d, t(d) ? hf : v)(a) + } + + function hj(a) { + return function (b) { + return function () { + function c(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var c = Array(arguments.length - 0); b < c.length;) { + c[b] = arguments[b + 0], ++b; + } + b = new Jb(c, 0, null) + } + return d.call(this, b) + } + + function d(c) { + var d = D.l(B(b), c, Ce); + d === Ce && (d = P(a, c), gg.M(b, K, c, d)); + return d + } + + c.L = 0; + c.N = function (a) { + a = E(a); + return d(a) + }; + c.A = d; + return c + }() + }(dg.h(Ef)) + } + + var ij = null; + + function jj() { + null == ij && (ij = dg.h(new r(null, 3, [kj, Ef, lj, Ef, mj, Ef], null))); + return ij + } + + function nj(a, b, c) { + var d = G.c(b, c); + if (d) { + return d; + } + d = mj.h(a); + d = d.h ? d.h(b) : d.call(null, b); + if (!(d = He(d, c)) && (d = ze(c))) { + if (d = ze(b)) { + if (d = H(c) === H(b)) { + d = !0; + for (var e = 0; ;) { + if (d && e !== H(c)) { + d = nj(a, b.h ? b.h(e) : b.call(null, e), + c.h ? c.h(e) : c.call(null, e)), e += 1; + } else { + return d + } + } + } else { + return d; + } + } else { + return d; + } + } else { + return d + } + } + + function oj(a) { + var b = B(jj()); + return Bf(D.c(kj.h(b), a)) + } + + function pj(a, b, c, d) { + gg.c(a, function () { + return B(b) + }); + gg.c(c, function () { + return B(d) + }) + } + + var qj = function qj(a, b, c) { + var e = function () { + var b = B(c); + return b.h ? b.h(a) : b.call(null, a) + }(); + e = t(t(e) ? e.h ? e.h(b) : e.call(null, b) : e) ? !0 : null; + if (t(e)) { + return e; + } + e = function () { + for (var e = oj(b); ;) { + if (0 < H(e)) { + var h = y(e); + qj.l ? qj.l(a, h, c) : qj.call(null, a, h, c); + e = vd(e) + } else { + return null + } + } + }(); + if (t(e)) { + return e; + } + e = function () { + for (var e = oj(a); ;) { + if (0 < H(e)) { + var h = y(e); + qj.l ? qj.l(h, b, c) : qj.call(null, h, b, c); + e = vd(e) + } else { + return null + } + } + }(); + return t(e) ? e : !1 + }; + + function rj(a, b, c, d) { + c = qj(a, b, c); + return t(c) ? c : nj(d, a, b) + } + + var sj = function sj(a, b, c, d, e, f, h, k) { + var p = Mb(function (d, f) { + var h = J(f, 0, null); + J(f, 1, null); + if (nj(B(c), b, h)) { + var k = (k = null == d) ? k : rj(h, y(d), e, B(c)); + k = t(k) ? f : d; + if (!t(rj(y(k), h, e, B(c)))) { + throw Error( + ["Multiple methods in multimethod '", v.h(a), "' match dispatch value: ", v.h(b), + " -\x3e ", v.h(h), " and ", v.h(y(k)), ", and neither is preferred"].join("")); + } + return k + } + return d + }, null, B(d)), m = function () { + var a; + if (a = null == p) { + a = B(d), a = a.h ? a.h(k) : a.call(null, k); + } + return t(a) ? new R(null, 2, 5, T, [k, a], null) : p + }(); + if (t(m)) { + if (G.c(B(h), + B(c))) { + return gg.M(f, K, b, ee(m)), ee(m); + } + pj(f, d, h, c); + return sj.Ha ? sj.Ha(a, b, c, d, e, f, h, k) : sj.call(null, a, b, c, d, e, f, h, k) + } + return null + }; + + function tj(a, b) { + throw Error(["No method in multimethod '", v.h(a), "' for dispatch value: ", v.h(b)].join("")); + } + + function uj(a, b, c, d, e, f, h, k) { + this.name = a; + this.D = b; + this.vf = c; + this.Rd = d; + this.Vd = e; + this.Kf = f; + this.Ud = h; + this.Ed = k; + this.m = 4194305; + this.J = 4352 + } + + g = uj.prototype; + g.call = function () { + function a(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q, Ga) { + a = this; + var W = oe(a.D, b, c, d, e, be([f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q, Ga])), + ka = vj(this, W); + t(ka) || tj(a.name, W); + return oe(ka, b, c, d, e, be([f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q, Ga])) + } + + function b(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q) { + a = this; + var W = a.D.Xa ? a.D.Xa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q) + : a.D.call(null, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q), + ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Xa ? ka.Xa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, + I, M, S, X, Q) : ka.call(null, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X, Q) + } + + function c(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X) { + a = this; + var W = a.D.Wa ? a.D.Wa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X) : a.D.call( + null, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X), ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Wa ? ka.Wa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X) : ka.call(null, + b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S, X) + } + + function d(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S) { + a = this; + var W = a.D.Va ? a.D.Va(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S) : a.D.call(null, + b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S), ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Va ? ka.Va(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S) : ka.call(null, b, + c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M, S) + } + + function e(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M) { + a = this; + var W = a.D.Ua ? a.D.Ua(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M) : a.D.call(null, b, + c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M), ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Ua ? ka.Ua(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I, M) : ka.call(null, b, c, + d, e, f, h, k, m, l, p, u, w, x, F, C, I, M) + } + + function f(a, b, c, d, e, f, h, k, m, + l, p, u, w, x, F, C, I) { + a = this; + var W = a.D.Ta ? a.D.Ta(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I) : a.D.call(null, b, c, + d, e, f, h, k, m, l, p, u, w, x, F, C, I), ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Ta ? ka.Ta(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C, I) : ka.call(null, b, c, d, + e, f, h, k, m, l, p, u, w, x, F, C, I) + } + + function h(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F, C) { + a = this; + var W = a.D.Sa ? a.D.Sa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C) : a.D.call(null, b, c, d, + e, f, h, k, m, l, p, u, w, x, F, C), ka = vj(this, W); + t(ka) || tj(a.name, W); + return ka.Sa ? ka.Sa(b, c, d, e, f, h, k, m, l, p, u, w, x, F, C) : ka.call(null, b, + c, d, e, f, h, k, m, l, p, u, w, x, F, C) + } + + function k(a, b, c, d, e, f, h, k, m, l, p, u, w, x, F) { + a = this; + var W = a.D.Ra ? a.D.Ra(b, c, d, e, f, h, k, m, l, p, u, w, x, F) : a.D.call(null, b, c, d, e, + f, h, k, m, l, p, u, w, x, F), C = vj(this, W); + t(C) || tj(a.name, W); + return C.Ra ? C.Ra(b, c, d, e, f, h, k, m, l, p, u, w, x, F) : C.call(null, b, c, d, e, f, h, + k, m, l, p, u, w, x, F) + } + + function l(a, b, c, d, e, f, h, k, m, l, p, u, w, x) { + a = this; + var W = a.D.Qa ? a.D.Qa(b, c, d, e, f, h, k, m, l, p, u, w, x) : a.D.call(null, b, c, d, e, f, + h, k, m, l, p, u, w, x), F = vj(this, W); + t(F) || tj(a.name, W); + return F.Qa ? F.Qa(b, c, d, e, f, h, k, m, l, p, u, w, x) : F.call(null, + b, c, d, e, f, h, k, m, l, p, u, w, x) + } + + function p(a, b, c, d, e, f, h, k, m, l, p, u, w) { + a = this; + var x = a.D.Pa ? a.D.Pa(b, c, d, e, f, h, k, m, l, p, u, w) : a.D.call(null, b, c, d, e, f, h, + k, m, l, p, u, w), W = vj(this, x); + t(W) || tj(a.name, x); + return W.Pa ? W.Pa(b, c, d, e, f, h, k, m, l, p, u, w) : W.call(null, b, c, d, e, f, h, k, m, + l, p, u, w) + } + + function m(a, b, c, d, e, f, h, k, m, l, p, u) { + a = this; + var w = a.D.Oa ? a.D.Oa(b, c, d, e, f, h, k, m, l, p, u) : a.D.call(null, b, c, d, e, f, h, k, + m, l, p, u), x = vj(this, w); + t(x) || tj(a.name, w); + return x.Oa ? x.Oa(b, c, d, e, f, h, k, m, l, p, u) : x.call(null, b, c, d, e, f, h, k, m, l, + p, u) + } + + function u(a, + b, c, d, e, f, h, k, m, l, p) { + a = this; + var u = a.D.Na ? a.D.Na(b, c, d, e, f, h, k, m, l, p) : a.D.call(null, b, c, d, e, f, h, k, m, + l, p), w = vj(this, u); + t(w) || tj(a.name, u); + return w.Na ? w.Na(b, c, d, e, f, h, k, m, l, p) : w.call(null, b, c, d, e, f, h, k, m, l, p) + } + + function w(a, b, c, d, e, f, h, k, m, l) { + a = this; + var p = a.D.Za ? a.D.Za(b, c, d, e, f, h, k, m, l) : a.D.call(null, b, c, d, e, f, h, k, m, + l), u = vj(this, p); + t(u) || tj(a.name, p); + return u.Za ? u.Za(b, c, d, e, f, h, k, m, l) : u.call(null, b, c, d, e, f, h, k, m, l) + } + + function x(a, b, c, d, e, f, h, k, m) { + a = this; + var l = a.D.Ha ? a.D.Ha(b, c, d, e, f, h, k, m) : a.D.call(null, + b, c, d, e, f, h, k, m), p = vj(this, l); + t(p) || tj(a.name, l); + return p.Ha ? p.Ha(b, c, d, e, f, h, k, m) : p.call(null, b, c, d, e, f, h, k, m) + } + + function C(a, b, c, d, e, f, h, k) { + a = this; + var m = a.D.Ya ? a.D.Ya(b, c, d, e, f, h, k) : a.D.call(null, b, c, d, e, f, h, k), + l = vj(this, m); + t(l) || tj(a.name, m); + return l.Ya ? l.Ya(b, c, d, e, f, h, k) : l.call(null, b, c, d, e, f, h, k) + } + + function F(a, b, c, d, e, f, h) { + a = this; + var k = a.D.Ca ? a.D.Ca(b, c, d, e, f, h) : a.D.call(null, b, c, d, e, f, h), m = vj(this, k); + t(m) || tj(a.name, k); + return m.Ca ? m.Ca(b, c, d, e, f, h) : m.call(null, b, c, d, e, f, h) + } + + function I(a, b, c, d, + e, f) { + a = this; + var h = a.D.Z ? a.D.Z(b, c, d, e, f) : a.D.call(null, b, c, d, e, f), k = vj(this, h); + t(k) || tj(a.name, h); + return k.Z ? k.Z(b, c, d, e, f) : k.call(null, b, c, d, e, f) + } + + function M(a, b, c, d, e) { + a = this; + var f = a.D.M ? a.D.M(b, c, d, e) : a.D.call(null, b, c, d, e), h = vj(this, f); + t(h) || tj(a.name, f); + return h.M ? h.M(b, c, d, e) : h.call(null, b, c, d, e) + } + + function S(a, b, c, d) { + a = this; + var e = a.D.l ? a.D.l(b, c, d) : a.D.call(null, b, c, d), f = vj(this, e); + t(f) || tj(a.name, e); + return f.l ? f.l(b, c, d) : f.call(null, b, c, d) + } + + function X(a, b, c) { + a = this; + var d = a.D.c ? a.D.c(b, c) : a.D.call(null, + b, c), e = vj(this, d); + t(e) || tj(a.name, d); + return e.c ? e.c(b, c) : e.call(null, b, c) + } + + function Ga(a, b) { + a = this; + var c = a.D.h ? a.D.h(b) : a.D.call(null, b), d = vj(this, c); + t(d) || tj(a.name, c); + return d.h ? d.h(b) : d.call(null, b) + } + + function db(a) { + a = this; + var b = a.D.B ? a.D.B() : a.D.call(null), c = vj(this, b); + t(c) || tj(a.name, b); + return c.B ? c.B() : c.call(null) + } + + var Q = null; + Q = function (Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd, se, Lf, Ih, + kl) { + switch (arguments.length) { + case 1: + return db.call(this, Q); + case 2: + return Ga.call(this, Q, Ha); + case 3: + return X.call(this, + Q, Ha, Ja); + case 4: + return S.call(this, Q, Ha, Ja, Oa); + case 5: + return M.call(this, Q, Ha, Ja, Oa, Ba); + case 6: + return I.call(this, Q, Ha, Ja, Oa, Ba, W); + case 7: + return F.call(this, Q, Ha, Ja, Oa, Ba, W, $a); + case 8: + return C.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka); + case 9: + return x.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb); + case 10: + return w.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb); + case 11: + return u.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb); + case 12: + return m.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib); + case 13: + return p.call(this, Q, Ha, Ja, Oa, Ba, W, $a, + ka, jb, nb, zb, Ib, Wd); + case 14: + return l.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb); + case 15: + return k.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic); + case 16: + return h.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc); + case 17: + return f.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc); + case 18: + return e.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd); + case 19: + return d.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd, + se); + case 20: + return c.call(this, Q, + Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd, se, Lf); + case 21: + return b.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd, + se, Lf, Ih); + case 22: + return a.call(this, Q, Ha, Ja, Oa, Ba, W, $a, ka, jb, nb, zb, Ib, Wd, Xb, ic, xc, Sc, Bd, + se, Lf, Ih, kl) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + Q.h = db; + Q.c = Ga; + Q.l = X; + Q.M = S; + Q.Z = M; + Q.Ca = I; + Q.Ya = F; + Q.Ha = C; + Q.Za = x; + Q.Na = w; + Q.Oa = u; + Q.Pa = m; + Q.Qa = p; + Q.Ra = l; + Q.Sa = k; + Q.Ta = h; + Q.Ua = f; + Q.Va = e; + Q.Wa = d; + Q.Xa = c; + Q.he = b; + Q.qf = a; + return Q + }(); + g.apply = function (a, b) { + return this.call.apply(this, [this].concat(Gb(b))) + }; + g.B = function () { + var a = this.D.B ? this.D.B() : this.D.call(null), b = vj(this, a); + t(b) || tj(this.name, a); + return b.B ? b.B() : b.call(null) + }; + g.h = function (a) { + var b = this.D.h ? this.D.h(a) : this.D.call(null, a), c = vj(this, b); + t(c) || tj(this.name, b); + return c.h ? c.h(a) : c.call(null, a) + }; + g.c = function (a, b) { + var c = this.D.c ? this.D.c(a, b) : this.D.call(null, a, b), d = vj(this, c); + t(d) || tj(this.name, c); + return d.c ? d.c(a, b) : d.call(null, a, b) + }; + g.l = function (a, b, c) { + var d = this.D.l ? this.D.l(a, b, c) : this.D.call(null, a, b, c), e = vj(this, d); + t(e) || tj(this.name, d); + return e.l ? e.l(a, b, c) : e.call(null, a, b, c) + }; + g.M = function (a, b, c, d) { + var e = this.D.M ? this.D.M(a, b, c, d) : this.D.call(null, a, b, c, d), f = vj(this, e); + t(f) || tj(this.name, e); + return f.M ? f.M(a, b, c, d) : f.call(null, a, b, c, d) + }; + g.Z = function (a, b, c, d, e) { + var f = this.D.Z ? this.D.Z(a, b, c, d, e) : this.D.call(null, a, b, c, d, e), h = vj(this, f); + t(h) || tj(this.name, f); + return h.Z ? h.Z(a, b, c, d, e) : h.call(null, a, b, c, d, e) + }; + g.Ca = function (a, b, c, d, e, f) { + var h = this.D.Ca ? this.D.Ca(a, b, c, d, e, f) : this.D.call(null, a, b, c, d, e, f), + k = vj(this, h); + t(k) || tj(this.name, h); + return k.Ca ? k.Ca(a, b, c, d, e, f) : k.call(null, a, b, c, d, e, f) + }; + g.Ya = function (a, b, c, d, e, f, h) { + var k = this.D.Ya ? this.D.Ya(a, b, c, d, e, f, h) : this.D.call(null, a, b, c, d, e, f, h), + l = vj(this, k); + t(l) || tj(this.name, k); + return l.Ya ? l.Ya(a, b, c, d, e, f, h) : l.call(null, a, b, c, d, e, f, h) + }; + g.Ha = function (a, b, c, d, e, f, h, k) { + var l = this.D.Ha ? this.D.Ha(a, b, c, d, e, f, h, k) : this.D.call(null, a, b, c, d, e, f, h, + k), p = vj(this, l); + t(p) || tj(this.name, l); + return p.Ha ? p.Ha(a, b, c, d, e, f, h, k) : p.call(null, a, b, c, d, e, f, h, k) + }; + g.Za = function (a, b, c, d, e, f, h, k, l) { + var p = this.D.Za ? this.D.Za(a, b, c, d, e, f, h, k, l) : this.D.call(null, a, b, c, d, e, f, + h, k, l), m = vj(this, p); + t(m) || tj(this.name, p); + return m.Za ? m.Za(a, b, c, d, e, f, h, k, l) : m.call(null, a, b, c, d, e, f, h, k, l) + }; + g.Na = function (a, b, c, d, e, f, h, k, l, p) { + var m = this.D.Na ? this.D.Na(a, b, c, d, e, f, h, k, l, p) : this.D.call(null, a, b, c, d, e, + f, h, k, l, p), u = vj(this, m); + t(u) || tj(this.name, m); + return u.Na ? u.Na(a, b, c, d, e, f, h, k, l, p) : u.call(null, a, b, c, d, e, f, h, k, l, p) + }; + g.Oa = function (a, b, c, d, e, f, h, k, l, p, m) { + var u = this.D.Oa ? this.D.Oa(a, b, c, d, e, f, h, k, l, p, m) : this.D.call(null, a, b, c, d, + e, f, h, k, l, p, m), w = vj(this, u); + t(w) || tj(this.name, u); + return w.Oa ? w.Oa(a, b, c, d, e, f, h, k, l, p, m) : w.call(null, a, b, c, d, e, f, h, k, l, p, + m) + }; + g.Pa = function (a, b, c, d, e, f, h, k, l, p, m, u) { + var w = this.D.Pa ? this.D.Pa(a, b, c, d, e, f, h, k, l, p, m, u) : this.D.call(null, a, b, c, + d, e, f, h, k, l, p, m, u), x = vj(this, w); + t(x) || tj(this.name, w); + return x.Pa ? x.Pa(a, b, c, d, e, f, h, k, l, p, m, u) : x.call(null, a, b, c, d, e, f, h, k, l, + p, m, u) + }; + g.Qa = function (a, b, c, d, e, f, h, k, l, p, m, u, w) { + var x = this.D.Qa ? this.D.Qa(a, b, c, d, e, f, h, k, l, p, m, u, w) : this.D.call(null, a, b, + c, d, e, f, h, k, l, p, m, u, w), C = vj(this, x); + t(C) || tj(this.name, x); + return C.Qa ? C.Qa(a, b, c, d, e, f, h, k, l, p, m, u, w) : C.call(null, a, b, c, d, e, f, h, k, + l, p, m, u, w) + }; + g.Ra = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x) { + var C = this.D.Ra ? this.D.Ra(a, b, c, d, e, f, h, k, l, p, m, u, w, x) : this.D.call(null, a, + b, c, d, e, f, h, k, l, p, m, u, w, x), F = vj(this, C); + t(F) || tj(this.name, C); + return F.Ra ? F.Ra(a, b, c, d, e, f, h, k, l, p, m, u, w, x) : F.call(null, a, b, c, d, e, f, h, + k, l, p, m, u, w, x) + }; + g.Sa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C) { + var F = this.D.Sa ? this.D.Sa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C) : this.D.call(null, + a, b, c, d, e, f, h, k, l, p, m, u, w, x, C), I = vj(this, F); + t(I) || tj(this.name, F); + return I.Sa ? I.Sa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C) : I.call(null, a, b, c, d, e, f, + h, k, l, p, m, u, w, x, C) + }; + g.Ta = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) { + var I = this.D.Ta ? this.D.Ta(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) : this.D.call( + null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F), M = vj(this, I); + t(M) || tj(this.name, I); + return M.Ta ? M.Ta(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F) : M.call(null, a, b, c, d, e, + f, h, k, l, p, m, u, w, x, C, F) + }; + g.Ua = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) { + var M = this.D.Ua ? this.D.Ua(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) : this.D.call( + null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I), S = vj(this, M); + t(S) || tj(this.name, M); + return S.Ua ? S.Ua(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I) : S.call(null, a, b, c, d, + e, f, h, k, l, p, m, u, w, x, C, F, I) + }; + g.Va = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) { + var S = this.D.Va ? this.D.Va(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) + : this.D.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M), X = vj(this, S); + t(X) || tj(this.name, S); + return X.Va ? X.Va(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) : X.call(null, a, b, c, + d, e, f, h, k, l, p, m, u, w, x, C, F, I, M) + }; + g.Wa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) { + var X = this.D.Wa ? this.D.Wa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) + : this.D.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S), + Ga = vj(this, X); + t(Ga) || tj(this.name, X); + return Ga.Wa ? Ga.Wa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) : Ga.call(null, a, + b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S) + }; + g.Xa = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) { + var Ga = this.D.Xa ? this.D.Xa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) + : this.D.call(null, a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X), + db = vj(this, Ga); + t(db) || tj(this.name, Ga); + return db.Xa ? db.Xa(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) : db.call(null, + a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X) + }; + g.he = function (a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga) { + var db = oe(this.D, a, b, c, d, be([e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga])), + Q = vj(this, db); + t(Q) || tj(this.name, db); + return oe(Q, a, b, c, d, be([e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga])) + }; + + function wj(a, b) { + var c = xj; + gg.M(c.Vd, K, a, b); + pj(c.Ud, c.Vd, c.Ed, c.Rd) + } + + function vj(a, b) { + G.c(B(a.Ed), B(a.Rd)) || pj(a.Ud, a.Vd, a.Ed, a.Rd); + var c = B(a.Ud); + c = c.h ? c.h(b) : c.call(null, b); + return t(c) ? c : sj(a.name, b, a.Rd, a.Vd, a.Kf, a.Ud, a.Ed, a.vf) + } + + g.hd = function () { + return Yc(this.name) + }; + g.jd = function () { + return Zc(this.name) + }; + g.U = function () { + return ja(this) + }; + + function yj(a, b) { + this.Mc = a; + this.w = b; + this.m = 2153775104; + this.J = 2048 + } + + g = yj.prototype; + g.toString = function () { + return this.Mc + }; + g.equiv = function (a) { + return this.K(null, a) + }; + g.K = function (a, b) { + return b instanceof yj && this.Mc === b.Mc + }; + g.R = function (a, b) { + return Jc(b, ['#uuid "', v.h(this.Mc), '"'].join("")) + }; + g.U = function () { + null == this.w && (this.w = od(this.Mc)); + return this.w + }; + g.cc = function (a, b) { + return Aa(this.Mc, b.Mc) + }; + var zj = new L(null, "hook", "hook", 750265408), Aj = new L(null, "y", "y", -1757859776), + Bj = new L(null, "setCurrentTime", "setCurrentTime", -623552), + Cj = new L(null, "span.gutter", "span.gutter", -700214016), + Dj = new rd(null, "\x26", "\x26", -2144855648, null), + Ej = new L(null, "dcs-param", "dcs-param", -971011648), + Fj = new L(null, "path", "path", -188191168), Gj = new L(null, "escape", "escape", -991601952), + Df = new rd(null, "meta34617", "meta34617", -1789836320, null), + Hj = new L(null, "force-load-ch", "force-load-ch", -1689229247), Ij = new rd("schema.core", + "Any", "schema.core/Any", -1891898271, null), + Jj = new L(null, "tab-index", "tab-index", 895755393), + Kj = new L(null, "bold", "bold", -116809535), + Lj = new L(null, "authorImgURL", "authorImgURL", -1171541759), + Mj = new L(null, "schema", "schema", -1582001791), + Nj = new rd(null, "optional-key", "optional-key", 988406145, null), + Oj = new L(null, "char-attrs", "char-attrs", -1444091455), + Pj = new L(null, "esc-dispatch", "esc-dispatch", 17832481), + Qj = new L(null, "idle_time_limit", "idle_time_limit", -1837919647), + Rj = new L(null, "auto-wrap-mode", "auto-wrap-mode", + -2049555583), Sj = new L(null, "preload?", "preload?", 445442977), + Tj = new L(null, "on-set", "on-set", -140953470), + Uj = new L(null, "current-time", "current-time", -1609407134), + Vj = new L(null, "span.progressbar", "span.progressbar", 766750210), + Wj = new L(null, "osc-end", "osc-end", 1762953954), + Xj = new L("internal", "rewind", "internal/rewind", -31749342), + Yj = new L(null, "bottom-margin", "bottom-margin", -701300733), + Zj = new L(null, "on-key-press", "on-key-press", -399563677), + ak = new L(null, "osc-put", "osc-put", -1827844733), bk = new L(null, + "cljsLegacyRender", "cljsLegacyRender", -1527295613), + ck = new L(null, "klass", "klass", -1386752349), dk = new L(null, "blink", "blink", -271985917), + ek = new rd(null, "meta43127", "meta43127", 166183907, null), + fk = new L(null, "primary", "primary", 817773892), + gk = new rd(null, "meta43105", "meta43105", -531987068, null), + rb = new L(null, "meta", "meta", 1499536964), V = new L(null, "screen", "screen", 1990059748), + hk = new rd(null, "Symbol", "Symbol", 716452869, null), + ik = new L(null, "color", "color", 1011675173), jk = new rd(null, "blockable", "blockable", + -28395259, null), sb = new L(null, "dup", "dup", 556298533), + kk = new L(null, "parser-params", "parser-params", 36457893), + lk = new rd(null, "height", "height", -1629257147, null), + mk = new L(null, "key", "key", -1516042587), + nk = new rd(null, "CellLine", "CellLine", -317574363, null), + ok = new L(null, "asciicast", "asciicast", 509526949), + pk = new rd(null, "conditional", "conditional", -1212542970, null), + qk = new L(null, "exit", "exit", 351849638), + rk = new L(null, "parser-intermediates", "parser-intermediates", -169100058), + sk = new L(null, "else", "else", + -1508377146), tk = new L(null, "tabs", "tabs", -779855354), + uk = new L(null, "ground", "ground", 1193572934), + vk = new L(null, "next-print-wraps", "next-print-wraps", -1664999738), + wk = new L(null, "font-size", "font-size", -1847940346), + xk = new rd(null, "Bool", "Bool", 195910502, null), + yk = new L(null, "transition", "transition", 765692007), + zk = new rd(null, "one", "one", -1719427865, null), + Ak = new L(null, "speed", "speed", 1257663751), + Bk = new L(null, "displayName", "displayName", -809144601), + Ck = new L(null, "_", "_", 1453416199), eg = new L(null, "validator", + "validator", -1966190681), Dk = new rd(null, "char-attrs", "char-attrs", 196440072, null), + Ek = new L(null, "div.loading", "div.loading", -155515768), + Fk = new L(null, "dcs-passthrough", "dcs-passthrough", -671044440), + Gk = new L(null, "show-hud", "show-hud", 1983299752), + Hk = new L(null, "start-at", "start-at", -103334680), + Ik = new L(null, "default", "default", -1987822328), + Jk = new L(null, "csi-param", "csi-param", -1120111192), + Kk = new L(null, "div.control-bar", "div.control-bar", -1316808248), + Lk = new L(null, "finally-block", "finally-block", + 832982472), Mk = new rd(null, "cb", "cb", -2064487928, null), + Nk = new L(null, "inverse", "inverse", -1623859672), Ok = new L(null, "fg", "fg", -101797208), + Pk = new L(null, "warn", "warn", -436710552), + Qk = new L(null, "dcs-intermediate", "dcs-intermediate", 480808872), + Rk = new L(null, "osc-string", "osc-string", -486531128), + Sk = new L(null, "on-enter", "on-enter", -928988216), + Tk = new L(null, "name", "name", 1843675177), Uk = new L(null, "frames", "frames", 1765687497), + Vk = new L(null, "extra-validator-fn", "extra-validator-fn", 1562905865), Wk = new L(null, + "output-schema", "output-schema", 272504137), + Xk = new L(null, "div.play-button", "div.play-button", 1020321513), + Yk = new L(null, "span.time-elapsed", "span.time-elapsed", -1782475638), + Zk = new L(null, "time", "time", 1385887882), + $k = new L(null, "component-did-mount", "component-did-mount", -1126910518), + al = new L(null, "background-color", "background-color", 570434026), + bl = new L(null, "recording-ch-fn", "recording-ch-fn", -902533462), + cl = new L(null, "span.playback-button", "span.playback-button", -1136389398), + dl = new L(null, "span.title-bar", + "span.title-bar", -1165872085), el = new L(null, "loaded", "loaded", -1246482293), + fl = new L(null, "width", "width", -384071477), gl = new L(null, "start", "start", -355208981), + hl = new rd(null, "meta43130", "meta43130", 1056327947, null), + il = new L(null, "lines", "lines", -700165781), + jl = new L(null, "input-schemas", "input-schemas", -982154805), + ll = new L(null, "sos-pm-apc-string", "sos-pm-apc-string", 398998091), + ml = new L(null, "cursor-on", "cursor-on", 302555051), + nl = new L(null, "component-did-update", "component-did-update", -1468549173), + ol = new L(null, "div.start-prompt", "div.start-prompt", -41424788), + Xi = new L(null, "val", "val", 128701612), pl = new L(null, "cursor", "cursor", 1011937484), + ql = new L(null, "dcs-entry", "dcs-entry", 216833388), + Z = new L(null, "recur", "recur", -437573268), rl = new L(null, "type", "type", 1174270348), + sl = new rd(null, "Num", "Num", -2044934708, null), + tl = new L(null, "alternate", "alternate", -931038644), + ul = new L(null, "catch-block", "catch-block", 1175212748), + vl = new L(null, "onPlay", "onPlay", 150417132), wl = new L(null, "duration", "duration", + 1444101068), xl = new L(null, "execute", "execute", -129499188), + yl = new rd(null, "pred", "pred", -727012372, null), + zl = new L(null, "src", "src", -1651076051), Al = new rd(null, "Any", "Any", 1277492269, null), + Bl = new L(null, "span.bar", "span.bar", -1986926323), + Cl = new rd(null, "Regex", "Regex", 205914413, null), + Dl = new L(null, "msg-ch", "msg-ch", -1840176755), + El = new L(null, "on-exit", "on-exit", 1821961613), + Ti = new L(null, "fallback-impl", "fallback-impl", -1501286995), + Fl = new L(null, "view-box", "view-box", -1792199155), Gl = new L(null, "source", + "source", -433931539), Hl = new L(null, "csi-entry", "csi-entry", -1787942099), + pb = new L(null, "flush-on-newline", "flush-on-newline", -151457939), + Il = new L(null, "preds-and-schemas", "preds-and-schemas", -1306766355), + Jl = new L(null, "command-ch", "command-ch", 508874766), + Kl = new L(null, "componentWillUnmount", "componentWillUnmount", 1573788814), + Ll = new rd(null, "Inst", "Inst", 292408622, null), + Ml = new L(null, "span.timer", "span.timer", 2111534382), + Nl = new L(null, "toggle", "toggle", 1291842030), + Ol = new L(null, "cursor-blink-ch", "cursor-blink-ch", + 1063651214), Pl = new L(null, "print", "print", 1299562414), + Ql = new L(null, "on-mouse-down", "on-mouse-down", 1147755470), + Rl = new L(null, "csi-dispatch", "csi-dispatch", -126857169), + Sl = new L(null, "on-click", "on-click", 1632826543), + Tl = new L(null, "parser-state", "parser-state", 594493647), + Ul = new L(null, "ignore", "ignore", -1631542033), + lj = new L(null, "descendants", "descendants", 1824886031), + Vl = new L(null, "underline", "underline", 2018066703), + Wl = new rd(null, "Str", "Str", 907970895, null), + Xl = new L(null, "param", "param", 2013631823), + Yl = new L(null, "k", "k", -2146297393), ki = new L(null, "title", "title", 636505583), + Zl = new L(null, "stop-ch", "stop-ch", -219113969), + $l = new L(null, "insert-mode", "insert-mode", 894811791), + am = new rd(null, "maybe", "maybe", 1326133967, null), + bm = new L(null, "toggle-fullscreen", "toggle-fullscreen", -1647254833), + cm = new L(null, "loop", "loop", -395552849), + ni = new L(null, "author-img-url", "author-img-url", 2016975920), + dm = new L(null, "shouldComponentUpdate", "shouldComponentUpdate", 1795750960), + mj = new L(null, "ancestors", "ancestors", + -776045424), em = new rd(null, "flag", "flag", -1565787888, null), + fm = new L(null, "style", "style", -496642736), gm = new L(null, "theme", "theme", -1247880880), + hm = new L(null, "stream", "stream", 1534941648), + im = new L(null, "charset-fn", "charset-fn", 1374523920), + li = new L(null, "author", "author", 2111686192), + jm = new L(null, "escape-intermediate", "escape-intermediate", 1036490448), + km = new L(null, "div", "div", 1057191632), + qb = new L(null, "readably", "readably", 1129599760), + lm = new L(null, "change-speed", "change-speed", 2125740976), Ki = new L(null, + "more-marker", "more-marker", -14717935), + mm = new L(null, "new-line-mode", "new-line-mode", 1467504785), + nm = new L(null, "optional?", "optional?", 1184638129), + om = new L(null, "csi-intermediate", "csi-intermediate", -410048175), + pm = new L(null, "reagentRender", "reagentRender", -358306383), + qm = new L(null, "idle-time-limit", "idle-time-limit", -928369231), + rm = new L(null, "started?", "started?", -1301062863), + sm = new L(null, "other-buffer-saved", "other-buffer-saved", -2048065486), + tm = new L(null, "snapshot", "snapshot", -1274785710), um = + new L(null, "osc-start", "osc-start", -1717437326), + vm = new L(null, "preload", "preload", 1646824722), + wm = new L(null, "stop", "stop", -2140911342), + xm = new L(null, "no-cache", "no-cache", 1588056370), + ym = new rd(null, "Uuid", "Uuid", -1866694318, null), + zm = new L(null, "render", "render", -1408033454), + Am = new rd(null, "width", "width", 1256460050, null), + Bm = new L(null, "poster", "poster", -1616913550), + Cm = new L(null, "csi-ignore", "csi-ignore", -764437550), + Dm = new L(null, "reagent-render", "reagent-render", -985383853), Em = new L(null, "auto-play", + "auto-play", -645319501), Fm = new L(null, "collect", "collect", -284321549), + Gm = new L(null, "pre.asciinema-terminal", "pre.asciinema-terminal", 832737619), + Hm = new L(null, "loading", "loading", -737050189), + Im = new L(null, "priority", "priority", 1431093715), + Jm = new L(null, "auto-play?", "auto-play?", 385278451), + Km = new rd(null, "val", "val", 1769233139, null), + Lm = new L(null, "span.line", "span.line", -1541583788), + tb = new L(null, "print-length", "print-length", 1931866356), + Mm = new L(null, "poster-time", "poster-time", 1478579796), Nm = new L(null, + "saved", "saved", 288760660), Om = new L(null, "error-symbol", "error-symbol", -823480428), + oi = new L(null, "on-can-play", "on-can-play", 1481578549), + Pm = new L(null, "catch-exception", "catch-exception", -1997306795), + Qm = new L(null, "constructor", "constructor", -1953928811), + Rm = new L(null, "auto-run", "auto-run", 1958400437), + Sm = new L(null, "div.asciinema-player", "div.asciinema-player", -1293079051), + kj = new L(null, "parents", "parents", -2027538891), + mi = new L(null, "author-url", "author-url", 1091920533), Tm = new L(null, "pred-name", + "pred-name", -3677451), Um = new rd(null, "meta42957", "meta42957", -1080714315, null), + Vm = new L(null, "on-mouse-move", "on-mouse-move", -1386320874), + Wm = new L(null, "component-will-unmount", "component-will-unmount", -2058314698), + Xm = new L(null, "prev", "prev", -1597069226), Ym = new L(null, "svg", "svg", 856789142), + Zm = new L(null, "getDuration", "getDuration", -995932010), + $m = new L(null, "url", "url", 276297046), + an = new L(null, "authorURL", "authorURL", 549221782), + bn = new rd(null, "meta38850", "meta38850", 1963771318, null), cn = new L(null, + "continue-block", "continue-block", -1852047850), dn = new L(null, "loop?", "loop?", 457687798), + en = new rd(null, "ch", "ch", 1085813622, null), + fn = new rd(null, "CodePoint", "CodePoint", -132710345, null), + gn = new L(null, "autoPlay", "autoPlay", -561263241), + hn = new rd(null, "\x3d\x3e", "\x3d\x3e", -813269641, null), + jn = new L(null, "playing", "playing", 70013335), + kn = new rd(null, "Keyword", "Keyword", -850065993, null), + ln = new L(null, "display-name", "display-name", 694513143), + mn = new L(null, "random", "random", -557811113), nn = new L(null, "position", + "position", -2011731912), on = new L(null, "on-dispose", "on-dispose", 2105306360), + pn = new L(null, "d", "d", 1972142424), qn = new L(null, "action", "action", -811238024), + rn = new L(null, "stdout-ch", "stdout-ch", 825692568), + sn = new L(null, "pause", "pause", -2095325672), tn = new L(null, "error", "error", -978969032), + un = new L(null, "span.fullscreen-button", "span.fullscreen-button", -1476136392), + vn = new L(null, "class-name", "class-name", 945142584), + wn = new L(null, "componentFunction", "componentFunction", 825866104), + xn = new L(null, "div.loader", + "div.loader", -1644603528), yn = new L(null, "origin-mode", "origin-mode", -1430095912), + zn = new L(null, "x", "x", 2099068185), An = new L(null, "__html", "__html", 674048345), + Bn = new L(null, "fontSize", "fontSize", 919623033), + Cn = new L(null, "div.asciinema-player-wrapper", "div.asciinema-player-wrapper", 2009764409), + Dn = new L(null, "startAt", "startAt", 849336089), + En = new L(null, "getCurrentTime", "getCurrentTime", 697283642), + Fn = new L(null, "put", "put", 1299772570), + Gn = new rd(null, "CharAttrs", "CharAttrs", 1533586778, null), Hn = new L(null, + "top-margin", "top-margin", 655579514), In = new L(null, "unhook", "unhook", 1440586234), + Jn = new L(null, "play", "play", -580418022), Kn = new L(null, "seek", "seek", 758996602), + Ln = new rd(null, "chars", "chars", 545901210, null), + Mn = new L(null, "version", "version", 425292698), + Nn = new rd(null, "line", "line", 1852876762, null), + qi = new L(null, "on-pause", "on-pause", 1839279163), + On = new L(null, "visible", "visible", -1024216805), + Pn = new L(null, "autobind", "autobind", -570650245), + Qn = new L(null, "hierarchy", "hierarchy", -1053470341), Rn = new L(null, + "on-key-down", "on-key-down", -1374733765), pi = new L(null, "on-play", "on-play", -188934501), + Sn = new rd(null, "\x3d\x3e*", "\x3d\x3e*", 1909690043, null), + Si = new L(null, "alt-impl", "alt-impl", 670969595), Tn = new L(null, "bg", "bg", -206688421), + Un = new L(null, "p?", "p?", -1172161701), + Vn = new L(null, "onCanPlay", "onCanPlay", 197552027), + Wn = new L(null, "other-buffer-lines", "other-buffer-lines", -1562366021), + Xn = new rd(null, "record", "record", 861424668, null), + Yn = new L(null, "italic", "italic", 32599196), Zn = new rd(null, "required-key", + "required-key", 1624616412, null), $n = new L(null, "dcs-ignore", "dcs-ignore", 198619612), + ao = new rd(null, "optional", "optional", -600484260, null), + gj = new L(null, "keywordize-keys", "keywordize-keys", 1310784252), + bo = new rd(null, "Int", "Int", -2116888740, null), + co = new L(null, "span.time-remaining", "span.time-remaining", 706865437), + eo = new L(null, "componentWillMount", "componentWillMount", -285327619), + fo = new L(null, "idleTimeLimit", "idleTimeLimit", -867712227), + go = new L("internal", "seek", "internal/seek", -1958914115), ho = new L(null, + "href", "href", -793805698), io = new L(null, "buffer", "buffer", 617295198), + jo = new L(null, "img", "img", 1442687358), ko = new L(null, "stdout", "stdout", -531490018), + lo = new L(null, "a", "a", -2123407586), + mo = new L(null, "dangerouslySetInnerHTML", "dangerouslySetInnerHTML", -554971138), + no = new L(null, "height", "height", 1025178622), + oo = new rd("s", "Num", "s/Num", -2044935073, null), + po = new L(null, "clear", "clear", 1877104959), + ri = new L("cljs.core", "not-found", "cljs.core/not-found", -1572889185), + qo = new rd(null, "meta36583", "meta36583", + -346463841, null), ro = new L(null, "span", "span", 1394872991), + so = new L(null, "show", "show", -576705889), to = new rd(null, "f", "f", 43394975, null), + uo = new L(null, "onPause", "onPause", -470027297); + + function vo(a, b) { + var c = Kb(Ai, a, b); + return ae(c, vg(function (a) { + return function (b) { + return a === b + } + }(c), b)) + } + + var wo = function wo(a) { + switch (arguments.length) { + case 0: + return wo.B(); + case 1: + return wo.h(arguments[0]); + case 2: + return wo.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return wo.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + wo.B = function () { + return vi + }; + wo.h = function (a) { + return a + }; + wo.c = function (a, b) { + return H(a) < H(b) ? Mb(ge, b, a) : Mb(ge, a, b) + }; + wo.A = function (a, b, c) { + a = vo(H, ge.A(c, b, be([a]))); + return Mb(wg, y(a), vd(a)) + }; + wo.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return wo.A(b, a, c) + }; + wo.L = 2; + var xo = function xo(a) { + switch (arguments.length) { + case 1: + return xo.h(arguments[0]); + case 2: + return xo.c(arguments[0], arguments[1]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return xo.A(arguments[0], arguments[1], new Jb(c.slice(2), 0, null)) + } + }; + xo.h = function (a) { + return a + }; + xo.c = function (a, b) { + return H(a) < H(b) ? Mb(function (a, d) { + return He(b, d) ? re.c(a, d) : a + }, a, a) : Mb(re, a, b) + }; + xo.A = function (a, b, c) { + return Mb(xo, a, ge.c(c, b)) + }; + xo.N = function (a) { + var b = y(a), c = z(a); + a = y(c); + c = z(c); + return xo.A(b, a, c) + }; + xo.L = 2; + + function yo(a) { + var b = Pe([Lj, vl, tm, an, gn, Bn, Dn, Vn, fo, uo], [ni, pi, Bm, mi, Em, wk, Hk, oi, qm, qi]); + return Mb(function (b, d) { + var c = J(d, 0, null), f = J(d, 1, null); + return He(a, c) ? K.l(b, f, D.c(a, c)) : b + }, Kb(le, a, lh(b)), b) + }; + if ("undefined" === typeof zo) { + var zo = dg.h(null); + } + if ("undefined" === typeof Ao) { + var Ao = function () { + var a = {}; + a.warn = function () { + return function () { + function a(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var d = Array(arguments.length - 0); b < d.length;) { + d[b] = arguments[b + 0], ++b; + } + b = new Jb(d, 0, null) + } + return c.call(this, b) + } + + function c(a) { + return gg.A(zo, Ag, new R(null, 1, 5, T, [Pk], null), ge, be([P(v, a)])) + } + + a.L = 0; + a.N = function (a) { + a = E(a); + return c(a) + }; + a.A = c; + return a + }() + }(a); + a.error = function () { + return function () { + function a(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var d = Array(arguments.length - + 0); b < d.length;) { + d[b] = arguments[b + 0], ++b; + } + b = new Jb(d, 0, null) + } + return c.call(this, b) + } + + function c(a) { + return gg.A(zo, Ag, new R(null, 1, 5, T, [tn], null), ge, be([P(v, a)])) + } + + a.L = 0; + a.N = function (a) { + a = E(a); + return c(a) + }; + a.A = c; + return a + }() + }(a); + return a + }(); + } + + function Bo(a, b, c) { + var d = RegExp, e = b.source, f = t(b.ignoreCase) ? [v.h("g"), "i"].join("") : "g"; + f = t(b.multiline) ? [v.h(f), "m"].join("") : f; + b = t(b.cg) ? [v.h(f), "u"].join("") : f; + d = new d(e, b); + return a.replace(d, c) + } + + function Co(a) { + return function () { + function b(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var d = Array(arguments.length - 0); b < d.length;) { + d[b] = arguments[b + 0], ++b; + } + b = new Jb(d, 0, null) + } + return c.call(this, b) + } + + function c(b) { + b = lg(b); + if (G.c(H(b), 1)) { + return b = y(b), a.h ? a.h(b) : a.call(null, b); + } + b = Wg(b); + return a.h ? a.h(b) : a.call(null, b) + } + + b.L = 0; + b.N = function (a) { + a = E(a); + return c(a) + }; + b.A = c; + return b + }() + } + + function Do(a, b, c) { + if ("string" === typeof b) { + return a.replace(new RegExp( + String(b).replace(/([-()\[\]{}+?*.$\^|,:# H(a) ? a.toUpperCase() : [v.h(a.substring(0, 1).toUpperCase()), + v.h(a.substring(1))].join("") + } + + function Qo(a) { + if ("string" === typeof a) { + return a; + } + a = jf(a); + var b = Fo(a, /-/), c = E(b); + b = y(c); + c = z(c); + return t(Oo.h ? Oo.h(b) : Oo.call(null, b)) ? a : Kb(v, b, ig.c(Po, c)) + } + + function Ro(a) { + var b = function () { + var b = function () { + var b = me(a); + return b ? (b = a.displayName, t(b) ? b : a.name) : b + }(); + if (t(b)) { + return b; + } + b = function () { + var b = null != a ? a.J & 4096 || q === a.Oe ? !0 : !1 : !1; + return b ? jf(a) : b + }(); + if (t(b)) { + return b; + } + b = qe(a); + return xe(b) ? Tk.h(b) : null + }(); + return Do("" + v.h(b), "$", ".") + } + + var So = !1; + if ("undefined" === typeof To) { + var To = 0; + } + + function Uo(a) { + return setTimeout(a, 16) + } + + var Vo = "undefined" === typeof window || null == window.document ? Uo : function () { + var a = window, b = a.requestAnimationFrame; + if (t(b)) { + return b; + } + b = a.webkitRequestAnimationFrame; + if (t(b)) { + return b; + } + b = a.mozRequestAnimationFrame; + if (t(b)) { + return b; + } + a = a.msRequestAnimationFrame; + return t(a) ? a : Uo + }(); + + function Wo(a, b) { + return a.cljsMountOrder - b.cljsMountOrder + } + + if ("undefined" === typeof Xo) { + var Xo = function () { + return null + }; + } + + function Yo(a) { + this.Yd = a + } + + function Zo(a, b) { + var c = a[b]; + if (null == c) { + return null; + } + a[b] = null; + for (var d = c.length, e = 0; ;) { + if (e < d) { + var f = c[e]; + f.B ? f.B() : f.call(null); + e += 1 + } else { + return null + } + } + } + + function $o(a) { + if (a.Yd) { + return null; + } + a.Yd = !0; + a = function (a) { + return function () { + a.Yd = !1; + return ap(a) + } + }(a); + return Vo.h ? Vo.h(a) : Vo.call(null, a) + } + + function ap(a) { + Zo(a, "beforeFlush"); + Xo(); + var b = a.componentQueue; + if (null != b) { + a:{ + a.componentQueue = null, b.sort(Wo); + for (var c = b.length, d = 0; ;) { + if (d < c) { + var e = b[d]; + !0 === e.cljsIsDirty && e.forceUpdate(); + d += 1 + } else { + break a + } + } + } + } + return Zo(a, "afterRender") + } + + Yo.prototype.enqueue = function (a, b) { + null == this[a] && (this[a] = []); + this[a].push(b); + return $o(this) + }; + if ("undefined" === typeof bp) { + var bp = new Yo(!1); + } + + function cp(a) { + if (t(a.cljsIsDirty)) { + return null; + } + a.cljsIsDirty = !0; + return bp.enqueue("componentQueue", a) + };var dp; + if ("undefined" === typeof ep) { + var ep = !1; + } + if ("undefined" === typeof fp) { + var fp = 0; + } + if ("undefined" === typeof gp) { + var gp = dg.h(0); + } + + function hp(a, b) { + b.captured = null; + a:{ + var c = dp; + dp = b; + try { + var d = a.B ? a.B() : a.call(null); + break a + } finally { + dp = c + } + d = void 0 + } + var e = b.captured; + b.rc = !1; + a:{ + c = b.Nc; + var f = null == e ? 0 : e.length, h = f === (null == c ? 0 : c.length); + if (h) { + for (h = 0; ;) { + var k = h === f; + if (k) { + c = k; + break a + } + if (e[h] === c[h]) { + h += 1; + } else { + c = !1; + break a + } + } + } else { + c = h + } + } + if (!c) { + a:{ + c = yi(e); + f = yi(b.Nc); + b.Nc = e; + e = E(xo.c(c, f)); + h = null; + for (var l = k = 0; ;) { + if (l < k) { + var p = h.$(null, l); + Mc(p, b, ip); + l += 1 + } else if (e = E(e)) { + h = e, Ae(h) ? (e = Wc(h), l = Xc(h), h = e, k = H(e), e = l) : (e = y( + h), Mc(e, b, ip), e = z(h), h = null, k = + 0), l = 0; + } else { + break; + } + } + c = E(xo.c(f, c)); + f = null; + for (k = h = 0; ;) { + if (k < h) { + e = f.$(null, k), Nc(e, b), k += 1; + } else if (c = E( + c)) { + f = c, Ae(f) ? (c = Wc(f), h = Xc(f), f = c, e = H(c), c = h, h = e) : (e = y(f), Nc(e, + b), c = z(f), f = null, h = 0), k = 0; + } else { + break a + } + } + } + } + return d + } + + function jp(a) { + var b = dp; + if (null != b) { + var c = b.captured; + null == c ? b.captured = [a] : c.push(a) + } + } + + function kp(a, b) { + ep && gg.l(gp, Xe, H(b) - H(a)); + return b + } + + function lp(a, b, c) { + var d = a.gb; + a.gb = kp(d, K.l(d, b, c)); + return a.Ce = null + } + + function mp(a, b) { + var c = a.gb; + a.gb = kp(c, le.c(c, b)); + return a.Ce = null + } + + function np(a, b, c) { + var d = a.Ce; + d = null == d ? a.Ce = Ue(function () { + return function (a, b, c) { + a.push(b); + a.push(c); + return a + } + }(d), [], a.gb) : d; + for (var e = d.length, f = 0; ;) { + if (f < e) { + var h = d[f], k = d[f + 1]; + k.M ? k.M(h, a, b, c) : k.call(null, h, a, b, c); + f = 2 + f + } else { + return null + } + } + } + + function op(a, b, c, d) { + Jc(b, ["#\x3c", v.h(d), " "].join("")); + a:{ + d = dp; + dp = null; + try { + var e = B(a); + break a + } finally { + dp = d + } + e = void 0 + } + Qi(e, b, c); + return Jc(b, "\x3e") + } + + if ("undefined" === typeof pp) { + var pp = null; + } + + function qp() { + for (; ;) { + var a = pp; + if (null == a) { + return null; + } + pp = null; + for (var b = a.length, c = 0; ;) { + if (c < b) { + var d = a[c]; + d.rc && null != d.Nc && rp(d, !0); + c += 1 + } else { + break + } + } + } + } + + Xo = qp; + + function sp(a, b, c, d) { + this.state = a; + this.meta = b; + this.df = c; + this.gb = d; + this.m = 2153938944; + this.J = 114690 + } + + g = sp.prototype; + g.R = function (a, b, c) { + return op(this, b, c, "Atom:") + }; + g.P = function () { + return this.meta + }; + g.U = function () { + return ja(this) + }; + g.K = function (a, b) { + return this === b + }; + g.Gb = function (a, b) { + var c = this.state; + this.state = b; + null != this.gb && np(this, c, b); + return b + }; + g.je = function (a, b) { + return this.Gb(null, b.h ? b.h(this.state) : b.call(null, this.state)) + }; + g.ke = function (a, b, c) { + return this.Gb(null, b.c ? b.c(this.state, c) : b.call(null, this.state, c)) + }; + g.le = function (a, b, c, d) { + return this.Gb(null, b.l ? b.l(this.state, c, d) : b.call(null, this.state, c, d)) + }; + g.me = function (a, b, c, d, e) { + return this.Gb(null, Af(b, this.state, c, d, e)) + }; + g.Kd = function (a, b, c) { + return np(this, b, c) + }; + g.Jd = function (a, b, c) { + return lp(this, b, c) + }; + g.Ld = function (a, b) { + return mp(this, b) + }; + g.pc = function () { + jp(this); + return this.state + }; + var tp = function tp(a) { + switch (arguments.length) { + case 1: + return tp.h(arguments[0]); + default: + for (var c = [], d = arguments.length, e = 0; ;) { + if (e < d) { + c.push( + arguments[e]), e += 1; + } else { + break; + } + } + return tp.A(arguments[0], new Jb(c.slice(1), 0, null)) + } + }; + tp.h = function (a) { + return new sp(a, null, null, null) + }; + tp.A = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, rb); + c = D.c(c, eg); + return new sp(a, d, c, null) + }; + tp.N = function (a) { + var b = y(a); + a = z(a); + return tp.A(b, a) + }; + tp.L = 1; + var up = function up(a) { + if (null != a && null != a.we) { + return a.we(); + } + var c = up[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = up._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("IDisposable.dispose!", a); + }; + + function ip(a, b, c, d) { + c === d || a.rc ? a = null : null == a.Sb ? (a.rc = !0, null == pp && (pp = [], !1 === bp.Yd + && $o(bp)), a = pp.push(a)) : a = !0 === a.Sb ? rp(a, !1) : a.Sb.h ? a.Sb.h(a) : a.Sb.call(null, + a); + return a + } + + function vp(a, b, c, d, e, f, h, k) { + this.Cb = a; + this.state = b; + this.rc = c; + this.We = d; + this.Nc = e; + this.gb = f; + this.Sb = h; + this.ee = k; + this.m = 2153807872; + this.J = 114690 + } + + function wp(a) { + var b = dp; + dp = null; + try { + return a.pc(null) + } finally { + dp = b + } + } + + function rp(a, b) { + var c = a.state; + if (t(b)) { + var d = a.Cb; + try { + a.ee = null; + var e = hp(d, a) + } catch (f) { + e = f, a.state = e, a.ee = e, e = a.rc = !1 + } + } else { + e = hp(a.Cb, a); + } + a.We || (a.state = e, null == a.gb || G.c(c, e) || np(a, c, e)); + return e + } + + function xp(a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, Rm), e = D.c(c, Tj), + f = D.c(c, on); + c = D.c(c, xm); + null != d && (a.Sb = d); + null != e && (a.Jf = e); + null != f && (a.Ze = f); + null != c && (a.We = c) + } + + g = vp.prototype; + g.R = function (a, b, c) { + return op(this, b, c, ["Reaction ", v.h(od(this)), ":"].join("")) + }; + g.U = function () { + return ja(this) + }; + g.K = function (a, b) { + return this === b + }; + g.we = function () { + var a = this.state, b = this.Nc; + this.Sb = this.state = this.Nc = null; + this.rc = !0; + b = E(yi(b)); + for (var c = null, d = 0, e = 0; ;) { + if (e < d) { + var f = c.$(null, e); + Nc(f, this); + e += 1 + } else if (b = E(b)) { + c = b, Ae(c) ? (b = Wc(c), e = Xc(c), c = b, d = H(b), b = e) : (b = y( + c), Nc(b, this), b = z(c), c = null, d = 0), e = 0; + } else { + break; + } + } + null != this.Ze && this.Ze(a); + a = this.bg; + if (null == a) { + return null; + } + b = a.length; + for (c = 0; ;) { + if (c < b) { + d = a[c], d.h ? d.h(this) : d.call(null, + this), c += 1; + } else { + return null + } + } + }; + g.Gb = function (a, b) { + var c = this.state; + this.state = b; + this.Jf(c, b); + np(this, c, b); + return b + }; + g.je = function (a, b) { + var c = this; + return c.Gb(null, function () { + var a = wp(c); + return b.h ? b.h(a) : b.call(null, a) + }()) + }; + g.ke = function (a, b, c) { + var d = this; + return d.Gb(null, function () { + var a = wp(d); + return b.c ? b.c(a, c) : b.call(null, a, c) + }()) + }; + g.le = function (a, b, c, d) { + var e = this; + return e.Gb(null, function () { + var a = wp(e); + return b.l ? b.l(a, c, d) : b.call(null, a, c, d) + }()) + }; + g.me = function (a, b, c, d, e) { + return this.Gb(null, Af(b, wp(this), c, d, e)) + }; + g.Kd = function (a, b, c) { + return np(this, b, c) + }; + g.Jd = function (a, b, c) { + return lp(this, b, c) + }; + g.Ld = function (a, b) { + var c = te(this.gb); + mp(this, b); + return !c && te(this.gb) && null == this.Sb ? this.we() : null + }; + g.pc = function () { + var a = this.ee; + if (null != a) { + throw a; + } + (a = null == dp) && qp(); + a && null == this.Sb ? this.rc && (a = this.state, this.state = this.Cb.B ? this.Cb.B() + : this.Cb.call(null), null == this.gb || G.c(a, this.state) || np(this, a, this.state)) : (jp( + this), this.rc && rp(this, !1)); + return this.state + }; + + function yp(a) { + for (var b = [], c = arguments.length, d = 0; ;) { + if (d < c) { + b.push( + arguments[d]), d += 1; + } else { + break; + } + } + c = arguments[0]; + b = 1 < b.length ? new Jb(b.slice(1), 0, null) : null; + var e = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(e, Rm); + d = D.c(e, Tj); + e = D.c(e, on); + c = new vp(c, null, !0, !1, null, null, null, null); + xp(c, new r(null, 3, [Rm, b, Tj, d, on, e], null)); + return c + } + + var zp = yp(null); + + function Ap(a, b) { + var c = Bp, d = zp, e = hp(a, d); + null != d.Nc && (zp = yp(null), xp(d, c), d.Cb = a, d.Sb = function () { + return function () { + return cp.h ? cp.h(b) : cp.call(null, b) + } + }(d, e), b.cljsRatom = d); + return e + };var Cp; + + function Dp(a, b) { + var c = b.argv; + if (null == c) { + c = T; + var d = a.constructor; + a:for (var e = Ea(b), f = e.length, h = Ef, k = 0; ;) { + if (k < f) { + var l = e[k]; + h = K.l(h, hf.h(l), b[l]); + k += 1 + } else { + break a; + } + } + c = new R(null, 2, 5, c, [d, h], null) + } + return c + } + + function Ep(a) { + var b; + if (b = me(a)) { + a = null == a ? null : a.prototype, b = null != (null == a ? null + : a.reagentRender); + } + return b + } + + if ("undefined" === typeof Fp) { + var Fp = null; + } + + function Gp(a) { + for (; ;) { + var b = a.reagentRender, c = !0 === a.cljsLegacyRender ? b.call(a, a) : function () { + var c = Dp(a, a.props); + switch (H(c)) { + case 1: + return b.call(a); + case 2: + return b.call(a, Vd(c, 1)); + case 3: + return b.call(a, Vd(c, 1), Vd(c, 2)); + case 4: + return b.call(a, Vd(c, 1), Vd(c, 2), Vd(c, 3)); + case 5: + return b.call(a, Vd(c, 1), Vd(c, 2), Vd(c, 3), Vd(c, 4)); + default: + return b.apply(a, Lb(c).slice(1)) + } + }(); + if (ze(c)) { + return Fp.h ? Fp.h(c) : Fp.call(null, c); + } + if (Fe(c)) { + c = Ep(c) ? function (a, b, c, h) { + return function () { + function a(a) { + var c = null; + if (0 < arguments.length) { + c = + 0; + for (var d = Array(arguments.length - 0); c < d.length;) { + d[c] = arguments[c + 0], ++c; + } + c = new Jb(d, 0, null) + } + return b.call(this, c) + } + + function b(a) { + a = Kb(Xg, h, a); + return Fp.h ? Fp.h(a) : Fp.call(null, a) + } + + a.L = 0; + a.N = function (a) { + a = E(a); + return b(a) + }; + a.A = b; + return a + }() + }(a, b, null, c) : c, a.reagentRender = c; + } else { + return c + } + } + } + + var Bp = new r(null, 1, [xm, !0], null), Hp = new r(null, 1, [zm, function () { + var a = this.cljsRatom; + this.cljsIsDirty = !1; + return null == a ? Ap(function (a, c) { + return function () { + a:{ + var a = Cp; + Cp = c; + try { + var b = Gp(c); + break a + } finally { + Cp = a + } + b = void 0 + } + return b + } + }(a, this), this) : rp(a, !1) + }], null); + + function Ip(a, b) { + var c = a instanceof L ? a.ea : null; + switch (c) { + case "getDefaultProps": + throw Error("getDefaultProps not supported"); + case "getInitialState": + return function () { + return function () { + var a = this.cljsState; + a = null != a ? a : this.cljsState = tp.h(null); + return fg(a, b.call(this, this)) + } + }(a, c); + case "componentWillReceiveProps": + return function () { + return function (a) { + return b.call(this, this, Dp(this, a)) + } + }(a, c); + case "shouldComponentUpdate": + return function () { + return function (a) { + var c = So; + if (c) { + return c; + } + c = this.props.argv; + var d = a.argv, h = null == c || null == d; + return null == b ? h || !G.c(c, d) : h ? b.call(this, this, Dp(this, this.props), + Dp(this, a)) : b.call(this, this, c, d) + } + }(a, c); + case "componentWillUpdate": + return function () { + return function (a) { + return b.call(this, this, Dp(this, a)) + } + }(a, c); + case "componentDidUpdate": + return function () { + return function (a) { + return b.call(this, this, Dp(this, a)) + } + }(a, c); + case "componentWillMount": + return function () { + return function () { + this.cljsMountOrder = To += 1; + return null == b ? null : b.call(this, this) + } + }(a, c); + case "componentDidMount": + return function () { + return function () { + return b.call(this, + this) + } + }(a, c); + case "componentWillUnmount": + return function () { + return function () { + var a = this.cljsRatom; + null != a && up(a); + this.cljsIsDirty = !1; + return null == b ? null : b.call(this, this) + } + }(a, c); + default: + return null + } + } + + function Jp(a, b) { + var c = Ip(a, b); + return t(c) ? c : b + } + + var Kp = new r(null, 3, [dm, null, eo, null, Kl, null], null), Lp = function (a) { + return function (b) { + return function (c) { + var d = D.c(B(b), c); + if (null != d) { + return d; + } + d = a.h ? a.h(c) : a.call(null, c); + gg.M(b, K, c, d); + return d + } + }(dg.h(Ef)) + }(Qo); + + function Mp(a) { + return Ue(function (a, c, d) { + return K.l(a, hf.h(Lp.h ? Lp.h(c) : Lp.call(null, c)), d) + }, Ef, a) + } + + function Np(a) { + var b = function () { + var b = pm.h(a); + return t(b) ? b : wn.h(a) + }(), c = null == b, d = t(b) ? b : zm.h(a), e = "" + v.h(function () { + var b = Bk.h(a); + return t(b) ? b : Ro(d) + }()); + a:switch (e) { + case "": + var f = "" + v.h(Zi()); + break a; + default: + f = e + } + b = Ue(function () { + return function (a, b, c) { + return K.l(a, b, Jp(b, c)) + } + }(b, c, d, e, f), Ef, a); + return K.A(b, Bk, f, be([Pn, !1, bk, c, pm, d, zm, zm.h(Hp)])) + } + + function Op(a) { + return Ue(function (a, c, d) { + a[jf(c)] = d; + return a + }, {}, a) + } + + function Pp(a) { + a = Op(Np(hi.A(be([Kp, Mp(a)])))); + return Ko.h ? Ko.h(a) : Ko.call(null, a) + };var Qp = /([^\s\.#]+)(?:#([^\s\.#]+))?(?:\.([^\s#]+))?/; + + function Rp(a) { + return a instanceof L || a instanceof rd + } + + var Sp = {"class": "className", "for": "htmlFor", charset: "charSet"}; + + function Tp(a, b, c) { + if (Rp(b)) { + var d = jf(b); + d = Sp.hasOwnProperty(d) ? Sp[d] : null; + b = null == d ? Sp[jf(b)] = Qo(b) : d + } + a[b] = Up.h ? Up.h(c) : Up.call(null, c); + return a + } + + function Up(a) { + return "object" !== n(a) ? a : Rp(a) ? jf(a) : xe(a) ? Ue(Tp, {}, a) : ue(a) ? cj(a) : Fe(a) + ? function () { + function b(a) { + var b = null; + if (0 < arguments.length) { + b = 0; + for (var d = Array(arguments.length - 0); b < d.length;) { + d[b] = arguments[b + 0], ++b; + } + b = new Jb(d, 0, null) + } + return c.call(this, b) + } + + function c(b) { + return P(a, b) + } + + b.L = 0; + b.N = function (a) { + a = E(a); + return c(a) + }; + b.A = c; + return b + }() : cj(a) + } + + function Vp(a, b, c) { + a = null == a ? {} : a; + a[b] = c; + return a + } + + if ("undefined" === typeof Wp) { + var Wp = null; + } + var Xp = new ti(null, new r(null, 6, + ["url", null, "tel", null, "text", null, "textarea", null, "password", null, "search", null], + null), null), Yp = function Yp(a) { + if (t(a.cljsInputLive)) { + a.cljsInputDirty = !1; + var c = a.cljsRenderedValue, d = a.cljsDOMValue, e = Wp.h ? Wp.h(a) : Wp.call(null, a); + if (!G.c(c, d)) { + if (e === document.activeElement && He(Xp, e.type) && "string" === typeof c && "string" + === typeof d) { + var f = e.value; + if (!G.c(f, d)) { + return bp.enqueue("afterRender", function () { + return function () { + return Yp.h ? Yp.h(a) : Yp.call(null, a) + } + }(f, c, d, e)); + } + d = + H(f) - e.selectionStart; + d = H(c) - d; + a.cljsDOMValue = c; + e.value = c; + e.selectionStart = d; + return e.selectionEnd = d + } + a.cljsDOMValue = c; + return e.value = c + } + } + return null + }; + + function Zp(a, b, c) { + a.cljsDOMValue = c.target.value; + t(a.cljsInputDirty) || (a.cljsInputDirty = !0, bp.enqueue("afterRender", function () { + return Yp(a) + })); + return b.h ? b.h(c) : b.call(null, c) + } + + function $p(a) { + var b = Cp; + if (t(function () { + var b = null != a; + return b ? (b = a.hasOwnProperty("onChange"), t(b) ? a.hasOwnProperty("value") : b) : b + }())) { + var c = a.value, d = null == c ? "" : c, e = a.onChange; + t(b.cljsInputLive) || (b.cljsInputLive = !0, b.cljsDOMValue = d); + b.cljsRenderedValue = d; + delete a.value; + a.defaultValue = d; + a.onChange = function (a, c, d, e) { + return function (a) { + return Zp(b, e, a) + } + }(a, c, d, e) + } + } + + var aq = null, cq = new r(null, 4, [ln, "ReagentInput", nl, Yp, Wm, function (a) { + return a.cljsInputLive = null + }, Dm, function (a, b, c, d) { + $p(c); + return bq.M ? bq.M(a, b, c, d) : bq.call(null, a, b, c, d) + }], null); + + function dq(a) { + if (xe(a)) { + try { + var b = D.c(a, mk) + } catch (c) { + b = null + } + } else { + b = null; + } + return b + } + + var eq = {}; + + function fq(a, b, c) { + var d = a.name, e = J(b, c, null), f = null == e || xe(e); + e = Up(f ? e : null); + var h = a.id; + e = null != h && null == (null == e ? null : e.id) ? Vp(e, "id", h) : e; + a = a.className; + null == a ? a = e : (h = null == e ? null : e.className, a = Vp(e, "className", + null == h ? a : [v.h(a), " ", v.h(h)].join(""))); + c += f ? 1 : 0; + a:switch (d) { + case "input": + case "textarea": + f = !0; + break a; + default: + f = !1 + } + if (f) { + return f = T, null == aq && (aq = Pp(cq)), b = pe( + new R(null, 5, 5, f, [aq, b, d, a, c], null), qe(b)), gq.h ? gq.h(b) : gq.call(null, b); + } + f = dq(qe(b)); + f = null == f ? a : Vp(a, "key", f); + return bq.M ? bq.M(b, + d, f, c) : bq.call(null, b, d, f, c) + } + + function hq(a) { + for (; ;) { + var b = J(a, 0, null); + if (Rp(b) || "string" === typeof b) { + b = jf(b); + var c = b.indexOf("\x3e"); + switch (c) { + case -1: + c = b; + b = eq; + var d = c; + b = b.hasOwnProperty(d) ? b[d] : null; + if (null == b) { + b = c; + var e = z(Ji(Qp, jf(c))); + c = J(e, 0, null); + d = J(e, 1, null); + e = J(e, 2, null); + e = null == e ? null : Do(e, /\./, " "); + b = eq[b] = {name: c, id: d, className: e} + } + return fq(b, a, 1); + case 0: + return b = J(a, 1, null), fq({name: b}, a, 2); + default: + a = new R(null, 2, 5, T, [b.substring(0, c), K.l(a, 0, b.substring(c + 1))], null) + } + } else { + return c = b.cljsReactClass, null == c ? Ep(b) ? + b = b.cljsReactClass = b : (c = qe(b), c = K.l(c, Dm, b), c = Pp( + c), b = b.cljsReactClass = c) : b = c, c = {argv: a}, d = dq(qe(a)), a = null == d ? dq( + J(a, 1, null)) : d, null != a && (c.key = a), Go.createElement(b, c) + } + } + } + + function gq(a) { + return "object" !== n(a) ? a : ze(a) ? hq(a) : De(a) ? iq.h ? iq.h(a) : iq.call(null, a) : Rp(a) + ? jf(a) : (null != a ? a.m & 2147483648 || q === a.ma || (a.m ? 0 : Ab(Kc, a)) : Ab(Kc, a)) + ? Vi(be([a])) : a + } + + Fp = gq; + + function iq(a) { + a = Lb(a); + for (var b = a.length, c = 0; ;) { + if (c < b) { + a[c] = gq(a[c]), c += 1; + } else { + break; + } + } + return a + } + + function bq(a, b, c, d) { + var e = H(a) - d; + switch (e) { + case 0: + return Go.createElement(b, c); + case 1: + return Go.createElement(b, c, gq(J(a, d, null))); + default: + return Go.createElement.apply(null, Ue(function () { + return function (a, b, c) { + b >= d && a.push(gq(c)); + return a + } + }(e), [b, c], a)) + } + }; + if ("undefined" === typeof jq) { + var jq = null; + } + + function kq() { + if (null != jq) { + return jq; + } + if ("undefined" !== typeof ReactDOM) { + return jq = ReactDOM; + } + if ("undefined" !== typeof require) { + var a = jq = require("react-dom"); + if (t(a)) { + return a; + } + throw Error("require('react-dom') failed"); + } + throw Error("js/ReactDOM is missing"); + } + + if ("undefined" === typeof lq) { + var lq = dg.h(Ef); + } + + function mq(a, b, c) { + var d = So; + So = !0; + try { + return kq().render(a.B ? a.B() : a.call(null), b, function () { + return function () { + var d = So; + So = !1; + try { + return gg.M(lq, K, b, new R(null, 2, 5, T, [a, b], null)), Zo(bp, "afterRender"), null + != c ? c.B ? c.B() : c.call(null) : null + } finally { + So = d + } + } + }(d)) + } finally { + So = d + } + } + + function nq(a, b) { + return mq(a, b, null) + } + + function oq(a, b, c) { + qp(); + return mq(function () { + return gq(me(a) ? a.B ? a.B() : a.call(null) : a) + }, b, c) + } + + Wp = function (a) { + return kq().findDOMNode(a) + }; + + function pq(a) { + switch (arguments.length) { + case 2: + return oq(arguments[0], arguments[1], null); + case 3: + return oq(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + } + + function qq(a, b) { + return oq(a, b, null) + } + + da("reagent.core.force_update_all", function () { + qp(); + qp(); + for (var a = E(mh(B(lq))), b = null, c = 0, d = 0; ;) { + if (d < c) { + var e = b.$(null, d); + P(nq, e); + d += 1 + } else if (a = E(a)) { + b = a, Ae(b) ? (a = Wc(b), d = Xc(b), b = a, c = H(a), a = d) : (a = y( + b), P(nq, a), a = z(b), b = null, c = 0), d = 0; + } else { + break; + } + } + return Zo(bp, "afterRender") + }); + var rq = yi( + df(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 28, + 29, 30, 31)), sq = ke([yi( + df(24, 26, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 145, + 146, 147, 148, 149, 150, 151, 153, 154)), new r(null, 2, [qn, xl, yk, uk], null), yi(df(156)), + new r(null, 1, [yk, uk], null), yi(df(27)), new r(null, 1, [yk, Gj], null), + yi(df(152, 158, 159)), new r(null, 1, [yk, ll], null), yi(df(144)), + new r(null, 1, [yk, ql], null), yi(df(157)), new r(null, 1, [yk, Rk], null), yi(df(155)), + new r(null, 1, [yk, Hl], null)]), tq = Pe([Ej, Gj, + uk, Fk, Jk, Qk, Rk, ll, ql, Hl, jm, om, Cm, $n], [ke([rq, new r(null, 1, [qn, Ul], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), + new r(null, 2, [qn, Fm, yk, Qk], null), yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59)), + new r(null, 1, [qn, Xl], null), yi(df(58, 60, 61, 62, 63)), new r(null, 1, [yk, $n], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126)), + new r(null, 1, [yk, Fk], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), Pe( + [Sk, yi(df(88, 94, 95)), rq, yi(df(91)), yi(df(80)), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), yi(df(127)), yi( + df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 89, 90, 92, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126)), yi(df(93))], + [po, new r(null, 1, [yk, ll], null), new r(null, 1, [qn, xl], + null), new r(null, 1, [yk, Hl], null), new r(null, 1, [yk, ql], null), + new r(null, 2, [qn, Fm, yk, jm], null), new r(null, 1, [qn, Ul], null), + new r(null, 2, [qn, Pj, yk, uk], null), new r(null, 1, [yk, Rk], null)]), ke( + [rq, new r(null, 1, [qn, xl], null), yi( + df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255)), + new r(null, 1, [qn, Pl], null)]), + ke([Sk, zj, rq, new r(null, 1, [qn, Fn], null), yi(df(32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126)), new r(null, 1, [qn, Fn], null), yi(df(127)), + new r(null, 1, [qn, Ul], null), El, In]), ke( + [rq, new r(null, 1, [qn, xl], null), yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59)), + new r(null, 1, [qn, Xl], null), yi(df(58, 60, 61, 62, + 63)), new r(null, 1, [yk, Cm], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), + new r(null, 2, [qn, Fm, yk, om], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126)), new r(null, 2, [qn, Rl, yk, uk], null), yi(df(127)), + new r(null, 1, [qn, Ul], null)]), ke([rq, new r(null, 1, [qn, Ul], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47)), new r(null, 1, [qn, Fm], null), + yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)), + new r(null, 1, [yk, $n], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126)), new r(null, 1, [yk, Fk], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), + ke([Sk, um, re.c(rq, 7), new r(null, 1, [qn, Ul], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127)), + new r(null, 1, [qn, ak], null), yi(df(7)), new r(null, 1, [yk, uk], null), El, Wj]), ke( + [rq, new r(null, 1, [qn, Ul], null), yi( + df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127)), + new r(null, 1, [qn, Ul], null)]), ke([Sk, po, rq, new r(null, 1, [qn, Ul], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), + new r(null, 2, [qn, Fm, yk, Qk], null), yi(df(58)), new r(null, 1, [yk, $n], null), + yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59)), new r(null, 2, [qn, Xl, yk, Ej], null), + yi(df(60, 61, 62, 63)), new r(null, + 2, [qn, Fm, yk, Ej], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126)), new r(null, 1, [yk, Fk], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), + ke([Sk, po, rq, new r(null, 1, [qn, xl], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126)), + new r(null, 2, [qn, Rl, yk, uk], null), yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59)), + new r(null, 2, [qn, Xl, yk, Jk], null), yi(df(60, 61, 62, 63)), + new r(null, 2, [qn, Fm, yk, Jk], null), yi(df(58)), new r(null, 1, [yk, Cm], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), + new r(null, 2, [qn, Fm, yk, om], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), ke( + [rq, new r(null, 1, [qn, xl], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), new r(null, + 1, [qn, Fm], null), yi( + df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126)), + new r(null, 2, [qn, Pj, yk, uk], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), ke( + [rq, new r(null, 1, [qn, xl], null), + yi(df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)), + new r(null, 1, [qn, Fm], null), yi(df(64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126)), + new r(null, 2, [qn, Rl, yk, uk], null), + yi(df(48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)), + new r(null, 1, [yk, Cm], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), ke( + [rq, new r(null, 1, [qn, xl], null), yi( + df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)), new r(null, + 1, [qn, Ul], null), yi( + df(64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126)), new r(null, 1, [yk, uk], null), yi(df(127)), new r(null, 1, [qn, Ul], null)]), + ke([rq, new r(null, 1, [qn, Ul], null), yi( + df(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127)), new r(null, 1, [qn, Ul], null)])]); + + function uq(a, b) { + return Wf(function (a) { + var c = J(a, 0, null); + a = J(a, 1, null); + return t(c.h ? c.h(b) : c.call(null, b)) ? a : null + }, a) + } + + function vq(a, b) { + var c = D.c(tq, a), d = uq(sq, b); + var e = t(d) ? d : uq(c, 160 <= b ? 65 : b); + d = qn.h(e); + e = yk.h(e); + if (t(e)) { + var f = D.c(tq, e); + c = El.h(c); + f = Sk.h(f); + d = Wg(vg(ub, new R(null, 3, 5, T, [c, d, f], null))); + return new R(null, 2, 5, T, [e, d], null) + } + return new R(null, 2, 5, T, [a, t(d) ? new R(null, 1, 5, T, [d], null) : he], null) + } + + var xq = P(hi, function wq(a) { + return new kf(null, function () { + for (; ;) { + var c = E(a); + if (c) { + if (Ae(c)) { + var d = Wc(c), e = H(d), f = of(e); + a:for (var h = 0; ;) { + if (h < e) { + var k = A.c(d, h); + k = ke([k, xg(ag.c(vq, k), Fi(0, 160, 1))]); + f.add(k); + h += 1 + } else { + d = !0; + break a + } + } + return d ? qf(f.Da(), wq(Xc(c))) : qf(f.Da(), null) + } + f = y(c); + return ae(ke([f, xg(ag.c(vq, f), Fi(0, 160, 1))]), wq(vd(c))) + } + return null + } + }, null, null) + }(lh(tq))); + + function yq(a, b) { + var c = Array.prototype.slice.call(arguments), d = c.shift(); + if ("undefined" == typeof d) { + throw Error("[goog.string.format] Template required"); + } + return d.replace(/%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g, function (a, b, d, k, l, p, m, u) { + if ("%" == p) { + return "%"; + } + var e = c.shift(); + if ("undefined" == typeof e) { + throw Error("[goog.string.format] Not enough arguments"); + } + arguments[0] = e; + return yq.fc[p].apply(null, arguments) + }) + } + + yq.fc = {}; + yq.fc.s = function (a, b, c) { + return isNaN(c) || "" == c || a.length >= Number(c) ? a : a = -1 < b.indexOf("-", 0) ? a + sa( + " ", Number(c) - a.length) : sa(" ", Number(c) - a.length) + a + }; + yq.fc.f = function (a, b, c, d, e) { + d = a.toString(); + isNaN(e) || "" == e || (d = parseFloat(a).toFixed(e)); + var f = 0 > Number(a) ? "-" : 0 <= b.indexOf("+") ? "+" : 0 <= b.indexOf(" ") ? " " : ""; + 0 <= Number(a) && (d = f + d); + if (isNaN(c) || d.length >= Number(c)) { + return d; + } + d = isNaN(e) ? Math.abs(Number(a)).toString() : Math.abs(Number(a)).toFixed(e); + a = Number(c) - d.length - f.length; + 0 <= b.indexOf("-", 0) ? d = f + d + sa(" ", a) : (b = 0 <= b.indexOf("0", 0) ? "0" : " ", d = f + + sa(b, a) + d); + return d + }; + yq.fc.d = function (a, b, c, d, e, f, h, k) { + return yq.fc.f(parseInt(a, 10), b, c, d, 0, f, h, k) + }; + yq.fc.i = yq.fc.d; + yq.fc.u = yq.fc.d; + + function zq(a) { + var b = be([Vk, null]); + return wg.c(t(a) ? a : Ef, function () { + return function e(a) { + return new kf(null, function () { + for (var b = a; ;) { + if (b = E(b)) { + if (Ae(b)) { + var d = Wc(b), k = H(d), l = of(k); + a:for (var p = 0; ;) { + if (p < k) { + var m = A.c(d, p), u = J(m, 0, null); + m = J(m, 1, null); + t(m) && l.add(new R(null, 2, 5, T, [u, m], null)); + p += 1 + } else { + d = !0; + break a + } + } + return d ? qf(l.Da(), e(Xc(b))) : qf(l.Da(), null) + } + d = y(b); + l = J(d, 0, null); + d = J(d, 1, null); + if (t(d)) { + return ae(new R(null, 2, 5, T, [l, d], null), e(vd(b))); + } + b = vd(b) + } else { + return null + } + } + }, null, null) + }(yg(2, 2, b)) + }()) + } + + function Aq(a) { + for (var b = [], c = arguments.length, d = 0; ;) { + if (d < c) { + b.push( + arguments[d]), d += 1; + } else { + break; + } + } + return Bq(arguments[0], 1 < b.length ? new Jb(b.slice(1), 0, null) : null) + } + + function Bq(a, b) { + return Kb(yq, a, b) + } + + dg.h(19); + + function Cq(a) { + return Mb(function (a, c) { + var b = J(c, 0, null), e = J(c, 1, null); + return Do(a, e, "" + v.h(b)) + }, a, Oe(function (a) { + return -H(ee(a)) + })) + } + + function Dq(a) { + a = "" + v.h(a); + var b = /function ([^\(]*)\(/; + if ("string" === typeof a) { + a = b.exec(a), a = null == a ? null : 1 === H(a) ? y(a) : Wg( + a); + } else { + throw new TypeError("re-find must match against a string."); + } + a = Bf(ee(a)); + return Cq(t(a) ? a : "function") + } + + function Eq(a, b) { + a.schema$utils$schema = b + } + + dg.h(!1); + var Fq, Gq = function Gq(a) { + if (null != a && null != a.xb) { + return a.xb(a); + } + var c = Gq[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Gq._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Schema.explain", a); + }; + Gq["function"] = function (a) { + var b = a.schema$utils$schema; + return t(b) ? Gq(b) : t(G.c ? G.c(null, a) : G.call(null, null, a)) ? Wl : t( + G.c ? G.c(Boolean, a) : G.call(null, Boolean, a)) ? xk : t( + G.c ? G.c(Number, a) : G.call(null, Number, a)) ? sl : t( + G.c ? G.c(null, a) : G.call(null, null, a)) ? Cl : t( + G.c ? G.c(Date, a) : G.call(null, Date, a)) ? Ll : t(G.c ? G.c(yj, a) : G.call(null, yj, a)) + ? ym : a + }; + + function Hq(a, b, c, d) { + this.nc = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = Hq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "_": + return this.nc; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.AnythingSchema{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Ck, this.nc], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [Ck], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1432036169 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.nc, b.nc) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [Ck, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Hq(this.nc, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Ck, b) : N.call(null, Ck, b)) ? new Hq(c, this.v, this.j, null) : new Hq( + this.nc, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Ck, this.nc], null)], null), this.j)) + }; + g.T = function (a, b) { + return new Hq(this.nc, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + return Al + }; + var Iq = new Hq(null, null, null, null); + + function Jq(a, b, c, d, e) { + this.wb = a; + this.Xb = b; + this.v = c; + this.j = d; + this.w = e; + this.m = 2229667594; + this.J = 139264 + } + + g = Jq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "p?": + return this.wb; + case "pred-name": + return this.Xb; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.Predicate{", ", ", "}", c, O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Un, this.wb], null), new R(null, 2, 5, T, [Tm, this.Xb], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 2, new R(null, 2, 5, T, [Un, Tm], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 2 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 2041221968 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.wb, b.wb) && G.c(this.Xb, + b.Xb) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 2, [Tm, null, Un, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Jq(this.wb, this.Xb, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Un, b) : N.call(null, Un, b)) ? new Jq(c, this.Xb, this.v, this.j, null) : t( + N.c ? N.c(Tm, b) : N.call(null, Tm, b)) ? new Jq(this.wb, c, this.v, this.j, null) : new Jq( + this.wb, this.Xb, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Un, this.wb], null), new R(null, 2, 5, T, [Tm, this.Xb], null)], null), + this.j)) + }; + g.T = function (a, b) { + return new Jq(this.wb, this.Xb, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + return G.c(this.wb, Ge) ? bo : G.c(this.wb, gf) ? kn : G.c(this.wb, qd) ? hk : G.c(this.wb, yb) + ? Wl : Tb(Tb(wd, this.Xb), yl) + }; + + function Kq(a) { + var b = td.h(Dq(a)); + if (!Fe(a)) { + throw Error(Bq("Not a function: %s", be([a]))); + } + return new Jq(a, b, null, null, null) + } + + RegExp.prototype.xb = function () { + return td.h(['#"', v.h(("" + v.h(this)).slice(1, -1)), '"'].join("")) + }; + var Lq = Kq(yb), Mq = Boolean, Nq = Number, Oq = Kq(Ge), Pq = Kq(gf); + Kq(qd); + "undefined" === typeof Fq && (Fq = function (a) { + this.Bf = a; + this.m = 393216; + this.J = 0 + }, Fq.prototype.T = function (a, b) { + return new Fq(b) + }, Fq.prototype.P = function () { + return this.Bf + }, Fq.prototype.xb = function () { + return Cl + }, Fq.Wc = function () { + return new R(null, 1, 5, T, [bn], null) + }, Fq.qc = !0, Fq.Tb = "schema.core/t_schema$core38849", Fq.Ec = function (a, b) { + return Jc(b, "schema.core/t_schema$core38849") + }); + + function Qq(a, b, c, d) { + this.ia = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = Qq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "schema": + return this.ia; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.Maybe{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Mj, this.ia], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [Mj], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -805411239 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.ia, b.ia) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [Mj, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Qq(this.ia, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Mj, b) : N.call(null, Mj, b)) ? new Qq(c, this.v, this.j, null) : new Qq( + this.ia, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Mj, this.ia], null)], null), this.j)) + }; + g.T = function (a, b) { + return new Qq(this.ia, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + var a = Gq(this.ia); + a = Tb(wd, a); + return Tb(a, am) + }; + + function Rq(a, b, c, d, e) { + this.Yb = a; + this.Hb = b; + this.v = c; + this.j = d; + this.w = e; + this.m = 2229667594; + this.J = 139264 + } + + g = Rq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "preds-and-schemas": + return this.Yb; + case "error-symbol": + return this.Hb; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.ConditionalSchema{", ", ", "}", c, O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Il, this.Yb], null), new R(null, 2, 5, T, [Om, this.Hb], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 2, new R(null, 2, 5, T, [Il, Om], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 2 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1418435858 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.Yb, b.Yb) && G.c(this.Hb, + b.Hb) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 2, [Il, null, Om, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Rq(this.Yb, this.Hb, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Il, b) : N.call(null, Il, b)) ? new Rq(c, this.Hb, this.v, this.j, null) : t( + N.c ? N.c(Om, b) : N.call(null, Om, b)) ? new Rq(this.Yb, c, this.v, this.j, null) : new Rq( + this.Yb, this.Hb, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Il, this.Yb], null), new R(null, 2, 5, T, [Om, this.Hb], null)], null), + this.j)) + }; + g.T = function (a, b) { + return new Rq(this.Yb, this.Hb, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + return ae(pk, O.c(sg(function () { + return function (a) { + var b = J(a, 0, null); + a = J(a, 1, null); + return new R(null, 2, 5, T, [td.h(Dq(b)), Gq(a)], null) + } + }(this), be([this.Yb])), t(this.Hb) ? new R(null, 1, 5, T, [this.Hb], null) : null)) + }; + + function Sq(a) { + return a instanceof L || !1 + } + + function Tq(a, b, c, d) { + this.k = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = Tq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "k": + return this.k; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.OptionalKey{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Yl, this.k], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [Yl], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1508333161 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.k, b.k) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [Yl, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Tq(this.k, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Yl, b) : N.call(null, Yl, b)) ? new Tq(c, this.v, this.j, null) : new Tq( + this.k, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Yl, this.k], null)], null), this.j)) + }; + g.T = function (a, b) { + return new Tq(this.k, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function Uq(a) { + return new Tq(a, null, null, null) + } + + function Vq(a) { + var b = Sq(a); + if (t(t(b) ? b : a instanceof Tq)) { + if (a instanceof L) { + return a; + } + b = t(Sq(a)) ? Zn : t(a instanceof Tq) ? Nj : null; + if (!(a instanceof L)) { + if (t(a instanceof Tq)) { + a = a.k; + } else { + throw Error( + Bq("Bad explicit key: %s", be([a]))); + } + } + a = Tb(wd, a); + return Tb(a, b) + } + return Gq(a) + } + + function Wq(a) { + return wg.c(Ef, function () { + return function d(a) { + return new kf(null, function () { + for (; ;) { + var c = E(a); + if (c) { + if (Ae(c)) { + var f = Wc(c), h = H(f), k = of(h); + a:for (var l = 0; ;) { + if (l < h) { + var p = A.c(f, l), m = J(p, 0, null); + p = J(p, 1, null); + m = new R(null, 2, 5, T, [Vq(m), Gq(p)], null); + k.add(m); + l += 1 + } else { + f = !0; + break a + } + } + return f ? qf(k.Da(), d(Xc(c))) : qf(k.Da(), null) + } + f = y(c); + k = J(f, 0, null); + f = J(f, 1, null); + return ae(new R(null, 2, 5, T, [Vq(k), Gq(f)], null), d(vd(c))) + } + return null + } + }, null, null) + }(a) + }()) + } + + r.prototype.xb = function () { + return Wq(this) + }; + Jh.prototype.xb = function () { + return Wq(this) + }; + ti.prototype.xb = function () { + return yi(new R(null, 1, 5, T, [Gq(y(this))], null)) + }; + + function Xq(a, b, c, d, e, f) { + this.ia = a; + this.Fb = b; + this.name = c; + this.v = d; + this.j = e; + this.w = f; + this.m = 2229667594; + this.J = 139264 + } + + g = Xq.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "schema": + return this.ia; + case "optional?": + return this.Fb; + case "name": + return this.name; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.One{", ", ", "}", c, O.c(new R(null, 3, 5, T, + [new R(null, 2, 5, T, [Mj, this.ia], null), new R(null, 2, 5, T, [nm, this.Fb], null), + new R(null, 2, 5, T, [Tk, this.name], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 3, new R(null, 3, 5, T, [Mj, nm, Tk], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 3 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -197981045 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.ia, b.ia) && G.c(this.Fb, + b.Fb) && G.c(this.name, b.name) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 3, [Mj, null, Tk, null, nm, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new Xq(this.ia, this.Fb, this.name, this.v, + Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Mj, b) : N.call(null, Mj, b)) ? new Xq(c, this.Fb, this.name, this.v, this.j, + null) : t(N.c ? N.c(nm, b) : N.call(null, nm, b)) ? new Xq(this.ia, c, this.name, this.v, + this.j, null) : t(N.c ? N.c(Tk, b) : N.call(null, Tk, b)) ? new Xq(this.ia, this.Fb, c, + this.v, this.j, null) : new Xq(this.ia, this.Fb, this.name, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 3, 5, T, + [new R(null, 2, 5, T, [Mj, this.ia], null), new R(null, 2, 5, T, [nm, this.Fb], null), + new R(null, 2, 5, T, [Tk, this.name], null)], null), this.j)) + }; + g.T = function (a, b) { + return new Xq(this.ia, this.Fb, this.name, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function Yq(a, b) { + return new Xq(a, !1, b, null, null, null) + } + + function Zq(a) { + var b = Gi(function (a) { + return a instanceof Xq && wb(nm.h(a)) + }, a), c = J(b, 0, null), d = J(b, 1, null), e = Gi(function () { + return function (a) { + var b = a instanceof Xq; + return b ? nm.h(a) : b + } + }(b, c, d), d), f = J(e, 0, null), h = J(e, 1, null); + if (!(1 >= H(h) && Vf(function () { + return function (a) { + return !(a instanceof Xq) + } + }(b, c, d, e, f, h), h))) { + throw Error(Bq("%s is not a valid sequence schema; %s%s%s", be( + [a, "a valid sequence schema consists of zero or more `one` elements, ", + "followed by zero or more `optional` elements, followed by an optional ", + "schema that will match the remaining elements."]))); + } + return new R(null, 2, 5, T, [O.c(c, f), y(h)], null) + } + + R.prototype.xb = function () { + var a = this, b = Zq(a), c = J(b, 0, null), d = J(b, 1, null); + return Wg(O.c(function () { + return function (a, b, c, d) { + return function m(e) { + return new kf(null, function () { + return function () { + for (; ;) { + var a = E(e); + if (a) { + if (Ae(a)) { + var b = Wc(a), c = H(b), d = of(c); + return function () { + for (var a = 0; ;) { + if (a < c) { + var e = A.c(b, a), f = d; + var h = t(e.Fb) ? ao : zk; + var k = Gq(Mj.h(e)); + e = Tk.h(e); + e = Tb(wd, e); + k = Tb(e, k); + h = Tb(k, h); + f.add(h); + a += 1 + } else { + return !0 + } + } + }() ? qf(d.Da(), m(Xc(a))) : qf(d.Da(), null) + } + var f = y(a); + return ae(function () { + var a = t(f.Fb) ? + ao : zk; + var b = Gq(Mj.h(f)); + var c = Tk.h(f); + c = Tb(wd, c); + b = Tb(c, b); + return Tb(b, a) + }(), m(vd(a))) + } + return null + } + } + }(a, b, c, d), null, null) + } + }(b, c, d, a)(c) + }(), t(d) ? new R(null, 1, 5, T, [Gq(d)], null) : null)) + }; + + function $q(a, b, c, d, e) { + this.Vb = a; + this.ia = b; + this.v = c; + this.j = d; + this.w = e; + this.m = 2229667594; + this.J = 139264 + } + + g = $q.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "klass": + return this.Vb; + case "schema": + return this.ia; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.Record{", ", ", "}", c, O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [ck, this.Vb], null), new R(null, 2, 5, T, [Mj, this.ia], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 2, new R(null, 2, 5, T, [ck, Mj], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 2 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1486476872 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.Vb, b.Vb) && G.c(this.ia, + b.ia) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 2, [Mj, null, ck, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new $q(this.Vb, this.ia, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(ck, b) : N.call(null, ck, b)) ? new $q(c, this.ia, this.v, this.j, null) : t( + N.c ? N.c(Mj, b) : N.call(null, Mj, b)) ? new $q(this.Vb, c, this.v, this.j, null) : new $q( + this.Vb, this.ia, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [ck, this.Vb], null), new R(null, 2, 5, T, [Mj, this.ia], null)], null), + this.j)) + }; + g.T = function (a, b) { + return new $q(this.Vb, this.ia, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + var a = td.h(Vi(be([this.Vb]))); + var b = Gq(this.ia); + b = Tb(wd, b); + a = Tb(b, a); + return Tb(a, Xn) + }; + + function ar(a, b, c) { + if (!xe(b)) { + throw Error(Bq("Expected map, got %s", be([typeof b]))); + } + return pe(new $q(a, b, null, null, null), new r(null, 1, [Qm, c], null)) + } + + function br(a) { + a = Gi(function (a) { + return a instanceof Xq + }, a); + var b = J(a, 0, null), c = J(a, 1, null); + return O.c(ig.c(function () { + return function (a) { + return Gq(a.ia) + } + }(a, b, c), b), E(c) ? new R(null, 2, 5, T, [Dj, xg(Gq, c)], null) : null) + } + + function cr(a, b, c, d, e) { + this.Nb = a; + this.Db = b; + this.v = c; + this.j = d; + this.w = e; + this.m = 2229667594; + this.J = 139264 + } + + g = cr.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "output-schema": + return this.Nb; + case "input-schemas": + return this.Db; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#schema.core.FnSchema{", ", ", "}", c, O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Wk, this.Nb], null), new R(null, 2, 5, T, [jl, this.Db], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 2, new R(null, 2, 5, T, [Wk, jl], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 2 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -2054647546 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.Nb, b.Nb) && G.c(this.Db, + b.Db) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 2, [Wk, null, jl, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new cr(this.Nb, this.Db, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Wk, b) : N.call(null, Wk, b)) ? new cr(c, this.Db, this.v, this.j, null) : t( + N.c ? N.c(jl, b) : N.call(null, jl, b)) ? new cr(this.Nb, c, this.v, this.j, null) : new cr( + this.Nb, this.Db, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [Wk, this.Nb], null), new R(null, 2, 5, T, [jl, this.Db], null)], null), + this.j)) + }; + g.T = function (a, b) { + return new cr(this.Nb, this.Db, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + g.xb = function () { + if (1 < H(this.Db)) { + var a = Gq(this.Nb); + var b = ig.c(br, this.Db); + a = ae(Sn, ae(a, b)) + } else { + a = Gq(this.Nb), b = br(y(this.Db)), a = ae(hn, ae(a, b)); + } + return a + }; + + function dr(a, b) { + return new cr(a, b, null, null, null) + } + + function er(a) { + return E(a) ? fe(a) instanceof Xq ? H(a) : Number.MAX_VALUE : 0 + } + + function fr(a, b) { + if (!E(b)) { + throw Error(Aq("Function must have at least one input schema")); + } + if (!Vf(ze, b)) { + throw Error(Aq("Each arity must be a vector.")); + } + if (!t(P(Ie, ig.c(er, b)))) { + throw Error(Aq("Arities must be distinct")); + } + return new cr(a, Qe(er, b), null, null, null) + };var gr, hr, ir = Kq(Fe), jr = new r(null, 3, [zn, Nq, Aj, Nq, On, Mq], null), kr; + kr = function (a) { + if (!E(a) || !(Xf(H(a)) || fe(a) instanceof rd)) { + throw Error( + Bq("Expected even, nonzero number of args (with optional trailing symbol); got %s", + be([H(a)]))); + } + return new Rq(Wg(function () { + return function d(a) { + return new kf(null, function () { + for (; ;) { + var c = E(a); + if (c) { + if (Ae(c)) { + var f = Wc(c), h = H(f), k = of(h); + a:for (var l = 0; ;) { + if (l < h) { + var p = A.c(f, l), m = J(p, 0, null), u = J(p, 1, null); + p = k; + if (!Fe(m)) { + throw Error( + Aq(["Conditional predicate ", v.h(m), " must be a function"].join(""))); + } + m = new R(null, 2, 5, T, [G.c(m, sk) ? Zf(!0) : + m, u], null); + p.add(m); + l += 1 + } else { + f = !0; + break a + } + } + return f ? qf(k.Da(), d(Xc(c))) : qf(k.Da(), null) + } + f = y(c); + k = J(f, 0, null); + h = J(f, 1, null); + f = ae; + if (!Fe(k)) { + throw Error( + Aq(["Conditional predicate ", v.h(k), " must be a function"].join(""))); + } + k = new R(null, 2, 5, T, [G.c(k, sk) ? Zf(!0) : k, h], null); + return f(k, d(vd(c))) + } + return null + } + }, null, null) + }(yg(2, 2, a)) + }()), Xf(H(a)) ? null : fe(a), null, null, null) + }(be([ze, new R(null, 3, 5, T, [Yq(Nq, "r"), Yq(Nq, "g"), Yq(Nq, "b")], null), Zf(!0), Nq])); + var lr = ke([Uq(Ok), kr, Uq(Tn), kr, Uq(Kj), Mq, Uq(Yn), Mq, Uq(Vl), Mq, Uq(dk), Mq, Uq(Nk), Mq]), + mr = new r(null, 4, [pl, new r(null, 2, [zn, Nq, Aj, Nq], null), Oj, lr, yn, Mq, Rj, Mq], null), + nr = new R(null, 2, 5, T, [Yq(Nq, "unicode codepoint"), Yq(lr, "text attributes")], null), + or = new R(null, 1, 5, T, [nr], null), pr = E(ug(function (a) { + return Sq(a) + }, lh(null))); + if (!wb(pr)) { + throw Error(Bq("extra-key-schema? can not contain required keys: %s", be([Wg(pr)]))); + } + + function qr(a, b, c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga) { + this.width = a; + this.height = b; + this.Ba = c; + this.qa = d; + this.Aa = e; + this.cursor = f; + this.ra = h; + this.sa = k; + this.ta = l; + this.pa = p; + this.ua = m; + this.va = u; + this.wa = w; + this.buffer = x; + this.lines = C; + this.za = F; + this.xa = I; + this.ya = M; + this.v = S; + this.j = X; + this.w = Ga; + this.m = 2229667594; + this.J = 139264 + } + + g = qr.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "width": + return this.width; + case "height": + return this.height; + case "top-margin": + return this.Ba; + case "bottom-margin": + return this.qa; + case "tabs": + return this.Aa; + case "cursor": + return this.cursor; + case "char-attrs": + return this.ra; + case "charset-fn": + return this.sa; + case "insert-mode": + return this.ta; + case "auto-wrap-mode": + return this.pa; + case "new-line-mode": + return this.ua; + case "next-print-wraps": + return this.va; + case "origin-mode": + return this.wa; + case "buffer": + return this.buffer; + case "lines": + return this.lines; + case "saved": + return this.za; + case "other-buffer-lines": + return this.xa; + case "other-buffer-saved": + return this.ya; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.vt.screen.Screen{", ", ", "}", c, O.c(new R(null, 18, 5, T, + [new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [Hn, this.Ba], null), new R(null, 2, 5, T, [Yj, this.qa], null), + new R(null, 2, 5, T, [tk, this.Aa], null), new R(null, 2, 5, T, [pl, this.cursor], null), + new R(null, 2, 5, T, [Oj, this.ra], null), new R(null, 2, 5, T, [im, this.sa], null), + new R(null, 2, 5, T, [$l, this.ta], null), new R(null, + 2, 5, T, [Rj, this.pa], null), new R(null, 2, 5, T, [mm, this.ua], null), + new R(null, 2, 5, T, [vk, this.va], null), new R(null, 2, 5, T, [yn, this.wa], null), + new R(null, 2, 5, T, [io, this.buffer], null), new R(null, 2, 5, T, [il, this.lines], null), + new R(null, 2, 5, T, [Nm, this.za], null), new R(null, 2, 5, T, [Wn, this.xa], null), + new R(null, 2, 5, T, [sm, this.ya], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 18, new R(null, 18, 5, T, + [fl, no, Hn, Yj, tk, pl, Oj, im, $l, Rj, mm, vk, yn, io, il, Nm, Wn, sm], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 18 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1452363486 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.width, b.width) && G.c( + this.height, b.height) && G.c(this.Ba, b.Ba) && G.c(this.qa, b.qa) && G.c(this.Aa, b.Aa) + && G.c(this.cursor, b.cursor) && G.c(this.ra, b.ra) && G.c(this.sa, b.sa) && G.c(this.ta, + b.ta) && G.c(this.pa, b.pa) && G.c(this.ua, b.ua) && G.c(this.va, b.va) && G.c(this.wa, + b.wa) && G.c(this.buffer, b.buffer) && G.c(this.lines, b.lines) && G.c(this.za, b.za) + && G.c(this.xa, b.xa) && G.c(this.ya, b.ya) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 18, + [Oj, null, Rj, null, Yj, null, tk, null, vk, null, fl, null, il, null, pl, null, $l, null, im, + null, mm, null, sm, null, Nm, null, yn, null, Hn, null, Wn, null, io, null, no, null], + null), null), b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new qr(this.width, this.height, + this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, this.va, + this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(fl, b) : N.call(null, fl, b)) ? new qr(c, this.height, this.Ba, this.qa, + this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, this.va, this.wa, + this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, null) : t( + N.c ? N.c(no, b) : N.call(null, no, b)) ? new qr(this.width, c, this.Ba, this.qa, this.Aa, + this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, this.va, this.wa, this.buffer, + this.lines, this.za, this.xa, this.ya, this.v, this.j, null) : t( + N.c ? N.c(Hn, b) : N.call(null, Hn, b)) ? new qr(this.width, + this.height, c, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, + this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, null) + : t(N.c ? N.c(Yj, b) : N.call(null, Yj, b)) ? new qr(this.width, this.height, this.Ba, c, + this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, this.va, this.wa, + this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, null) : t( + N.c ? N.c(tk, b) : N.call(null, tk, b)) ? new qr(this.width, this.height, this.Ba, this.qa, + c, this.cursor, this.ra, this.sa, this.ta, + this.pa, this.ua, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, + this.v, this.j, null) : t(N.c ? N.c(pl, b) : N.call(null, pl, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, c, this.ra, this.sa, this.ta, this.pa, this.ua, + this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, null) + : t(N.c ? N.c(Oj, b) : N.call(null, Oj, b)) ? new qr(this.width, this.height, this.Ba, + this.qa, this.Aa, this.cursor, c, this.sa, this.ta, this.pa, this.ua, this.va, this.wa, + this.buffer, this.lines, this.za, this.xa, + this.ya, this.v, this.j, null) : t(N.c ? N.c(im, b) : N.call(null, im, b)) ? new qr( + this.width, this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, c, this.ta, + this.pa, this.ua, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, + this.v, this.j, null) : t(N.c ? N.c($l, b) : N.call(null, $l, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, c, this.pa, + this.ua, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, + this.j, null) : t(N.c ? N.c(Rj, b) : N.call(null, Rj, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, c, + this.ua, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, + this.j, null) : t(N.c ? N.c(mm, b) : N.call(null, mm, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, + c, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, + null) : t(N.c ? N.c(vk, b) : N.call(null, vk, b)) ? new qr(this.width, this.height, + this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, + this.pa, this.ua, c, this.wa, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, + this.j, null) : t(N.c ? N.c(yn, b) : N.call(null, yn, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, + this.ua, this.va, c, this.buffer, this.lines, this.za, this.xa, this.ya, this.v, this.j, + null) : t(N.c ? N.c(io, b) : N.call(null, io, b)) ? new qr(this.width, this.height, + this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, + this.va, this.wa, c, this.lines, this.za, this.xa, this.ya, + this.v, this.j, null) : t(N.c ? N.c(il, b) : N.call(null, il, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, + this.ua, this.va, this.wa, this.buffer, c, this.za, this.xa, this.ya, this.v, this.j, + null) : t(N.c ? N.c(Nm, b) : N.call(null, Nm, b)) ? new qr(this.width, this.height, + this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, + this.va, this.wa, this.buffer, this.lines, c, this.xa, this.ya, this.v, this.j, null) : t( + N.c ? N.c(Wn, b) : N.call(null, Wn, b)) ? new qr(this.width, + this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, + this.ua, this.va, this.wa, this.buffer, this.lines, this.za, c, this.ya, this.v, this.j, + null) : t(N.c ? N.c(sm, b) : N.call(null, sm, b)) ? new qr(this.width, this.height, + this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, this.ta, this.pa, this.ua, + this.va, this.wa, this.buffer, this.lines, this.za, this.xa, c, this.v, this.j, null) + : new qr(this.width, this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, + this.sa, this.ta, this.pa, this.ua, this.va, this.wa, + this.buffer, this.lines, this.za, this.xa, this.ya, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 18, 5, T, + [new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [Hn, this.Ba], null), new R(null, 2, 5, T, [Yj, this.qa], null), + new R(null, 2, 5, T, [tk, this.Aa], null), new R(null, 2, 5, T, [pl, this.cursor], null), + new R(null, 2, 5, T, [Oj, this.ra], null), new R(null, 2, 5, T, [im, this.sa], null), + new R(null, 2, 5, T, [$l, this.ta], null), new R(null, 2, 5, T, [Rj, this.pa], null), + new R(null, 2, 5, T, [mm, this.ua], null), new R(null, 2, 5, T, [vk, this.va], null), + new R(null, + 2, 5, T, [yn, this.wa], null), new R(null, 2, 5, T, [io, this.buffer], null), + new R(null, 2, 5, T, [il, this.lines], null), new R(null, 2, 5, T, [Nm, this.za], null), + new R(null, 2, 5, T, [Wn, this.xa], null), new R(null, 2, 5, T, [sm, this.ya], null)], + null), this.j)) + }; + g.T = function (a, b) { + return new qr(this.width, this.height, this.Ba, this.qa, this.Aa, this.cursor, this.ra, this.sa, + this.ta, this.pa, this.ua, this.va, this.wa, this.buffer, this.lines, this.za, this.xa, + this.ya, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function rr(a) { + return new qr(fl.h(a), no.h(a), Hn.h(a), Yj.h(a), tk.h(a), pl.h(a), Oj.h(a), im.h(a), $l.h(a), + Rj.h(a), mm.h(a), vk.h(a), yn.h(a), io.h(a), il.h(a), Nm.h(a), Wn.h(a), sm.h(a), null, + Bf(le.A(a, fl, be([no, Hn, Yj, tk, pl, Oj, im, $l, Rj, mm, vk, yn, io, il, Nm, Wn, sm]))), + null) + } + + Eq(qr, zq(ar(qr, hi.A(be( + [Pe([Oj, Rj, Yj, tk, vk, fl, il, pl, $l, im, mm, sm, Nm, yn, Hn, Wn, io, no], + [lr, Mq, Nq, wi, Mq, Nq, new R(null, 1, 5, T, [or], null), jr, Mq, ir, Mq, mr, mr, Mq, Nq, + new Qq(new R(null, 1, 5, T, [or], null), null, null, null), Pq, Nq]), null])), + function (a) { + return rr(wg.c(Ef, a)) + }))); + var sr = new R(null, 2, 5, T, [Yq(Nq, pe(en, new r(null, 1, [Mj, fn], null))), + Yq(lr, pe(Dk, new r(null, 1, [Mj, Gn], null)))], null), tr; + tr = function (a, b) { + return new R(null, 2, 5, T, [a, b], null) + }; + Eq(tr, dr(nr, new R(null, 1, 5, T, [sr], null))); + var ur = new R(null, 1, 5, T, [Yq(Iq, pe(Dk, new r(null, 1, [Mj, Ij], null)))], null), vr; + vr = function (a) { + return tr(32, a) + }; + Eq(vr, dr(nr, new R(null, 1, 5, T, [ur], null))); + var wr = new R(null, 1, 5, T, [Yq(Iq, pe(Am, new r(null, 1, [Mj, Ij], null)))], null), + xr = new R(null, 2, 5, T, [Yq(Iq, pe(Am, new r(null, 1, [Mj, Ij], null))), + Yq(Iq, pe(Dk, new r(null, 1, [Mj, Ij], null)))], null); + gr = function yr(a) { + switch (arguments.length) { + case 1: + return yr.h(arguments[0]); + case 2: + return yr.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + gr.h = function (a) { + return gr.c(a, Ef) + }; + gr.c = function (a, b) { + return Wg(qg(a, vr(b))) + }; + gr.L = 2; + Eq(gr, fr(or, new R(null, 2, 5, T, [wr, xr], null))); + var zr = new R(null, 1, 5, T, [or], null), Ar = new R(null, 2, 5, T, + [Yq(Iq, pe(Am, new r(null, 1, [Mj, Ij], null))), + Yq(Iq, pe(lk, new r(null, 1, [Mj, Ij], null)))], null), Br = new R(null, 3, 5, T, + [Yq(Iq, pe(Am, new r(null, 1, [Mj, Ij], null))), Yq(Iq, pe(lk, new r(null, 1, [Mj, Ij], null))), + Yq(Iq, pe(Dk, new r(null, 1, [Mj, Ij], null)))], null); + hr = function Cr(a) { + switch (arguments.length) { + case 2: + return Cr.c(arguments[0], arguments[1]); + case 3: + return Cr.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + hr.c = function (a, b) { + return hr.l(a, b, Ef) + }; + hr.l = function (a, b, c) { + a = gr.c(a, c); + return Wg(qg(b, a)) + }; + hr.L = 3; + Eq(hr, fr(zr, new R(null, 2, 5, T, [Ar, Br], null))); + var Dr = new R(null, 1, 5, T, [Yq(Iq, pe(Am, new r(null, 1, [Mj, Ij], null)))], null), Er; + Er = function (a) { + return P(zi, Fi(8, a, 8)) + }; + Eq(Er, dr(wi, new R(null, 1, 5, T, [Dr], null))); + var Fr = new r(null, 3, [zn, 0, Aj, 0, On, !0], null), + Gr = new r(null, 4, [pl, new r(null, 2, [zn, 0, Aj, 0], null), Oj, Ef, yn, !1, Rj, !0], null), + Hr = Pe( + [121, 110, 101, 102, 106, 119, 104, 116, 99, 113, 117, 108, 109, 118, 100, 122, 111, 103, 125, + 107, 97, 115, 112, 123, 120, 126, 98, 124, 96, 105, 114], + [8804, 9532, 9226, 176, 9496, 9516, 9252, 9500, 9228, 9472, 9508, 9484, 9492, 9524, 9229, + 8805, 9146, 177, 163, 9488, 9618, 9149, 9147, 960, 9474, 8901, 9225, 8800, 9830, 9227, + 9148]), Ir = new R(null, 2, 5, T, [Yq(Nq, pe(Am, new r(null, 1, [Mj, oo], null))), + Yq(Nq, pe(lk, new r(null, 1, [Mj, oo], null)))], + null), Jr; + Jr = function (a, b) { + return rr(Pe([Oj, Rj, Yj, tk, vk, fl, il, pl, $l, im, mm, sm, Nm, yn, Hn, Wn, io, no], + [Ef, !0, b - 1, Er(a), !1, a, hr.c(a, b), Fr, !1, Ve, !1, Gr, Gr, !1, 0, null, fk, b])) + }; + Eq(Jr, dr(qr, new R(null, 1, 5, T, [Ir], null))); + + function Kr(a) { + return K.l(a, $l, !0) + } + + function Lr(a) { + return K.l(a, $l, !1) + } + + function Mr(a) { + return K.l(a, mm, !0) + } + + function Nr(a) { + return K.l(a, mm, !1) + } + + function Or(a) { + return K.l(a, Rj, !0) + } + + function Pr(a) { + return K.l(a, Rj, !1) + } + + function Qr(a, b, c) { + return zg(a, new R(null, 2, 5, T, [Oj, b], null), c) + } + + function Rr(a, b) { + return Cg(a, Oj, le, b) + } + + function Sr(a, b, c) { + var d = H(a); + b = b < d ? b : d; + return O.c(kg(b, a), qg(b, c)) + } + + var Tr = function Tr(a) { + switch (arguments.length) { + case 1: + return Tr.h(arguments[0]); + case 2: + return Tr.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + Tr.h = function (a) { + return Tr.c(a, 1) + }; + Tr.c = function (a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, fl), e = D.c(c, Hn), + f = D.c(c, Yj), h = D.c(c, Oj), k = gr.c(d, h); + return Bg(c, il, function (a, c, d, e, f, h, k) { + return function (c) { + return Wg(O.A(jg(h, c), Sr(Zg(null, c, h, k + 1, null), b, a), be([kg(k + 1, c)]))) + } + }(k, a, c, c, d, e, f, h)) + }; + Tr.L = 2; + + function Ur(a, b, c) { + var d = H(a); + b = b < d ? b : d; + return O.c(qg(b, c), jg(d - b, a)) + } + + var Vr = function Vr(a) { + switch (arguments.length) { + case 1: + return Vr.h(arguments[0]); + case 2: + return Vr.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + Vr.h = function (a) { + return Vr.c(a, 1) + }; + Vr.c = function (a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, fl), e = D.c(c, Hn), + f = D.c(c, Yj), h = D.c(c, Oj), k = gr.c(d, h); + return Bg(c, il, function (a, c, d, e, f, h, k) { + return function (c) { + return Wg(O.A(jg(h, c), Ur(Zg(null, c, h, k + 1, null), b, a), be([kg(k + 1, c)]))) + } + }(k, a, c, c, d, e, f, h)) + }; + Vr.L = 2; + + function Wr(a) { + return zg(a, new R(null, 2, 5, T, [pl, On], null), !0) + } + + function Xr(a) { + return zg(a, new R(null, 2, 5, T, [pl, On], null), !1) + } + + function Yr(a, b) { + return K.l(zg(a, new R(null, 2, 5, T, [pl, zn], null), b), vk, !1) + } + + function Zr(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, fl), e = 0 < b ? b : 0; + --d; + return Yr(c, e < d ? e : d) + } + + function $r(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl); + d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + d = D.c(d, zn); + var e = D.c(c, fl) - 1; + return K.l(zg(zg(c, new R(null, 2, 5, T, [pl, zn], null), d < e ? d : e), + new R(null, 2, 5, T, [pl, Aj], null), b), vk, !1) + } + + function as(a) { + var b = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(b, yn); + b = D.c(b, Hn); + return t(a) ? b : 0 + } + + function bs(a, b) { + var c = as(a), d = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var e = D.c(d, yn); + var f = D.c(d, Yj); + d = D.c(d, no); + e = t(e) ? f : d - 1; + f = c + b; + c = f > c ? f : c; + return $r(a, e < c ? e : c) + } + + function cs(a) { + return $r(Yr(a, 0), as(a)) + } + + function Eg(a, b, c) { + return bs(Zr(a, b), c) + } + + function ds(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, Aj); + var c = D.c(a, Yj), d = D.c(a, no) - 1; + return G.c(b, c) ? Tr.h(a) : b < d ? $r(a, b + 1) : a + } + + function es(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, zn); + return Zr(a, b - 1) + } + + function fs(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl); + d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + var e = D.c(d, Aj), f = D.c(c, Hn); + return $r(c, e < f ? function () { + var a = e - b; + return 0 > a ? 0 : a + }() : function () { + var a = e - b; + return f > a ? f : a + }()) + } + + function gs(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl); + d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + var e = D.c(d, Aj), f = D.c(c, Yj), h = D.c(c, no); + return $r(c, e > f ? function () { + var a = h - 1, c = e + b; + return a < c ? a : c + }() : function () { + var a = e + b; + return f < a ? f : a + }()) + } + + function hs(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl); + d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + d = D.c(d, zn); + return Zr(c, d + b) + } + + function is(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl); + d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + d = D.c(d, zn); + return Zr(c, d - b) + } + + function js(a) { + var b = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(b, mm); + b = ds(b); + return t(a) ? Yr(b, 0) : b + } + + function ks(a) { + return Yr(ds(a), 0) + } + + function ls(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, Aj); + var c = D.c(a, Hn); + return G.c(b, c) ? Vr.h(a) : 0 < b ? $r(a, b - 1) : a + } + + function ms(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl), c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(c, zn); + c = D.c(c, Aj); + var d = D.c(a, Oj), e = D.c(a, yn), f = D.c(a, Rj); + return K.l(a, Nm, + new r(null, 4, [pl, new r(null, 2, [zn, b, Aj, c], null), Oj, d, yn, e, Rj, f], null)) + } + + function ns(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, Nm), c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(c, pl); + var d = D.c(c, Oj), e = D.c(c, yn); + c = D.c(c, Rj); + return Cg(K.A(a, Oj, d, be([vk, !1, yn, e, Rj, c])), pl, hi, b) + } + + function os(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, io), c = D.c(a, fl), d = D.c(a, no), e = D.c(a, Oj); + return G.c(b, fk) ? K.A(a, io, tl, + be([Wn, il.h(a), sm, Nm.h(a), il, hr.l(c, d, e), Nm, sm.h(a)])) : a + } + + function dt(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, io); + return G.c(b, tl) ? K.A(a, io, fk, be([Wn, null, sm, Nm.h(a), il, Wn.h(a), Nm, sm.h(a)])) : a + } + + function et(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, zn); + var c = D.c(a, fl); + return 0 < b && b < c ? Cg(a, tk, ge, b) : a + } + + function ft(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, zn); + return Cg(a, tk, re, b) + } + + function gt(a) { + return Bg(a, tk, ie) + } + + function ht(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, zn), h = D.c(c, tk), + k = D.c(c, fl), l = b - 1, p = k - 1; + d = J(ng(function (a, b, c, d, e, f, h, k) { + return function (a) { + return k >= a + } + }(l, p, a, c, c, d, e, f, h, k), h), l, p); + return Zr(c, d) + } + + function it(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, zn), h = D.c(c, tk), + k = D.c(c, fl), l = b - 1; + d = J(cf(Bi(function (a, b, c, d, e, f, h) { + return function (a) { + return h > a + } + }(l, a, c, c, d, e, f, h, k), h)), l, 0); + return Zr(c, d) + } + + function jt(a) { + return K.l(a, im, Ve) + } + + function kt(a) { + return K.l(a, im, Hr) + } + + function lt(a, b, c) { + return K.l(a, b, c) + } + + function mt(a, b, c) { + return Wg(O.A(jg(b, a), new R(null, 1, 5, T, [c], null), be([jg(H(a) - b - 1, kg(b, a))]))) + } + + function nt(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + d = D.c(e, zn); + e = D.c(e, Aj); + var f = D.c(c, fl); + D.c(c, no); + var h = D.c(c, Oj), k = D.c(c, Rj), l = D.c(c, $l), p = D.c(c, im); + p = 95 < b && 127 > b ? p.h ? p.h(b) : p.call(null, b) : b; + h = tr(p, h); + return G.c(f, d + 1) ? t(k) ? K.l(Yr(zg(c, new R(null, 3, 5, T, [il, e, d], null), h), d + 1), + vk, !0) : zg(c, new R(null, 3, 5, T, [il, e, d], null), h) : Yr( + Ag.Z(c, new R(null, 2, 5, T, [il, e], null), t(l) ? mt : lt, d, h), d + 1) + } + + function ot(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, Rj), e = D.c(c, vk); + t(t(d) ? e : d) && (c = null != c && (c.m & 64 || q === c.G) ? P(U, c) : c, d = D.c(c, + pl), d = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, d = D.c(d, Aj), e = D.c(c, + no), c = Yr(c, 0), c = G.c(e, d + 1) ? Tr.h(c) : $r(c, d + 1)); + return c = nt(c, b) + } + + function pt(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, fl), c = D.c(a, no); + return K.l(a, il, Wg(qg(c, Wg(qg(b, new R(null, 2, 5, T, [69, Ef], null)))))) + } + + function qt(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(b, Aj); + var c = D.c(a, fl), d = D.c(a, Oj); + return zg(a, new R(null, 2, 5, T, [il, b], null), gr.c(c, d)) + } + + function rt(a, b, c) { + return Wg(O.c(jg(b, a), qg(H(a) - b, vr(c)))) + } + + function st(a, b, c) { + return Wg(O.c(qg(b + 1, vr(c)), kg(b + 1, a))) + } + + function tt(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl), c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(c, zn); + c = D.c(c, Aj); + var d = D.c(a, fl), e = D.c(a, Oj); + --d; + return Ag.Z(a, new R(null, 2, 5, T, [il, c], null), rt, b < d ? b : d, e) + } + + function ut(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, pl), c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + b = D.c(c, zn); + c = D.c(c, Aj); + var d = D.c(a, fl), e = D.c(a, Oj); + --d; + return Ag.Z(a, new R(null, 2, 5, T, [il, c], null), st, b < d ? b : d, e) + } + + function vt(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, fl), c = D.c(a, no), d = D.c(a, Oj); + return K.l(a, il, hr.l(b, c, d)) + } + + function wt(a) { + var b = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, c = D.c(b, pl), + d = null != c && (c.m & 64 || q === c.G) ? P(U, c) : c, e = D.c(d, zn), f = D.c(d, Aj), + h = D.c(b, fl), k = D.c(b, no), l = D.c(b, Oj); + return Bg(b, il, function (a, b, c, d, e, f, h, k, l, S) { + return function (a) { + var b = jg(h, a); + a = rt(Vd(a, h), f, S); + var c = qg(l - h - 1, gr.c(k, S)); + return Wg(O.A(b, new R(null, 1, 5, T, [a], null), be([c]))) + } + }(a, b, b, c, d, e, f, h, k, l)) + } + + function xt(a) { + var b = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, c = D.c(b, pl), + d = null != c && (c.m & 64 || q === c.G) ? P(U, c) : c, e = D.c(d, zn), f = D.c(d, Aj), + h = D.c(b, fl), k = D.c(b, no), l = D.c(b, Oj); + return Bg(b, il, function (a, b, c, d, e, f, h, k, l, S, X) { + return function (b) { + var c = qg(k, gr.c(l, X)), d = st(Vd(b, k), a, X); + return Wg(O.A(c, new R(null, 1, 5, T, [d], null), be([kg(k + 1, b)]))) + } + }(function () { + var a = h - 1; + return e < a ? e : a + }(), a, b, b, c, d, e, f, h, k, l)) + } + + function yt(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, zn), h = D.c(e, Aj), + k = D.c(c, fl), l = D.c(c, Oj); + return Ag.l(c, new R(null, 2, 5, T, [il, h], null), function (a, b, c, d, e, f, h, k, l, S) { + return function (b) { + return Wg(O.A(jg(h, b), qg(a, vr(S)), be([kg(h + a, b)]))) + } + }(function () { + var a = k - f; + return b < a ? b : a + }(), a, c, c, d, e, f, h, k, l)) + } + + function zt(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, zn), h = D.c(e, Aj), + k = D.c(c, fl), l = D.c(c, Oj); + return Ag.l(c, new R(null, 2, 5, T, [il, h], null), function (a, c, d, e, f, h, k, l, M) { + return function (a) { + return Wg(jg(l, O.A(jg(h, a), qg(b, new R(null, 2, 5, T, [32, M], null)), be([kg(h, a)])))) + } + }(a, c, c, d, e, f, h, k, l)) + } + + function At(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, Aj), h = D.c(c, Yj), + k = D.c(c, fl), l = D.c(c, no), p = D.c(c, Oj), m = gr.c(k, p); + return Bg(c, il, function (a, c, d, e, f, h, k, m) { + return function (c) { + return Wg( + k <= m ? O.A(jg(k, c), Ur(Zg(null, c, k, m + 1, null), b, a), be([kg(m + 1, c)])) : O.c( + jg(k, c), Ur(kg(k, c), b, a))) + } + }(m, a, c, c, d, e, f, h, k, l, p)) + } + + function Bt(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, Aj), h = D.c(c, Yj), + k = D.c(c, fl), l = D.c(c, no), p = D.c(c, Oj), m = gr.c(k, p); + return Bg(c, il, function (a, c, d, e, f, h, k, m) { + return function (c) { + return Wg( + k <= m ? O.A(jg(k, c), Sr(Zg(null, c, k, m + 1, null), b, a), be([kg(m + 1, c)])) : O.c( + jg(k, c), Sr(kg(k, c), b, a))) + } + }(m, a, c, c, d, e, f, h, k, l, p)) + } + + function Ct(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, pl), + e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d, f = D.c(e, zn), h = D.c(e, Aj), + k = D.c(c, fl), l = D.c(c, Oj), p = f >= k ? Zr(c, k - 1) : c, + m = Mb(D, p, new R(null, 2, 5, T, [pl, zn], null)); + return Ag.l(p, new R(null, 2, 5, T, [il, h], null), + function (a, b, c, d, e, f, h, k, m, l, p, Q) { + return function (a) { + return Wg(O.A(jg(b, a), kg(b + c, a), be([qg(c, vr(Q))]))) + } + }(p, m, function () { + var a = k - m; + return b < a ? b : a + }(), a, c, c, d, e, f, h, k, l)) + } + + var Dt = new R(null, 1, 5, T, [Yq(new R(null, 1, 5, T, [Nq], null), + pe(Ln, new r(null, 1, [Mj, new R(null, 1, 5, T, [fn], null)], null)))], null), Et; + Et = function (a) { + return P(String.fromCodePoint, a) + }; + Eq(Et, dr(Lq, new R(null, 1, 5, T, [Dt], null))); + var Ft = new R(null, 1, 5, T, + [new R(null, 2, 5, T, [Yq(Lq, "text"), Yq(lr, "text attributes")], null)], null), + Gt = new R(null, 1, 5, T, [Yq(or, pe(Nn, new r(null, 1, [Mj, nk], null)))], null), Ht; + Ht = function (a) { + a = E(a); + var b = y(a), c = z(a); + a = he; + var d = new R(null, 1, 5, T, [y(b)], null), e = fe(b); + for (b = c; ;) { + if (c = y(b), t(c)) { + var f = c; + c = J(f, 0, null); + f = J(f, 1, null); + G.c(f, e) ? d = ge.c(d, c) : (a = ge.c(a, + new R(null, 2, 5, T, [Et(d), e], null)), d = new R( + null, 1, 5, T, [c], null), e = f); + b = vd(b) + } else { + return ge.c(a, new R(null, 2, 5, T, [Et(d), e], null)) + } + } + }; + Eq(Ht, dr(Ft, new R(null, 1, 5, T, [Gt], null))); + + function It(a) { + a = Wr(a); + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, no); + a = K.A(a, Hn, 0, be([Yj, b - 1])); + return K.l(K.l(K.l(Lr(a), yn, !1), Oj, Ef), Nm, Gr) + };var Jt = Error(); + var Kt = E(ug(function (a) { + return Sq(a) + }, lh(null))); + if (!wb(Kt)) { + throw Error(Bq("extra-key-schema? can not contain required keys: %s", be([Wg(Kt)]))); + } + + function Lt(a, b, c, d, e, f, h) { + this.Qb = a; + this.Pb = b; + this.Ob = c; + this.screen = d; + this.v = e; + this.j = f; + this.w = h; + this.m = 2229667594; + this.J = 139264 + } + + g = Lt.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "parser-state": + return this.Qb; + case "parser-params": + return this.Pb; + case "parser-intermediates": + return this.Ob; + case "screen": + return this.screen; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.vt.VT{", ", ", "}", c, O.c(new R(null, 4, 5, T, + [new R(null, 2, 5, T, [Tl, this.Qb], null), new R(null, 2, 5, T, [kk, this.Pb], null), + new R(null, 2, 5, T, [rk, this.Ob], null), new R(null, 2, 5, T, [V, this.screen], null)], + null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 4, new R(null, 4, 5, T, [Tl, kk, rk, V], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 4 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -156373259 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.Qb, b.Qb) && G.c(this.Pb, + b.Pb) && G.c(this.Ob, b.Ob) && G.c(this.screen, b.screen) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 4, [V, null, kk, null, rk, null, Tl, null], null), null), b) + ? le.c(tc(wg.c(Ef, this), this.v), b) : new Lt(this.Qb, this.Pb, this.Ob, this.screen, this.v, + Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Tl, b) : N.call(null, Tl, b)) ? new Lt(c, this.Pb, this.Ob, this.screen, + this.v, this.j, null) : t(N.c ? N.c(kk, b) : N.call(null, kk, b)) ? new Lt(this.Qb, c, + this.Ob, this.screen, this.v, this.j, null) : t(N.c ? N.c(rk, b) : N.call(null, rk, b)) + ? new Lt(this.Qb, this.Pb, c, this.screen, this.v, this.j, null) : t( + N.c ? N.c(V, b) : N.call(null, V, b)) ? new Lt(this.Qb, this.Pb, this.Ob, c, this.v, this.j, + null) : new Lt(this.Qb, this.Pb, this.Ob, this.screen, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 4, 5, T, + [new R(null, 2, 5, T, [Tl, this.Qb], null), new R(null, 2, 5, T, [kk, this.Pb], null), + new R(null, 2, 5, T, [rk, this.Ob], null), new R(null, 2, 5, T, [V, this.screen], null)], + null), this.j)) + }; + g.T = function (a, b) { + return new Lt(this.Qb, this.Pb, this.Ob, this.screen, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function Mt(a) { + return new Lt(Tl.h(a), kk.h(a), rk.h(a), V.h(a), null, Bf(le.A(a, Tl, be([kk, rk, V]))), null) + } + + Eq(Lt, zq(ar(Lt, hi.A(be([new r(null, 4, + [Tl, Pq, kk, new R(null, 1, 5, T, [Oq], null), rk, new R(null, 1, 5, T, [Oq], null), V, qr], + null), null])), function (a) { + return Mt(wg.c(Ef, a)) + }))); + var Nt = new R(null, 2, 5, T, [Yq(Nq, pe(Am, new r(null, 1, [Mj, oo], null))), + Yq(Nq, pe(lk, new r(null, 1, [Mj, oo], null)))], null), Ot; + Ot = function (a, b) { + return Mt(new r(null, 4, [Tl, uk, kk, he, rk, he, V, Jr(a, b)], null)) + }; + Eq(Ot, dr(Lt, new R(null, 1, 5, T, [Nt], null))); + + function Pt(a, b, c) { + try { + if (null === b) { + try { + if (4 === c) { + return Bg(a, V, Kr); + } + throw Jt; + } catch (p) { + if (p instanceof Error) { + var d = p; + if (d === Jt) { + try { + if (20 === c) { + return Bg(a, V, Mr); + } + throw Jt; + } catch (m) { + if (m instanceof Error) { + var e = m; + if (e === Jt) { + throw Jt; + } + throw e; + } + throw m; + } + } else { + throw d; + } + } else { + throw p; + } + } + } else { + throw Jt; + } + } catch (p) { + if (p instanceof Error) { + if (d = p, d === Jt) { + try { + if (63 === b) { + try { + if (6 === c) { + return Bg(a, V, function () { + return function (a) { + return cs(K.l(a, yn, !0)) + } + }(d)); + } + throw Jt; + } catch (m) { + if (m instanceof Error) { + if (e = m, e === Jt) { + try { + if (7 === c) { + return Bg(a, + V, Or); + } + throw Jt; + } catch (u) { + if (u instanceof Error) { + if (b = u, b === Jt) { + try { + if (25 === c) { + return Bg(a, V, Wr); + } + throw Jt; + } catch (w) { + if (w instanceof Error) { + var f = w; + if (f === Jt) { + try { + if (47 === c) { + return Bg(a, V, os); + } + throw Jt; + } catch (x) { + if (x instanceof Error) { + var h = x; + if (h === Jt) { + try { + if (1047 === c) { + return Bg(a, V, os); + } + throw Jt; + } catch (C) { + if (C instanceof Error) { + var k = C; + if (k === Jt) { + try { + if (1048 === c) { + return Bg(a, V, ms); + } + throw Jt; + } catch (F) { + if (F instanceof Error) { + var l = F; + if (l === Jt) { + try { + if (1049 === c) { + return Bg(a, V, function () { + return function (a) { + return os(ms(a)) + } + }(l, + k, h, f, b, e, d)); + } + throw Jt; + } catch (I) { + if (I instanceof Error) { + c = I; + if (c === Jt) { + throw Jt; + } + throw c; + } + throw I; + } + } else { + throw l; + } + } else { + throw F; + } + } + } else { + throw k; + } + } else { + throw C; + } + } + } else { + throw h; + } + } else { + throw x; + } + } + } else { + throw f; + } + } else { + throw w; + } + } + } else { + throw b; + } + } else { + throw u; + } + } + } else { + throw e; + } + } else { + throw m; + } + } + } else { + throw Jt; + } + } catch (m) { + if (m instanceof Error) { + e = m; + if (e === Jt) { + return a; + } + throw e; + } + throw m; + } + } else { + throw d; + } + } else { + throw p; + } + } + } + + function Qt(a, b, c) { + try { + if (null === b) { + try { + if (4 === c) { + return Bg(a, V, Lr); + } + throw Jt; + } catch (p) { + if (p instanceof Error) { + var d = p; + if (d === Jt) { + try { + if (20 === c) { + return Bg(a, V, Nr); + } + throw Jt; + } catch (m) { + if (m instanceof Error) { + var e = m; + if (e === Jt) { + throw Jt; + } + throw e; + } + throw m; + } + } else { + throw d; + } + } else { + throw p; + } + } + } else { + throw Jt; + } + } catch (p) { + if (p instanceof Error) { + if (d = p, d === Jt) { + try { + if (63 === b) { + try { + if (6 === c) { + return Bg(a, V, function () { + return function (a) { + return cs(K.l(a, yn, !1)) + } + }(d)); + } + throw Jt; + } catch (m) { + if (m instanceof Error) { + if (e = m, e === Jt) { + try { + if (7 === c) { + return Bg(a, + V, Pr); + } + throw Jt; + } catch (u) { + if (u instanceof Error) { + if (b = u, b === Jt) { + try { + if (25 === c) { + return Bg(a, V, Xr); + } + throw Jt; + } catch (w) { + if (w instanceof Error) { + var f = w; + if (f === Jt) { + try { + if (47 === c) { + return Bg(a, V, dt); + } + throw Jt; + } catch (x) { + if (x instanceof Error) { + var h = x; + if (h === Jt) { + try { + if (1047 === c) { + return Bg(a, V, dt); + } + throw Jt; + } catch (C) { + if (C instanceof Error) { + var k = C; + if (k === Jt) { + try { + if (1048 === c) { + return Bg(a, V, ns); + } + throw Jt; + } catch (F) { + if (F instanceof Error) { + var l = F; + if (l === Jt) { + try { + if (1049 === c) { + return Bg(a, V, function () { + return function (a) { + return ns(dt(a)) + } + }(l, + k, h, f, b, e, d)); + } + throw Jt; + } catch (I) { + if (I instanceof Error) { + c = I; + if (c === Jt) { + throw Jt; + } + throw c; + } + throw I; + } + } else { + throw l; + } + } else { + throw F; + } + } + } else { + throw k; + } + } else { + throw C; + } + } + } else { + throw h; + } + } else { + throw x; + } + } + } else { + throw f; + } + } else { + throw w; + } + } + } else { + throw b; + } + } else { + throw u; + } + } + } else { + throw e; + } + } else { + throw m; + } + } + } else { + throw Jt; + } + } catch (m) { + if (m instanceof Error) { + e = m; + if (e === Jt) { + return a; + } + throw e; + } + throw m; + } + } else { + throw d; + } + } else { + throw p; + } + } + } + + function Rt(a) { + a = ig.c(function (a) { + return a - 48 + }, a); + a = ig.l(Ye, cf(a), rg(function () { + return function (a) { + return 10 * a + } + }(a), 1)); + return Mb(Xe, 0, a) + } + + var St = hj(function (a) { + a:for (var b = he, c = he; ;) { + var d = y(a); + if (t(d)) { + G.c(d, 59) ? (a = vd(a), b = ge.c(b, c), c = he) : (a = vd(a), c = ge.c(c, + d)); + } else { + a = E(c) ? ge.c(b, c) : b; + break a + } + } + return ig.c(Rt, a) + }); + + function Tt(a) { + a = kk.h(a); + return St.h ? St.h(a) : St.call(null, a) + } + + function Ut(a, b, c) { + a = J(Tt(a), b, 0); + return 0 === a ? c : a + } + + function Vt(a) { + return Bg(a, V, es) + } + + function Wt(a) { + return Cg(a, V, ht, 1) + } + + function Xt(a) { + return Cg(a, V, Yr, 0) + } + + function Yt(a) { + return Bg(a, V, js) + } + + function Zt(a) { + return Bg(a, V, kt) + } + + function $t(a) { + return Bg(a, V, jt) + } + + function au(a) { + return Bg(a, V, ks) + } + + function bu(a) { + return Bg(a, V, et) + } + + function cu(a) { + return Bg(a, V, ls) + } + + function du(a) { + return Ot(fl.h(V.h(a)), no.h(V.h(a))) + } + + function eu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, zt, b) + } + + function fu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, fs, b) + } + + function gu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, gs, b) + } + + function hu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, hs, b) + } + + function iu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, is, b) + } + + function ju(a) { + var b = Ut(a, 0, 1); + return Bg(a, V, function (a) { + return function (b) { + return Yr(gs(b, a), 0) + } + }(b)) + } + + function ku(a) { + var b = Ut(a, 0, 1); + return Bg(a, V, function (a) { + return function (b) { + return Yr(fs(b, a), 0) + } + }(b)) + } + + function lu(a) { + var b = Ut(a, 0, 1) - 1; + return Cg(a, V, Zr, b) + } + + function mu(a) { + var b = Ut(a, 0, 1) - 1, c = Ut(a, 1, 1) - 1; + return Dg(a, c, b) + } + + function nu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, ht, b) + } + + function ou(a) { + var b = Ut(a, 0, 0); + return Bg(a, V, function () { + switch (b) { + case 0: + return wt; + case 1: + return xt; + case 2: + return vt; + default: + return Ve + } + }()) + } + + function pu(a) { + var b = Ut(a, 0, 0); + return Bg(a, V, function () { + switch (b) { + case 0: + return tt; + case 1: + return ut; + case 2: + return qt; + default: + return Ve + } + }()) + } + + function qu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, Tr, b) + } + + function ru(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, Vr, b) + } + + function su(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, At, b) + } + + function tu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, Bt, b) + } + + function uu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, Ct, b) + } + + function vu(a) { + switch (Ut(a, 0, 0)) { + case 0: + return Bg(a, V, et); + case 2: + return Bg(a, V, ft); + case 5: + return Bg(a, V, gt); + default: + return a + } + } + + function wu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, yt, b) + } + + function xu(a) { + var b = Ut(a, 0, 1); + return Cg(a, V, it, b) + } + + function yu(a) { + switch (Ut(a, 0, 0)) { + case 0: + return Bg(a, V, ft); + case 3: + return Bg(a, V, gt); + default: + return a + } + } + + function zu(a) { + var b = D.c(rk.h(a), 0); + return Mb(function (a) { + return function (b, c) { + return Pt(b, a, c) + } + }(b), a, Tt(a)) + } + + function Au(a) { + var b = D.c(rk.h(a), 0); + return Mb(function (a) { + return function (b, c) { + return Qt(b, a, c) + } + }(b), a, Tt(a)) + } + + function Bu(a, b) { + for (var c = a, d = b; ;) { + if (E(d)) { + var e = y(d); + switch (e) { + case 0: + c = K.l(c, Oj, Ef); + d = vd(d); + continue; + case 1: + c = Qr(c, Kj, !0); + d = vd(d); + continue; + case 3: + c = Qr(c, Yn, !0); + d = vd(d); + continue; + case 4: + c = Qr(c, Vl, !0); + d = vd(d); + continue; + case 5: + c = Qr(c, dk, !0); + d = vd(d); + continue; + case 7: + c = Qr(c, Nk, !0); + d = vd(d); + continue; + case 21: + c = Rr(c, Kj); + d = vd(d); + continue; + case 22: + c = Rr(c, Kj); + d = vd(d); + continue; + case 23: + c = Rr(c, Yn); + d = vd(d); + continue; + case 24: + c = Rr(c, Vl); + d = vd(d); + continue; + case 25: + c = Rr(c, dk); + d = vd(d); + continue; + case 27: + c = Rr(c, Nk); + d = vd(d); + continue; + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + c = Qr(c, Ok, e - 30); + d = vd(d); + continue; + case 38: + switch (ee(d)) { + case 2: + var f = jg(3, kg(2, d)); + e = J(f, 0, null); + var h = J(f, 1, null); + f = J(f, 2, null); + t(f) ? (c = Qr(c, Ok, new R(null, 3, 5, T, [e, h, f], null)), d = kg(5, d)) + : d = kg( + 2, d); + continue; + case 5: + e = y(kg(2, d)); + t(e) ? (c = Qr(c, Ok, e), d = kg(3, d)) : d = kg(2, d); + continue; + default: + d = vd(d); + continue + } + case 39: + c = Rr(c, Ok); + d = vd(d); + continue; + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + c = Qr(c, Tn, e - 40); + d = vd(d); + continue; + case 48: + switch (ee(d)) { + case 2: + f = jg(3, kg(2, d)); + e = J(f, 0, null); + h = J(f, 1, null); + f = J(f, 2, null); + t(f) ? (c = Qr(c, Tn, new R(null, 3, 5, T, [e, h, f], null)), d = kg(5, d)) + : d = kg( + 2, d); + continue; + case 5: + e = y(kg(2, d)); + t(e) ? (c = Qr(c, Tn, e), d = kg(3, d)) : d = kg(2, d); + continue; + default: + d = vd(d); + continue + } + case 49: + c = Rr(c, Tn); + d = vd(d); + continue; + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + c = Qr(c, Ok, e - 82); + d = vd(d); + continue; + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + c = Qr(c, Tn, e - 92); + d = vd(d); + continue; + default: + d = + vd(d) + } + } else { + return c + } + } + } + + function Cu(a) { + var b = E(Tt(a)); + return Cg(a, V, Bu, b ? b : new R(null, 1, 5, T, [0], null)) + } + + function Du(a) { + var b = Ut(a, 0, 1) - 1; + return Cg(a, V, bs, b) + } + + function Eu(a) { + return G.c(D.c(rk.h(a), 0), 33) ? Bg(a, V, It) : a + } + + function Fu(a) { + var b = Ut(a, 0, 1) - 1, c = function () { + var b = null == a ? null : Ut(a, 1, null); + return null == b ? null : b - 1 + }(); + return Bg(a, V, function (a, b) { + return function (c) { + c = null != c && (c.m & 64 || q === c.G) ? P(U, c) : c; + var d = D.c(c, no), e = t(b) ? b : d - 1; + c = -1 < a && a < e && e < d ? K.A(c, Hn, a, be([Yj, e])) : c; + return cs(c) + } + }(b, c)) + } + + function Gu(a, b) { + var c = function () { + switch (b) { + case 8: + return Vt; + case 9: + return Wt; + case 10: + return Yt; + case 11: + return Yt; + case 12: + return Yt; + case 13: + return Xt; + case 14: + return Zt; + case 15: + return $t; + case 132: + return Yt; + case 133: + return au; + case 136: + return bu; + case 141: + return cu; + default: + return null + } + }(); + return t(c) ? c.h ? c.h(a) : c.call(null, a) : a + } + + var Hu = Pe([zj, Pj, Wj, ak, xl, Pl, Rl, Ul, Xl, um, Fm, Fn, In, po], [function (a) { + return a + }, function (a, b) { + var c = D.c(rk.h(a), 0); + try { + if (null === c) { + try { + if (t(function () { + return function () { + return function (a) { + return 64 <= a && 95 >= a + } + }(c, b)(b) + }())) { + return Gu(a, b + 64); + } + throw Jt; + } catch (h) { + if (h instanceof Error) { + var d = h; + if (d === Jt) { + try { + if (55 === b) { + return Bg(a, V, ms); + } + throw Jt; + } catch (k) { + if (k instanceof Error) { + var e = k; + if (e === Jt) { + try { + if (56 === b) { + return Bg(a, V, ns); + } + throw Jt; + } catch (l) { + if (l instanceof Error) { + var f = l; + if (f === Jt) { + try { + if (99 === b) { + return du(a); + } + throw Jt; + } catch (p) { + if (p instanceof Error) { + d = p; + if (d === Jt) { + throw Jt; + } + throw d; + } + throw p; + } + } else { + throw f; + } + } else { + throw l; + } + } + } else { + throw e; + } + } else { + throw k; + } + } + } else { + throw d; + } + } else { + throw h; + } + } + } else { + throw Jt; + } + } catch (h) { + if (h instanceof Error) { + if (d = h, d === Jt) { + try { + if (35 === c) { + try { + if (56 === b) { + return Bg(a, V, pt); + } + throw Jt; + } catch (k) { + if (k instanceof Error) { + e = k; + if (e === Jt) { + throw Jt; + } + throw e; + } + throw k; + } + } else { + throw Jt; + } + } catch (k) { + if (k instanceof Error) { + if (e = k, e === Jt) { + try { + if (40 === c) { + try { + if (48 === b) { + return Zt(a); + } + throw Jt; + } catch (l) { + if (l instanceof Error) { + f = + l; + if (f === Jt) { + return $t(a); + } + throw f; + } + throw l; + } + } else { + throw Jt; + } + } catch (l) { + if (l instanceof Error) { + f = l; + if (f === Jt) { + return a; + } + throw f; + } + throw l; + } + } else { + throw e; + } + } else { + throw k; + } + } + } else { + throw d; + } + } else { + throw h; + } + } + }, function (a) { + return a + }, function (a) { + return a + }, Gu, function (a, b) { + return Cg(a, V, ot, b) + }, function (a, b) { + var c = function () { + switch (b) { + case 64: + return eu; + case 65: + return fu; + case 66: + return gu; + case 67: + return hu; + case 68: + return iu; + case 69: + return ju; + case 70: + return ku; + case 71: + return lu; + case 72: + return mu; + case 73: + return nu; + case 74: + return ou; + case 75: + return pu; + case 76: + return su; + case 77: + return tu; + case 80: + return uu; + case 83: + return qu; + case 84: + return ru; + case 87: + return vu; + case 88: + return wu; + case 90: + return xu; + case 96: + return lu; + case 97: + return hu; + case 100: + return Du; + case 101: + return fu; + case 102: + return mu; + case 103: + return yu; + case 104: + return zu; + case 108: + return Au; + case 109: + return Cu; + case 112: + return Eu; + case 114: + return Fu; + default: + return null + } + }(); + return t(c) ? c.h ? c.h(a) : c.call(null, a) : a + }, function (a) { + return a + }, function (a, b) { + return K.l(a, kk, ge.c(kk.h(a), b)) + }, + function (a) { + return a + }, function (a, b) { + return K.l(a, rk, ge.c(rk.h(a), b)) + }, function (a) { + return a + }, function (a) { + return a + }, function (a) { + return K.A(a, rk, he, be([kk, he])) + }]); + + function Iu(a, b) { + for (var c = a, d = Tl.h(c), e = b; ;) { + var f = y(e); + if (t(f)) { + var h = 160 <= f ? 65 : f; + h = D.c(d.h ? d.h(xq) : d.call(null, xq), h); + d = J(h, 0, null); + h = J(h, 1, null); + a:for (; ;) { + if (E(h)) { + var k = y(h); + k = Hu.h ? Hu.h(k) : Hu.call(null, k); + c = k.c ? k.c(c, f) : k.call(null, c, f); + h = z(h) + } else { + break a; + } + } + e = vd(e) + } else { + return K.l(c, Tl, d) + } + } + } + + function Ju(a, b) { + var c = xg(function (a) { + return a.codePointAt(0) + }, b); + return Iu(a, c) + } + + function Ku(a, b) { + try { + if (ze(b) && 3 === H(b)) { + var c = Vd(b, 0), d = Vd(b, 1), e = Vd(b, 2); + return [v.h(a + 8), ";2;", v.h(c), ";", v.h(d), ";", v.h(e)].join("") + } + throw Jt; + } catch (k) { + if (k instanceof Error) { + var f = k; + if (f === Jt) { + try { + if (t(function () { + return function () { + return function (a) { + return 8 > a + } + }(f)(b) + }())) { + return "" + v.h(a + b); + } + throw Jt; + } catch (l) { + if (l instanceof Error) { + var h = l; + if (h === Jt) { + try { + if (t(function () { + return function () { + return function (a) { + return 16 > a + } + }(h, f)(b) + }())) { + return "" + v.h(a + 52 + b); + } + throw Jt; + } catch (p) { + if (p instanceof Error) { + c = + p; + if (c === Jt) { + return [v.h(a + 8), ";5;", v.h(b)].join(""); + } + throw c; + } + throw p; + } + } else { + throw h; + } + } else { + throw l; + } + } + } else { + throw f; + } + } else { + throw k; + } + } + } + + ag.c(Ku, 30); + ag.c(Ku, 40); + var Lu = function Lu(a) { + if (null != a && null != a.yd) { + return a.yd(a); + } + var c = Lu[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Lu._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Screen.lines", a); + }, Mu = function Mu(a) { + if (null != a && null != a.xd) { + return a.xd(a); + } + var c = Mu[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Mu._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Screen.cursor", a); + }; + + function Nu(a, b) { + var c = 0 < a ? a : 0; + return b < c ? b : c + } + + function Ou(a) { + return function (b) { + return function () { + return ((new Date).getTime() - b.getTime()) / 1E3 * a + } + }(new Date) + } + + function Pu(a) { + return document[a] + } + + function Qu(a) { + return function (b) { + var c = new hg(null); + bd(c, c); + return function (c) { + return function () { + function d(d, e) { + if (B(c) === c) { + var f = bd(c, e); + return b.c ? b.c(d, f) : b.call(null, d, f) + } + var h = bd(c, function () { + var b = B(c); + return a.c ? a.c(b, e) : a.call(null, b, e) + }()); + return Hd(h) ? Id(function () { + var a = B(h); + return b.c ? b.c(d, a) : b.call(null, d, a) + }()) : b.c ? b.c(d, h) : b.call(null, d, h) + } + + function f(a) { + return B(c) === c ? a : b.h ? b.h(a) : b.call(null, a) + } + + function h() { + return b.B ? b.B() : b.call(null) + } + + var k = null; + k = function (a, b) { + switch (arguments.length) { + case 0: + return h.call(this); + case 1: + return f.call(this, a); + case 2: + return d.call(this, a, b) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + k.B = h; + k.h = f; + k.c = d; + return k + }() + }(c) + } + } + + function Ru(a, b) { + return function (c) { + var d = new hg(null); + bd(d, d); + return function (d) { + return function () { + function e(e, f) { + for (; ;) { + if (B(d) === d) { + var h = function () { + var a = e, f = bd(d, b); + return c.c ? c.c(a, f) : c.call(null, a, f) + }(); + if (Hd(h)) { + return h; + } + var k = f; + e = h; + f = k + } else { + var m = bd(d, function () { + var b = B(d), c = f; + return a.c ? a.c(b, c) : a.call(null, b, c) + }()); + return Hd(m) ? Id(function () { + var a = e, b = B(m); + return c.c ? c.c(a, b) : c.call(null, a, b) + }()) : c.c ? c.c(e, m) : c.call(null, e, m) + } + } + } + + function h(a) { + B(d) === d && (a = Jd(c.c ? c.c(a, b) : c.call(null, a, b))); + return c.h ? c.h(a) : c.call(null, a) + } + + function k() { + return c.B ? c.B() : c.call(null) + } + + var l = null; + l = function (a, b) { + switch (arguments.length) { + case 0: + return k.call(this); + case 1: + return h.call(this, a); + case 2: + return e.call(this, a, b) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + l.B = k; + l.h = h; + l.c = e; + return l + }() + }(d) + } + }; + + function Su(a, b) { + return ig.c(function (b) { + var c = J(b, 0, null); + b = J(b, 1, null); + return new R(null, 2, 5, T, [c, a.h ? a.h(b) : a.call(null, b)], null) + }, b) + } + + var Tu = function Tu(a, b) { + return new kf(null, function () { + if (E(a)) { + if (E(b)) { + var d = y(a), e = J(d, 0, null); + J(d, 1, null); + var f = y(b), h = J(f, 0, null); + J(f, 1, null); + return e < h ? ae(d, function () { + var d = vd(a); + return Tu.c ? Tu.c(d, b) : Tu.call(null, d, b) + }()) : ae(f, function () { + var d = vd(b); + return Tu.c ? Tu.c(a, d) : Tu.call(null, a, d) + }()) + } + return a + } + return null + }, null, null) + }; + + function Uu(a, b) { + var c = J(b, 0, null), d = J(b, 1, null); + return new R(null, 2, 5, T, [c + a, d], null) + } + + function Vu(a, b) { + var c = J(b, 0, null), d = J(b, 1, null); + return new R(null, 2, 5, T, [c / a, d], null) + } + + function Wu(a) { + return ig.h(function (b) { + var c = J(b, 0, null), d = J(b, 1, null); + return t(a) ? new R(null, 2, 5, T, [c < a ? c : a, d], null) : b + }) + } + + function Xu(a, b) { + return y(b) < a + } + + function Yu(a, b, c) { + return Uf($f.l(mg(ag.c(Xu, a)), ig.h(ag.c(Uu, -a)), ig.h(ag.c(Vu, b))), c) + } + + function Zu(a, b) { + return y(b) <= a + } + + function $u(a, b) { + return fe(Bi(ag.c(Zu, a), b)) + } + + function av(a, b) { + return Ru(function (b, d) { + J(b, 0, null); + var c = J(b, 1, null), f = J(d, 0, null), h = J(d, 1, null); + return new R(null, 2, 5, T, [f, a.c ? a.c(c, h) : a.call(null, c, h)], null) + }, new R(null, 2, 5, T, [0, b], null)) + } + + function bv() { + return Qu(function (a, b) { + var c = J(a, 0, null); + J(a, 1, null); + var d = J(b, 0, null), e = J(b, 1, null); + return new R(null, 2, 5, T, [c + d, e], null) + }) + } + + function cv() { + return function (a) { + return function (b) { + return function () { + function c(c, d) { + var e = J(d, 0, null), f = J(d, 1, null), h = e - B(b); + bd(b, e); + e = new R(null, 2, 5, T, [h, f], null); + return a.c ? a.c(c, e) : a.call(null, c, e) + } + + function d(b) { + return a.h ? a.h(b) : a.call(null, b) + } + + function e() { + return a.B ? a.B() : a.call(null) + } + + var f = null; + f = function (a, b) { + switch (arguments.length) { + case 0: + return e.call(this); + case 1: + return d.call(this, a); + case 2: + return c.call(this, a, b) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + f.B = e; + f.h = d; + f.c = + c; + return f + }() + }(new hg(0)) + } + }; + + function dv(a, b, c, d) { + return Uf($f.A(tg(function (a) { + return G.c(ee(a), "o") + }), ig.h(Hi(function (a) { + return Vd(a, 2) + })), cv(), be([Wu(d), bv(), av(Ju, Ot(b, c))])), a) + }; + + function ev(a) { + var b = be([gj, !0]); + if (null != a ? q === a.lf || (a.Tc ? 0 : Ab(dj, a)) : Ab(dj, a)) { + return ej(a, P(ci, b)); + } + if (E(b)) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, gj); + return function (a, b, c, d) { + return function m(e) { + return De(e) ? Ii(ig.c(m, e)) : ue(e) ? wg.l(ie(e), ig.h(m), e) : vb(e) ? Qc( + Mb(function () { + return function (a, b) { + return uf.c(a, m(b)) + } + }(a, b, c, d), Oc(he), e)) : Bb(e) === Object ? Qc(Mb(function (a, b, c, d) { + return function (a, b) { + var c = d.h ? d.h(b) : d.call(null, b), f = m(e[b]); + return Rc(a, c, f) + } + }(a, b, c, d), Oc(Ef), Ea(e))) : e + } + }(b, + c, d, t(d) ? hf : v)(a) + } + return null + }; + + function fv(a, b, c, d, e) { + this.cursor = a; + this.lines = b; + this.v = c; + this.j = d; + this.w = e; + this.m = 2229667594; + this.J = 139264 + } + + g = fv.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "cursor": + return this.cursor; + case "lines": + return this.lines; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.asciicast.v0.LegacyScreen{", ", ", "}", c, O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [pl, this.cursor], null), new R(null, 2, 5, T, [il, this.lines], null)], + null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 2, new R(null, 2, 5, T, [pl, il], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 2 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1528554851 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.cursor, b.cursor) && G.c( + this.lines, b.lines) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 2, [il, null, pl, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new fv(this.cursor, this.lines, this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(pl, b) : N.call(null, pl, b)) ? new fv(c, this.lines, this.v, this.j, null) + : t(N.c ? N.c(il, b) : N.call(null, il, b)) ? new fv(this.cursor, c, this.v, this.j, null) + : new fv(this.cursor, this.lines, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 2, 5, T, + [new R(null, 2, 5, T, [pl, this.cursor], null), new R(null, 2, 5, T, [il, this.lines], null)], + null), this.j)) + }; + g.T = function (a, b) { + return new fv(this.cursor, this.lines, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function gv(a, b) { + return y(fe(Uf($f.c(Wu(b), bv()), a))) + } + + function hv(a) { + return wg.c(Ef, ig.c(function (a) { + var b = J(a, 0, null); + a = J(a, 1, null); + var d = T; + b = jf(b); + return new R(null, 2, 5, d, [parseInt(b, 10), a], null) + }, a)) + } + + function iv(a, b) { + var c = Bg(b, il, hv); + return ii.A(hi, be([a, c])) + } + + function jv(a, b) { + var c = new r(null, 2, [il, di(), pl, new r(null, 3, [zn, 0, Aj, 0, On, !0], null)], null); + c = new fv(pl.h(c), il.h(c), null, Bf(le.A(c, pl, be([il]))), null); + return Uf($f.l(Wu(b), bv(), av(iv, c)), a) + } + + function kv(a, b) { + var c = il.h(fe(y(a))), d = Te(Xe, ig.c(function () { + return function (a) { + return H(y(a)) + } + }(c), y(mh(c)))); + c = H(c); + return new r(null, 5, [Mn, 0, fl, d, no, c, wl, gv(a, b), Uk, jv(a, b)], null) + } + + g.yd = function () { + return Wg(mh(il.h(this))) + }; + g.xd = function () { + return pl.h(this) + }; + + function lv(a) { + return ev(JSON.parse(a)) + } + + function mv(a, b, c, d) { + if (G.c(Mn.h(a), 1)) { + b = t(b) ? b : fl.h(a); + c = t(c) ? c : no.h(a); + var e = ko.h(a); + a = y(fe(Uf($f.c(Wu(d), bv()), e))); + d = Uf($f.l(Wu(d), bv(), av(Ju, Ot(b, c))), e); + d = new r(null, 5, [Mn, 1, fl, b, no, c, wl, a, Uk, d], null) + } else { + d = null; + } + return d + } + + function nv(a, b, c, d) { + var e = y(a); + G.c(Mn.h(e), 2) ? (e = y(a), a = vd(a), b = t(b) ? b : fl.h(e), c = t(c) ? c : no.h(e), d = t(d) + ? d : Qj.h(e), e = y(fe(Uf($f.l(cv(), Wu(d), bv()), a))), d = new r(null, 5, + [Mn, 2, fl, b, no, c, wl, e, Uk, dv(a, b, c, d)], null)) : d = t(il.h(ee(e))) ? kv(a, d) + : null; + return d + } + + function ov(a, b, c, d) { + try { + var e = lv(a); + return we(e) ? nv(e, b, c, d) : xe(e) ? mv(e, b, c, d) : null + } catch (k) { + try { + var f = Fo(ra(a), "\n"); + var h = ig.c(lv, f); + return nv(h, b, c, d) + } catch (l) { + return null + } + } + } + + function pv(a, b, c, d) { + var e = "string" === typeof a ? ov : we(a) ? nv : xe(a) ? mv : null; + a = t(e) ? e.M ? e.M(a, b, c, d) : e.call(null, a, b, c, d) : null; + if (t(a)) { + return a; + } + throw"only asciicast v1 and v2 formats can be opened"; + } + + Lt.prototype.yd = function () { + return xg(Ht, il.h(V.h(this))) + }; + Lt.prototype.xd = function () { + return pl.h(V.h(this)) + }; + var qv; + a:{ + var rv = ba.navigator; + if (rv) { + var sv = rv.userAgent; + if (sv) { + qv = sv; + break a + } + } + qv = "" + } + + function tv(a) { + return -1 != qv.indexOf(a) + };var uv; + + function vv() { + var a = ba.MessageChannel; + "undefined" === typeof a && "undefined" !== typeof window && window.postMessage + && window.addEventListener && !tv("Presto") && (a = function () { + var a = document.createElement("IFRAME"); + a.style.display = "none"; + a.src = ""; + document.documentElement.appendChild(a); + var b = a.contentWindow; + a = b.document; + a.open(); + a.write(""); + a.close(); + var c = "callImmediate" + Math.random(), + d = "file:" == b.location.protocol ? "*" : b.location.protocol + "//" + b.location.host; + a = pa(function (a) { + if (("*" == d || a.origin == d) && a.data == + c) { + this.port1.onmessage() + } + }, this); + b.addEventListener("message", a, !1); + this.port1 = {}; + this.port2 = { + postMessage: function () { + b.postMessage(c, d) + } + } + }); + if ("undefined" !== typeof a && !tv("Trident") && !tv("MSIE")) { + var b = new a, c = {}, d = c; + b.port1.onmessage = function () { + if (void 0 !== c.next) { + c = c.next; + var a = c.ed; + c.ed = null; + a() + } + }; + return function (a) { + d.next = {ed: a}; + d = d.next; + b.port2.postMessage(0) + } + } + return "undefined" !== typeof document && "onreadystatechange" in document.createElement( + "SCRIPT") ? function (a) { + var b = document.createElement("SCRIPT"); + b.onreadystatechange = function () { + b.onreadystatechange = null; + b.parentNode.removeChild(b); + b = null; + a(); + a = null + }; + document.documentElement.appendChild(b) + } : function (a) { + ba.setTimeout(a, 0) + } + }; + + function wv() { + 0 != xv && (yv[ja(this)] = this); + this.od = this.od; + this.Wd = this.Wd + } + + var xv = 0, yv = {}; + wv.prototype.od = !1; + wv.prototype.nd = function () { + if (this.Wd) { + for (; this.Wd.length;) { + this.Wd.shift()() + } + } + }; + + function zv() { + return tv("iPhone") && !tv("iPod") && !tv("iPad") + };var Av = tv("Opera"), Bv = tv("Trident") || tv("MSIE"), Cv = tv("Edge"), + Dv = tv("Gecko") && !(-1 != qv.toLowerCase().indexOf("webkit") && !tv("Edge")) && !(tv( + "Trident") || tv("MSIE")) && !tv("Edge"), + Ev = -1 != qv.toLowerCase().indexOf("webkit") && !tv("Edge"); + Ev && tv("Mobile"); + tv("Macintosh"); + tv("Windows"); + tv("Linux") || tv("CrOS"); + var Fv = ba.navigator || null; + Fv && (Fv.appVersion || "").indexOf("X11"); + tv("Android"); + zv(); + tv("iPad"); + tv("iPod"); + zv() || tv("iPad") || tv("iPod"); + + function Gv() { + var a = ba.document; + return a ? a.documentMode : void 0 + } + + var Hv; + a:{ + var Iv = "", Jv = function () { + var a = qv; + if (Dv) { + return /rv\:([^\);]+)(\)|;)/.exec(a); + } + if (Cv) { + return /Edge\/([\d\.]+)/.exec(a); + } + if (Bv) { + return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a); + } + if (Ev) { + return /WebKit\/(\S+)/.exec(a); + } + if (Av) { + return /(?:Version)[ \/]?(\S+)/.exec(a) + } + }(); + Jv && (Iv = Jv ? Jv[1] : ""); + if (Bv) { + var Kv = Gv(); + if (null != Kv && Kv > parseFloat(Iv)) { + Hv = String(Kv); + break a + } + } + Hv = Iv + } + var gb = {}; + + function Lv(a) { + return fb(a, function () { + for (var b = 0, c = ra(String(Hv)).split("."), d = ra(String(a)).split("."), + e = Math.max(c.length, d.length), f = 0; 0 == b && f < e; f++) { + var h = c[f] || "", k = d[f] || ""; + do { + h = /(\d*)(\D*)(.*)/.exec(h) || ["", "", "", ""]; + k = /(\d*)(\D*)(.*)/.exec(k) || ["", "", "", ""]; + if (0 == h[0].length && 0 == k[0].length) { + break; + } + b = ta(0 == h[1].length ? 0 : parseInt(h[1], 10), + 0 == k[1].length ? 0 : parseInt(k[1], 10)) || ta(0 == h[2].length, 0 == k[2].length) + || ta(h[2], k[2]); + h = h[3]; + k = k[3] + } while (0 == b) + } + return 0 <= b + }) + } + + var Mv; + var Nv = ba.document; + Mv = Nv && Bv ? Gv() || ("CSS1Compat" == Nv.compatMode ? parseInt(Hv, 10) : 5) : void 0; + var Ov; + (Ov = !Bv) || (Ov = 9 <= Number(Mv)); + var Pv = Ov, Qv = Bv && !Lv("9"); + !Ev || Lv("528"); + Dv && Lv("1.9b") || Bv && Lv("8") || Av && Lv("9.5") || Ev && Lv("528"); + Dv && !Lv("8") || Bv && Lv("9"); + var Rv = function () { + if (!ba.addEventListener || !Object.defineProperty) { + return !1; + } + var a = !1, b = Object.defineProperty({}, "passive", { + get: function () { + a = !0 + } + }); + ba.addEventListener("test", ea, b); + ba.removeEventListener("test", ea, b); + return a + }(); + + function Sv(a, b) { + this.type = a; + this.currentTarget = this.target = b; + this.defaultPrevented = this.Kc = !1; + this.af = !0 + } + + Sv.prototype.stopPropagation = function () { + this.Kc = !0 + }; + Sv.prototype.preventDefault = function () { + this.defaultPrevented = !0; + this.af = !1 + }; + + function Tv(a, b) { + Sv.call(this, a ? a.type : ""); + this.relatedTarget = this.currentTarget = this.target = null; + this.button = this.screenY = this.screenX = this.clientY = this.clientX = this.offsetY = this.offsetX = 0; + this.key = ""; + this.charCode = this.keyCode = 0; + this.metaKey = this.shiftKey = this.altKey = this.ctrlKey = !1; + this.pd = this.state = null; + if (a) { + var c = this.type = a.type, d = a.changedTouches ? a.changedTouches[0] : null; + this.target = a.target || a.srcElement; + this.currentTarget = b; + var e = a.relatedTarget; + if (e) { + if (Dv) { + a:{ + try { + eb(e.nodeName); + var f = + !0; + break a + } catch (h) { + } + f = !1 + } + f || (e = null) + } + } else { + "mouseover" == c ? e = a.fromElement : "mouseout" == c && (e = a.toElement); + } + this.relatedTarget = e; + null === d ? (this.offsetX = Ev || void 0 !== a.offsetX ? a.offsetX + : a.layerX, this.offsetY = Ev || void 0 !== a.offsetY ? a.offsetY + : a.layerY, this.clientX = void 0 !== a.clientX ? a.clientX : a.pageX, this.clientY = void 0 + !== a.clientY ? a.clientY : a.pageY, this.screenX = a.screenX || 0, this.screenY = a.screenY + || 0) : (this.clientX = void 0 !== d.clientX ? d.clientX : d.pageX, this.clientY = void 0 + !== d.clientY ? d.clientY : d.pageY, this.screenX = + d.screenX || 0, this.screenY = d.screenY || 0); + this.button = a.button; + this.keyCode = a.keyCode || 0; + this.key = a.key || ""; + this.charCode = a.charCode || ("keypress" == c ? a.keyCode : 0); + this.ctrlKey = a.ctrlKey; + this.altKey = a.altKey; + this.shiftKey = a.shiftKey; + this.metaKey = a.metaKey; + this.state = a.state; + this.pd = a; + a.defaultPrevented && this.preventDefault() + } + } + + qa(Tv, Sv); + Tv.prototype.stopPropagation = function () { + Tv.Zd.stopPropagation.call(this); + this.pd.stopPropagation ? this.pd.stopPropagation() : this.pd.cancelBubble = !0 + }; + Tv.prototype.preventDefault = function () { + Tv.Zd.preventDefault.call(this); + var a = this.pd; + if (a.preventDefault) { + a.preventDefault(); + } else if (a.returnValue = !1, Qv) { + try { + if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) { + a.keyCode = -1 + } + } catch (b) { + } + } + }; + var Uv = "closure_listenable_" + (1E6 * Math.random() | 0), Vv = 0; + + function Wv(a, b, c, d, e) { + this.listener = a; + this.Xd = null; + this.src = b; + this.type = c; + this.capture = !!d; + this.Ub = e; + this.key = ++Vv; + this.$c = this.Fd = !1 + } + + function Xv(a) { + a.$c = !0; + a.listener = null; + a.Xd = null; + a.src = null; + a.Ub = null + }; + + function Yv(a) { + this.src = a; + this.rb = {}; + this.wd = 0 + } + + Yv.prototype.add = function (a, b, c, d, e) { + var f = a.toString(); + a = this.rb[f]; + a || (a = this.rb[f] = [], this.wd++); + var h = Zv(a, b, d, e); + -1 < h ? (b = a[h], c || (b.Fd = !1)) : (b = new Wv(b, this.src, f, !!d, e), b.Fd = c, a.push( + b)); + return b + }; + Yv.prototype.remove = function (a, b, c, d) { + a = a.toString(); + if (!(a in this.rb)) { + return !1; + } + var e = this.rb[a]; + b = Zv(e, b, c, d); + return -1 < b ? (Xv(e[b]), Array.prototype.splice.call(e, b, 1), 0 == e.length + && (delete this.rb[a], this.wd--), !0) : !1 + }; + + function $v(a, b) { + var c = b.type; + c in a.rb && ya(a.rb[c], b) && (Xv(b), 0 == a.rb[c].length && (delete a.rb[c], a.wd--)) + } + + Yv.prototype.re = function (a, b, c, d) { + a = this.rb[a.toString()]; + var e = -1; + a && (e = Zv(a, b, c, d)); + return -1 < e ? a[e] : null + }; + + function Zv(a, b, c, d) { + for (var e = 0; e < a.length; ++e) { + var f = a[e]; + if (!f.$c && f.listener == b && f.capture == !!c && f.Ub == d) { + return e + } + } + return -1 + };var aw = "closure_lm_" + (1E6 * Math.random() | 0), bw = {}, cw = 0; + + function dw(a, b, c, d, e) { + if (d && d.once) { + ew(a, b, c, d, e); + } else if ("array" == n(b)) { + for (var f = 0; f < b.length; + f++) { + dw(a, b[f], c, d, e); + } + } else { + c = fw(c), a && a[Uv] ? a.Ib.add(String(b), c, !1, + ia(d) ? !!d.capture : !!d, e) : gw(a, b, c, !1, d, e) + } + } + + function gw(a, b, c, d, e, f) { + if (!b) { + throw Error("Invalid event type"); + } + var h = ia(e) ? !!e.capture : !!e, k = hw(a); + k || (a[aw] = k = new Yv(a)); + c = k.add(b, c, d, h, f); + if (!c.Xd) { + d = iw(); + c.Xd = d; + d.src = a; + d.listener = c; + if (a.addEventListener) { + Rv || (e = h), void 0 === e && (e = !1), a.addEventListener( + b.toString(), d, e); + } else if (a.attachEvent) { + a.attachEvent(jw(b.toString()), + d); + } else { + throw Error("addEventListener and attachEvent are unavailable."); + } + cw++ + } + } + + function iw() { + var a = kw, b = Pv ? function (c) { + return a.call(b.src, b.listener, c) + } : function (c) { + c = a.call(b.src, b.listener, c); + if (!c) { + return c + } + }; + return b + } + + function ew(a, b, c, d, e) { + if ("array" == n(b)) { + for (var f = 0; f < b.length; f++) { + ew(a, b[f], c, d, e); + } + } else { + c = fw(c), a + && a[Uv] ? a.Ib.add(String(b), c, !0, ia(d) ? !!d.capture : !!d, e) : gw(a, b, c, !0, d, e) + } + } + + function lw(a, b, c, d, e) { + if ("array" == n(b)) { + for (var f = 0; f < b.length; f++) { + lw(a, b[f], c, d, e); + } + } else { + d = ia(d) + ? !!d.capture : !!d, c = fw(c), a && a[Uv] ? a.Ib.remove(String(b), c, d, e) : a && (a = hw( + a)) && (b = a.re(b, c, d, e)) && mw(b) + } + } + + function mw(a) { + if ("number" != typeof a && a && !a.$c) { + var b = a.src; + if (b && b[Uv]) { + $v(b.Ib, a); + } else { + var c = a.type, d = a.Xd; + b.removeEventListener ? b.removeEventListener(c, d, a.capture) : b.detachEvent + && b.detachEvent(jw(c), d); + cw--; + (c = hw(b)) ? ($v(c, a), 0 == c.wd && (c.src = null, b[aw] = null)) : Xv(a) + } + } + } + + function jw(a) { + return a in bw ? bw[a] : bw[a] = "on" + a + } + + function nw(a, b, c, d) { + var e = !0; + if (a = hw(a)) { + if (b = a.rb[b.toString()]) { + for (b = b.concat(), a = 0; a < b.length; a++) { + var f = b[a]; + f && f.capture == c && !f.$c && (f = ow(f, d), e = e && !1 !== f) + } + } + } + return e + } + + function ow(a, b) { + var c = a.listener, d = a.Ub || a.src; + a.Fd && mw(a); + return c.call(d, b) + } + + function kw(a, b) { + if (a.$c) { + return !0; + } + if (!Pv) { + var c; + if (!(c = b)) { + a:{ + c = ["window", "event"]; + for (var d = ba, e; e = c.shift();) { + if (null != d[e]) { + d = d[e]; + } else { + c = null; + break a + } + } + c = d + } + } + e = c; + c = new Tv(e, this); + d = !0; + if (!(0 > e.keyCode || void 0 != e.returnValue)) { + a:{ + var f = !1; + if (0 == e.keyCode) { + try { + e.keyCode = -1; + break a + } catch (l) { + f = !0 + } + } + if (f || void 0 == e.returnValue) { + e.returnValue = !0 + } + } + e = []; + for (f = c.currentTarget; f; f = f.parentNode) { + e.push(f); + } + f = a.type; + for (var h = e.length - 1; !c.Kc && 0 <= h; h--) { + c.currentTarget = e[h]; + var k = nw(e[h], f, !0, c); + d = d && k + } + for (h = 0; !c.Kc && + h < e.length; h++) { + c.currentTarget = e[h], k = nw(e[h], f, !1, c), d = d && k + } + } + return d + } + return ow(a, new Tv(b, this)) + } + + function hw(a) { + a = a[aw]; + return a instanceof Yv ? a : null + } + + var pw = "__closure_events_fn_" + (1E9 * Math.random() >>> 0); + + function fw(a) { + if (ha(a)) { + return a; + } + a[pw] || (a[pw] = function (b) { + return a.handleEvent(b) + }); + return a[pw] + }; + + function qw() { + wv.call(this); + this.Ib = new Yv(this); + this.ff = this; + this.ve = null + } + + qa(qw, wv); + qw.prototype[Uv] = !0; + g = qw.prototype; + g.addEventListener = function (a, b, c, d) { + dw(this, a, b, c, d) + }; + g.removeEventListener = function (a, b, c, d) { + lw(this, a, b, c, d) + }; + g.dispatchEvent = function (a) { + var b, c = this.ve; + if (c) { + for (b = []; c; c = c.ve) { + b.push(c); + } + } + c = this.ff; + var d = a.type || a; + if (ca(a)) { + a = new Sv(a, c); + } else if (a instanceof Sv) { + a.target = a.target || c; + } else { + var e = a; + a = new Sv(d, c); + Ia(a, e) + } + e = !0; + if (b) { + for (var f = b.length - 1; !a.Kc && 0 <= f; f--) { + var h = a.currentTarget = b[f]; + e = rw(h, d, !0, a) && e + } + } + a.Kc || (h = a.currentTarget = c, e = rw(h, d, !0, a) && e, a.Kc || (e = rw(h, d, !1, a) && e)); + if (b) { + for (f = 0; !a.Kc && f < b.length; f++) { + h = a.currentTarget = b[f], e = rw(h, d, !1, a) + && e; + } + } + return e + }; + g.nd = function () { + qw.Zd.nd.call(this); + if (this.Ib) { + var a = this.Ib, b = 0, c; + for (c in a.rb) { + for (var d = a.rb[c], e = 0; e < d.length; e++) { + ++b, Xv(d[e]); + } + delete a.rb[c]; + a.wd-- + } + } + this.ve = null + }; + + function rw(a, b, c, d) { + b = a.Ib.rb[String(b)]; + if (!b) { + return !0; + } + b = b.concat(); + for (var e = !0, f = 0; f < b.length; ++f) { + var h = b[f]; + if (h && !h.$c && h.capture == c) { + var k = h.listener, l = h.Ub || h.src; + h.Fd && $v(a.Ib, h); + e = !1 !== k.call(l, d) && e + } + } + return e && 0 != d.af + } + + g.re = function (a, b, c, d) { + return this.Ib.re(String(a), b, c, d) + }; + + function sw(a, b, c) { + if (ha(a)) { + c && (a = pa(a, c)); + } else if (a && "function" == typeof a.handleEvent) { + a = pa( + a.handleEvent, a); + } else { + throw Error("Invalid listener argument"); + } + return 2147483647 < Number(b) ? -1 : ba.setTimeout(a, b || 0) + }; + + function tw() { + } + + tw.prototype.Ke = null; + + function uw(a) { + var b; + (b = a.Ke) || (b = {}, vw(a) && (b[0] = !0, b[1] = !0), b = a.Ke = b); + return b + };var ww; + + function xw() { + } + + qa(xw, tw); + + function yw(a) { + return (a = vw(a)) ? new ActiveXObject(a) : new XMLHttpRequest + } + + function vw(a) { + if (!a.Te && "undefined" == typeof XMLHttpRequest && "undefined" != typeof ActiveXObject) { + for (var b = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", + "Microsoft.XMLHTTP"], c = 0; c < b.length; c++) { + var d = b[c]; + try { + return new ActiveXObject(d), a.Te = d + } catch (e) { + } + } + throw Error( + "Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed"); + } + return a.Te + } + + ww = new xw; + + function zw(a) { + qw.call(this); + this.headers = new Ma; + this.ce = a || null; + this.oc = !1; + this.be = this.ca = null; + this.ue = ""; + this.Ic = this.se = this.Sd = this.qe = !1; + this.Ae = 0; + this.$d = null; + this.$e = Aw; + this.Be = this.Lf = this.ef = !1 + } + + qa(zw, qw); + var Aw = "", Bw = /^https?$/i, Cw = ["POST", "PUT"], Dw = []; + + function Ew(a, b) { + var c = new zw; + Dw.push(c); + b && c.Ib.add("complete", b, !1, void 0, void 0); + c.Ib.add("ready", c.gf, !0, void 0, void 0); + c.send(a, void 0, void 0, void 0); + return c + } + + g = zw.prototype; + g.gf = function () { + if (!this.od && (this.od = !0, this.nd(), 0 != xv)) { + var a = ja(this); + delete yv[a] + } + ya(Dw, this) + }; + g.send = function (a, b, c, d) { + if (this.ca) { + throw Error( + "[goog.net.XhrIo] Object is active with another request\x3d" + this.ue + "; newUri\x3d" + + a); + } + b = b ? b.toUpperCase() : "GET"; + this.ue = a; + this.qe = !1; + this.oc = !0; + this.ca = this.ce ? yw(this.ce) : yw(ww); + this.be = this.ce ? uw(this.ce) : uw(ww); + this.ca.onreadystatechange = pa(this.Ye, this); + this.Lf && "onprogress" in this.ca && (this.ca.onprogress = pa(function (a) { + this.Xe(a, !0) + }, this), this.ca.upload && (this.ca.upload.onprogress = pa(this.Xe, this))); + try { + this.se = !0, this.ca.open(b, String(a), !0), + this.se = !1 + } catch (f) { + Fw(this); + return + } + a = c || ""; + var e = this.headers.clone(); + d && La(d, function (a, b) { + e.set(b, a) + }); + d = wa(e.Xc()); + c = ba.FormData && a instanceof ba.FormData; + !(0 <= ua(Cw, b)) || d || c || e.set("Content-Type", + "application/x-www-form-urlencoded;charset\x3dutf-8"); + e.forEach(function (a, b) { + this.ca.setRequestHeader(b, a) + }, this); + this.$e && (this.ca.responseType = this.$e); + "withCredentials" in this.ca && this.ca.withCredentials !== this.ef + && (this.ca.withCredentials = this.ef); + try { + Gw(this), 0 < this.Ae && ((this.Be = Hw(this.ca)) ? + (this.ca.timeout = this.Ae, this.ca.ontimeout = pa(this.cf, this)) : this.$d = sw(this.cf, + this.Ae, this)), this.Sd = !0, this.ca.send(a), this.Sd = !1 + } catch (f) { + Fw(this) + } + }; + + function Hw(a) { + return Bv && Lv(9) && "number" == typeof a.timeout && void 0 !== a.ontimeout + } + + function xa(a) { + return "content-type" == a.toLowerCase() + } + + g.cf = function () { + "undefined" != typeof aa && this.ca && (this.dispatchEvent("timeout"), this.abort(8)) + }; + + function Fw(a) { + a.oc = !1; + a.ca && (a.Ic = !0, a.ca.abort(), a.Ic = !1); + Iw(a); + Jw(a) + } + + function Iw(a) { + a.qe || (a.qe = !0, a.dispatchEvent("complete"), a.dispatchEvent("error")) + } + + g.abort = function () { + this.ca && this.oc + && (this.oc = !1, this.Ic = !0, this.ca.abort(), this.Ic = !1, this.dispatchEvent( + "complete"), this.dispatchEvent("abort"), Jw(this)) + }; + g.nd = function () { + this.ca && (this.oc && (this.oc = !1, this.Ic = !0, this.ca.abort(), this.Ic = !1), Jw(this, + !0)); + zw.Zd.nd.call(this) + }; + g.Ye = function () { + this.od || (this.se || this.Sd || this.Ic ? Kw(this) : this.If()) + }; + g.If = function () { + Kw(this) + }; + + function Kw(a) { + if (a.oc && "undefined" != typeof aa && (!a.be[1] || 4 != Lw(a) || 2 != Mw(a))) { + if (a.Sd && 4 + == Lw(a)) { + sw(a.Ye, 0, a); + } else if (a.dispatchEvent("readystatechange"), 4 == Lw(a)) { + a.oc = !1; + try { + var b = Mw(a); + a:switch (b) { + case 200: + case 201: + case 202: + case 204: + case 206: + case 304: + case 1223: + var c = !0; + break a; + default: + c = !1 + } + var d; + if (!(d = c)) { + var e; + if (e = 0 === b) { + var f = String(a.ue).match(Pa)[1] || null; + if (!f && ba.self && ba.self.location) { + var h = ba.self.location.protocol; + f = h.substr(0, h.length - 1) + } + e = !Bw.test(f ? f.toLowerCase() : "") + } + d = e + } + d ? (a.dispatchEvent("complete"), + a.dispatchEvent("success")) : Iw(a) + } finally { + Jw(a) + } + } + } + } + + g.Xe = function (a, b) { + this.dispatchEvent(Nw(a, "progress")); + this.dispatchEvent(Nw(a, b ? "downloadprogress" : "uploadprogress")) + }; + + function Nw(a, b) { + return {type: b, lengthComputable: a.lengthComputable, loaded: a.loaded, total: a.total} + } + + function Jw(a, b) { + if (a.ca) { + Gw(a); + var c = a.ca, d = a.be[0] ? ea : null; + a.ca = null; + a.be = null; + b || a.dispatchEvent("ready"); + try { + c.onreadystatechange = d + } catch (e) { + } + } + } + + function Gw(a) { + a.ca && a.Be && (a.ca.ontimeout = null); + "number" == typeof a.$d && (ba.clearTimeout(a.$d), a.$d = null) + } + + function Lw(a) { + return a.ca ? a.ca.readyState : 0 + } + + function Mw(a) { + try { + return 2 < Lw(a) ? a.ca.status : -1 + } catch (b) { + return -1 + } + } + + g.getResponseHeader = function (a) { + if (this.ca && 4 == Lw(this)) { + return a = this.ca.getResponseHeader(a), null === a ? void 0 : a + } + }; + g.getAllResponseHeaders = function () { + return this.ca && 4 == Lw(this) ? this.ca.getAllResponseHeaders() : "" + }; + var Ow, Pw, Qw, Rw = function Rw(a, b) { + if (null != a && null != a.oe) { + return a.oe(0, b); + } + var d = Rw[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Rw._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("ReadPort.take!", a); + }, Sw = function Sw(a, b, c) { + if (null != a && null != a.Od) { + return a.Od(0, b, c); + } + var e = Sw[n(null == a ? null : a)]; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + e = Sw._; + if (null != e) { + return e.l ? e.l(a, b, c) : e.call(null, a, b, c); + } + throw Cb("WritePort.put!", a); + }, Tw = function Tw(a) { + if (null != a && null != + a.ld) { + return a.ld(); + } + var c = Tw[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Tw._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Channel.close!", a); + }, Uw = function Uw(a) { + if (null != a && null != a.vb) { + return a.vb(a); + } + var c = Uw[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = Uw._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Handler.active?", a); + }, Vw = function Vw(a) { + if (null != a && null != a.tb) { + return a.tb(a); + } + var c = Vw[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, + a); + } + c = Vw._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Handler.commit", a); + }, Ww = function Ww(a, b) { + if (null != a && null != a.Md) { + return a.Md(a, b); + } + var d = Ww[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Ww._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("Buffer.add!*", a); + }, Xw = function Xw(a) { + switch (arguments.length) { + case 1: + return Xw.h(arguments[0]); + case 2: + return Xw.c(arguments[0], arguments[1]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + Xw.h = function (a) { + return a + }; + Xw.c = function (a, b) { + return Ww(a, b) + }; + Xw.L = 2; + + function Yw(a, b, c, d, e) { + for (var f = 0; ;) { + if (f < e) { + c[d + f] = a[b + f], f += 1; + } else { + break + } + } + } + + function Zw(a, b, c, d) { + this.head = a; + this.fa = b; + this.length = c; + this.o = d + } + + Zw.prototype.pop = function () { + if (0 === this.length) { + return null; + } + var a = this.o[this.fa]; + this.o[this.fa] = null; + this.fa = (this.fa + 1) % this.o.length; + --this.length; + return a + }; + Zw.prototype.unshift = function (a) { + this.o[this.head] = a; + this.head = (this.head + 1) % this.o.length; + this.length += 1; + return null + }; + + function $w(a, b) { + a.length + 1 === a.o.length && a.resize(); + a.unshift(b) + } + + Zw.prototype.resize = function () { + var a = Array(2 * this.o.length); + return this.fa < this.head ? (Yw(this.o, this.fa, a, 0, + this.length), this.fa = 0, this.head = this.length, this.o = a) : this.fa > this.head ? (Yw( + this.o, this.fa, a, 0, this.o.length - this.fa), Yw(this.o, 0, a, this.o.length - this.fa, + this.head), this.fa = 0, this.head = this.length, this.o = a) : this.fa === this.head + ? (this.head = this.fa = 0, this.o = a) : null + }; + + function ax(a, b) { + for (var c = a.length, d = 0; ;) { + if (d < c) { + var e = a.pop(); + (b.h ? b.h(e) : b.call(null, e)) && a.unshift(e); + d += 1 + } else { + break + } + } + } + + function bx(a) { + return new Zw(0, 0, 0, Array(a)) + } + + function cx(a, b) { + this.aa = a; + this.n = b; + this.m = 2; + this.J = 0 + } + + g = cx.prototype; + g.Nd = function () { + return this.aa.length === this.n + }; + g.Sc = function () { + return this.aa.pop() + }; + g.Md = function (a, b) { + $w(this.aa, b); + return this + }; + g.ne = function () { + return null + }; + g.W = function () { + return this.aa.length + }; + + function dx(a, b) { + this.aa = a; + this.n = b; + this.m = 2; + this.J = 0 + } + + g = dx.prototype; + g.Nd = function () { + return !1 + }; + g.Sc = function () { + return this.aa.pop() + }; + g.Md = function (a, b) { + this.aa.length !== this.n && this.aa.unshift(b); + return this + }; + g.ne = function () { + return null + }; + g.W = function () { + return this.aa.length + }; + if ("undefined" === typeof ex) { + var ex = {}; + } + + function fx(a) { + this.H = a; + this.m = 2; + this.J = 0 + } + + g = fx.prototype; + g.Nd = function () { + return !1 + }; + g.Sc = function () { + return this.H + }; + g.Md = function (a, b) { + t(ex === this.H) && (this.H = b); + return this + }; + g.ne = function () { + return t(ex === this.H) ? this.H = null : null + }; + g.W = function () { + return t(ex === this.H) ? 0 : 1 + }; + var gx = bx(32), hx = !1, ix = !1; + + function jx() { + hx = !0; + ix = !1; + for (var a = 0; ;) { + var b = gx.pop(); + if (null != b && (b.B ? b.B() : b.call(null), 1024 > a)) { + a += 1; + continue + } + break + } + hx = !1; + return 0 < gx.length ? kx.B ? kx.B() : kx.call(null) : null + } + + function kx() { + if (ix && hx) { + return null; + } + ix = !0; + !ha(ba.setImmediate) || ba.Window && ba.Window.prototype && !tv("Edge") + && ba.Window.prototype.setImmediate == ba.setImmediate ? (uv || (uv = vv()), uv(jx)) + : ba.setImmediate(jx) + } + + function lx(a) { + $w(gx, a); + kx() + } + + function mx(a, b) { + setTimeout(a, b) + };var nx; + + function ox(a) { + "undefined" === typeof nx && (nx = function (a, c) { + this.H = a; + this.Af = c; + this.m = 425984; + this.J = 0 + }, nx.prototype.T = function (a, c) { + return new nx(this.H, c) + }, nx.prototype.P = function () { + return this.Af + }, nx.prototype.pc = function () { + return this.H + }, nx.Wc = function () { + return new R(null, 2, 5, T, [Km, qo], null) + }, nx.qc = !0, nx.Tb = "cljs.core.async.impl.channels/t_cljs$core$async$impl$channels36582", nx.Ec = function (a, + c) { + return Jc(c, "cljs.core.async.impl.channels/t_cljs$core$async$impl$channels36582") + }); + return new nx(a, Ef) + } + + function px(a, b) { + this.Ub = a; + this.H = b + } + + function qx(a) { + return Uw(a.Ub) + } + + function rx(a, b, c, d, e, f, h) { + this.bd = a; + this.Qd = b; + this.jc = c; + this.Pd = d; + this.aa = e; + this.closed = f; + this.Ab = h + } + + function sx(a) { + for (; ;) { + var b = a.jc.pop(); + if (null != b) { + var c = b.Ub, d = b.H; + if (c.vb(null)) { + var e = c.tb(null); + lx(function (a) { + return function () { + return a.h ? a.h(!0) : a.call(null, !0) + } + }(e, c, d, b, a)) + } else { + continue + } + } + break + } + ax(a.jc, Zf(!1)); + a.ld() + } + + rx.prototype.Od = function (a, b, c) { + var d = this, e = this, f = d.closed; + if (f || !c.vb(null)) { + return ox(!f); + } + if (t(function () { + var a = d.aa; + return t(a) ? wb(d.aa.Nd(null)) : a + }())) { + c.tb(null); + var h = Hd(d.Ab.c ? d.Ab.c(d.aa, b) : d.Ab.call(null, d.aa, b)); + c = function () { + for (var a = he; ;) { + if (0 < d.bd.length && 0 < H(d.aa)) { + var b = d.bd.pop(); + if (b.vb(null)) { + var c = b.tb(null), k = d.aa.Sc(null); + a = ge.c(a, function (a, b, c) { + return function () { + return b.h ? b.h(c) : b.call(null, c) + } + }(a, c, k, b, h, f, e)) + } + } else { + return a + } + } + }(); + h && sx(e); + if (E(c)) { + c = E(c); + a = null; + for (var k = 0, + l = 0; ;) { + if (l < k) { + var p = a.$(null, l); + lx(p); + l += 1 + } else if (c = E(c)) { + a = c, Ae(a) ? (c = Wc(a), l = Xc(a), a = c, k = H(c), c = l) : (c = y( + a), lx(c), c = z(a), a = null, k = 0), l = 0; + } else { + break + } + } + } + return ox(!0) + } + a = function () { + for (; ;) { + var a = d.bd.pop(); + if (t(a)) { + if (t(a.vb(null))) { + return a + } + } else { + return null + } + } + }(); + if (t(a)) { + return k = Vw(a), c.tb(null), lx(function (a) { + return function () { + return a.h ? a.h(b) : a.call(null, b) + } + }(k, a, f, e)), ox(!0); + } + 64 < d.Pd ? (d.Pd = 0, ax(d.jc, qx)) : d.Pd += 1; + t(c.md(null)) && $w(d.jc, new px(c, b)); + return null + }; + rx.prototype.oe = function (a, b) { + var c = this; + if (b.vb(null)) { + if (null != c.aa && 0 < H(c.aa)) { + var d = b.tb(null); + if (t(d)) { + var e = c.aa.Sc(null), f = 0 < c.jc.length ? function () { + for (var a = he; ;) { + var b = c.jc.pop(), d = b.Ub; + b = b.H; + var e = d.vb(null); + d = e ? d.tb(null) : e; + a = t(d) ? ge.c(a, d) : a; + b = t(d) ? Hd(c.Ab.c ? c.Ab.c(c.aa, b) : c.Ab.call(null, c.aa, b)) : null; + if (!(wb(b) && wb(c.aa.Nd(null)) && 0 < c.jc.length)) { + return new R(null, 2, 5, T, + [b, a], null) + } + } + }() : null, h = J(f, 0, null), k = J(f, 1, null); + t(h) && sx(this); + for (var l = E(k), p = null, m = 0, u = 0; ;) { + if (u < m) { + var w = p.$(null, + u); + lx(function (a, b, c, d, e) { + return function () { + return e.h ? e.h(!0) : e.call(null, !0) + } + }(l, p, m, u, w, e, f, h, k, d, d, this)); + u += 1 + } else { + var x = E(l); + if (x) { + w = x; + if (Ae(w)) { + l = Wc(w), u = Xc(w), p = l, m = H(l), l = u; + } else { + var C = y(w); + lx(function (a, b, c, d, e) { + return function () { + return e.h ? e.h(!0) : e.call(null, !0) + } + }(l, p, m, u, C, w, x, e, f, h, k, d, d, this)); + l = z(w); + p = null; + m = 0 + } + u = 0 + } else { + break + } + } + } + return ox(e) + } + return null + } + d = function () { + for (; ;) { + var a = c.jc.pop(); + if (t(a)) { + if (Uw(a.Ub)) { + return a + } + } else { + return null + } + } + }(); + if (t(d)) { + return e = Vw(d.Ub), b.tb(null), lx(function (a) { + return function () { + return a.h ? + a.h(!0) : a.call(null, !0) + } + }(e, d, this)), ox(d.H); + } + if (t(c.closed)) { + return t(c.aa) && (c.Ab.h ? c.Ab.h(c.aa) : c.Ab.call(null, c.aa)), t( + function () { + var a = b.vb(null); + return t(a) ? b.tb(null) : a + }()) ? (d = function () { + var a = c.aa; + return t(a) ? 0 < H(c.aa) : a + }(), e = t(d) ? c.aa.Sc(null) : null, ox(e)) : null; + } + 64 < c.Qd ? (c.Qd = 0, ax(c.bd, Uw)) : c.Qd += 1; + t(b.md(null)) && $w(c.bd, b) + } + return null + }; + rx.prototype.ld = function () { + var a = this; + if (!a.closed) { + a.closed = !0; + for (t(function () { + var b = a.aa; + return t(b) ? 0 === a.jc.length : b + }()) && (a.Ab.h ? a.Ab.h(a.aa) : a.Ab.call(null, a.aa)); ;) { + var b = a.bd.pop(); + if (null != b) { + if (b.vb(null)) { + var c = b.tb(null), d = t(function () { + var b = a.aa; + return t(b) ? 0 < H(a.aa) : b + }()) ? a.aa.Sc(null) : null; + lx(function (a, b) { + return function () { + return a.h ? a.h(b) : a.call(null, b) + } + }(c, d, b, this)) + } + } else { + break + } + } + t(a.aa) && a.aa.ne(null) + } + return null + }; + + function tx(a) { + console.log(a); + return null + } + + function ux(a, b) { + var c = t(null) ? null : tx; + c = c.h ? c.h(b) : c.call(null, b); + return null == c ? a : Xw.c(a, c) + } + + function vx(a, b) { + return new rx(bx(32), 0, bx(32), 0, a, !1, function () { + return function (a) { + return function () { + function b(b, c) { + try { + return a.c ? a.c(b, c) : a.call(null, b, c) + } catch (l) { + return ux(b, l) + } + } + + function c(b) { + try { + return a.h ? a.h(b) : a.call(null, b) + } catch (k) { + return ux(b, k) + } + } + + var f = null; + f = function (a, d) { + switch (arguments.length) { + case 1: + return c.call(this, a); + case 2: + return b.call(this, a, d) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + f.h = c; + f.c = b; + return f + }() + }(t(b) ? b.h ? b.h(Xw) : b.call(null, Xw) : Xw) + }()) + };var wx; + + function xx(a) { + "undefined" === typeof wx && (wx = function (a, c) { + this.Cb = a; + this.Cf = c; + this.m = 393216; + this.J = 0 + }, wx.prototype.T = function (a, c) { + return new wx(this.Cb, c) + }, wx.prototype.P = function () { + return this.Cf + }, wx.prototype.vb = function () { + return !0 + }, wx.prototype.md = function () { + return !0 + }, wx.prototype.tb = function () { + return this.Cb + }, wx.Wc = function () { + return new R(null, 2, 5, T, [to, Um], null) + }, wx.qc = !0, wx.Tb = "cljs.core.async.impl.ioc-helpers/t_cljs$core$async$impl$ioc_helpers42956", wx.Ec = function (a, + c) { + return Jc(c, "cljs.core.async.impl.ioc-helpers/t_cljs$core$async$impl$ioc_helpers42956") + }); + return new wx(a, Ef) + } + + function yx(a) { + try { + var b = a[0]; + return b.h ? b.h(a) : b.call(null, a) + } catch (c) { + if (c instanceof Object) { + throw b = c, a[6].ld(), b; + } + throw c; + } + } + + function zx(a, b, c) { + c = c.oe(0, xx(function (c) { + a[2] = c; + a[1] = b; + return yx(a) + })); + return t(c) ? (a[2] = B(c), a[1] = b, Z) : null + } + + function Ax(a, b, c, d) { + c = c.Od(0, d, xx(function (c) { + a[2] = c; + a[1] = b; + return yx(a) + })); + return t(c) ? (a[2] = B(c), a[1] = b, Z) : null + } + + function Bx(a, b) { + var c = a[6]; + null != b && c.Od(0, b, xx(function () { + return function () { + return null + } + }(c))); + c.ld(); + return c + } + + function Cx(a) { + for (; ;) { + var b = a[4], c = ul.h(b), d = Pm.h(b), e = a[5]; + if (t(function () { + var a = e; + return t(a) ? wb(b) : a + }())) { + throw e; + } + if (t(function () { + var a = e; + return t(a) ? (a = c, t(a) ? G.c(Ik, d) || e instanceof d : a) : a + }())) { + a[1] = c; + a[2] = e; + a[5] = null; + a[4] = K.A(b, ul, null, be([Pm, null])); + break + } + if (t(function () { + var a = e; + return t(a) ? wb(c) && wb(Lk.h(b)) : a + }())) { + a[4] = Xm.h(b); + } else { + if (t(function () { + var a = e; + return t(a) ? (a = wb(c)) ? Lk.h(b) : a : a + }())) { + a[1] = Lk.h(b); + a[4] = K.l(b, Lk, null); + break + } + if (t(function () { + var a = wb(e); + return a ? Lk.h(b) : a + }())) { + a[1] = + Lk.h(b); + a[4] = K.l(b, Lk, null); + break + } + if (wb(e) && wb(Lk.h(b))) { + a[1] = cn.h(b); + a[4] = Xm.h(b); + break + } + throw Error("No matching clause"); + } + } + }; + + function Dx(a, b, c) { + this.key = a; + this.H = b; + this.forward = c; + this.m = 2155872256; + this.J = 0 + } + + Dx.prototype.S = function () { + var a = this.key; + return Tb(Tb(wd, this.H), a) + }; + Dx.prototype.R = function (a, b, c) { + return Y(b, Qi, "[", " ", "]", c, this) + }; + + function Ex(a, b, c) { + c = Array(c + 1); + for (var d = 0; ;) { + if (d < c.length) { + c[d] = null, d += 1; + } else { + break; + } + } + return new Dx(a, b, c) + } + + function Fx(a, b, c, d) { + for (; ;) { + if (0 > c) { + return a; + } + a:for (; ;) { + var e = c < a.forward.length ? a.forward[c] : null; + if (t(e)) { + if (e.key < b) { + a = e; + } else { + break a; + } + } else { + break a + } + } + null != d && (d[c] = a); + --c + } + } + + function Gx(a, b) { + this.header = a; + this.level = b; + this.m = 2155872256; + this.J = 0 + } + + Gx.prototype.put = function (a, b) { + var c = Array(15), d = Fx(this.header, a, this.level, c).forward[0]; + if (null != d && d.key === a) { + return d.H = b; + } + a:for (d = 0; ;) { + if (.5 > Math.random() && 15 > d) { + d += 1; + } else { + break a; + } + } + if (d > this.level) { + for (var e = this.level + 1; ;) { + if (e <= d + 1) { + c[e] = this.header, e += 1; + } else { + break; + } + } + this.level = d + } + for (d = Ex(a, b, Array(d)); ;) { + return 0 <= this.level + ? (c = c[0].forward, d.forward[0] = c[0], c[0] = d) : null + } + }; + Gx.prototype.remove = function (a) { + var b = Array(15), c = Fx(this.header, a, this.level, b); + c = 0 === c.forward.length ? null : c.forward[0]; + if (null != c && c.key === a) { + for (a = 0; ;) { + if (a <= this.level) { + var d = b[a].forward; + c === (a < d.length ? d[a] : null) && (d[a] = c.forward[a]); + a += 1 + } else { + break; + } + } + for (; ;) { + if (0 < this.level && this.level < this.header.forward.length && null + == this.header.forward[this.level]) { + --this.level; + } else { + return null + } + } + } else { + return null + } + }; + + function Hx(a) { + for (var b = Ix, c = b.header, d = b.level; ;) { + if (0 > d) { + return c === b.header ? null : c; + } + var e; + a:for (e = c; ;) { + e = d < e.forward.length ? e.forward[d] : null; + if (null == e) { + e = null; + break a + } + if (e.key >= a) { + break a + } + } + null != e ? (--d, c = e) : --d + } + } + + Gx.prototype.S = function () { + return function (a) { + return function d(c) { + return new kf(null, function () { + return function () { + return null == c ? null : ae(new R(null, 2, 5, T, [c.key, c.H], null), d(c.forward[0])) + } + }(a), null, null) + } + }(this)(this.header.forward[0]) + }; + Gx.prototype.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "{", ", ", "}", c, this) + }; + var Ix = new Gx(Ex(null, null, 0), 0); + + function Jx(a) { + var b = (new Date).valueOf() + a, c = Hx(b), d = t(t(c) ? c.key < b + 10 : c) ? c.H : null; + if (t(d)) { + return d; + } + var e = vx(null, null); + Ix.put(b, e); + mx(function (a, b, c) { + return function () { + Ix.remove(c); + return Tw(a) + } + }(e, d, b, c), a); + return e + }; + + function Kx(a) { + return Lx(a, null) + } + + function Mx(a, b) { + return Lx(a, b) + } + + function Lx(a, b) { + var c = G.c(a, 0) ? null : a; + return vx("number" === typeof c ? new cx(bx(c), c) : c, b) + } + + var Nx = function (a) { + "undefined" === typeof Ow && (Ow = function (a, c, d) { + this.Cb = a; + this.Je = c; + this.Df = d; + this.m = 393216; + this.J = 0 + }, Ow.prototype.T = function (a, c) { + return new Ow(this.Cb, this.Je, c) + }, Ow.prototype.P = function () { + return this.Df + }, Ow.prototype.vb = function () { + return !0 + }, Ow.prototype.md = function () { + return this.Je + }, Ow.prototype.tb = function () { + return this.Cb + }, Ow.Wc = function () { + return new R(null, 3, 5, T, [to, jk, gk], null) + }, Ow.qc = !0, Ow.Tb = "cljs.core.async/t_cljs$core$async43104", Ow.Ec = function (a, c) { + return Jc(c, "cljs.core.async/t_cljs$core$async43104") + }); + return new Ow(a, !0, Ef) + }(function () { + return null + }); + + function Ox(a, b) { + var c = Sw(a, b, Nx); + return t(c) ? B(c) : !0 + } + + function Px(a) { + for (var b = Array(a), c = 0; ;) { + if (c < a) { + b[c] = 0, c += 1; + } else { + break; + } + } + for (c = 1; ;) { + if (G.c(c, a)) { + return b; + } + var d = Math.floor(Math.random() * c); + b[c] = b[d]; + b[d] = c; + c += 1 + } + } + + function Qx() { + var a = dg.h(!0); + "undefined" === typeof Pw && (Pw = function (a, c) { + this.Hc = a; + this.Ef = c; + this.m = 393216; + this.J = 0 + }, Pw.prototype.T = function () { + return function (a, c) { + return new Pw(this.Hc, c) + } + }(a), Pw.prototype.P = function () { + return function () { + return this.Ef + } + }(a), Pw.prototype.vb = function () { + return function () { + return B(this.Hc) + } + }(a), Pw.prototype.md = function () { + return function () { + return !0 + } + }(a), Pw.prototype.tb = function () { + return function () { + fg(this.Hc, null); + return !0 + } + }(a), Pw.Wc = function () { + return function () { + return new R(null, + 2, 5, T, [em, ek], null) + } + }(a), Pw.qc = !0, Pw.Tb = "cljs.core.async/t_cljs$core$async43126", Pw.Ec = function () { + return function (a, c) { + return Jc(c, "cljs.core.async/t_cljs$core$async43126") + } + }(a)); + return new Pw(a, Ef) + } + + function Rx(a, b) { + "undefined" === typeof Qw && (Qw = function (a, b, e) { + this.Hc = a; + this.ed = b; + this.Ff = e; + this.m = 393216; + this.J = 0 + }, Qw.prototype.T = function (a, b) { + return new Qw(this.Hc, this.ed, b) + }, Qw.prototype.P = function () { + return this.Ff + }, Qw.prototype.vb = function () { + return Uw(this.Hc) + }, Qw.prototype.md = function () { + return !0 + }, Qw.prototype.tb = function () { + Vw(this.Hc); + return this.ed + }, Qw.Wc = function () { + return new R(null, 3, 5, T, [em, Mk, hl], null) + }, Qw.qc = !0, Qw.Tb = "cljs.core.async/t_cljs$core$async43129", Qw.Ec = function (a, b) { + return Jc(b, + "cljs.core.async/t_cljs$core$async43129") + }); + return new Qw(a, b, Ef) + } + + function Sx(a, b, c) { + var d = Qx(), e = H(b), f = Px(e), h = Im.h(c), k = function () { + for (var c = 0; ;) { + if (c < e) { + var k = t(h) ? c : f[c], m = Vd(b, k), u = ze(m) ? m.h ? m.h(0) : m.call(null, 0) : null, + w = t(u) ? function () { + var b = m.h ? m.h(1) : m.call(null, 1); + return Sw(u, b, Rx(d, function (b, c, d, e, f) { + return function (b) { + b = new R(null, 2, 5, T, [b, f], null); + return a.h ? a.h(b) : a.call(null, b) + } + }(c, b, k, m, u, d, e, f, h))) + }() : Rw(m, Rx(d, function (b, c, d) { + return function (b) { + b = new R(null, 2, 5, T, [b, d], null); + return a.h ? a.h(b) : a.call(null, b) + } + }(c, k, m, u, d, e, f, h))); + if (t(w)) { + return ox(new R(null, + 2, 5, T, [B(w), function () { + var a = u; + return t(a) ? a : m + }()], null)); + } + c += 1 + } else { + return null + } + } + }(); + return t(k) ? k : He(c, Ik) && (k = function () { + var a = Uw(d); + return t(a) ? Vw(d) : a + }(), t(k)) ? ox(new R(null, 2, 5, T, [Ik.h(c), Ik], null)) : null + } + + function Tx(a, b) { + var c = Kx(1); + lx(function (c) { + return function () { + var d = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (x) { + if (x instanceof Object) { + b[5] = x, Cx(b), d = Z; + } else { + throw x; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + (arguments.length - + 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (c) { + var d = c[1]; + return 7 === d ? (c[2] = c[2], c[1] = 3, Z) : 1 === d ? (c[2] = null, c[1] = 2, Z) : 4 + === d ? (d = c[2], c[7] = d, c[1] = t(null == d) ? 5 : 6, Z) : 13 === d + ? (c[2] = null, c[1] = 14, Z) : 6 === d ? (d = c[7], Ax(c, 11, b, d)) : 3 === d + ? Bx(c, c[2]) : 12 === d ? (c[2] = null, c[1] = 2, Z) : 2 === d ? zx(c, 4, a) : 11 + === d ? (c[1] = t(c[2]) ? 12 : 13, Z) : 9 === d ? (c[2] = null, c[1] = 10, Z) : 5 + === d ? (c[1] = t(!0) ? 8 : 9, Z) : 14 === d || 10 === d + ? (c[2] = c[2], c[1] = 7, Z) : 8 === d ? (d = Tw(b), c[2] = d, c[1] = 10, Z) + : null + } + }(c), c) + }(), f = function () { + var a = d.B ? d.B() : d.call(null); + a[6] = c; + return a + }(); + return yx(f) + } + }(c)) + } + + function Ux(a) { + for (var b = [], c = arguments.length, d = 0; ;) { + if (d < c) { + b.push( + arguments[d]), d += 1; + } else { + break; + } + } + return Vx(arguments[0], arguments[1], arguments[2], + 3 < b.length ? new Jb(b.slice(3), 0, null) : null) + } + + function Vx(a, b, c, d) { + var e = null != d && (d.m & 64 || q === d.G) ? P(U, d) : d; + a[1] = b; + b = Sx(function () { + return function (b) { + a[2] = b; + return yx(a) + } + }(d, e, e), c, e); + return t(b) ? (a[2] = B(b), Z) : null + }; + + function Wx() { + } + + var Xx = function Xx(a, b) { + if (null != a && null != a.qb) { + return a.qb(a, b); + } + var d = Xx[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Xx._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("Update.update-player", a); + }; + + function Yx() { + } + + var Zx = function Zx(a, b) { + if (null != a && null != a.de) { + return a.de(a, b); + } + var d = Zx[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = Zx._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("ChannelSource.get-channels", a); + }; + + function $x(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = $x.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.FastForward{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1082393681 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new $x(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new $x(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new $x(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function ay(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = ay.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.Rewind{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1020675721 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new ay(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new ay(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new ay(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function by(a, b, c, d) { + this.position = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = by.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "position": + return this.position; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.Seek{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [nn, this.position], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [nn], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -2136325183 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.position, b.position) && G.c( + this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [nn, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new by(this.position, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(nn, b) : N.call(null, nn, b)) ? new by(c, this.v, this.j, null) : new by( + this.position, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E( + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [nn, this.position], null)], null), this.j)) + }; + g.T = function (a, b) { + return new by(this.position, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function cy(a) { + return new by(a, null, null, null) + } + + function dy(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = dy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.SpeedDown{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1945704126 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new dy(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new dy(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new dy(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function ey(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = ey.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.SpeedUp{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 2001377313 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new ey(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new ey(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new ey(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function fy(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = fy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.TogglePlay{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1662385780 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new fy(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new fy(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new fy(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function gy(a, b, c, d) { + this.show = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = gy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "show": + return this.show; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.ShowCursor{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [so, this.show], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [so], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1380979759 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.show, b.show) && G.c(this.j, + b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [so, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new gy(this.show, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(so, b) : N.call(null, so, b)) ? new gy(c, this.v, this.j, null) : new gy( + this.show, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [so, this.show], null)], null), this.j)) + }; + g.T = function (a, b) { + return new gy(this.show, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function hy(a, b, c, d) { + this.show = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = hy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "show": + return this.show; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.ShowHud{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [so, this.show], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [so], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1875838466 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.show, b.show) && G.c(this.j, + b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [so, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new hy(this.show, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(so, b) : N.call(null, so, b)) ? new hy(c, this.v, this.j, null) : new hy( + this.show, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [so, this.show], null)], null), this.j)) + }; + g.T = function (a, b) { + return new hy(this.show, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function iy(a) { + return new hy(a, null, null, null) + } + + function jy(a, b, c, d, e, f) { + this.width = a; + this.height = b; + this.duration = c; + this.v = d; + this.j = e; + this.w = f; + this.m = 2229667594; + this.J = 139264 + } + + g = jy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "width": + return this.width; + case "height": + return this.height; + case "duration": + return this.duration; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.SetMetadata{", ", ", "}", c, O.c(new R(null, 3, 5, T, + [new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [wl, this.duration], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 3, new R(null, 3, 5, T, [fl, no, wl], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 3 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 2110730596 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.width, b.width) && G.c( + this.height, b.height) && G.c(this.duration, b.duration) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 3, [fl, null, wl, null, no, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new jy(this.width, this.height, this.duration, this.v, + Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(fl, b) : N.call(null, fl, b)) ? new jy(c, this.height, this.duration, this.v, + this.j, null) : t(N.c ? N.c(no, b) : N.call(null, no, b)) ? new jy(this.width, c, + this.duration, this.v, this.j, null) : t(N.c ? N.c(wl, b) : N.call(null, wl, b)) ? new jy( + this.width, this.height, c, this.v, this.j, null) : new jy(this.width, this.height, + this.duration, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 3, 5, T, + [new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [wl, this.duration], null)], null), this.j)) + }; + g.T = function (a, b) { + return new jy(this.width, this.height, this.duration, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function ky(a, b, c, d) { + this.tc = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = ky.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "loading": + return this.tc; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.SetLoading{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Hm, this.tc], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [Hm], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1609009220 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.tc, b.tc) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [Hm, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new ky(this.tc, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Hm, b) : N.call(null, Hm, b)) ? new ky(c, this.v, this.j, null) : new ky( + this.tc, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Hm, this.tc], null)], null), this.j)) + }; + g.T = function (a, b) { + return new ky(this.tc, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function ly(a) { + return new ky(a, null, null, null) + } + + function my(a, b, c, d) { + this.uc = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = my.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "playing": + return this.uc; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.SetPlaying{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [jn, this.uc], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [jn], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -2119286176 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.uc, b.uc) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [jn, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new my(this.uc, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(jn, b) : N.call(null, jn, b)) ? new my(c, this.v, this.j, null) : new my( + this.uc, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [jn, this.uc], null)], null), this.j)) + }; + g.T = function (a, b) { + return new my(this.uc, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function ny(a) { + return new my(a, null, null, null) + } + + function oy(a, b, c) { + this.v = a; + this.j = b; + this.w = c; + this.m = 2229667594; + this.J = 139264 + } + + g = oy.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + return D.l(this.j, b, c) + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.TriggerCanPlay{", ", ", "}", c, O.c(he, this.j)) + }; + g.ba = function () { + return new fh(0, this, 0, he, t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 0 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1080034109 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(vi, b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new oy(this.v, Bf(le.c(this.j, b)), + null) + }; + g.O = function (a, b, c) { + return new oy(this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(he, this.j)) + }; + g.T = function (a, b) { + return new oy(b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function py(a, b, c, d) { + this.screen = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = py.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "screen": + return this.screen; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.UpdateScreen{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [V, this.screen], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [V], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return -1861248332 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.screen, b.screen) && G.c( + this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [V, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new py(this.screen, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(V, b) : N.call(null, V, b)) ? new py(c, this.v, this.j, null) : new py( + this.screen, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E( + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [V, this.screen], null)], null), this.j)) + }; + g.T = function (a, b) { + return new py(this.screen, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function qy(a) { + return new py(a, null, null, null) + } + + function ry(a, b, c, d) { + this.time = a; + this.v = b; + this.j = c; + this.w = d; + this.m = 2229667594; + this.J = 139264 + } + + g = ry.prototype; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "time": + return this.time; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.messages.UpdateTime{", ", ", "}", c, + O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Zk, this.time], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 1, new R(null, 1, 5, T, [Zk], null), t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 1 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 463038319 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.time, b.time) && G.c(this.j, + b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 1, [Zk, null], null), null), b) ? le.c( + tc(wg.c(Ef, this), this.v), b) : new ry(this.time, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Zk, b) : N.call(null, Zk, b)) ? new ry(c, this.v, this.j, null) : new ry( + this.time, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 1, 5, T, [new R(null, 2, 5, T, [Zk, this.time], null)], null), this.j)) + }; + g.T = function (a, b) { + return new ry(this.time, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + + function sy(a) { + return new ry(a, null, null, null) + };var ty = function ty(a) { + if (null != a && null != a.Bd) { + return a.Bd(a); + } + var c = ty[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = ty._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Source.init", a); + }, uy = function uy(a) { + if (null != a && null != a.Ad) { + return a.Ad(a); + } + var c = uy[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = uy._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Source.close", a); + }, vy = function vy(a) { + if (null != a && null != a.ac) { + return a.ac(a); + } + var c = vy[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = vy._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Source.start", a); + }, wy = function wy(a) { + if (null != a && null != a.wc) { + return a.wc(a); + } + var c = wy[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = wy._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + throw Cb("Source.stop", a); + }, xy = function xy(a) { + if (null != a && null != a.Dd) { + return a.Dd(a); + } + var c = xy[n(null == a ? null : a)]; + if (null != c) { + return c.h ? c.h(a) : c.call(null, a); + } + c = xy._; + if (null != c) { + return c.h ? c.h(a) : c.call(null, + a); + } + throw Cb("Source.toggle", a); + }, yy = function yy(a, b) { + if (null != a && null != a.Cd) { + return a.Cd(a, b); + } + var d = yy[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = yy._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("Source.seek", a); + }, zy = function zy(a, b) { + if (null != a && null != a.zd) { + return a.zd(a, b); + } + var d = zy[n(null == a ? null : a)]; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + d = zy._; + if (null != d) { + return d.c ? d.c(a, b) : d.call(null, a, b); + } + throw Cb("Source.change-speed", a); + }; + if ("undefined" === typeof xj) { + var xj = function () { + var a = dg.h(Ef), b = dg.h(Ef), c = dg.h(Ef), d = dg.h(Ef), e = D.l(Ef, Qn, jj()); + return new uj(td.c("asciinema.player.source", "make-source"), function () { + return function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + c = D.c(c, rl); + return t(c) ? c : ok + } + }(a, b, c, d, e), Ik, e, a, b, c, d) + }(); + } + + function Ay() { + return ig.c(function (a) { + return function (b) { + b *= a; + return new R(null, 2, 5, T, [b, b], null) + } + }(1 / 3), Fi(0, Number.MAX_VALUE, 1)) + } + + function By(a) { + var b = Kx(null), c = Lx(new fx(ex), null), d = Kx(1); + lx(function (b, c, d) { + return function () { + var e = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (I) { + if (I instanceof Object) { + b[5] = I, Cx(b), d = Z; + } else { + throw I; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (b, c, d) { + return function (e) { + var f = e[1]; + if (1 === f) { + return zx(e, 2, c); + } + if (2 === f) { + var h = e[2], k = function () { + return function (a, b, c, d, e) { + return function (a) { + return Ox(e, a) + } + }(h, f, b, c, d) + }(); + k = a.h ? a.h(k) : a.call(null, k); + e[7] = h; + return Bx(e, k) + } + return null + } + }(b, c, d), b, c, d) + }(), f = function () { + var a = e.B ? e.B() : e.call(null); + a[6] = b; + return a + }(); + return yx(f) + } + }(d, b, c)); + return function (a, b) { + return function (c) { + t(c) && Tw(a); + return b + } + }(b, c) + } + + function Cy(a, b, c, d) { + return By(function (e) { + if ("string" === typeof a) { + return Ew(a, function () { + return function (a) { + a = a.target; + try { + var f = a.ca ? a.ca.responseText : "" + } catch (l) { + f = "" + } + f = pv(f, b, c, d); + return e.h ? e.h(f) : e.call(null, f) + } + }(a)); + } + var f = pv(a, b, c, d); + return e.h ? e.h(f) : e.call(null, f) + }) + } + + function Dy(a) { + var b = Kx(null), c = Kx(1); + lx(function (b, c) { + return function () { + var d = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (C) { + if (C instanceof Object) { + b[5] = C, Cx(b), d = Z; + } else { + throw C; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, + a) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (b, c) { + return function (b) { + var d = b[1]; + if (7 === d) { + return d = Jx(1E3 * b[7]), zx(b, 10, d); + } + if (1 === d) { + d = Ou(1); + var e = d.B ? d.B() : d.call(null), f = a; + b[8] = d; + b[9] = e; + b[10] = f; + b[2] = null; + b[1] = 2; + return Z + } + return 4 === d ? (e = b[11], d = b[9], f = J(e, 0, null), e = J(e, 1, null), d = f + - d, b[12] = e, b[7] = d, b[1] = t(0 < d) ? 7 : 8, Z) : 15 === d ? (b[1] = t(b[2]) + ? 16 : 17, Z) : 13 === d ? (b[2] = null, b[1] = 14, Z) : 6 === d + ? (b[2] = b[2], b[1] = 3, Z) : 17 === d ? (b[2] = null, b[1] = 18, Z) : 3 === d + ? Bx(b, b[2]) : 12 === + d ? (d = b[8], f = b[10], f = vd(f), d = d.B ? d.B() : d.call( + null), b[9] = d, b[10] = f, b[2] = null, b[1] = 2, Z) : 2 === d + ? (f = b[10], d = y(f), b[11] = d, b[1] = t(d) ? 4 : 5, Z) : 11 === d + ? (b[1] = t(b[2]) ? 12 : 13, Z) : 9 === d ? (b[2] = b[2], b[1] = 6, Z) : 5 + === d ? (d = Tw(c), b[2] = d, b[1] = 6, Z) : 14 === d + ? (b[2] = b[2], b[1] = 9, Z) : 16 === d ? (d = b[9], f = b[10], f = vd( + f), b[9] = d, b[10] = f, b[2] = null, b[1] = 2, Z) : 10 === d + ? (e = b[12], b[13] = b[2], Ax(b, 11, c, e)) : 18 === d + ? (b[2] = b[2], b[1] = 9, Z) : 8 === d ? (e = b[12], Ax(b, 15, c, e)) + : null + } + }(b, c), b, c) + }(), e = function () { + var a = d.B ? d.B() : d.call(null); + a[6] = b; + return a + }(); + return yx(e) + } + }(c, + b)); + return b + } + + function Ey(a, b, c, d, e, f) { + var h = Kx(1); + lx(function (h) { + return function () { + var k = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (M) { + if (M instanceof Object) { + b[5] = M, Cx(b), d = Z; + } else { + throw M; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (h) { + var k = h[1]; + if (7 === k) { + return h[2] = h[2], h[1] = 3, Z; + } + if (1 === k) { + k = Yu(c, d, b); + var l = Dy(k); + k = c; + var m = Ou(d); + h[7] = l; + h[8] = m; + h[9] = k; + h[2] = null; + h[1] = 2; + return Z + } + if (4 === k) { + return l = h[7], m = h[2], k = J(m, 0, null), m = J(m, 1, null), l = G.c( + l, m), h[11] = k, h[10] = m, h[1] = l ? 5 : 6, Z; + } + if (15 === k) { + return l = h[7], m = h[8], k = h[9], l = Tw(l), m = m.B ? m.B() + : m.call(null), h[12] = l, h[2] = k + m, h[1] = 17, Z; + } + if (13 === k) { + return h[2] = null, h[1] = 14, Z; + } + if (6 === k) { + return k = h[10], k = G.c(f, k), h[1] = k ? 15 : 16, + Z; + } + if (17 === k) { + return h[2] = h[2], h[1] = 7, Z; + } + if (3 === k) { + return Bx(h, h[2]); + } + if (12 === k) { + return k = Yu(0, d, b), k = Dy(k), l = Ou( + d), h[7] = k, h[8] = l, h[9] = 0, h[2] = null, h[1] = 2, Z; + } + if (2 === k) { + return l = h[7], Ux(h, 4, new R(null, 2, 5, T, [l, f], null)); + } + if (11 + === k) { + return l = h[7], m = h[8], k = h[9], h[13] = h[2], h[7] = l, h[8] = m, h[9] = k, h[2] = null, h[1] = 2, Z; + } + if (9 === k) { + return h[1] = t(e) ? 12 : 13, Z; + } + if (5 === k) { + return k = h[11], h[1] = t(k) ? 8 : 9, Z; + } + if (14 === k) { + return h[2] = h[2], h[1] = 10, Z; + } + if (16 === k) { + throw k = h[10], h = ["No matching clause: ", v.h(k)].join(""), Error( + h); + } + return 10 === k ? (h[2] = + h[2], h[1] = 7, Z) : 8 === k ? (k = h[11], Ax(h, 11, a, k)) : null + } + }(h), h) + }(), p = function () { + var a = k.B ? k.B() : k.call(null); + a[6] = h; + return a + }(); + return yx(p) + } + }(h)); + return h + } + + function Fy(a, b, c, d, e, f, h) { + var k = Kx(1); + lx(function (k) { + return function () { + var l = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (S) { + if (S instanceof Object) { + b[5] = S, Cx(b), d = Z; + } else { + throw S; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (k) { + var l = k[1]; + if (7 === l) { + return l = k[7], k[2] = l, k[1] = 9, Z; + } + if (1 === l) { + return Ax(k, 2, a, ny(!0)); + } + if (4 === l) { + l = k[2]; + var m = Su(qy, b), p = Ay(); + p = Su(sy, p); + m = Ey(a, Tu(m, p), d, e, f, h); + k[8] = l; + return zx(k, 5, m) + } + return 6 === l ? (l = ny(!1), k[9] = k[2], Ax(k, 10, a, l)) : 3 === l + ? (l = k[2], m = fe($u(d, b)), m = qy(m), k[10] = l, Ax(k, 4, a, m)) : 2 === l + ? (l = sy(d), k[11] = k[2], Ax(k, 3, a, l)) : 9 === l ? Ax(k, 6, a, sy(k[2])) : 5 + === l ? (l = k[2], k[7] = l, k[1] = t(l) ? 7 : 8, Z) : 10 === l + ? (l = k[7], k[12] = k[2], Bx(k, l)) : + 8 === l ? (k[2] = c, k[1] = 9, Z) : null + } + }(k), k) + }(), m = function () { + var a = l.B ? l.B() : l.call(null); + a[6] = k; + return a + }(); + return yx(m) + } + }(k)); + return k + } + + function Gy(a, b, c) { + var d = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, e = D.c(d, Hk), f = D.c(d, Ak), + h = D.c(d, dn), k = D.c(d, Jl), l = Kx(10), p = Kx(1); + lx(function (a, d, e, f, h, k, l, p) { + return function () { + var m = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (Ba) { + if (Ba instanceof Object) { + b[5] = Ba, Cx(b), d = Z; + } else { + throw Ba; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, + null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (a, d, e, f, h, k, l, m) { + return function (a) { + var e = a[1]; + if (65 === e) { + var f = a, p = f; + p[2] = a[2]; + p[1] = 62; + return Z + } + if (70 === e) { + var u = f = a; + u[2] = !1; + u[1] = 71; + return Z + } + if (62 === e) { + var w = a[2], x = f = a; + x[2] = w; + x[1] = 59; + return Z + } + if (74 === e) { + var C = a[7], F = a[8], I = a[2], M = D.c(I, Uk), S = D.c(I, + wl), Q = Nu(F, S), X = sy(Q); + a[7] = Q; + a[9] = M; + f = a; + return Ax(f, 75, b, X) + } + if (7 === e) { + var W = a[10], Ha = a[2], Ba = J(Ha, 0, null); + F = J(Ha, 1, null); + var Ga = G.c(gl, Ba); + a[8] = F; + a[10] = Ba; + f = a; + f[1] = Ga ? 8 : 9; + return Z + } + if (59 === e) { + var Oa = a[2], Ja = f = a; + Ja[2] = Oa; + Ja[1] = 51; + return Z + } + if (20 === e) { + var db = P(U, c), xb = f = a; + xb[2] = db; + xb[1] = 22; + return Z + } + if (72 === e) { + var az = P(U, c), ps = f = a; + ps[2] = az; + ps[1] = 74; + return Z + } + if (58 === e) { + W = a[10]; + var bz = G.c(Xj, W); + f = a; + f[1] = bz ? 60 : 61; + return Z + } + if (60 === e) { + var ac = a[11], bc = 0, Dc = ac, Eb = null, bb = null; + a[11] = Dc; + a[12] = bb; + a[13] = bc; + a[14] = + Eb; + var qs = f = a; + qs[2] = null; + qs[1] = 2; + return Z + } + if (27 === e) { + ac = a[11]; + bb = a[12]; + bc = a[13]; + Eb = a[14]; + var cz = bb, dz = Eb, Rd = bc; + Dc = ac; + var Sd = dz, Td = cz; + a[11] = Dc; + a[12] = Td; + a[13] = Rd; + a[14] = Sd; + var rs = f = a; + rs[2] = null; + rs[1] = 2; + return Z + } + if (1 === e) { + bc = h; + ac = k; + bb = Eb = null; + a[11] = ac; + a[12] = bb; + a[13] = bc; + a[14] = Eb; + var ss = f = a; + ss[2] = null; + ss[1] = 2; + return Z + } + if (69 === e) { + var ts = f = a; + ts[2] = !0; + ts[1] = 71; + return Z + } + if (24 === e) { + W = a[10]; + var ez = G.c(Nl, W); + f = a; + f[1] = ez ? 30 : 31; + return Z + } + if (55 === e) { + var fz = new R(null, 1, 5, T, [gl], null); + a[15] = a[2]; + f = a; + return Ax(f, 56, + d, fz) + } + if (39 === e) { + var gz = a[2], us = f = a; + us[2] = gz; + us[1] = 32; + return Z + } + if (46 === e) { + var vs = f = a; + vs[2] = null; + vs[1] = 47; + return Z + } + if (4 === e) { + Eb = a[14]; + var ws = a[2], Ci = J(ws, 0, null), hz = J(ws, 1, null), iz = G.c(hz, Eb); + a[16] = Ci; + f = a; + f[1] = iz ? 5 : 6; + return Z + } + if (54 === e) { + F = a[8]; + bb = a[12]; + bc = a[13]; + Eb = a[14]; + var jz = a[2], kz = bb, lz = Eb; + Rd = bc; + ac = F; + Sd = lz; + Td = kz; + a[11] = ac; + a[17] = jz; + a[12] = Td; + a[13] = Rd; + a[14] = Sd; + var xs = f = a; + xs[2] = null; + xs[1] = 2; + return Z + } + if (15 === e) { + var ys = f = a; + ys[2] = !1; + ys[1] = 16; + return Z + } + if (48 === e) { + var mz = a[2], zs = f = a; + zs[2] = mz; + zs[1] = 47; + return Z + } + if (50 === + e) { + W = a[10]; + var nz = G.c(qk, W); + f = a; + f[1] = nz ? 57 : 58; + return Z + } + if (75 === e) { + C = a[7]; + M = a[9]; + var oz = a[2], pz = fe($u(C, M)), qz = qy(pz); + a[18] = oz; + f = a; + return Ax(f, 76, b, qz) + } + if (21 === e) { + var As = f = a; + As[2] = c; + As[1] = 22; + return Z + } + if (31 === e) { + W = a[10]; + var rz = G.c(Kn, W); + f = a; + f[1] = rz ? 37 : 38; + return Z + } + if (32 === e) { + var sz = a[2], Bs = f = a; + Bs[2] = sz; + Bs[1] = 25; + return Z + } + if (40 === e) { + var tz = new R(null, 1, 5, T, [wm], null); + f = a; + return Ax(f, 43, d, tz) + } + if (56 === e) { + var uz = a[2], Cs = f = a; + Cs[2] = uz; + Cs[1] = 54; + return Z + } + if (33 === e) { + var Ds = f = a; + Ds[2] = wm; + Ds[1] = 35; + return Z + } + if (13 === + e) { + var vz = a[2], Es = f = a; + Es[2] = vz; + Es[1] = 10; + return Z + } + if (22 === e) { + ac = a[11]; + bc = a[13]; + var Fs = a[2], wz = D.c(Fs, Uk), xz = D.c(Fs, wl), Gs = Kx(null), + yz = Fy(b, wz, xz, bc, ac, l, Gs), zz = ac; + Rd = null; + Dc = zz; + Eb = yz; + bb = Gs; + a[11] = Dc; + a[12] = bb; + a[13] = Rd; + a[14] = Eb; + var Hs = f = a; + Hs[2] = null; + Hs[1] = 2; + return Z + } + if (36 === e) { + ac = a[11]; + bb = a[12]; + bc = a[13]; + Eb = a[14]; + var Az = a[2], Bz = ac, Cz = bb, Dz = Eb; + Rd = bc; + Dc = Bz; + Sd = Dz; + Td = Cz; + a[11] = Dc; + a[19] = Az; + a[12] = Td; + a[13] = Rd; + a[14] = Sd; + var Is = f = a; + Is[2] = null; + Is[1] = 2; + return Z + } + if (41 === e) { + var Js = f = a; + Js[2] = null; + Js[1] = 42; + return Z + } + if (43 === + e) { + var Ez = a[2], Ks = f = a; + Ks[2] = Ez; + Ks[1] = 42; + return Z + } + if (61 === e) { + W = a[10]; + var Fz = G.c(go, W); + f = a; + f[1] = Fz ? 63 : 64; + return Z + } + if (29 === e) { + var Gz = ac = a[11]; + bc = a[2]; + Dc = Gz; + bb = Eb = null; + a[11] = Dc; + a[12] = bb; + a[13] = bc; + a[14] = Eb; + var Ls = f = a; + Ls[2] = null; + Ls[1] = 2; + return Z + } + if (44 === e) { + return bb = a[12], a[20] = a[2], f = a, f[1] = t(bb) ? 45 : 46, Z; + } + if (6 === e) { + Ci = a[16]; + var Ms = f = a; + Ms[2] = Ci; + Ms[1] = 7; + return Z + } + if (28 === e) { + var Hz = a[2], Ns = f = a; + Ns[2] = Hz; + Ns[1] = 25; + return Z + } + if (64 === e) { + W = a[10]; + var Iz = ["No matching clause: ", v.h(W)].join(""); + throw Error(Iz); + } + if (51 === + e) { + var Jz = a[2], Os = f = a; + Os[2] = Jz; + Os[1] = 39; + return Z + } + if (25 === e) { + var Kz = a[2], Ps = f = a; + Ps[2] = Kz; + Ps[1] = 10; + return Z + } + if (34 === e) { + var Qs = f = a; + Qs[2] = gl; + Qs[1] = 35; + return Z + } + if (17 === e) { + var Rs = f = a; + Rs[2] = !0; + Rs[1] = 19; + return Z + } + if (3 === e) { + var Lz = a[2]; + f = a; + return Bx(f, Lz) + } + if (12 === e) { + var Mz = wb(null == c); + f = a; + f[1] = Mz ? 14 : 15; + return Z + } + if (2 === e) { + Eb = a[14]; + var Nz = vg(ub, new R(null, 3, 5, T, [d, m, Eb], null)); + f = a; + return Vx(f, 4, Nz, be([Im, !0])) + } + if (66 === e) { + var Oz = q === c.G, Pz = c.m & 64 || Oz; + f = a; + f[1] = t(Pz) ? 69 : 70; + return Z + } + if (23 === e) { + return bb = a[12], f = a, + f[1] = t(bb) ? 26 : 27, Z; + } + if (47 === e) { + ac = a[11]; + bb = a[12]; + bc = a[13]; + Eb = a[14]; + var Qz = a[2], Rz = ac, Sz = bb, Tz = Eb; + Rd = bc; + Dc = Rz; + Sd = Tz; + Td = Sz; + a[11] = Dc; + a[21] = Qz; + a[12] = Td; + a[13] = Rd; + a[14] = Sd; + var Ss = f = a; + Ss[2] = null; + Ss[1] = 2; + return Z + } + if (35 === e) { + var Uz = new R(null, 1, 5, T, [a[2]], null); + f = a; + return Ax(f, 36, d, Uz) + } + if (76 === e) { + ac = a[11]; + C = a[7]; + bb = a[12]; + Eb = a[14]; + var Vz = a[2], Wz = ac, Xz = bb, Yz = Eb; + bc = C; + Dc = Wz; + Sd = Yz; + Td = Xz; + a[11] = Dc; + a[22] = Vz; + a[12] = Td; + a[13] = bc; + a[14] = Sd; + var Ts = f = a; + Ts[2] = null; + Ts[1] = 2; + return Z + } + if (19 === e) { + var Zz = a[2], Us = f = a; + Us[2] = Zz; + Us[1] = + 16; + return Z + } + if (57 === e) { + var Vs = f = a; + Vs[2] = null; + Vs[1] = 59; + return Z + } + if (68 === e) { + var $z = a[2]; + f = a; + f[1] = t($z) ? 72 : 73; + return Z + } + if (11 === e) { + ac = a[11]; + bb = a[12]; + bc = a[13]; + Eb = a[14]; + var aA = ac, bA = bb, cA = Eb; + Rd = bc; + Dc = aA; + Sd = cA; + Td = bA; + a[11] = Dc; + a[12] = Td; + a[13] = Rd; + a[14] = Sd; + var Ws = f = a; + Ws[2] = null; + Ws[1] = 2; + return Z + } + if (9 === e) { + W = a[10]; + var dA = G.c(wm, W); + f = a; + f[1] = dA ? 23 : 24; + return Z + } + if (5 === e) { + Ci = a[16]; + var eA = new R(null, 2, 5, T, [Xj, Ci], null), Xs = f = a; + Xs[2] = eA; + Xs[1] = 7; + return Z + } + if (14 === e) { + var fA = q === c.G, gA = c.m & 64 || fA; + f = a; + f[1] = t(gA) ? 17 : 18; + return Z + } + if (45 === + e) { + var hA = new R(null, 1, 5, T, [gl], null); + f = a; + return Ax(f, 48, d, hA) + } + if (53 === e) { + var Ys = f = a; + Ys[2] = null; + Ys[1] = 54; + return Z + } + if (26 === e) { + bb = a[12]; + Eb = a[14]; + var iA = Tw(bb); + a[23] = iA; + f = a; + return zx(f, 29, Eb) + } + if (16 === e) { + var jA = a[2]; + f = a; + f[1] = t(jA) ? 20 : 21; + return Z + } + if (38 === e) { + W = a[10]; + var kA = G.c(lm, W); + f = a; + f[1] = kA ? 49 : 50; + return Z + } + if (30 === e) { + return bb = a[12], f = a, f[1] = t(bb) ? 33 : 34, Z; + } + if (73 === e) { + var Zs = f = a; + Zs[2] = c; + Zs[1] = 74; + return Z + } + if (10 === e) { + var lA = a[2], $s = f = a; + $s[2] = lA; + $s[1] = 3; + return Z + } + if (18 === e) { + var at = f = a; + at[2] = !1; + at[1] = 19; + return Z + } + if (52 === + e) { + var mA = new R(null, 1, 5, T, [wm], null); + f = a; + return Ax(f, 55, d, mA) + } + if (67 === e) { + var bt = f = a; + bt[2] = !1; + bt[1] = 68; + return Z + } + if (71 === e) { + var nA = a[2], ct = f = a; + ct[2] = nA; + ct[1] = 68; + return Z + } + if (42 === e) { + F = a[8]; + var oA = new R(null, 2, 5, T, [go, F], null); + a[24] = a[2]; + f = a; + return Ax(f, 44, d, oA) + } + if (37 === e) { + return bb = a[12], f = a, f[1] = t(bb) ? 40 : 41, Z; + } + if (63 === e) { + var pA = wb(null == c); + f = a; + f[1] = pA ? 66 : 67; + return Z + } + return 8 === e ? (bb = a[12], f = a, f[1] = t(bb) ? 11 : 12, Z) : 49 === e + ? (bb = a[12], f = a, f[1] = t(bb) ? 52 : 53, Z) : null + } + }(a, d, e, f, h, k, l, p), a, d, e, f, h, k, l, p) + }(), u = function () { + var b = + m.B ? m.B() : m.call(null); + b[6] = a; + return b + }(); + return yx(u) + } + }(p, l, a, d, e, f, h, k)); + return p + } + + function Hy(a) { + var b = window.requestIdleCallback; + return t(b) ? (a = function (a, b) { + return function h(c) { + return function (a) { + return function () { + if (E(c)) { + var b = h(vd(c)); + return a.h ? a.h(b) : a.call(null, b) + } + return null + } + }(a, b) + } + }(b, b)(a), b.h ? b.h(a) : b.call(null, a)) : null + } + + function Iy(a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, d = D.c(c, bl), e = D.c(c, Jl), + f = D.c(c, Hj), h = D.c(c, Sj), k = D.c(c, Mm), l = Kx(1); + lx(function (a, c, d, e, f, h, k, l, M) { + return function () { + var m = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (Ba) { + if (Ba instanceof Object) { + b[5] = Ba, Cx(b), d = Z; + } else { + throw Ba; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (a, c, d, e, f, h, k, l, m) { + return function (a) { + var c = a[1]; + if (7 === c) { + return c = a[7], c = G.c(k, c), a[1] = c ? 9 : 10, Z; + } + if (1 === c) { + return a[1] = t(l) ? 2 : 3, Z; + } + if (4 === c) { + c = a[2]; + c = f.h ? f.h(c) : f.call(null, c); + var d = new R(null, 2, 5, T, [c, k], null); + a[8] = c; + return Ux(a, 5, d) + } + if (15 === c) { + return c = d = a[9], c = null != c && (c.m & 64 || q === c.G) ? + P(U, c) : c, c = D.c(c, Uk), c = Ox(b, qy(fe($u(m, c)))), a[2] = c, a[1] = 17, Z; + } + if (13 === c) { + return c = a[2], d = ly(!1), a[10] = c, Ax(a, 14, b, d); + } + if (6 === c) { + return c = a[11], a[2] = c, a[1] = 8, Z; + } + if (17 === c) { + d = a[9]; + c = a[2]; + var h = d; + var p = null != h && (h.m & 64 || q === h.G) ? P(U, h) : h; + h = D.c(p, fl); + var u = D.c(p, no); + p = D.c(p, wl); + Ox(b, new jy(h, u, p, null, null, null)); + h = Ox(b, new oy(null, null, null)); + u = Gy(e, b, d); + d = Uk.h(d); + d = Hy(d); + a[12] = c; + a[13] = u; + a[14] = h; + return Bx(a, d) + } + if (3 === c) { + return a[2] = m, a[1] = 4, Z; + } + if (12 === c) { + return c = a[2], d = f.h ? f.h(!0) : f.call(null, !0), a[15] = c, zx(a, + 13, d); + } + if (2 === c) { + return a[2] = l, a[1] = 4, Z; + } + if (11 === c) { + return a[2] = a[2], a[1] = 8, Z; + } + if (9 === c) { + return Ax(a, 12, b, ly(!0)); + } + if (5 === c) { + return d = a[8], h = a[2], c = J(h, 0, null), h = J(h, 1, null), d = G.c( + d, h), a[7] = h, a[11] = c, a[1] = d ? 6 : 7, Z; + } + if (14 === c) { + return c = a[10], a[16] = a[2], a[2] = c, a[1] = 11, Z; + } + if (16 === c) { + return a[2] = null, a[1] = 17, Z; + } + if (10 === c) { + throw c = a[7], a = ["No matching clause: ", v.h(c)].join(""), Error(a); + } + return 8 === c ? (d = a[2], a[9] = d, a[1] = t(m) ? 15 : 16, Z) : null + } + }(a, c, d, e, f, h, k, l, M), a, c, d, e, f, h, k, l, M) + }(), p = function () { + var b = m.B ? m.B() : m.call(null); + b[6] = a; + return b + }(); + return yx(p) + } + }(l, a, c, c, d, e, f, h, k)) + } + + function Jy(a, b, c, d, e, f, h, k, l, p, m, u) { + this.nb = a; + this.Ea = b; + this.$a = c; + this.ob = d; + this.speed = e; + this.Y = f; + this.jb = h; + this.mb = k; + this.lb = l; + this.v = p; + this.j = m; + this.w = u; + this.m = 2229667594; + this.J = 139264 + } + + g = Jy.prototype; + g.Bd = function () { + var a = Kx(null); + Iy(this, a); + t(this.Y) && this.ac(null); + return a + }; + g.Ad = function () { + Ox(this.Ea, new R(null, 1, 5, T, [wm], null)); + return Ox(this.Ea, new R(null, 1, 5, T, [qk], null)) + }; + g.ac = function () { + Tw(this.$a); + return Ox(this.Ea, new R(null, 1, 5, T, [gl], null)) + }; + g.wc = function () { + return Ox(this.Ea, new R(null, 1, 5, T, [wm], null)) + }; + g.Dd = function () { + Tw(this.$a); + return Ox(this.Ea, new R(null, 1, 5, T, [Nl], null)) + }; + g.Cd = function (a, b) { + Tw(this.$a); + return Ox(this.Ea, new R(null, 2, 5, T, [Kn, b], null)) + }; + g.zd = function (a, b) { + return Ox(this.Ea, new R(null, 2, 5, T, [lm, b], null)) + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "recording-ch-fn": + return this.nb; + case "command-ch": + return this.Ea; + case "force-load-ch": + return this.$a; + case "start-at": + return this.ob; + case "speed": + return this.speed; + case "auto-play?": + return this.Y; + case "loop?": + return this.jb; + case "preload?": + return this.mb; + case "poster-time": + return this.lb; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.source.Recording{", ", ", "}", c, O.c(new R(null, 9, 5, T, + [new R(null, 2, 5, T, [bl, this.nb], null), new R(null, 2, 5, T, [Jl, this.Ea], null), + new R(null, 2, 5, T, [Hj, this.$a], null), new R(null, 2, 5, T, [Hk, this.ob], null), + new R(null, 2, 5, T, [Ak, this.speed], null), new R(null, 2, 5, T, [Jm, this.Y], null), + new R(null, 2, 5, T, [dn, this.jb], null), new R(null, 2, 5, T, [Sj, this.mb], null), + new R(null, 2, 5, T, [Mm, this.lb], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 9, new R(null, 9, 5, T, [bl, Jl, Hj, Hk, Ak, Jm, dn, Sj, Mm], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 9 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1201370539 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.nb, b.nb) && G.c(this.Ea, + b.Ea) && G.c(this.$a, b.$a) && G.c(this.ob, b.ob) && G.c(this.speed, b.speed) && G.c(this.Y, + b.Y) && G.c(this.jb, b.jb) && G.c(this.mb, b.mb) && G.c(this.lb, b.lb) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 9, + [Hj, null, Sj, null, Ak, null, Hk, null, bl, null, Jl, null, Jm, null, Mm, null, dn, null], + null), null), b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new Jy(this.nb, this.Ea, this.$a, + this.ob, this.speed, this.Y, this.jb, this.mb, this.lb, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(bl, b) : N.call(null, bl, b)) ? new Jy(c, this.Ea, this.$a, this.ob, + this.speed, this.Y, this.jb, this.mb, this.lb, this.v, this.j, null) : t( + N.c ? N.c(Jl, b) : N.call(null, Jl, b)) ? new Jy(this.nb, c, this.$a, this.ob, this.speed, + this.Y, this.jb, this.mb, this.lb, this.v, this.j, null) : t( + N.c ? N.c(Hj, b) : N.call(null, Hj, b)) ? new Jy(this.nb, this.Ea, c, this.ob, this.speed, + this.Y, this.jb, this.mb, this.lb, this.v, this.j, null) : t( + N.c ? N.c(Hk, b) : N.call(null, Hk, b)) ? new Jy(this.nb, this.Ea, this.$a, c, this.speed, + this.Y, + this.jb, this.mb, this.lb, this.v, this.j, null) : t(N.c ? N.c(Ak, b) : N.call(null, Ak, b)) + ? new Jy(this.nb, this.Ea, this.$a, this.ob, c, this.Y, this.jb, this.mb, this.lb, this.v, + this.j, null) : t(N.c ? N.c(Jm, b) : N.call(null, Jm, b)) ? new Jy(this.nb, this.Ea, + this.$a, this.ob, this.speed, c, this.jb, this.mb, this.lb, this.v, this.j, null) : t( + N.c ? N.c(dn, b) : N.call(null, dn, b)) ? new Jy(this.nb, this.Ea, this.$a, this.ob, + this.speed, this.Y, c, this.mb, this.lb, this.v, this.j, null) : t( + N.c ? N.c(Sj, b) : N.call(null, Sj, b)) ? new Jy(this.nb, this.Ea, this.$a, this.ob, + this.speed, this.Y, this.jb, c, this.lb, this.v, this.j, null) : t( + N.c ? N.c(Mm, b) : N.call(null, Mm, b)) ? new Jy(this.nb, this.Ea, this.$a, this.ob, + this.speed, this.Y, this.jb, this.mb, c, this.v, this.j, null) : new Jy(this.nb, this.Ea, + this.$a, this.ob, this.speed, this.Y, this.jb, this.mb, this.lb, this.v, K.l(this.j, b, c), + null) + }; + g.S = function () { + return E(O.c(new R(null, 9, 5, T, + [new R(null, 2, 5, T, [bl, this.nb], null), new R(null, 2, 5, T, [Jl, this.Ea], null), + new R(null, 2, 5, T, [Hj, this.$a], null), new R(null, 2, 5, T, [Hk, this.ob], null), + new R(null, 2, 5, T, [Ak, this.speed], null), new R(null, 2, 5, T, [Jm, this.Y], null), + new R(null, 2, 5, T, [dn, this.jb], null), new R(null, 2, 5, T, [Sj, this.mb], null), + new R(null, 2, 5, T, [Mm, this.lb], null)], null), this.j)) + }; + g.T = function (a, b) { + return new Jy(this.nb, this.Ea, this.$a, this.ob, this.speed, this.Y, this.jb, this.mb, this.lb, + b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + wj(ok, function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, fl), e = D.c(c, no), + f = D.c(c, Hk), h = D.c(c, Ak), k = D.c(c, qm), l = D.c(c, Em), p = D.c(c, cm), + m = D.c(c, vm); + c = D.c(c, Mm); + d = Cy(a, d, e, k); + e = Kx(10); + k = Kx(null); + return new Jy(d, e, k, f, h, l, p, m, c, null, null, null) + }); + + function Ky(a, b, c) { + var d = Kx(null), e = Kx(1); + lx(function (d, e) { + return function () { + var f = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (I) { + if (I instanceof Object) { + b[5] = I, Cx(b), d = Z; + } else { + throw I; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (d, e) { + return function (d) { + var f = d[1]; + if (1 === f) { + return f = Ot(a, b), d[7] = f, d[2] = null, d[1] = 2, Z; + } + if (2 === f) { + return zx(d, 4, e); + } + if (3 === f) { + return Bx(d, d[2]); + } + if (4 === f) { + return f = d[2], d[8] = f, d[1] = t(f) ? 5 : 6, Z; + } + if (5 === f) { + var h = d[8]; + f = d[7]; + f = Ju(f, h); + h = qy(f); + d[9] = f; + return Ax(d, 8, c, h) + } + return 6 === f ? (d[2] = null, d[1] = 7, Z) : 7 === f ? (d[2] = d[2], d[1] = 3, Z) : 8 + === f ? (f = d[9], h = d[2], d[10] = h, d[7] = f, d[2] = null, d[1] = 2, Z) : null + } + }(d, e), d, e) + }(), h = function () { + var a = f.B ? f.B() : f.call(null); + a[6] = d; + return a + }(); + return yx(h) + } + }(e, d)); + return d + } + + function Ly(a, b, c, d) { + var e = Kx(1); + lx(function (e) { + return function () { + var f = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (F) { + if (F instanceof Object) { + b[5] = F, Cx(b), d = Z; + } else { + throw F; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (e) { + var f = e[1]; + if (7 === f) { + return Ax(e, 9, b, String.fromCharCode(Math.floor(160 * Math.random()))); + } + if (1 === f) { + return Ax(e, 2, a, ny(!0)); + } + if (4 === f) { + return f = ny(!1), e[7] = e[2], Ax(e, 10, a, f); + } + if (6 === f) { + return e[2] = null, e[1] = 8, Z; + } + if (3 === f) { + return f = Jx(100 * Math.random() / c), Ux(e, 5, + new R(null, 2, 5, T, [d, f], null)); + } + if (2 === f) { + return e[8] = e[2], e[2] = null, e[1] = 3, Z; + } + if (9 === f) { + return e[9] = e[2], e[2] = null, e[1] = 3, Z; + } + if (5 === f) { + var h = e[2]; + f = J(h, 0, null); + h = J(h, 1, null); + h = G.c(h, d); + e[10] = f; + e[1] = h ? 6 : 7; + return Z + } + return 10 === f ? Bx(e, e[2]) : 8 === f ? (e[2] = e[2], e[1] = 4, Z) : null + } + }(e), e) + }(), k = function () { + var a = f.B ? f.B() : f.call(null); + a[6] = e; + return a + }(); + return yx(k) + } + }(e)); + return e + } + + function My(a, b, c, d, e, f, h, k, l, p) { + this.speed = a; + this.Y = b; + this.width = c; + this.height = d; + this.ha = e; + this.pb = f; + this.La = h; + this.v = k; + this.j = l; + this.w = p; + this.m = 2229667594; + this.J = 139264 + } + + g = My.prototype; + g.Bd = function () { + fg(this.ha, Kx(null)); + fg(this.pb, Ky(this.width, this.height, B(this.ha))); + t(this.Y) && this.ac(null); + return B(this.ha) + }; + g.Ad = function () { + return this.wc(null) + }; + g.ac = function () { + if (t(B(this.La))) { + return null; + } + var a = Kx(null); + fg(this.La, a); + return Ly(B(this.ha), B(this.pb), this.speed, a) + }; + g.wc = function () { + return t(B(this.La)) ? (Tw(B(this.La)), fg(this.La, null)) : null + }; + g.Dd = function () { + return t(B(this.La)) ? this.wc(null) : this.ac(null) + }; + g.Cd = function () { + return null + }; + g.zd = function () { + return null + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "speed": + return this.speed; + case "auto-play?": + return this.Y; + case "width": + return this.width; + case "height": + return this.height; + case "msg-ch": + return this.ha; + case "stdout-ch": + return this.pb; + case "stop-ch": + return this.La; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.source.JunkPrinter{", ", ", "}", c, O.c(new R(null, 7, 5, T, + [new R(null, 2, 5, T, [Ak, this.speed], null), new R(null, 2, 5, T, [Jm, this.Y], null), + new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [Dl, this.ha], null), new R(null, 2, 5, T, [rn, this.pb], null), + new R(null, 2, 5, T, [Zl, this.La], null)], null), this.j)) + }; + g.ba = function () { + return new fh(0, this, 7, new R(null, 7, 5, T, [Ak, Jm, fl, no, Dl, rn, Zl], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 7 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 1937333797 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.speed, b.speed) && G.c( + this.Y, b.Y) && G.c(this.width, b.width) && G.c(this.height, b.height) && G.c(this.ha, b.ha) + && G.c(this.pb, b.pb) && G.c(this.La, b.La) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, + new r(null, 7, [Ak, null, fl, null, Dl, null, Zl, null, Jm, null, rn, null, no, null], null), + null), b) ? le.c(tc(wg.c(Ef, this), this.v), b) : new My(this.speed, this.Y, this.width, + this.height, this.ha, this.pb, this.La, this.v, Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Ak, b) : N.call(null, Ak, b)) ? new My(c, this.Y, this.width, this.height, + this.ha, this.pb, this.La, this.v, this.j, null) : t(N.c ? N.c(Jm, b) : N.call(null, Jm, b)) + ? new My(this.speed, c, this.width, this.height, this.ha, this.pb, this.La, this.v, this.j, + null) : t(N.c ? N.c(fl, b) : N.call(null, fl, b)) ? new My(this.speed, this.Y, c, + this.height, this.ha, this.pb, this.La, this.v, this.j, null) : t( + N.c ? N.c(no, b) : N.call(null, no, b)) ? new My(this.speed, this.Y, this.width, c, this.ha, + this.pb, this.La, this.v, this.j, null) : + t(N.c ? N.c(Dl, b) : N.call(null, Dl, b)) ? new My(this.speed, this.Y, this.width, + this.height, c, this.pb, this.La, this.v, this.j, null) : t( + N.c ? N.c(rn, b) : N.call(null, rn, b)) ? new My(this.speed, this.Y, this.width, + this.height, this.ha, c, this.La, this.v, this.j, null) : t( + N.c ? N.c(Zl, b) : N.call(null, Zl, b)) ? new My(this.speed, this.Y, this.width, + this.height, this.ha, this.pb, c, this.v, this.j, null) : new My(this.speed, this.Y, + this.width, this.height, this.ha, this.pb, this.La, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 7, 5, T, + [new R(null, 2, 5, T, [Ak, this.speed], null), new R(null, 2, 5, T, [Jm, this.Y], null), + new R(null, 2, 5, T, [fl, this.width], null), new R(null, 2, 5, T, [no, this.height], null), + new R(null, 2, 5, T, [Dl, this.ha], null), new R(null, 2, 5, T, [rn, this.pb], null), + new R(null, 2, 5, T, [Zl, this.La], null)], null), this.j)) + }; + g.T = function (a, b) { + return new My(this.speed, this.Y, this.width, this.height, this.ha, this.pb, this.La, b, this.j, + this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + wj(mn, function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + D.c(c, $m); + var d = D.c(c, fl), e = D.c(c, no), f = D.c(c, Ak); + c = D.c(c, Em); + var h = dg.h(null), k = dg.h(null), l = dg.h(null); + return new My(f, c, d, e, h, k, l, null, null, null) + }); + + function Ny(a) { + return ev(JSON.parse(a)) + } + + function Oy(a, b) { + var c = Kx(1); + lx(function (c) { + return function () { + var d = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (x) { + if (x instanceof Object) { + b[5] = x, Cx(b), d = Z; + } else { + throw x; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (c) { + var d = c[1]; + if (7 === d) { + return c[2] = !1, c[1] = 8, Z; + } + if (20 === d) { + return c[2] = !1, c[1] = 21, Z; + } + if (27 === d) { + d = c[7]; + var e = D.c(c[2], ko); + return Ax(c, 28, d, e) + } + if (1 === d) { + return zx(c, 2, a); + } + if (24 === d) { + return c[2] = c[2], c[1] = 21, Z; + } + if (4 === d) { + return c[2] = !1, c[1] = 5, Z; + } + if (15 === d) { + return d = c[2], c[8] = d, c[1] = t(d) ? 16 : 17, Z; + } + if (21 === d) { + return c[1] = t(c[2]) ? 25 : 26, Z; + } + if (13 === d) { + return zx(c, 15, a); + } + if (22 === d) { + return c[2] = !0, c[1] = 24, Z; + } + if (6 === d) { + return c[2] = !0, c[1] = 8, Z; + } + if (28 === + d) { + return c[9] = c[2], c[2] = null, c[1] = 13, Z; + } + if (25 === d) { + return d = c[8], d = P(U, d), c[2] = d, c[1] = 27, Z; + } + if (17 === d) { + return c[2] = null, c[1] = 18, Z; + } + if (3 === d) { + return d = c[10], e = q === d.G, c[1] = t(d.m & 64 || e) ? 6 : 7, Z; + } + if (12 === d) { + return c[11] = c[2], c[2] = null, c[1] = 13, Z; + } + if (2 === d) { + return d = c[2], e = wb(null == d), c[10] = d, c[1] = e ? 3 : 4, Z; + } + if (23 === d) { + return c[2] = !1, c[1] = 24, Z; + } + if (19 === d) { + return d = c[8], e = q === d.G, c[1] = t(d.m & 64 || e) ? 22 : 23, Z; + } + if (11 === d) { + var f = c[2]; + d = D.c(f, Zk); + e = D.c(f, fl); + var h = D.c(f, no); + f = D.c(f, ko); + e = Ky(e, h, b); + c[7] = e; + c[12] = d; + return Ax(c, 12, + e, f) + } + return 9 === d ? (d = c[10], d = P(U, d), c[2] = d, c[1] = 11, Z) : 5 === d + ? (c[1] = t(c[2]) ? 9 : 10, Z) : 14 === d ? Bx(c, c[2]) : 26 === d + ? (d = c[8], c[2] = d, c[1] = 27, Z) : 16 === d ? (d = c[8], c[1] = wb(null == d) + ? 19 : 20, Z) : 10 === d ? (d = c[10], c[2] = d, c[1] = 11, Z) : 18 === d + ? (c[2] = c[2], c[1] = 14, Z) : 8 === d ? (c[2] = c[2], c[1] = 5, Z) : null + } + }(c), c) + }(), f = function () { + var a = d.B ? d.B() : d.call(null); + a[6] = c; + return a + }(); + return yx(f) + } + }(c)) + } + + function Py(a, b) { + var c = new EventSource(a), d = dg.h(null); + Ox(b, ly(!0)); + c.onopen = function (a, c) { + return function () { + var a = Mx(1E4, ig.h(Ny)); + fg(c, a); + Oy(a, b); + Ox(b, ny(!0)); + return Ox(b, ly(!1)) + } + }(c, d); + c.onerror = function (a, c) { + return function () { + Tw(B(c)); + fg(c, null); + return Ox(b, ly(!0)) + } + }(c, d); + return c.onmessage = function (a, b) { + return function (a) { + var c = B(b); + return t(c) ? Ox(c, a.data) : null + } + }(c, d) + } + + function Qy(a, b, c, d, e, f, h) { + this.ha = a; + this.url = b; + this.Y = c; + this.yb = d; + this.v = e; + this.j = f; + this.w = h; + this.m = 2229667594; + this.J = 139264 + } + + g = Qy.prototype; + g.Bd = function () { + fg(this.ha, Kx(null)); + return t(this.Y) ? this.ac(null) : null + }; + g.Ad = function () { + return this.wc(null) + }; + g.ac = function () { + if (t(B(this.yb))) { + return null; + } + fg(this.yb, !0); + return Py(this.url, B(this.ha)) + }; + g.wc = function () { + return null + }; + g.Dd = function () { + return this.ac(null) + }; + g.Cd = function () { + return null + }; + g.zd = function () { + return null + }; + g.V = function (a, b) { + return this.I(null, b, null) + }; + g.I = function (a, b, c) { + switch (b instanceof L ? b.ea : null) { + case "msg-ch": + return this.ha; + case "url": + return this.url; + case "auto-play?": + return this.Y; + case "started?": + return this.yb; + default: + return D.l(this.j, b, c) + } + }; + g.R = function (a, b, c) { + return Y(b, function () { + return function (a) { + return Y(b, Qi, "", " ", "", c, a) + } + }(this), "#asciinema.player.source.Stream{", ", ", "}", c, O.c(new R(null, 4, 5, T, + [new R(null, 2, 5, T, [Dl, this.ha], null), new R(null, 2, 5, T, [$m, this.url], null), + new R(null, 2, 5, T, [Jm, this.Y], null), new R(null, 2, 5, T, [rm, this.yb], null)], null), + this.j)) + }; + g.ba = function () { + return new fh(0, this, 4, new R(null, 4, 5, T, [Dl, $m, Jm, rm], null), + t(this.j) ? dd(this.j) : Cf()) + }; + g.P = function () { + return this.v + }; + g.W = function () { + return 4 + H(this.j) + }; + g.U = function () { + var a = this, b = this.w; + if (null != b) { + return b; + } + var c = function () { + return function () { + return function (a) { + return 187678783 ^ Dd(a) + } + }(b, a)(a) + }(); + return this.w = c + }; + g.K = function (a, b) { + return null != b && this.constructor === b.constructor && G.c(this.ha, b.ha) && G.c(this.url, + b.url) && G.c(this.Y, b.Y) && G.c(this.yb, b.yb) && G.c(this.j, b.j) + }; + g.ga = function (a, b) { + return He(new ti(null, new r(null, 4, [Dl, null, rm, null, Jm, null, $m, null], null), null), b) + ? le.c(tc(wg.c(Ef, this), this.v), b) : new Qy(this.ha, this.url, this.Y, this.yb, this.v, + Bf(le.c(this.j, b)), null) + }; + g.O = function (a, b, c) { + return t(N.c ? N.c(Dl, b) : N.call(null, Dl, b)) ? new Qy(c, this.url, this.Y, this.yb, this.v, + this.j, null) : t(N.c ? N.c($m, b) : N.call(null, $m, b)) ? new Qy(this.ha, c, this.Y, + this.yb, this.v, this.j, null) : t(N.c ? N.c(Jm, b) : N.call(null, Jm, b)) ? new Qy(this.ha, + this.url, c, this.yb, this.v, this.j, null) : t(N.c ? N.c(rm, b) : N.call(null, rm, b)) + ? new Qy(this.ha, this.url, this.Y, c, this.v, this.j, null) : new Qy(this.ha, this.url, + this.Y, this.yb, this.v, K.l(this.j, b, c), null) + }; + g.S = function () { + return E(O.c(new R(null, 4, 5, T, + [new R(null, 2, 5, T, [Dl, this.ha], null), new R(null, 2, 5, T, [$m, this.url], null), + new R(null, 2, 5, T, [Jm, this.Y], null), new R(null, 2, 5, T, [rm, this.yb], null)], null), + this.j)) + }; + g.T = function (a, b) { + return new Qy(this.ha, this.url, this.Y, this.yb, b, this.j, this.w) + }; + g.X = function (a, b) { + return ze(b) ? this.O(null, A.c(b, 0), A.c(b, 1)) : Mb(Tb, this, b) + }; + wj(hm, function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + c = D.c(c, Em); + var d = dg.h(null), e = dg.h(!1); + return new Qy(d, a, c, e, null, null, null) + }); + + function Ry(a) { + var b = new R(null, 5, 5, T, + ["fullscreenElement", "mozFullScreenElement", "webkitFullscreenElement", + "webkitCurrentFullScreenElement", "msFullscreenElement"], null); + b = Wf($f.c(Ee, Pu), b); + t(b) ? (a = Wf(Pu, new R(null, 5, 5, T, + ["exitFullscreen", "webkitExitFullscreen", "webkitCancelFullScreen", "mozCancelFullScreen", + "msExitFullscreen"], null)), a = t(a) ? a.call(document) : null) : (b = new R(null, 5, 5, T, + ["requestFullscreen", "webkitRequestFullscreen", "webkitRequestFullScreen", + "mozRequestFullScreen", "msRequestFullscreen"], + null), b = Wf(ag.c(Hb, a), b), a = t(b) ? b.call(a) : null); + return a + };r.prototype.yd = function () { + return il.h(this) + }; + r.prototype.xd = function () { + return pl.h(this) + }; + + function Sy(a, b) { + return function (c) { + var d = b.h ? b.h(c) : b.call(null, c); + return t(d) ? (Ox(a, d), c.stopPropagation()) : null + } + } + + function Ty(a, b) { + return Sy(a, function () { + return b + }) + } + + function Uy(a, b, c) { + var d = "number" === typeof a || G.c(a, "fg") || G.c(a, "bg"); + return t(d) ? (a = t(t(b) ? 8 > a : b) ? a + 8 : a, [v.h(c), v.h(a)].join("")) : null + } + + function Vy(a) { + var b = J(a, 0, null), c = J(a, 1, null); + a = J(a, 2, null); + return ["rgb(", v.h(b), ",", v.h(c), ",", v.h(a), ")"].join("") + } + + var Wy = hj(function (a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, Nk), c = D.c(a, pl); + a = K.l(a, Nk, t(c) ? wb(b) : b); + var d = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a, e = D.c(d, Ok), f = D.c(d, Tn); + b = D.c(d, Kj); + var h = D.c(d, dk); + c = D.c(d, Vl); + var k = D.c(d, Nk), l = D.c(d, Yn); + d = D.c(d, pl); + var p = t(k) ? t(e) ? e : "fg" : f; + e = Uy(t(k) ? t(f) ? f : "bg" : e, b, "fg-"); + h = Uy(p, h, "bg-"); + c = vg(ub, new R(null, 6, 5, T, + [e, h, t(b) ? "bright" : null, t(l) ? "italic" : null, t(c) ? "underline" : null, + t(d) ? "cursor" : null], null)); + if (E(c)) { + a:for (b = new cb, c = E(c); ;) { + if (null != c) { + b.append("" + + v.h(y(c))), c = z(c), null != c && b.append(" "); + } else { + b = b.toString(); + break a + } + } + } else { + b = null; + } + l = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(l, Ok); + c = D.c(l, Tn); + h = D.c(l, Nk); + l = t(h) ? c : a; + a = t(h) ? a : c; + a = hi.A(be([t(ze.h ? ze.h(l) : ze.call(null, l)) ? new r(null, 1, [ik, Vy(l)], null) : null, + t(ze.h ? ze.h(a) : ze.call(null, a)) ? new r(null, 1, [al, Vy(a)], null) : null])); + return hi.A(be( + [t(b) ? new r(null, 1, [vn, b], null) : null, t(a) ? new r(null, 1, [fm, a], null) : null])) + }); + + function Xy(a, b) { + var c = J(a, 0, null), d = J(a, 1, null); + d = Bg(d, pl, function () { + return function (a) { + return t(a) ? B(b) : a + } + }(a, c, d)); + return new R(null, 3, 5, T, [ro, Wy.h ? Wy.h(d) : Wy.call(null, d), c], null) + } + + function Yy(a, b) { + var c = J(a, 0, null), d = J(a, 1, null), e = jg(b, c); + e = E(e) ? new R(null, 2, 5, T, [Eo(e), d], null) : null; + var f = K.l(d, pl, !0); + f = new R(null, 2, 5, T, [Vd(c, b), f], null); + c = kg(b + 1, c); + d = E(c) ? new R(null, 2, 5, T, [Eo(c), d], null) : null; + return vg(ub, new R(null, 3, 5, T, [e, f, d], null)) + } + + function Zy(a, b) { + for (var c = he, d = a, e = b; ;) { + if (E(d)) { + var f = y(d), h = J(f, 0, null); + J(f, 1, null); + h = H(h); + if (h <= e) { + c = ge.c(c, f), d = vd(d), e -= h; + } else { + return O.A(c, Yy(f, e), be([vd(d)])) + } + } else { + return c + } + } + } + + function $y(a, b, c) { + a = t(B(b)) ? Zy(B(a), B(b)) : B(a); + return new R(null, 2, 5, T, [Lm, Ii(bg(function () { + return function (a, b) { + return pe(new R(null, 3, 5, T, [Xy, b, c], null), new r(null, 1, [mk, a], null)) + } + }(a), a))], null) + } + + var qA = new ti(null, new r(null, 3, ["small", null, "medium", null, "big", null], null), null); + + function rA(a, b, c, d, e) { + var f = yp(function () { + var a = B(c); + return t(qA.h ? qA.h(a) : qA.call(null, a)) ? ["font-", v.h(a)].join("") : null + }), h = yp(function () { + return function () { + var d = B(a), e = B(b), f = B(c); + f = t(qA.h ? qA.h(f) : qA.call(null, f)) ? null : new r(null, 1, [wk, f], null); + return hi.A(be( + [new r(null, 2, [fl, [v.h(d), "ch"].join(""), no, [v.h(1.3333333333 * e), "em"].join("")], + null), f])) + } + }(f)), k = yp(function () { + return function () { + return Lu(B(d)) + } + }(f, h)), l = yp(function (a, c, d) { + return function () { + return xg(function (a, b, c) { + return function (d) { + return yp(function (a, + b, c) { + return function () { + return D.c(B(c), d) + } + }(a, b, c)) + } + }(a, c, d), Fi(0, B(b), 1)) + } + }(f, h, k)), p = yp(function () { + return function () { + return Mu(B(d)) + } + }(f, h, k, l)), m = yp(function (a, b, c, d, e) { + return function () { + return zn.h(B(e)) + } + }(f, h, k, l, p)), u = yp(function (a, b, c, d, e) { + return function () { + return Aj.h(B(e)) + } + }(f, h, k, l, p, m)), w = yp(function (a, b, c, d, e) { + return function () { + return On.h(B(e)) + } + }(f, h, k, l, p, m, u)); + return function (a, b, c, d, f, h, k, l) { + return function () { + return new R(null, 3, 5, T, [Gm, new r(null, 2, [vn, B(a), fm, B(b)], null), bg(function (a, + b, c, d, f, h, k, l) { + return function (m, p) { + var u = yp(function (a, b, c, d, e, f, h, k) { + return function () { + var a = B(k); + return t(a) ? (a = G.c(m, B(h))) ? B(f) : a : a + } + }(a, b, c, d, f, h, k, l)); + return pe(new R(null, 4, 5, T, [$y, p, u, e], null), new r(null, 1, [mk, m], null)) + } + }(a, b, c, d, f, h, k, l), B(d))], null) + } + }(f, h, k, l, p, m, u, w) + } + + function sA() { + return new R(null, 2, 5, T, [Ym, new r(null, 4, + [Mn, "1.1", Fl, "0 0 866.0254037844387 866.0254037844387", vn, "icon", mo, new r(null, 1, [An, + '\x3cdefs\x3e \x3cmask id\x3d"small-triangle-mask"\x3e \x3crect width\x3d"100%" height\x3d"100%" fill\x3d"white"/\x3e \x3cpolygon points\x3d"508.01270189221935 433.01270189221935, 208.0127018922194 259.8076211353316, 208.01270189221927 606.217782649107" fill\x3d"black"\x3e\x3c/polygon\x3e \x3c/mask\x3e \x3c/defs\x3e \x3cpolygon points\x3d"808.0127018922194 433.01270189221935, 58.01270189221947 -1.1368683772161603e-13, 58.01270189221913 866.0254037844386" mask\x3d"url(#small-triangle-mask)" fill\x3d"white"\x3e\x3c/polygon\x3e \x3cpolyline points\x3d"481.2177826491071 333.0127018922194, 134.80762113533166 533.0127018922194" stroke\x3d"white" stroke-width\x3d"90"\x3e\x3c/polyline\x3e'], + null)], + null)], null) + } + + function tA() { + return new R(null, 3, 5, T, [Ym, new r(null, 3, [Mn, "1.1", Fl, "0 0 12 12", vn, "icon"], null), + new R(null, 2, 5, T, [Fj, new r(null, 1, [pn, "M1,0 L11,6 L1,12 Z"], null)], null)], null) + } + + function uA() { + return new R(null, 4, 5, T, [Ym, new r(null, 3, [Mn, "1.1", Fl, "0 0 12 12", vn, "icon"], null), + new R(null, 2, 5, T, [Fj, new r(null, 1, [pn, "M1,0 L4,0 L4,12 L1,12 Z"], null)], null), + new R(null, 2, 5, T, [Fj, new r(null, 1, [pn, "M8,0 L11,0 L11,12 L8,12 Z"], null)], null)], + null) + } + + function vA() { + return new R(null, 4, 5, T, [Ym, new r(null, 3, [Mn, "1.1", Fl, "0 0 12 12", vn, "icon"], null), + new R(null, 2, 5, T, + [Fj, new r(null, 1, [pn, "M12,0 L7,0 L9,2 L7,4 L8,5 L10,3 L12,5 Z"], null)], null), + new R(null, 2, 5, T, + [Fj, new r(null, 1, [pn, "M0,12 L0,7 L2,9 L4,7 L5,8 L3,10 L5,12 Z"], null)], null)], null) + } + + function wA() { + return new R(null, 4, 5, T, [Ym, new r(null, 3, [Mn, "1.1", Fl, "0 0 12 12", vn, "icon"], null), + new R(null, 2, 5, T, + [Fj, new r(null, 1, [pn, "M7,5 L7,0 L9,2 L11,0 L12,1 L10,3 L12,5 Z"], null)], null), + new R(null, 2, 5, T, + [Fj, new r(null, 1, [pn, "M5,7 L0,7 L2,9 L0,11 L1,12 L3,10 L5,12 Z"], null)], null)], null) + } + + function xA(a, b) { + return function (b) { + return function () { + return new R(null, 3, 5, T, + [cl, new r(null, 1, [Sl, b], null), new R(null, 1, 5, T, [t(B(a)) ? uA : tA], null)], + null) + } + }(Ty(b, new fy(null, null, null))) + } + + function yA(a) { + return 10 > a ? ["0", v.h(a)].join("") : a + } + + function zA(a) { + var b = Math.floor((a % 60 + 60) % 60); + return [v.h(yA(Math.floor(a / 60))), ":", v.h(yA(b))].join("") + } + + function AA(a, b) { + var c = T, d = new R(null, 2, 5, T, [Yk, zA(B(a))], null), e = T; + var f = B(a); + var h = B(b); + f = ["-", v.h(zA(h - f))].join(""); + return new R(null, 3, 5, c, [Ml, d, new R(null, 2, 5, e, [co, f], null)], null) + } + + function BA() { + function a(a) { + a.preventDefault(); + return Ry(a.currentTarget.parentNode.parentNode.parentNode) + } + + return function () { + return new R(null, 4, 5, T, + [un, new r(null, 1, [Sl, a], null), new R(null, 1, 5, T, [vA], null), + new R(null, 1, 5, T, [wA], null)], null) + } + } + + function CA(a, b) { + var c = Sy(b, function (a) { + var b = a.currentTarget.offsetWidth, c = a.currentTarget.getBoundingClientRect(); + return cy(Nu(a.clientX - c.left, b) / b) + }), d = yp(function () { + return function () { + return [v.h(100 * B(a)), "%"].join("") + } + }(c)); + return function (a, b) { + return function () { + return new R(null, 2, 5, T, [Vj, new R(null, 3, 5, T, [Bl, new r(null, 1, [Ql, a], null), + new R(null, 2, 5, T, [Cj, + new R(null, 2, 5, T, [ro, new r(null, 1, [fm, new r(null, 1, [fl, B(b)], null)], null)], + null)], null)], null)], null) + } + }(c, d) + } + + function DA(a, b, c, d) { + return function (e) { + return function () { + return new R(null, 5, 5, T, + [Kk, new R(null, 3, 5, T, [xA, a, d], null), new R(null, 3, 5, T, [AA, b, c], null), + new R(null, 1, 5, T, [BA], null), new R(null, 3, 5, T, [CA, e, d], null)], null) + } + }(yp(function () { + return B(b) / B(c) + })) + } + + function EA(a) { + return function (a) { + return function () { + return new R(null, 3, 5, T, [ol, new r(null, 1, [Sl, a], null), new R(null, 2, 5, T, [Xk, + new R(null, 2, 5, T, + [km, new R(null, 2, 5, T, [ro, new R(null, 1, 5, T, [sA], null)], null)], null)], + null)], null) + } + }(Ty(a, new fy(null, null, null))) + } + + function FA() { + return new R(null, 2, 5, T, [Ek, new R(null, 1, 5, T, [xn], null)], null) + } + + function GA(a) { + return Wf(function (b) { + return a[b] + }, new R(null, 4, 5, T, ["altKey", "shiftKey", "metaKey", "ctrlKey"], null)) + } + + function HA(a) { + var b = t(GA(a)) ? null : function () { + switch (a.key) { + case " ": + return new fy(null, null, null); + case "f": + return bm; + case "0": + return cy(0); + case "1": + return cy(.1); + case "2": + return cy(.2); + case "3": + return cy(.3); + case "4": + return cy(.4); + case "5": + return cy(.5); + case "6": + return cy(.6); + case "7": + return cy(.7); + case "8": + return cy(.8); + case "9": + return cy(.9); + default: + return null + } + }(); + if (t(b)) { + return b; + } + switch (a.key) { + case "\x3e": + return new ey(null, null, null); + case "\x3c": + return new dy(null, null, null); + default: + return null + } + } + + function IA(a) { + if (t(GA(a))) { + return null; + } + switch (a.which) { + case 37: + return new ay(null, null, null); + case 39: + return new $x(null, null, null); + default: + return null + } + } + + function JA(a) { + var b = HA(a); + return t(b) ? (a.preventDefault(), G.c(b, bm) ? (Ry(a.currentTarget), null) : b) : null + } + + function KA(a) { + var b = IA(a); + return t(b) ? (a.preventDefault(), b) : null + } + + function LA(a, b, c, d) { + a = t(a) ? ['"', v.h(a), '"'].join("") : "untitled"; + return new R(null, 4, 5, T, + [dl, t(d) ? new R(null, 2, 5, T, [jo, new r(null, 1, [zl, d], null)], null) : null, a, + t(b) ? new R(null, 3, 5, T, [ro, " by ", + t(c) ? new R(null, 3, 5, T, [lo, new r(null, 1, [ho, c], null), b], null) : b], null) + : null], null) + } + + function MA(a) { + var b = Mx(1, ig.h(iy)), c = Kx(1); + lx(function (c) { + return function () { + var d = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (x) { + if (x instanceof Object) { + b[5] = x, Cx(b), d = Z; + } else { + throw x; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, a) + } + throw Error("Invalid arity: " + + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function () { + return function (c) { + var d = c[1]; + if (7 === d) { + return c[7] = c[2], Ax(c, 12, b, !1); + } + if (1 === d) { + return c[2] = null, c[1] = 2, Z; + } + if (4 === d) { + return c[8] = c[2], Ax(c, 5, b, !0); + } + if (6 === d) { + return d = Jx(3E3), Ux(c, 8, new R(null, 2, 5, T, [a, d], null)); + } + if (3 === d) { + return Bx(c, c[2]); + } + if (12 === d) { + return c[9] = c[2], c[2] = null, c[1] = 2, Z; + } + if (2 === d) { + return zx(c, 4, a); + } + if (11 === d) { + return c[2] = c[2], c[1] = 7, Z; + } + if (9 === d) { + return c[2] = null, c[1] = 6, Z; + } + if (5 === d) { + return c[10] = c[2], c[2] = null, c[1] = 6, Z; + } + if (10 === d) { + return c[2] = + null, c[1] = 11, Z; + } + if (8 === d) { + var e = c[2]; + d = J(e, 0, null); + e = J(e, 1, null); + e = G.c(e, a); + c[11] = d; + c[1] = e ? 9 : 10; + return Z + } + return null + } + }(c), c) + }(), f = function () { + var a = d.B ? d.B() : d.call(null); + a[6] = c; + return a + }(); + return yx(f) + } + }(c)); + return b + } + + function NA(a, b) { + var c = dg.h(b), d = Kx(1); + lx(function (b, c) { + return function () { + var d = function () { + return function (a) { + return function () { + function b(b) { + for (; ;) { + a:try { + for (; ;) { + var c = a(b); + if (!N(c, Z)) { + var d = c; + break a + } + } + } catch (F) { + if (F instanceof Object) { + b[5] = F, Cx(b), d = Z; + } else { + throw F; + } + } + if (!N(d, Z)) { + return d + } + } + } + + function c() { + var a = [null, null, null, null, null, null, null, null, null, null, null, null, + null]; + a[0] = d; + a[1] = 1; + return a + } + + var d = null; + d = function (a) { + switch (arguments.length) { + case 0: + return c.call(this); + case 1: + return b.call(this, + a) + } + throw Error("Invalid arity: " + (arguments.length - 1)); + }; + d.B = c; + d.h = b; + return d + }() + }(function (b, c) { + return function (d) { + var e = d[1]; + if (7 === e) { + var f = d[7], h = wb(null == f); + d[8] = d[2]; + d[1] = h ? 8 : 9; + return Z + } + if (20 === e) { + return f = d[7], d[1] = t(q === f.Fe) ? 23 : 24, Z; + } + if (27 === e) { + return d[2] = !1, d[1] = 28, Z; + } + if (1 === e) { + return d[2] = null, d[1] = 2, Z; + } + if (24 === e) { + return f = d[7], d[1] = t(!f.Tc) ? 26 : 27, Z; + } + if (4 === e) { + f = d[7]; + var k = d[9]; + h = d[2]; + var l = J(h, 0, null), m = J(h, 1, null); + d[10] = m; + d[7] = l; + d[9] = h; + d[1] = t(null == l) ? 5 : 6; + return Z + } + return 15 === e ? (d[2] = !1, d[1] = + 16, Z) : 21 === e ? (f = d[7], h = Ab(Yx, f), d[2] = h, d[1] = 22, Z) : 31 === e + ? (d[11] = d[2], d[2] = null, d[1] = 2, Z) : 13 === e ? (d[2] = d[2], d[1] = 10, Z) + : 22 === e ? (d[1] = t(d[2]) ? 29 : 30, Z) : 29 === e ? (f = d[7], h = B( + a), h = Zx(f, h), h = gg.l(c, wo, h), d[2] = h, d[1] = 31, Z) : 6 === e + ? (d[2] = null, d[1] = 7, Z) : 28 === e ? (d[2] = d[2], d[1] = 25, Z) : 25 === e + ? (d[2] = d[2], d[1] = 22, Z) : 17 === e + ? (m = d[10], f = d[7], k = d[9], h = gg.c(a, function () { + return function (a, b) { + return function (a) { + return Xx(b, a) + } + }(k, f, m, m, f, k, e, b, c) + }()), d[2] = h, d[1] = 19, Z) : 3 === e ? Bx(d, d[2]) : 12 === e + ? (f = d[7], d[1] = t(!f.Tc) ? 14 : 15, Z) : + 2 === e ? (h = B(c), h = E(h), Ux(d, 4, h)) : 23 === e + ? (d[2] = !0, d[1] = 25, Z) : 19 === e ? (f = d[7], h = wb( + null == f), d[12] = d[2], d[1] = h ? 20 : 21, Z) : 11 === e + ? (d[2] = !0, d[1] = 13, Z) : 9 === e ? (f = d[7], h = Ab(Wx, + f), d[2] = h, d[1] = 10, Z) : 5 === e ? (m = d[10], h = gg.l(c, re, + m), d[2] = h, d[1] = 7, Z) : 14 === e ? (f = d[7], h = Ab(Wx, + f), d[2] = h, d[1] = 16, Z) : 26 === e ? (f = d[7], h = Ab(Yx, + f), d[2] = h, d[1] = 28, Z) : 16 === e ? (d[2] = d[2], d[1] = 13, Z) + : 30 === e ? (d[2] = null, d[1] = 31, Z) : 10 === e ? (d[1] = t( + d[2]) ? 17 : 18, Z) : 18 === e ? (d[2] = null, d[1] = 19, Z) : 8 + === e ? (f = d[7], d[1] = t(q === f.sb) ? 11 : 12, Z) : null + } + }(b, c), b, c) + }(), e = function () { + var a = + d.B ? d.B() : d.call(null); + a[6] = b; + return a + }(); + return yx(e) + } + }(d, c)); + return d + } + + function OA(a, b, c) { + c = Ty(c, !0); + var d = Sy(b, JA), e = Sy(b, KA), f = yp(function () { + return function () { + return Hm.h(B(a)) + } + }(c, d, e)), h = yp(function () { + return function () { + return el.h(B(a)) + } + }(c, d, e, f)), k = yp(function (a, b, c, d, e) { + return function () { + var a = B(d); + return t(a) ? a : B(e) + } + }(c, d, e, f, h)), l = yp(function (b, c, d, e, f, h) { + return function () { + var b = Gk.h(B(a)); + b = t(b) ? b : wb(B(h)); + return t(b) ? "hud" : null + } + }(c, d, e, f, h, k)), p = yp(function () { + return function () { + return ["asciinema-theme-", v.h(gm.h(B(a)))].join("") + } + }(c, d, e, f, h, k, l)), m = yp(function () { + return function () { + var b = + fl.h(B(a)); + return t(b) ? b : 80 + } + }(c, d, e, f, h, k, l, p)), u = yp(function () { + return function () { + var b = no.h(B(a)); + return t(b) ? b : 24 + } + }(c, d, e, f, h, k, l, p, m)), w = yp(function () { + return function () { + return wk.h(B(a)) + } + }(c, d, e, f, h, k, l, p, m, u)), x = yp(function () { + return function () { + return V.h(B(a)) + } + }(c, d, e, f, h, k, l, p, m, u, w)), C = yp(function () { + return function () { + return ml.h(B(a)) + } + }(c, d, e, f, h, k, l, p, m, u, w, x)), F = yp(function () { + return function () { + return jn.h(B(a)) + } + }(c, d, e, f, h, k, l, p, m, u, w, x, C)), I = yp(function () { + return function () { + return Uj.h(B(a)) + } + }(c, + d, e, f, h, k, l, p, m, u, w, x, C, F)), M = yp(function () { + return function () { + return wl.h(B(a)) + } + }(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I)), S = B(a), + X = null != S && (S.m & 64 || q === S.G) ? P(U, S) : S, Ga = D.c(X, ki), db = D.c(X, li), + Q = D.c(X, mi), xb = D.c(X, ni); + return function (a, c, d, e, f, h, k, l, m, p, u, w, x, C, F, I, M, S, Q, X, Ga, db) { + return function () { + return new R(null, 3, 5, T, + [Cn, new r(null, 5, [Jj, -1, Zj, c, Rn, d, Vm, a, vn, B(k)], null), new R(null, 7, 5, T, + [Sm, new r(null, 1, [vn, B(l)], null), new R(null, 6, 5, T, [rA, m, p, u, w, x], null), + new R(null, 5, 5, T, [DA, C, F, I, b], null), t(t(Q) ? Q : + X) ? new R(null, 5, 5, T, [LA, Q, X, Ga, db], null) : null, + t(B(h)) ? null : new R(null, 2, 5, T, [EA, b], null), + t(B(e)) ? new R(null, 1, 5, T, [FA], null) : null], null)], null) + } + }(c, d, e, f, h, k, l, p, m, u, w, x, C, F, I, M, S, X, Ga, db, Q, xb) + } + + function PA(a) { + var b = Kx(null), c = Kx(new dx(bx(1), 1)); + return function (b, c) { + return function () { + return Pp(new r(null, 4, [ln, "asciinema-player", Dm, function (b, c) { + return function () { + return OA(a, b, c) + } + }(b, c), $k, function (b, c) { + return function () { + var d = ty(Gl.h(B(a))), e = MA(c); + Tx(e, b); + return NA(a, Je([b, d])) + } + }(b, c), Wm, function () { + return function () { + return uy(Gl.h(B(a))) + } + }(b, c)], null)) + } + }(b, c) + }; + + function QA(a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, Ak), e = D.c(c, Gl); + d = a.h ? a.h(d) : a.call(null, d); + zy(e, d); + return K.l(c, Ak, d) + } + + $x.prototype.sb = q; + $x.prototype.qb = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, Uj), e = D.c(c, wl), + f = D.c(c, Gl); + t(e) && yy(f, Nu(d + 5, e)); + return c + }; + ay.prototype.sb = q; + ay.prototype.qb = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, Uj), e = D.c(c, wl), + f = D.c(c, Gl); + t(e) && yy(f, Nu(d + -5, e)); + return c + }; + by.prototype.sb = q; + by.prototype.qb = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, wl), e = D.c(c, Gl); + t(d) && (d *= nn.h(this), yy(e, d)); + return c + }; + dy.prototype.sb = q; + dy.prototype.qb = function (a, b) { + return QA(function () { + return function (a) { + return a / 2 + } + }(this), b) + }; + ey.prototype.sb = q; + ey.prototype.qb = function (a, b) { + return QA(function () { + return function (a) { + return 2 * a + } + }(this), b) + }; + fy.prototype.sb = q; + fy.prototype.qb = function (a, b) { + xy(Gl.h(b)); + return b + }; + gy.prototype.sb = q; + gy.prototype.qb = function (a, b) { + return K.l(b, ml, so.h(this)) + }; + hy.prototype.sb = q; + hy.prototype.qb = function (a, b) { + return K.l(b, Gk, so.h(this)) + }; + jy.prototype.sb = q; + jy.prototype.qb = function (a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + D.c(c, fl); + D.c(c, no); + D.c(c, wl); + c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + var d = D.c(c, fl), e = D.c(c, no), + f = null != this && (this.m & 64 || q === this.G) ? P(U, this) : this, h = D.c(f, fl), + k = D.c(f, no); + f = D.c(f, wl); + return K.A(c, fl, t(d) ? d : h, be([no, t(e) ? e : k, wl, f])) + }; + ky.prototype.sb = q; + ky.prototype.qb = function (a, b) { + return K.l(b, Hm, Hm.h(this)) + }; + oy.prototype.sb = q; + oy.prototype.qb = function (a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, oi); + t(d) && (ap(bp), d.B ? d.B() : d.call(null)); + return c + }; + ry.prototype.sb = q; + ry.prototype.qb = function (a, b) { + return K.l(b, Uj, Zk.h(this)) + }; + + function RA() { + return ig.l(function (a, b) { + return new R(null, 2, 5, T, [a, new gy(b, null, null, null)], null) + }, rg(function (a) { + return a + .5 + }, .5), og(new R(null, 2, 5, T, [!1, !0], null))) + } + + function SA(a) { + var b = Dy(RA()); + return K.l(K.l(a, ml, !0), Ol, b) + } + + function TA(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + var b = D.c(a, Ol); + Tw(b); + return K.l(K.l(a, ml, !0), Ol, null) + } + + function UA(a) { + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(a, Ol); + return t(a) ? Je([a]) : vi + } + + my.prototype.sb = q; + my.prototype.qb = function (a, b) { + var c = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + D.c(c, jn); + var d = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, e = D.c(d, jn); + c = D.c(d, pi); + var f = D.c(d, qi), h = null != this && (this.m & 64 || q === this.G) ? P(U, this) : this; + h = D.c(h, jn); + if (G.c(e, h)) { + return d; + } + d = K.A(d, jn, h, be([el, !0])); + if (t(h)) { + return t(c) && (c.B ? c.B() : c.call(null)), SA(d); + } + t(f) && (f.B ? f.B() : f.call(null)); + return TA(d) + }; + my.prototype.Fe = q; + my.prototype.de = function (a, b) { + return UA(b) + }; + py.prototype.sb = q; + py.prototype.qb = function (a, b) { + var c = K.l(b, V, V.h(this)); + c = null != c && (c.m & 64 || q === c.G) ? P(U, c) : c; + var d = D.c(c, Ol); + return t(d) ? SA(TA(c)) : c + }; + py.prototype.Fe = q; + py.prototype.de = function (a, b) { + return UA(b) + }; + + function VA(a) { + return t(a) ? (a = ig.c(parseFloat, Fo("" + v.h(a), /:/)), a = ig.l(Ye, cf(a), rg(function () { + return function (a) { + return 60 * a + } + }(a), 1)), P(Xe, a)) : null + } + + function WA(a, b, c) { + t(a) ? "string" === typeof a ? t(0 === a.indexOf("data:application/json;base64,")) + ? (b = a.substring(29).replace(RegExp("\\s", "g"), ""), b = JSON.parse(atob(b)), b = fj( + b), b = new r(null, 1, [V, new r(null, 1, [il, b], null)], null)) : t( + 0 === a.indexOf("data:text/plain,")) ? (a = a.substring(16), b = Ju( + Ot(t(b) ? b : 80, t(c) ? c : 24), a), b = new r(null, 1, [V, b], null)) : b = t( + 0 === a.indexOf("npt:")) ? new r(null, 1, [Zk, VA(a.substring(4))], null) : null + : b = new r(null, 1, [V, new r(null, 1, [il, a], null)], null) : b = null; + return b + } + + var XA = new r(null, 2, [pl, new r(null, 1, [On, !1], null), il, he], null); + + function YA(a, b) { + var c = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b, d = D.c(c, no), + e = D.l(c, wk, "small"), f = D.l(c, Ak, 1), h = D.c(c, Hk), k = D.c(c, fl), l = D.c(c, rl), + p = D.l(c, cm, !1), m = D.l(c, gm, "asciinema"), u = D.c(c, qm), w = D.c(c, Bm), + x = D.l(c, vm, !1), C = D.l(c, Em, !1), F = function () { + var a = VA(h); + return t(a) ? a : 0 + }(); + w = WA(w, k, d); + var I = null != w && (w.m & 64 || q === w.G) ? P(U, w) : w; + w = D.c(I, V); + I = D.c(I, Zk); + var M = t(I) ? I : wb(w) && 0 < F ? F : null; + I = function () { + var b = Pe([Ak, Hk, fl, rl, cm, qm, vm, Em, Mm, no], [f, F, k, l, p, u, x, C, M, d]); + return xj.c ? xj.c(a, b) : xj.call(null, a, b) + }(); + return hi.A(be([Pe([Uj, V, wk, Ak, Gk, el, fl, wl, Gl, Ol, gm, Hm, jn, no], + [F, t(w) ? w : XA, e, f, !1, !1, k, null, I, null, m, !1, !1, d]), ji(c)])) + } + + function ZA(a, b, c) { + a = "string" === typeof a ? document.getElementById(a) : a; + b = tp.h(P(YA, be([b, c]))); + c = new R(null, 2, 5, T, [PA, b], null); + qq ? oq(c, a, null) : pq.call(null, c, a); + return b + } + + ib = function () { + function a(a) { + var c = null; + if (0 < arguments.length) { + c = 0; + for (var e = Array(arguments.length - 0); c < e.length;) { + e[c] = arguments[c + 0], ++c; + } + c = new Jb(e, 0, null) + } + return b.call(this, c) + } + + function b(a) { + return console.log.apply(console, Lb(a)) + } + + a.L = 0; + a.N = function (a) { + a = E(a); + return b(a) + }; + a.A = b; + return a + }(); + kb = function () { + function a(a) { + var c = null; + if (0 < arguments.length) { + c = 0; + for (var e = Array(arguments.length - 0); c < e.length;) { + e[c] = arguments[c + 0], ++c; + } + c = new Jb(e, 0, null) + } + return b.call(this, c) + } + + function b(a) { + return console.error.apply(console, Lb(a)) + } + + a.L = 0; + a.N = function (a) { + a = E(a); + return b(a) + }; + a.A = b; + return a + }(); + var $A = function $A(a) { + switch (arguments.length) { + case 2: + return $A.c(arguments[0], arguments[1]); + case 3: + return $A.l(arguments[0], arguments[1], arguments[2]); + default: + throw Error(["Invalid arity: ", v.h(arguments.length)].join("")); + } + }; + da("asciinema.player.js.CreatePlayer", $A); + $A.c = function (a, b) { + return $A.l(a, b, Ef) + }; + $A.l = function (a, b, c) { + b = fj(b); + c = yo(fj(c)); + a = ZA(a, b, c); + return cj(new r(null, 5, [En, function (a, b, c) { + return function () { + return Uj.h(B(c)) + } + }(b, c, a), Bj, function (a, b, c) { + return function (a) { + var b = B(c); + b = null != b && (b.m & 64 || q === b.G) ? P(U, b) : b; + D.c(b, wl); + b = D.c(b, Gl); + return yy(b, a) + } + }(b, c, a), Zm, function (a, b, c) { + return function () { + return wl.h(B(c)) + } + }(b, c, a), Jn, function (a, b, c) { + return function () { + var a = B(c); + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(a, Gl); + return vy(a) + } + }(b, c, a), sn, function (a, b, c) { + return function () { + var a = + B(c); + a = null != a && (a.m & 64 || q === a.G) ? P(U, a) : a; + a = D.c(a, Gl); + return wy(a) + } + }(b, c, a)], null)) + }; + $A.L = 3; + da("asciinema.player.js.UnmountPlayer", function (a) { + a = "string" === typeof a ? document.getElementById(a) : a; + gg.l(lq, le, a); + return kq().unmountComponentAtNode(a) + }); + registerAsciinemaPlayerElement(); +})(); + +//# sourceMappingURL=asciinema-player.js.map diff --git a/docs/requirements.txt b/docs/requirements.txt index 870797e938..1b9099aa3c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,18 @@ -mkdocs-material==7.1.2 -markdown-include==0.6.0 +click-man>=0.4.1 +mkdocs>=1.2 +pygments>=2.4 +mkdocs-material>=7.1.2 +markdown>=3.2 +markdown-checklist>=0.4.1 +fontawesome-markdown>=0.2.6 +markdown-include>=0.6.0 +pymdown-extensions>=8.2 +mkdocs-material-extensions>=1.0 +mkdocs-git-revision-date-localized-plugin>=0.9.2 +mkdocs-awesome-pages-plugin>=2.5.0 +mdx-truly-sane-lists>=1.2 +mkdocs-include-markdown-plugin>=3.2.1 +mkdocs-redirects>=1.0.3 +smarty>=0.3.3 +dumb-init>=1.2.5 +cookiecutter>=1.7.3 diff --git a/k8s/README.md b/k8s/README.md new file mode 100644 index 0000000000..3c534d4dbe --- /dev/null +++ b/k8s/README.md @@ -0,0 +1,42 @@ +# Deploy `android-patterns` + +`android-patterns` k8s manifests: + +- [common](common) +- [backend](backend) + +Deploy `android-patterns` in the `webapp` namespace: + +```bash +$ kubectl apply -f ./common +$ kubectl apply -f ./backend +``` + +Deploy `android-patterns` in the `dev` namespace: + +```bash +$ kustomize build ./overlays/dev | kubectl apply -f- +``` + +Deploy `android-patterns` in the `staging` namespace: + +```bash +$ kustomize build ./overlays/staging | kubectl apply -f- +``` + +Deploy `android-patterns` in the `prod` namespace: + +```bash +$ kustomize build ./overlays/prod | kubectl apply -f- +``` + +## Testing Locally Using Kind + +> NOTE: You can install [kind from here](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) + +The following will create a new cluster called "android-patterns" and configure host ports on 8000 and 8443. You can access the endpoints on localhost. The example also +deploys cert-manager within the cluster along with a self-signed cluster issuer used to generate the certificate to validate the secure port. + +```bash +$ ./kind.sh +``` diff --git a/k8s/backend/deployment.yaml b/k8s/backend/deployment.yaml new file mode 100644 index 0000000000..dd3d026bea --- /dev/null +++ b/k8s/backend/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend + namespace: webapp + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + replicas: 1 + minReadySeconds: 60 + revisionHistoryLimit: 5 + progressDeadlineSeconds: 120 + strategy: + rollingUpdate: + maxSurge: 10% + maxUnavailable: 0 + type: RollingUpdate + selector: + matchLabels: + app: backend + template: + metadata: + labels: + app: backend + annotations: + scheduler.alpha.kubernetes.io/critical-pod: '' + spec: + dnsPolicy: Default + terminationGracePeriodSeconds: 30 + tolerations: + - key: 'CriticalAddonsOnly' + operator: 'Exists' + containers: + - name: backend + image: android-patterns + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8000 + protocol: TCP + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + volumeMounts: + - name: data + mountPath: /data + resources: + limits: + cpu: 2000m + memory: 512Mi + requests: + cpu: 100m + memory: 32Mi + volumes: + - name: data + emptyDir: {} diff --git a/k8s/backend/hpa.yaml b/k8s/backend/hpa.yaml new file mode 100644 index 0000000000..87a28beb5e --- /dev/null +++ b/k8s/backend/hpa.yaml @@ -0,0 +1,29 @@ +apiVersion: autoscaling/v2beta2 +kind: HorizontalPodAutoscaler +metadata: + name: backend + namespace: webapp + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: backend + minReplicas: 1 + maxReplicas: 2 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + # scale up if usage is above + # 99% of the requested CPU (100m) + averageUtilization: 99 diff --git a/k8s/backend/job.yaml b/k8s/backend/job.yaml new file mode 100644 index 0000000000..4ffbb35d0a --- /dev/null +++ b/k8s/backend/job.yaml @@ -0,0 +1,25 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: backend-test + namespace: webapp + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + backoffLimit: 1 + template: + metadata: + labels: + app: backend + spec: + containers: + - name: backend-test + image: curlimages/curl + command: ['curl', '-fsSL', 'http://backend:8000/android-patterns'] + restartPolicy: Never diff --git a/k8s/backend/kustomization.yaml b/k8s/backend/kustomization.yaml new file mode 100644 index 0000000000..cdcb8f5ed6 --- /dev/null +++ b/k8s/backend/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - service.yaml + - deployment.yaml + - hpa.yaml diff --git a/k8s/backend/service.yaml b/k8s/backend/service.yaml new file mode 100644 index 0000000000..48c34068b0 --- /dev/null +++ b/k8s/backend/service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend + namespace: webapp + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + type: ClusterIP + selector: + app: backend + ports: + - name: http + port: 8000 + protocol: TCP + targetPort: http diff --git a/k8s/common/namespace.yaml b/k8s/common/namespace.yaml new file mode 100644 index 0000000000..11ec570cbc --- /dev/null +++ b/k8s/common/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: webapp diff --git a/k8s/common/reconciler-rbac.yaml b/k8s/common/reconciler-rbac.yaml new file mode 100644 index 0000000000..3bc05a729b --- /dev/null +++ b/k8s/common/reconciler-rbac.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: reconciler + namespace: webapp +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: reconciler + namespace: webapp +rules: + - apiGroups: ['*'] + resources: ['*'] + verbs: ['*'] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: reconciler + namespace: webapp +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: reconciler +subjects: + - kind: ServiceAccount + name: reconciler + namespace: webapp diff --git a/k8s/common/service-account.yaml b/k8s/common/service-account.yaml new file mode 100644 index 0000000000..12d9d86d30 --- /dev/null +++ b/k8s/common/service-account.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: webapp + namespace: webapp diff --git a/k8s/kind.sh b/k8s/kind.sh new file mode 100644 index 0000000000..fbd59d50e6 --- /dev/null +++ b/k8s/kind.sh @@ -0,0 +1,47 @@ +#! /usr/bin/env sh + +mkdir -p bin +cat >./bin/kind.yaml <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" +echo "http endpoint:" +echo "curl http://localhost:8000/" +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" +curl http://localhost:8000/ + +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" +echo "https (secure) endpoint:" +echo "curl --insecure https://localhost:8443/" +echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" +curl --insecure https://localhost:8443/ diff --git a/k8s/overlays/dev/kustomization.yaml b/k8s/overlays/dev/kustomization.yaml new file mode 100644 index 0000000000..cc0fe588c7 --- /dev/null +++ b/k8s/overlays/dev/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../backend + - namespace.yaml +transformers: + - labels.yaml diff --git a/k8s/overlays/dev/labels.yaml b/k8s/overlays/dev/labels.yaml new file mode 100644 index 0000000000..c8bbb19f5c --- /dev/null +++ b/k8s/overlays/dev/labels.yaml @@ -0,0 +1,10 @@ +apiVersion: builtin +kind: LabelTransformer +metadata: + name: labels +labels: + env: dev + instance: webapp +fieldSpecs: + - path: metadata/labels + create: true diff --git a/k8s/overlays/dev/namespace.yaml b/k8s/overlays/dev/namespace.yaml new file mode 100644 index 0000000000..8cab297810 --- /dev/null +++ b/k8s/overlays/dev/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: dev diff --git a/k8s/overlays/prod/kustomization.yaml b/k8s/overlays/prod/kustomization.yaml new file mode 100644 index 0000000000..cc0fe588c7 --- /dev/null +++ b/k8s/overlays/prod/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../backend + - namespace.yaml +transformers: + - labels.yaml diff --git a/k8s/overlays/prod/labels.yaml b/k8s/overlays/prod/labels.yaml new file mode 100644 index 0000000000..8ae1e75df9 --- /dev/null +++ b/k8s/overlays/prod/labels.yaml @@ -0,0 +1,10 @@ +apiVersion: builtin +kind: LabelTransformer +metadata: + name: labels +labels: + env: prod + instance: webapp +fieldSpecs: + - path: metadata/labels + create: true diff --git a/k8s/overlays/prod/namespace.yaml b/k8s/overlays/prod/namespace.yaml new file mode 100644 index 0000000000..5f325a9a52 --- /dev/null +++ b/k8s/overlays/prod/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: prod diff --git a/k8s/overlays/staging/kustomization.yaml b/k8s/overlays/staging/kustomization.yaml new file mode 100644 index 0000000000..cc0fe588c7 --- /dev/null +++ b/k8s/overlays/staging/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../backend + - namespace.yaml +transformers: + - labels.yaml diff --git a/k8s/overlays/staging/labels.yaml b/k8s/overlays/staging/labels.yaml new file mode 100644 index 0000000000..d910cd9fec --- /dev/null +++ b/k8s/overlays/staging/labels.yaml @@ -0,0 +1,10 @@ +apiVersion: builtin +kind: LabelTransformer +metadata: + name: labels +labels: + env: staging + instance: webapp +fieldSpecs: + - path: metadata/labels + create: true diff --git a/k8s/overlays/staging/namespace.yaml b/k8s/overlays/staging/namespace.yaml new file mode 100644 index 0000000000..ee38adfbde --- /dev/null +++ b/k8s/overlays/staging/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: staging diff --git a/k8s/secure/backend/certificate.yaml b/k8s/secure/backend/certificate.yaml new file mode 100644 index 0000000000..05a95034fb --- /dev/null +++ b/k8s/secure/backend/certificate.yaml @@ -0,0 +1,20 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: backend + namespace: secure + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + dnsNames: + - localhost + secretName: backend-tls + issuerRef: + name: self-signed + kind: ClusterIssuer diff --git a/k8s/secure/backend/deployment.yaml b/k8s/secure/backend/deployment.yaml new file mode 100644 index 0000000000..c0535e0e39 --- /dev/null +++ b/k8s/secure/backend/deployment.yaml @@ -0,0 +1,80 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend + namespace: secure + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + replicas: 1 + minReadySeconds: 60 + revisionHistoryLimit: 5 + progressDeadlineSeconds: 120 + strategy: + rollingUpdate: + maxSurge: 10% + maxUnavailable: 0 + type: RollingUpdate + selector: + matchLabels: + app: backend + template: + metadata: + labels: + app: backend + spec: + serviceAccountName: webapp + containers: + - name: backend + image: android-patterns + imagePullPolicy: IfNotPresent + securityContext: + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE + allowPrivilegeEscalation: true + ports: + - name: http + containerPort: 8000 + protocol: TCP + hostPort: 8000 + - name: https + containerPort: 443 + protocol: TCP + hostPort: 8443 + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + resources: + limits: + cpu: 2000m + memory: 512Mi + requests: + cpu: 100m + memory: 32Mi + volumeMounts: + - name: data + mountPath: /data + - name: tls + mountPath: /data/cert + readOnly: true + volumes: + - name: data + emptyDir: {} + - name: tls + secret: + secretName: backend-tls diff --git a/k8s/secure/backend/hpa.yaml b/k8s/secure/backend/hpa.yaml new file mode 100644 index 0000000000..4bf157d9fa --- /dev/null +++ b/k8s/secure/backend/hpa.yaml @@ -0,0 +1,29 @@ +apiVersion: autoscaling/v2beta2 +kind: HorizontalPodAutoscaler +metadata: + name: backend + namespace: secure + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: backend + minReplicas: 1 + maxReplicas: 2 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + # scale up if usage is above + # 99% of the requested CPU (100m) + averageUtilization: 99 diff --git a/k8s/secure/backend/service.yaml b/k8s/secure/backend/service.yaml new file mode 100644 index 0000000000..efc775e11a --- /dev/null +++ b/k8s/secure/backend/service.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend + namespace: secure + labels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: android-patterns + app.kubernetes.io/version: '0.0.0' + app.kubernetes.io/component: backend + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: tilt + +spec: + type: ClusterIP + selector: + app: backend + ports: + - name: http + port: 8000 + protocol: TCP + targetPort: http + - name: https + port: 443 + protocol: TCP + targetPort: https diff --git a/k8s/secure/common/cluster-issuer.yaml b/k8s/secure/common/cluster-issuer.yaml new file mode 100644 index 0000000000..e41b9ffd6d --- /dev/null +++ b/k8s/secure/common/cluster-issuer.yaml @@ -0,0 +1,6 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: self-signed +spec: + selfSigned: {} diff --git a/k8s/secure/common/config-map.yaml b/k8s/secure/common/config-map.yaml new file mode 100644 index 0000000000..04ada5c944 --- /dev/null +++ b/k8s/secure/common/config-map.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: secure + namespace: secure + labels: + addonmanager.kubernetes.io/mode: EnsureExists diff --git a/k8s/secure/common/namespace.yaml b/k8s/secure/common/namespace.yaml new file mode 100644 index 0000000000..28165dd783 --- /dev/null +++ b/k8s/secure/common/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: secure diff --git a/k8s/secure/common/reconciler-rbac.yaml b/k8s/secure/common/reconciler-rbac.yaml new file mode 100644 index 0000000000..07087e7d8a --- /dev/null +++ b/k8s/secure/common/reconciler-rbac.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: reconciler + namespace: secure +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: reconciler + namespace: secure +rules: + - apiGroups: ['*'] + resources: ['*'] + verbs: ['*'] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: reconciler + namespace: secure +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: reconciler +subjects: + - kind: ServiceAccount + name: reconciler + namespace: secure diff --git a/k8s/secure/common/service-account.yaml b/k8s/secure/common/service-account.yaml new file mode 100644 index 0000000000..9736014635 --- /dev/null +++ b/k8s/secure/common/service-account.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: secure + namespace: secure + labels: + kubernetes.io/cluster-service: 'true' + addonmanager.kubernetes.io/mode: Reconcile diff --git a/mkdocs.yml b/mkdocs.yml index fb0668e4b9..c6643650df 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,8 @@ site_name: Android Patterns site_description: > - android design patterns and architectural concepts + android code patterns and basic architecture designing concepts site_author: Alexander Rogalskiy -site_url: https://alexander-rogalsky.gitbook.io/android-patterns-docs/ +site_url: https://alexander-rogalsky.gitbook.io/android-patterns/ repo_name: AlexRogalskiy/android-patterns repo_url: https://gitlab.com/AlexRogalskiy/android-patterns @@ -11,70 +11,110 @@ edit_uri: https://gitlab.com/AlexRogalskiy/android-patterns/master/docs/ #Copyright (shown at the footer) copyright: 'Copyright © 2021 Nullables.io' +# Extra Files +extra_javascript: + - assets/js/asciinema-player.js + +extra_css: + - assets/css/asciinema-player.css + - assets/css/extra.css + +# Theme theme: name: material + language: en + highlightjs: true font: text: Roboto code: Roboto Mono - palette: - scheme: preference - primary: deep-orange - accent: deep-orange features: - - navigation.tabs + - tabs + - navigation.top + - navigation.tabs.sticky + - navigation.tracking + - navigation.sections + - navigation.expand + - navigation.indexes - search.suggest - search.highlight - header.autohide - highlightjs: true - language: 'en' + - toc.integrate + - content.tabs.link + palette: + - media: '(prefers-color-scheme: light)' + scheme: default + primary: 'black' + accent: 'grey' + toggle: + icon: material/toggle-switch-off-outline + name: Switch to dark mode + - media: '(prefers-color-scheme: dark)' + scheme: slate + primary: light blue + toggle: + icon: material/toggle-switch + name: Switch to light mode + logo: assets/images/logos/logo.svg + favicon: assets/images/favicons/favicon.ico + icon: + repo: fontawesome/brands/github +# Plugins plugins: - search + - git-revision-date-localized: # https://squidfunk.github.io/mkdocs-material/plugins/revision-date/ + fallback_to_build_date: true + type: date + - awesome-pages # https://squidfunk.github.io/mkdocs-material/plugins/awesome-pages/ + - include-markdown # https://github.com/mondeja/mkdocs-include-markdown-plugin # - minify: # minify_html: true +# Extra extra: + generator: false social: - icon: fontawesome/brands/github-alt link: 'https://github.com/AlexRogalskiy/android-patterns' + version: + provider: mike +# Extensions markdown_extensions: - - admonition - - codehilite: + - toc: + permalink: true + toc_depth: 3 + - def_list: {} + - footnotes: {} + - tables: {} + - meta: {} + - admonition: {} # https://squidfunk.github.io/mkdocs-material/extensions/admonition/ + - codehilite: # https://squidfunk.github.io/mkdocs-material/extensions/codehilite/ linenums: true use_pygments: false guess_lang: false - - def_list - - footnotes - - tables - - meta - - toc: - permalink: true + - pymdownx.highlight: {} + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.extra: {} + - pymdownx.tilde: {} + - pymdownx.magiclink: {} + - pymdownx.caret: {} + - pymdownx.smartsymbols: {} + - pymdownx.progressbar: {} + - pymdownx.arithmatex: {} + - pymdownx.mark: {} + - pymdownx.critic: {} + - pymdownx.inlinehilite: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#inlinehilite + - pymdownx.superfences: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#superfences + - pymdownx.tabbed: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#tabbed + - pymdownx.details: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#details + - pymdownx.emoji: # https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#configuration + emoji_index: !!python/name:materialx.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg + - smarty: {} # https://python-markdown.github.io/extensions/smarty/ + - nl2br: {} # https://python-markdown.github.io/extensions/smarty/ + - mdx_truly_sane_lists: {} # https://github.com/radude/mdx_truly_sane_lists -> proper indentation of md list items -pages: - - Introduction: README.md - - Table of contents: SUMMARY.md - - User Guide: - - Changelog: user-guide/changelog.md - - Dependency: user-guide/dependency.md - - FAQ: user-guide/faq.md - - Getting Started: user-guide/getting-started.md - - Code of Conduct: user-guide/code_of_conduct.md - - Code Owners: user-guide/code_owners.md - - Troubleshooting: user-guide/troubleshooting.md - - Upgrade: user-guide/upgrade.md - - Units: - - Design patterns: units/design-patterns.md - - Scenarios: units/scenarios.md - - Use cases: units/use-cases.md - - Contributing: - - Information: contributing/info.md - - Reporting: - - Information: reporting/info.md - - Bug Report: reporting/bug_report.md - - Custom Report: reporting/custom_report.md - - Issue Report: reporting/issue_template.md - - Feature Request: reporting/feature_request_template.md - - Pull Request: reporting/pull_request_template.md - - Links: - - Information: links/info.md +# Other Settings +strict: false # halt processing when a warning is raised diff --git a/package.json b/package.json index 3080f597a5..40c0927079 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,11 @@ { - "name": "spark-patterns", + "name": "android-patterns", "version": "0.0.0", - "description": "Spark design patterns", + "description": "Android Design Patterns", "license": "GPL-3.0", "scripts": { + "start-docker": "docker stack deploy -c docker-compose.yml dev", + "stop-docker": "docker stack rm dev", "husky:install": "husky install", "postinstall": "npm run husky:install", "remark": "remark -q -f .", @@ -20,6 +22,7 @@ "lint:style": "stylelint --color --disable-default-ignores --allow-empty-input verbose **/*.{css,scss,sass}", "lint:docker": "dockerfile_lint -r default_rules.yaml", "lint:staged": "lint-staged --no-stash --allow-empty", + "validate:commit": "validate-commit-msg", "pretty": "pretty-quick --staged --pattern '!test/tests/lint/**'", "license": "license-checker --json > licenses.json", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", @@ -32,54 +35,58 @@ "link-check-diff": "repo-link-check -c config/config.yml", "link-check-dev-server": "repo-link-check -c config/config.yml -r http://localhost:3000", "link-check-exclude": "repo-link-check -c config/config.yml -s filesystem -u only", - "build-image": "docker build -f Dockerfile --tag android-patterns .", + "docker:build": "docker build -f Dockerfile -t android-patterns .", + "docker:run": "docker run -ti --rm -v ${PWD}:/usr/src/app -e CI=1 android-patterns build --strict", "postversion": "git push --follow-tags && npm publish --access public", "bump:patch": "npm version patch --no-git-tag-version", "bump:minor": "npm version minor --no-git-tag-version", "bump:major": "npm version major --no-git-tag-version", + "release-patch": "git checkout master && npm run all && npm run bump:patch && git commit -a -m 'Build project codebase with patch version' && git push origin master --tags", + "release-minor": "git checkout master && npm run all && npm run bump:minor && git commit -a -m 'Build project codebase with minor version' && git push origin master --tags", + "release-major": "git checkout master && npm run all && npm run bump:major && git commit -a -m 'Build project codebase with major version' && git push origin master --tags", "test:license": "license-checker --production --summary --unknown --onlyAllow=\"Apache-2.0;BSD;ISC;MIT;GPL-3.0;CC-BY-3.0;CC0-1.0;\"", - "lint:all": "npm run lint:md && npm run lint:json && npm run lint:style && npm run lint:docker", "format:all": "npm run format && npm run format:md", + "lint:all": "npm run lint:json && npm run lint:style && npm run lint:docker", "check:all": "npm run pretty && npm run format:check", "test:all": "npm run test:license", "all": "npm run format:all && npm run lint:all && npm run check:all && npm run test:all" }, "devDependencies": { - "alex": "^5.1.0", - "conventional-changelog-cli": "^2.0.0", - "dockerfile_lint": "0.3.4", - "husky": "^5.0.8", - "git-cz": "^4.1.0", + "alex": "^9.1.0", + "conventional-changelog-cli": "^2.1.1", + "dockerfile_lint": "^0.3.4", + "husky": "^7.0.1", + "git-cz": "^4.7.6", "jsonlint": "^1.6.3", "license-checker": "^25.0.1", - "lint-staged": "^10.1.6", - "markdown-link-check": "^3.8.6", + "lint-staged": "^11.0.1", + "markdown-link-check": "^3.8.7", "markdownlint-cli": "^0.27.1", "stylelint": "~13.13.1", - "stylelint-config-standard": "~22.0.0", - "stylelint-order": "^4.0.0", - "stylelint-scss": "^3.18.0", - "prettier": "^2.1.2", - "pretty-quick": "^3.1.0", + "stylelint-config-standard": "^22.0.0", + "stylelint-order": "^4.1.0", + "stylelint-scss": "^3.20.1", + "prettier": "^2.3.2", + "pretty-quick": "^3.1.1", "release-it": "^14.10.0", "remark-cli": "^9.0.0", "remark-lint-code-block-style": "^2.0.1", "remark-lint-ordered-list-marker-value": "^2.0.1", "remark-preset-davidtheclark": "^0.12.0", - "remark-validate-links": "^10.0.2", + "remark-validate-links": "^10.0.4", "repo-link-check": "^0.7.1", - "repo-link-check": "^0.7.1", - "textlint": "^11.3.1", - "textlint-rule-alex": "^1.3.1", + "textlint": "^12.0.2", + "textlint-rule-alex": "^3.0.0", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-en-capitalization": "^2.0.2", - "textlint-rule-stop-words": "^1.0.17", - "textlint-rule-terminology": "^1.1.30", - "textlint-rule-write-good": "^1.6.2" + "textlint-rule-stop-words": "^2.0.9", + "textlint-rule-terminology": "^2.1.5", + "textlint-rule-write-good": "^2.0.0", + "validate-commit-msg": "^2.14.0" }, "repository": { "type": "git", - "url": "git+https://github.com/AlexRogalskiy/spark-patterns.git" + "url": "git+https://github.com/AlexRogalskiy/android-patterns.git" }, "publishConfig": { "registry": "https://registry.npmjs.org/", @@ -110,9 +117,9 @@ } }, "bugs": { - "url": "https://github.com/AlexRogalskiy/spark-patterns/issues" + "url": "https://github.com/AlexRogalskiy/android-patterns/issues" }, - "homepage": "https://github.com/AlexRogalskiy/spark-patterns/", + "homepage": "https://github.com/AlexRogalskiy/android-patterns/", "author": { "name": "Alexander Rogalskiy", "url": "https://github.com/AlexRogalskiy" diff --git a/policy/deny.rego b/policy/deny.rego new file mode 100644 index 0000000000..f20deb34a0 --- /dev/null +++ b/policy/deny.rego @@ -0,0 +1,38 @@ +package main + +import data.kubernetes + +name = input.metadata.name + +#deny[msg] { +# input.kind == "Deployment" +# not input.spec.template.spec.securityContext.runAsNonRoot +# +# msg := "Containers must not run as root" +#} + +deny[msg] { + input.kind == "Deployment" + not input.spec.selector.matchLabels.app + + msg := "Containers must provide app label for pod selectors" +} + +#deny[msg] { +# kubernetes.is_deployment +# not input.spec.template.spec.securityContext.runAsNonRoot +# +# msg = sprintf("Containers must not run as root in Deployment %s", [name]) +#} + +required_deployment_selectors { + input.spec.selector.matchLabels.app + input.spec.selector.matchLabels.release +} + +#deny[msg] { +# kubernetes.is_deployment +# not required_deployment_selectors +# +# msg = sprintf("Deployment %s must provide app/release labels for pod selectors", [name]) +#} diff --git a/policy/kubernetes.rego b/policy/kubernetes.rego new file mode 100644 index 0000000000..37c4afd264 --- /dev/null +++ b/policy/kubernetes.rego @@ -0,0 +1,49 @@ +package kubernetes + +name = input.metadata.name + +is_service { + input.kind = "Service" +} + +is_deployment { + input.kind = "Deployment" +} + +is_pod { + input.kind = "Pod" +} + +split_image(image) = [image, "latest"] { + not contains(image, ":") +} + +split_image(image) = [image_name, tag] { + [image_name, tag] = split(image, ":") +} + +pod_containers(pod) = all_containers { + keys = {"containers", "initContainers"} + all_containers = [c | keys[k]; c = pod.spec[k][_]] +} + +containers[container] { + pods[pod] + all_containers = pod_containers(pod) + container = all_containers[_] +} + +containers[container] { + all_containers = pod_containers(input) + container = all_containers[_] +} + +pods[pod] { + is_deployment + pod = input.spec.template +} + +pods[pod] { + is_pod + pod = input +} diff --git a/policy/labels.rego b/policy/labels.rego new file mode 100644 index 0000000000..eb61790b9b --- /dev/null +++ b/policy/labels.rego @@ -0,0 +1,20 @@ +package main + +import data.kubernetes + +name = input.metadata.name + +required_deployment_labels { + input.metadata.labels["app.kubernetes.io/name"] + input.metadata.labels["app.kubernetes.io/instance"] + input.metadata.labels["app.kubernetes.io/version"] + input.metadata.labels["app.kubernetes.io/component"] + input.metadata.labels["app.kubernetes.io/part-of"] + input.metadata.labels["app.kubernetes.io/managed-by"] +} + +deny[msg] { + kubernetes.is_deployment + not required_deployment_labels + msg = sprintf("%s must include Kubernetes recommended labels: https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/#labels", [name]) +} diff --git a/policy/rules.rego b/policy/rules.rego new file mode 100644 index 0000000000..bccab67950 --- /dev/null +++ b/policy/rules.rego @@ -0,0 +1,43 @@ +package rules + +import data.kubernetes + +name = input.metadata.name + +# Deny containers with latest image tag +deny[msg] { + kubernetes.containers[container] + [image_name, "latest"] = kubernetes.split_image(container.image) + msg = sprintf("%s in the %s %s has an image %s, using the latest tag", [container.name, kubernetes.kind, kubernetes.name, image_name]) +} + +# Deny services without app label selector +service_labels { + input.spec.selector["app"] +} +deny[msg] { + kubernetes.is_service + not service_labels + msg = sprintf("Service %s should set app label selector", [name]) +} + +# Deny deployments without app label selector +match_labels { + input.spec.selector.matchLabels["app"] +} +deny[msg] { + kubernetes.is_deployment + not match_labels + msg = sprintf("Service %s should set app label selector", [name]) +} + +# Warn if deployments have no prometheus pod annotations +annotations { + input.spec.template.metadata.annotations["prometheus.io/scrape"] + input.spec.template.metadata.annotations["prometheus.io/port"] +} +warn[msg] { + kubernetes.is_deployment + not annotations + msg = sprintf("Deployment %s should set prometheus.io/scrape and prometheus.io/port pod annotations", [name]) +} diff --git a/policy/violation.rego b/policy/violation.rego new file mode 100644 index 0000000000..ce4a1850dd --- /dev/null +++ b/policy/violation.rego @@ -0,0 +1,10 @@ +package main2 + +import data.kubernetes + +name = input.metadata.name + +violation[{"msg": msg, "details": {}}] { + kubernetes.is_deployment + msg = sprintf("Found deployment %s but deployments are not allowed", [name]) +} diff --git a/policy/warn.rego b/policy/warn.rego new file mode 100644 index 0000000000..b7ff3f63b7 --- /dev/null +++ b/policy/warn.rego @@ -0,0 +1,10 @@ +package main2 + +import data.kubernetes + +name = input.metadata.name + +warn[msg] { + kubernetes.is_service + msg = sprintf("Found service %s but services are not allowed", [name]) +} diff --git a/record-start-time.py b/record-start-time.py new file mode 100644 index 0000000000..02dbdcf392 --- /dev/null +++ b/record-start-time.py @@ -0,0 +1,20 @@ +import re +import time + +filename = "build.txt" +f = open(filename, "r") +contents = f.read() +f.close() + +timestamp_sec = int(time.time()) +timestamp_nano = (float(time.time()) - timestamp_sec) * 1000 * 1000 * 1000 +contents = re.sub(r'startTimeSecs = .*;', + "startTimeSecs = %d;" % timestamp_sec, + contents) +contents = re.sub(r'startTimeNanos = .*;', + "startTimeNanos = %d;" % timestamp_nano, + contents) + +f = open(filename, "w") +f.write(contents) +f.close() diff --git a/record-start-time.sh b/record-start-time.sh new file mode 100644 index 0000000000..6e59c00763 --- /dev/null +++ b/record-start-time.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +tmpfile=$(mktemp /tmp/tilt-example-android.XXXXXX) + +cat build.txt | + sed -e "s/startTimeSecs = .*;/startTimeSecs = $(date +%-s);/" | + sed -e "s/startTimeNanos = .*;/startTimeNanos = $(date +%-N);/" >$tmpfile + +mv $tmpfile build.txt diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index 6aabdb3d91..61dec61b2e 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -23,12 +23,10 @@ cd $BASE_DIR ## Install pip module wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get-pip.py -python $TMPDIR/get-pip.py +python3 $TMPDIR/get-pip.py ## Install project dependencies -python -m pip install mkdocs --quiet -python -m pip install mkdocs-material --quiet -python -m pip install markdown-include --quiet +python3 -m pip install -r ./docs/requirements.txt ## Start server locally -python -m mkdocs serve --verbose --dirtyreload +python3 -m mkdocs serve --verbose --dirtyreload diff --git a/scripts/create-changelog.sh b/scripts/create-changelog.sh new file mode 100644 index 0000000000..34e4441da9 --- /dev/null +++ b/scripts/create-changelog.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -u -e -o pipefail + +cd ../ + +VERSION=$(grep 'version:' package.json | sed -E "s/.*'([^']*)'/\1/") +RELEASE_DATE=$(date "+%Y-%m-%d") + +# compile a list of already reported PRs +reported="$(mktemp)" +grep -E "#[0-9]{4}" -o CHANGELOG.md | sort >"$reported" + +echo "[$VERSION] - $RELEASE_DATE" +echo "--------------------" +echo '##### Enhancements' +git log stable..master --first-parent --format='%s %b' | + sed -E 's/.*#([0-9]+).*\[ENH\] *(.*)/\* \2 ([#\1](\.\.\/\.\.\/pull\/\1))/' | + grep -E '^\*' | grep -v -F -f "$reported" +echo +echo "##### Bugfixes" +git log stable..master --first-parent --format='%s %b' | + sed -E 's/.*#([0-9]+).*\[FIX\] *(.*)/\* \2 ([#\1](\.\.\/\.\.\/pull\/\1))/' | + grep -E '^\*' | grep -v -F -f "$reported" diff --git a/tilt_modules/conftest/README.md b/tilt_modules/conftest/README.md new file mode 100644 index 0000000000..9f5011ab8d --- /dev/null +++ b/tilt_modules/conftest/README.md @@ -0,0 +1,44 @@ +# Use Conftest to test your configuration files + +Author: [Gareth Rushgrove](https://github.com/garethr) + +[Conftest](https://conftest.dev) is a utility to help you write tests against structured configuration data, including write tests for your Kubernetes configurations. This Tilt eextension makes it easy to run Conftest as part of your development environment. + +## Usage + +The `conftest` extension can be run like so: + +```python +load('ext://conftest', 'conftest') + +conftest('kubernetes.yaml') +k8s_yaml('kubernetes.yaml') +k8s_resource('example', + port_forwards=8000, + resource_deps=['conftest'], +) +``` + +Note that you'll need a `policy` directory with your Rego code. See the [Conftest](https://www.conftest.dev/) +documentation for basic setup and usage instructions. + +The function takes a number of arguments, which map to the `conftest` CLI arguments. + +- `path`: path to file to test +- `name`: a name for the resource, defaults to conftest. Useful if you want multiple invocations +- `all_namespaces`: use rules from all namespaces +- `combine`: combine all files passed in into one structure +- `data`: a list of paths to load additional data from +- `fail_on_warn`: fail even if only warnings are found +- `input`: input type if different from that autodetected from the file extension +- `namespace`: the namespace to use for rules, defauls to main +- `output`: the output format, can be stdout, json, tap or table +- `trace`: whether or not to show the full policy trace, useful for debugging +- `update`: download policies based on local configuration or from exlicit repositories +- `policy`: where to find the policy files, defaults to a directory called policy\` + +You can also pass any other arguments supported by [`local_resource`](https://docs.tilt.dev/api.html#api.local_resource). + +## Requirements + +- The `conftest` binary must be on your path diff --git a/tilt_modules/conftest/Tiltfile b/tilt_modules/conftest/Tiltfile new file mode 100644 index 0000000000..e816c41288 --- /dev/null +++ b/tilt_modules/conftest/Tiltfile @@ -0,0 +1,54 @@ +# -*- mode: Python -*- + +CONFTEST_ARGS = [ + 'all_namespaces', + 'combine', + 'data', + 'fail_on_warn', + 'input', + 'namespace', + 'output', + 'trace', + 'update', + 'policy', +] + +def conftest(path, name='conftest', policy='policy', **kwargs): + """ + Test configuration files against Open Policy Agent policies using Conftest + + Args: + path: path to file to test + name: a name for the resource, defaults to conftest. Useful if you want multiple invocations + all_namespaces: use rules from all namespaces + combine: combine all files passed in into one structure + data: a list of paths to load additional data from + fail_on_warn: fail even if only warnings are found + input: input type if different from that autodetected from the file extension + namespace: the namespace to use for rules, defauls to main + output: the output format, can be stdout, json, tap or table + trace: whether or not to show the full policy trace, useful for debugging + update: download policies based on local configuration or from explicit repositories + policy: where to find the policy files, defaults to a directory called policy + """ + + # we want to support being able to pass arguments through to the local_resource function + # but first we need to split any kwargs explicitly intennded for conftest out + conftest_kwargs = {k.replace("_", "-"): v for k, v in kwargs.items() if k in CONFTEST_ARGS} + local_resource_kwargs = {k: v for k, v in kwargs.items() if k not in CONFTEST_ARGS} + + + # we build a string of the conftest arguments + args = "" + for key,value in conftest_kwargs.items(): + if key in ['all-namespaces', 'fail-on-warn', 'combine', 'trace']: + if type(value) != 'bool': + fail('%s takes a boolean value, instead is is set to "%s"' % (key, value)) + args += "--%s=%s " % (key, value) + + local_resource( + name, + deps=[path, policy], + cmd='conftest test %s %s' % (args, path), + **local_resource_kwargs + ) diff --git a/tilt_modules/namespace/README.md b/tilt_modules/namespace/README.md new file mode 100644 index 0000000000..949ea5de89 --- /dev/null +++ b/tilt_modules/namespace/README.md @@ -0,0 +1,52 @@ +# Namespace + +Author: [Nick Santos](https://github.com/nicks) + +Helper functions for creating Kubernetes namespaces and manipulating +namespaces on Kubernetes objects. + +## Functions + +### `namespace_yaml(name: str): Blob` + +Returns YAML for a Kubernetes namespace. + +### `namespace_create(name: str, allow_duplicates: boolean = False)` + +Deploys a namespace to the cluster. Equivalent to + +``` +load('ext://namespace', 'namespace_yaml') +k8s_yaml(namespace_yaml('name'), allow_duplicates=False) +``` + +### `namespace_inject(objects: Union[str, Blob], namespace: str): Blob` + +Given YAML for Kubernetes objects, return new YAML with a different namespace. + +## Example Usage + +### For a fixed namespace: + +``` +load('ext://namespace', 'namespace_create', 'namespace_inject') +namespace_create('my-namespace') +k8s_yaml(namespace_inject(read_file('deployment.yaml'), 'my-namespace')) +``` + +### For a user-specific namespace: + +``` +load('ext://namespace', 'namespace_create', 'namespace_inject') +ns = 'user-%s' % os.environ.get('USER', 'anonymous') +namespace_create(ns) +k8s_yaml(namespace_inject(read_file('deployment.yaml'), ns)) +``` + +## Caveats + +- `namespace_inject` assumes all resources are namespaced-scoped. + The behavior is undefined for cluster-scoped resources. + +- This extension doesn't do any validation to confirm that namespace names are valid. + The behavior is undefined on invalid namespaces. diff --git a/tilt_modules/namespace/Tiltfile b/tilt_modules/namespace/Tiltfile new file mode 100644 index 0000000000..186d81edb4 --- /dev/null +++ b/tilt_modules/namespace/Tiltfile @@ -0,0 +1,78 @@ +# -*- mode: Python -*- + +def namespace_yaml(name): + """Returns YAML for a namespace + + Args: + name: The namespace name. Currently not validated. + + Returns: + The namespace YAML as a blob + """ + + return blob("""apiVersion: v1 +kind: Namespace +metadata: + name: %s +""" % name) + +def namespace_create(name, allow_duplicates=False): + """Creates a namespace in the current Kubernetes cluster. + + Args: + name: The namespace name. Currently not validated. + allow_duplicates: Whether or not k8s should be allowed to have two + instances of the same resource. Useful if you have more than one + Tiltfile trying to create the same namespace. + """ + k8s_yaml(namespace_yaml(name), allow_duplicates=allow_duplicates) + +def namespace_inject(x, ns): + """Takes K8s yaml, sets its namespace to `ns`, and returns it as a blob. + + This modifies the yaml in two ways: + 1. Sets .metadata.namespace to `ns` + 2. Sets ..template.metadata.namespace to `ns` + This ensures the namespace in, e.g., Deployment Pod Template Specs is + set, but might have false positives if you have a CRD with some other + element named 'template'. + + Args: + x: K8s yaml. Either a filename (string) or the yaml itself (Blob) + ns: The namespace to set the K8s objects to. + + Returns: + Blob containing the K8s objects as yaml, with namespaces set to `ns`. + """ + return _mutate_yaml(x, lambda o: _set_k8s_yaml_namespace(o, ns)) + + +def _mutate_yaml(x, f): + if type(x) == 'string': + objects = read_yaml_stream(x) + elif type(x) == 'blob': + objects = decode_yaml_stream(x) + else: + fail('only takes string or blob, got: %s' % type(x)) + + return encode_yaml_stream([f(o) for o in objects]) + +def _set_k8s_yaml_namespace(o, ns): + if type(o) == 'dict' and type(o.get('metadata', None)) == 'dict': + o['metadata']['namespace'] = ns + else: + fail('Cannot inject namespace. Object does not have an object field named metadata:\n%s' % encode_yaml(o)) + + _set_template_namespace(o, ns) + return o + +def _set_template_namespace(o, ns): + if type(o) == 'dict': + for k, v in o.items(): + if k == 'template' and type(v) == 'dict' and type(v.get('metadata', None)) == 'dict': + v['metadata']['namespace'] = ns + if type(v) == 'dict' or type(v) == 'list': + _set_template_namespace(v, ns) + elif type(o) == 'list': + for v in o: + _set_template_namespace(v, ns) diff --git a/tilt_modules/namespace/test/Tiltfile b/tilt_modules/namespace/test/Tiltfile new file mode 100644 index 0000000000..03781ffc39 --- /dev/null +++ b/tilt_modules/namespace/test/Tiltfile @@ -0,0 +1,12 @@ +load('../Tiltfile', 'namespace_create', 'namespace_inject') + +# Disable parallelism until this issue is fixed: +# https://github.com/tilt-dev/tilt/issues/3421 +update_settings(max_parallel_updates=1) + +namespace_create('namespace-test') +k8s_yaml(namespace_inject('deployment.yaml', 'namespace-test')) +k8s_yaml('job.yaml') +k8s_yaml(namespace_inject('job-default-namespace.yaml', 'namespace-test')) +k8s_resource('namespace-test-verify', resource_deps=['namespace-test-busybox']) +k8s_resource('namespace-test-verify2', resource_deps=['namespace-test-busybox']) diff --git a/tilt_modules/namespace/test/deployment.yaml b/tilt_modules/namespace/test/deployment.yaml new file mode 100644 index 0000000000..615bd02159 --- /dev/null +++ b/tilt_modules/namespace/test/deployment.yaml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: namespace-test-busybox +spec: + selector: + matchLabels: + app: namespace-test-busybox + template: + metadata: + labels: + app: namespace-test-busybox + spec: + containers: + - name: busybox + image: busybox + ports: + - containerPort: 8000 + command: ["sh", "-c", "echo 'hello world' > index.html; busybox httpd -f -p 8000"] + readinessProbe: + tcpSocket: + port: 8000 + periodSeconds: 1 +--- +apiVersion: v1 +kind: Service +metadata: + name: namespace-test-busybox +spec: + selector: + app: namespace-test-busybox + ports: + - protocol: TCP + port: 8000 + targetPort: 8000 diff --git a/tilt_modules/namespace/test/job-default-namespace.yaml b/tilt_modules/namespace/test/job-default-namespace.yaml new file mode 100644 index 0000000000..45d587a192 --- /dev/null +++ b/tilt_modules/namespace/test/job-default-namespace.yaml @@ -0,0 +1,13 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: namespace-test-verify2 +spec: + backoffLimit: 1 + template: + spec: + containers: + - name: namespace-test-verify + image: curlimages/curl + command: ["curl", "-fsSL", "http://namespace-test-busybox:8000/"] + restartPolicy: Never \ No newline at end of file diff --git a/tilt_modules/namespace/test/job.yaml b/tilt_modules/namespace/test/job.yaml new file mode 100644 index 0000000000..0495814c54 --- /dev/null +++ b/tilt_modules/namespace/test/job.yaml @@ -0,0 +1,14 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: namespace-test-verify + namespace: namespace-test +spec: + backoffLimit: 1 + template: + spec: + containers: + - name: namespace-test-verify + image: curlimages/curl + command: ["curl", "-fsSL", "http://namespace-test-busybox:8000/"] + restartPolicy: Never \ No newline at end of file diff --git a/tilt_modules/namespace/test/test.sh b/tilt_modules/namespace/test/test.sh new file mode 100644 index 0000000000..9aaf15c4b9 --- /dev/null +++ b/tilt_modules/namespace/test/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cd "$(dirname "$0")" + +set -ex +tilt ci +tilt down --delete-namespaces diff --git a/tilt_modules/tilt_inspector/.gitignore b/tilt_modules/tilt_inspector/.gitignore new file mode 100644 index 0000000000..97008e5b86 --- /dev/null +++ b/tilt_modules/tilt_inspector/.gitignore @@ -0,0 +1,2 @@ +node_modules +yarn.lock \ No newline at end of file diff --git a/tilt_modules/tilt_inspector/README.md b/tilt_modules/tilt_inspector/README.md new file mode 100644 index 0000000000..5a720e6f6c --- /dev/null +++ b/tilt_modules/tilt_inspector/README.md @@ -0,0 +1,24 @@ +# Tilt Inspsector + +Author: [Nick Santos](https://github.com/nicks) + +A small debugging server for viewing internal Tilt state. + +## Functions + +### tilt_inspector(port: int = 11350) + +Exposes a tilt inspector server at the given port. + +## Example Usage + +``` +load('ext://tilt_inspector', 'tilt_inspector') +tilt_inspector() +``` + +## Other notes + +Requires yarn/nodejs. + +One tilt inspector server can inspect arbitrarily many tilt instances. diff --git a/tilt_modules/tilt_inspector/Tiltfile b/tilt_modules/tilt_inspector/Tiltfile new file mode 100644 index 0000000000..dcc571bb26 --- /dev/null +++ b/tilt_modules/tilt_inspector/Tiltfile @@ -0,0 +1,18 @@ +# -*- mode: Python -*- + +_dir = os.getcwd() + +def tilt_inspector(port=11351): + # The tilt:inspector resource is currently a local server installed + run + # with Yarn. + # + # Ideally, it would be a docker container, but that would require some + # networking tricks to get the process in the container talking to Tilt. + local_resource( + name="tilt:inspector", + deps=[], + cmd='cd %s && yarn install' % _dir, + serve_env={'TILT_INSPECTOR_PORT': '%d' % port}, + serve_cmd='cd %s && yarn run tilt-inspector' % _dir, + readiness_probe=probe(http_get=http_get_action(port=port)), + links=['http://localhost:%d/' % port]) diff --git a/tilt_modules/tilt_inspector/test/Tiltfile b/tilt_modules/tilt_inspector/test/Tiltfile new file mode 100644 index 0000000000..602c939dc6 --- /dev/null +++ b/tilt_modules/tilt_inspector/test/Tiltfile @@ -0,0 +1,8 @@ +load('../Tiltfile', 'tilt_inspector') + +tilt_inspector() + +local_resource( + name='verify', + resource_deps=['tilt:inspector'], + cmd='curl -fsSL http://localhost:11351/view/cmd') diff --git a/tilt_modules/tilt_inspector/test/test.sh b/tilt_modules/tilt_inspector/test/test.sh new file mode 100644 index 0000000000..9aaf15c4b9 --- /dev/null +++ b/tilt_modules/tilt_inspector/test/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cd "$(dirname "$0")" + +set -ex +tilt ci +tilt down --delete-namespaces diff --git a/tilt_modules/uibutton/README.md b/tilt_modules/uibutton/README.md new file mode 100644 index 0000000000..bd64625bd6 --- /dev/null +++ b/tilt_modules/uibutton/README.md @@ -0,0 +1,124 @@ +# UIButton + +Authors: + +- [Matt Landis](https://github.com/landism) +- [Milas Bowman](https://github.com/milas) + +Extend the Tilt UI with custom actions for your resources. + +## Functions + +### `cmd_button(name, resource, argv, text=None, location=location.RESOURCE, icon_name=None, icon_svg=None)` + +Creates a button for a resource that runs the given command when clicked. + +| Argument | Type | Description | +| -------- | ---- | ----------- | +| `name` | `str` | Unique ID for button | +| `resource` | `str` | Resource to associate button with (required if `location=location.RESOURCE`) | +| `argv` | `List[str]` | Local command to run when button is clicked | +| `text` | `str` | Text to display on button (optional: defaults to `name`) | +| `location` | `str` (enum) | Button placement in UI (see `location` section below) | +| `icon_name` | `str` | Name of [Material Icons font ligature][material-icons-font] to use as icon (at most one of `icon_name` or `icon_svg` should be specified) | +| `icon_svg` | `str` or `Blob` | `` to use as icon; should have 24x24px viewport (at most one of `icon_name` or `icon_svg` should be specified) | + +### `location` + +To specify button location, you can bind the `location` helper type or pass a string, e.g. `location=location.NAV` and `location='nav'` are equivalent. + +| Location | `str` Value | `location` Value | +| ---------- | ----------- | ------------------- | +| Resource | `resource` | `location.RESOURCE` | +| Global nav | `nav` | `location.NAV` | + +## Example Usage + +```python +load('ext://uibutton', 'cmd_button', 'location') + +# define resource 'my-resource' +# k8s_resource('my-resource') + +# create a button on resource 'my-resource' +cmd_button(name='my-resource-hello-world', + resource='my-resource', + argv=['echo', 'Hello my-resource!'], + text='Hello World', + icon_name='travel_explore') + +cmd_button(name='nav-hello-world', + argv=['echo', 'Hello nav!'], + text='Hello World', + location=location.NAV, + icon_name='waving_hand') +``` + +## Button Placement + +Currently, you can create buttons for a specific resource, which will be shown with other resource contextual actions such as "Copy Pod ID" or as part of the global nav next to the help and account buttons. + +### Resource + +To create a resource button, pass the resource name via `resource='my-resource'` and omit the `location` argument or explicitly pass `location=location.RESOURCE`. + +Any command output will appear interleaved with the associated resource's logs. + +Providing an icon is optional. + +### Global Nav + +To create a global nav button, pass `location=location.NAV` and omit the `resource` argument or explicitly pass `resource=None`. + +Any command output will appear in the "All Resources" log view under `(global)`. + +Global nav buttons SHOULD specify an icon via either the `icon_name` or `icon_svg` arguments. The `text` value will appear on hover. + +## Icons + +Button icons can either come from the set of built-in icons that ship with Tilt or a custom SVG. + +Navbar buttons SHOULD include an icon as the button text is only visible on hover. +For resource buttons, icons are optional and will appear within the button if specified. + +If both `icon_name` and `icon_svg` are specified, `icon_svg` will take precedence. + +### Built-in Icons (Material Icons) + +Tilt includes the [Material Icons][material-icons-font] by default. +Use the `icon_name` argument and pass the "font ligature" value for your desired icon. +The font ligatures are visible in the sidebar after clicking on an icon on the Material Fonts site. +Tip: They are `lower_snake_case` values, e.g. the "Check Circle" icon has a font ligature value of `check_circle`. + +### Custom Icons (SVG) + +Use the `icon_svg` argument and pass a full `` element. +The SVG viewport should be 24x24 for best results. + +To avoid string quoting issues, it's often easiest to load the SVG from disk rather than storing it directly in your Tiltfile: + +```python +load('ext://uibutton', 'cmd_button', 'location') + +icon = read_file('./icon.svg') + +cmd_button('svg-btn', + argv=['echo', '✨ Hello from SVG ✨'], + location=location.NAV, + icon_svg=icon, + text='SVG Nav Button') # text will appear on hover +``` + +## Other notes + +Commands are executed locally on the host running `tilt up` (similar to `local_resource`). + +The `argv` argument only accepts a list, e.g. `['echo', 'Hello World']` but not `echo 'Hello World'`. + +To run a script, invoke the interpreter and then pass the script as an argument, e.g. `['bash', '-c', 'echo "Hello from bash ${BASH_VERSION}"']`. + +## Known Issues + +- Renamed/deleted buttons will not be removed until Tilt is restarted ([#193](https://github.com/tilt-dev/tilt-extensions/issues/193)) + +[material-icons-font]: https://fonts.google.com/icons diff --git a/tilt_modules/uibutton/Tiltfile b/tilt_modules/uibutton/Tiltfile new file mode 100644 index 0000000000..0b980eae8e --- /dev/null +++ b/tilt_modules/uibutton/Tiltfile @@ -0,0 +1,103 @@ +LOCATION_RESOURCE = 'resource' +LOCATION_NAV = 'nav' + +location = struct( + RESOURCE = LOCATION_RESOURCE, + NAV = LOCATION_NAV, +) + + +def _button(name, location, text='', icon=None, annotations={}): + text = text or name + btn = { + "apiVersion": "tilt.dev/v1alpha1", + "kind": "UIButton", + "metadata": { + "name": name, + "annotations": annotations + }, + "spec": { + "text": text, + "location": { + "componentType": location.type, + "componentID": location.id, + } + } + } + + if icon: + if icon.svg: + # convert to str to handle str + Blob + btn['spec']['iconSVG'] = str(icon.svg) + elif icon.name: + btn['spec']['iconName'] = icon.name + + return btn + + +def cmd_button(name, resource='', argv=[], text=None, location=LOCATION_RESOURCE, icon_name=None, icon_svg=None): + if config.tilt_subcommand == 'down': + return + + if not location: + fail('location is required') + + if location == LOCATION_RESOURCE: + if not resource: + fail('Must provide a resource name') + elif resource: + fail('Cannot specify resource for location type {}'.format(location)) + + if not argv: + fail('argv cannot be empty') + + btn_annotations = {} + + if location == LOCATION_NAV: + location=struct(type='Global', id='nav') + elif location == LOCATION_RESOURCE: + location=struct(type='Resource', id=resource) + btn_annotations['tilt.dev/resource'] = resource + else: + # fallback to simplify experimenting with new locations in the future + loc_type, sep, loc_id = location.partition('/') + if not sep: + fail('Unsupported location {}'.format(location)) + location=struct(type=loc_type, id=loc_id) + + button = _button( + name=name, + location=location, + text=text, + icon=struct(name=icon_name, svg=icon_svg), + annotations=btn_annotations + ) + cmd = { + "apiVersion": "tilt.dev/v1alpha1", + "kind": "Cmd", + "metadata": { + "name": "btn-" + name, + "annotations": { + "tilt.dev/resource": resource, + "tilt.dev/log-span-id": 'cmd:' + name, + } + }, + "spec": { + "args": argv, + "dir": config.main_dir, + "startOn": { + "startAfter": _now(), + "uiButtons": [name], + }, + } + } + + local('echo "${TILT_APPLY_YAML}" | %s apply -f -' % (sys.executable,), + env={'TILT_APPLY_YAML': str(encode_yaml_stream([button, cmd]))}, + echo_off=True) + + +def _now(): + # this is portable across coreutils/busybox/BSD + # note: it's missing fractional seconds because that's not available from strftime + return str(local('date -u +"%Y-%m-%dT%H:%M:%S.000000Z"', echo_off=True, quiet=True)).rstrip('\r\n') diff --git a/tilt_modules/uibutton/test/Tiltfile b/tilt_modules/uibutton/test/Tiltfile new file mode 100644 index 0000000000..753414cc18 --- /dev/null +++ b/tilt_modules/uibutton/test/Tiltfile @@ -0,0 +1,10 @@ +load('../Tiltfile', 'cmd_button', 'location') + +local_resource('vigoda', cmd='echo "Hello from resource"') + +cmd_button("resource-button", resource="vigoda", argv=["bash", "-c", "echo Hello from bash ${BASH_VERSION}"], text='Resource Button', icon_name='star') + +goose_icon = read_file('./goose.svg') + +cmd_button('nav-button-svg', argv=["echo", "✨ Hello from SVG ✨"], location=location.NAV, icon_svg=goose_icon, text='SVG Nav Button') +cmd_button('nav-button-std', argv=["echo", "Hello from nav"], location=location.NAV, icon_name='calendar_today') diff --git a/tilt_modules/uibutton/test/goose.svg b/tilt_modules/uibutton/test/goose.svg new file mode 100644 index 0000000000..3e705fc52d --- /dev/null +++ b/tilt_modules/uibutton/test/goose.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tilt_modules/uibutton/test/test.sh b/tilt_modules/uibutton/test/test.sh new file mode 100644 index 0000000000..9aaf15c4b9 --- /dev/null +++ b/tilt_modules/uibutton/test/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cd "$(dirname "$0")" + +set -ex +tilt ci +tilt down --delete-namespaces From b7a265759426496e10600589b29cb712f99125c5 Mon Sep 17 00:00:00 2001 From: AlexRogalskiy Date: Wed, 11 Aug 2021 21:19:59 +0000 Subject: [PATCH 0690/2080] Auto update markdown TOC --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fb483ab0f7..b5bb3b0238 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ * [Table of contents](#-table-of-contents) * [Summary](#-summary) * [Documentation](#-documentation) + * [Kubernetes](#-kubernetes) * [Statistics](#-statistics) * [Versioning](#-versioning) * [Authors](#-authors) From 6c7df0d52ac007a83a1894137fde82e44a7305e0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 12 Aug 2021 00:37:16 +0000 Subject: [PATCH 0691/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..ac8d8f5dfe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 34 Performance From b2a9b49527048411992da458a6bd68b2cc0a4cb9 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 12 Aug 2021 01:48:52 +0000 Subject: [PATCH 0692/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b5bb3b0238..003e9d83b0 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [So I tried asking Google to delete some of my old Apps.](https://www.reddit.com/r/androiddev/comments/p1ywk4/so_i_tried_asking_google_to_delete_some_of_my_old/) -- [Is this a scam ?](https://www.reddit.com/r/androiddev/comments/p1wacc/is_this_a_scam/) -- [Singleton alternatives](https://www.reddit.com/r/androiddev/comments/p1v3py/singleton_alternatives/) -- [Timber 5.0 is out! Rewritten in Kotlin, binary compatible with 4.x and support for AGP 7.0 lint checks](https://www.reddit.com/r/androiddev/comments/p1uvo2/timber_50_is_out_rewritten_in_kotlin_binary/) -- [Why is this happing all sudden? Projects will work fine but after add room, its start to giving the error or if I even remove them then still give an error](https://www.reddit.com/r/androiddev/comments/p1ua78/why_is_this_happing_all_sudden_projects_will_work/) -- [Someone offering to buy my dev account.](https://www.reddit.com/r/androiddev/comments/p1thi6/someone_offering_to_buy_my_dev_account/) -- [Can I globally filter the display content to only show certain colors?](https://www.reddit.com/r/androiddev/comments/p1qy40/can_i_globally_filter_the_display_content_to_only/) -- [What to do when you get 1 star ratings with no explanation](https://www.reddit.com/r/androiddev/comments/p1qr8x/what_to_do_when_you_get_1_star_ratings_with_no/) -- [Weekly Questions Thread - August 10, 2021](https://www.reddit.com/r/androiddev/comments/p1oor7/weekly_questions_thread_august_10_2021/) -- [[Tolls] Does anyone know of a library or any way for my app to know when there is a toll?](https://www.reddit.com/r/androiddev/comments/p1o02q/tolls_does_anyone_know_of_a_library_or_any_way/) +- [Motorola Edge on bootloop](https://www.reddit.com/r/androiddev/comments/p2qgpd/motorola_edge_on_bootloop/) +- [Trading in-game goods of a PC game](https://www.reddit.com/r/androiddev/comments/p2jyxk/trading_ingame_goods_of_a_pc_game/) +- [How to be good they can’t ignore you? The Software Engineering version](https://www.reddit.com/r/androiddev/comments/p2jnao/how_to_be_good_they_cant_ignore_you_the_software/) +- [Android 11 - Track Permission State](https://www.reddit.com/r/androiddev/comments/p2ibxj/android_11_track_permission_state/) +- [The Future of Kotlin](https://www.reddit.com/r/androiddev/comments/p2hut3/the_future_of_kotlin/) +- [Play Store submission - promote directly from internal testing to production or create alpha first?](https://www.reddit.com/r/androiddev/comments/p2flnr/play_store_submission_promote_directly_from/) +- [I created a library to help determine when the app UI is visible](https://www.reddit.com/r/androiddev/comments/p2copu/i_created_a_library_to_help_determine_when_the/) +- [Favourite CI/CD tool for android build, tests, and publish.](https://www.reddit.com/r/androiddev/comments/p2ai02/favourite_cicd_tool_for_android_build_tests_and/) +- [How do you guys manage forms?](https://www.reddit.com/r/androiddev/comments/p29v5o/how_do_you_guys_manage_forms/) +- [How to choose app to work on if you suffer from analysis-paralysis?](https://www.reddit.com/r/androiddev/comments/p29u9n/how_to_choose_app_to_work_on_if_you_suffer_from/) ### *InfoWorld posts* From eaefdcbd8d156db7fb0a62eeaf1546b6ef9c2d88 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 13 Aug 2021 00:38:52 +0000 Subject: [PATCH 0693/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..b74ac84bd2 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 55 + + 47 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ac8d8f5dfe..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 34 + + 29 Performance From 87a50f1e3f75ae194fb57c128ad091b22833fefc Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 13 Aug 2021 01:48:59 +0000 Subject: [PATCH 0694/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 003e9d83b0..80abd58c27 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Motorola Edge on bootloop](https://www.reddit.com/r/androiddev/comments/p2qgpd/motorola_edge_on_bootloop/) -- [Trading in-game goods of a PC game](https://www.reddit.com/r/androiddev/comments/p2jyxk/trading_ingame_goods_of_a_pc_game/) -- [How to be good they can’t ignore you? The Software Engineering version](https://www.reddit.com/r/androiddev/comments/p2jnao/how_to_be_good_they_cant_ignore_you_the_software/) -- [Android 11 - Track Permission State](https://www.reddit.com/r/androiddev/comments/p2ibxj/android_11_track_permission_state/) -- [The Future of Kotlin](https://www.reddit.com/r/androiddev/comments/p2hut3/the_future_of_kotlin/) -- [Play Store submission - promote directly from internal testing to production or create alpha first?](https://www.reddit.com/r/androiddev/comments/p2flnr/play_store_submission_promote_directly_from/) -- [I created a library to help determine when the app UI is visible](https://www.reddit.com/r/androiddev/comments/p2copu/i_created_a_library_to_help_determine_when_the/) -- [Favourite CI/CD tool for android build, tests, and publish.](https://www.reddit.com/r/androiddev/comments/p2ai02/favourite_cicd_tool_for_android_build_tests_and/) -- [How do you guys manage forms?](https://www.reddit.com/r/androiddev/comments/p29v5o/how_do_you_guys_manage_forms/) -- [How to choose app to work on if you suffer from analysis-paralysis?](https://www.reddit.com/r/androiddev/comments/p29u9n/how_to_choose_app_to_work_on_if_you_suffer_from/) +- [my app doesn’t run, I downloaded the emulator from the avd manager made specifically for the m1 Mac. Does anyone know why it won’t run??](https://www.reddit.com/r/androiddev/comments/p3ds2v/my_app_doesnt_run_i_downloaded_the_emulator_from/) +- [Compose without Jetpack ViewModel](https://www.reddit.com/r/androiddev/comments/p3dmge/compose_without_jetpack_viewmodel/) +- [Android Studio Bumblebee Canary 8 available](https://www.reddit.com/r/androiddev/comments/p38qf4/android_studio_bumblebee_canary_8_available/) +- [Moving app-specific GCP projects to a shared GCP project for all my apps](https://www.reddit.com/r/androiddev/comments/p375m3/moving_appspecific_gcp_projects_to_a_shared_gcp/) +- [Samsung Galaxy Tab S6 is only 711dp wide?](https://www.reddit.com/r/androiddev/comments/p371p6/samsung_galaxy_tab_s6_is_only_711dp_wide/) +- [Download mp3 files and access it](https://www.reddit.com/r/androiddev/comments/p3710n/download_mp3_files_and_access_it/) +- [uiautomatorviewer shows incorrect orientation](https://www.reddit.com/r/androiddev/comments/p34oil/uiautomatorviewer_shows_incorrect_orientation/) +- [Is review needed for republishing an unpublished app?](https://www.reddit.com/r/androiddev/comments/p33yel/is_review_needed_for_republishing_an_unpublished/) +- [Question about building social platforms that use cryptocurrency](https://www.reddit.com/r/androiddev/comments/p330gw/question_about_building_social_platforms_that_use/) +- [Which ad mediation is best?](https://www.reddit.com/r/androiddev/comments/p2yhl8/which_ad_mediation_is_best/) ### *InfoWorld posts* From 595b7a88d62093cf2937935be93098c80ba2e999 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 14 Aug 2021 00:34:44 +0000 Subject: [PATCH 0695/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index b74ac84bd2..493179d254 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 47 + + 61 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 26 Performance From 329ad05e04b452df042b19704f845c4f05c396c5 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 14 Aug 2021 01:43:57 +0000 Subject: [PATCH 0696/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 80abd58c27..d8152e0a01 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [my app doesn’t run, I downloaded the emulator from the avd manager made specifically for the m1 Mac. Does anyone know why it won’t run??](https://www.reddit.com/r/androiddev/comments/p3ds2v/my_app_doesnt_run_i_downloaded_the_emulator_from/) -- [Compose without Jetpack ViewModel](https://www.reddit.com/r/androiddev/comments/p3dmge/compose_without_jetpack_viewmodel/) -- [Android Studio Bumblebee Canary 8 available](https://www.reddit.com/r/androiddev/comments/p38qf4/android_studio_bumblebee_canary_8_available/) -- [Moving app-specific GCP projects to a shared GCP project for all my apps](https://www.reddit.com/r/androiddev/comments/p375m3/moving_appspecific_gcp_projects_to_a_shared_gcp/) -- [Samsung Galaxy Tab S6 is only 711dp wide?](https://www.reddit.com/r/androiddev/comments/p371p6/samsung_galaxy_tab_s6_is_only_711dp_wide/) -- [Download mp3 files and access it](https://www.reddit.com/r/androiddev/comments/p3710n/download_mp3_files_and_access_it/) -- [uiautomatorviewer shows incorrect orientation](https://www.reddit.com/r/androiddev/comments/p34oil/uiautomatorviewer_shows_incorrect_orientation/) -- [Is review needed for republishing an unpublished app?](https://www.reddit.com/r/androiddev/comments/p33yel/is_review_needed_for_republishing_an_unpublished/) -- [Question about building social platforms that use cryptocurrency](https://www.reddit.com/r/androiddev/comments/p330gw/question_about_building_social_platforms_that_use/) -- [Which ad mediation is best?](https://www.reddit.com/r/androiddev/comments/p2yhl8/which_ad_mediation_is_best/) +- [Where to download sample android app bundle (for beginner)?](https://www.reddit.com/r/androiddev/comments/p3w3ej/where_to_download_sample_android_app_bundle_for/) +- [Smali if statement](https://www.reddit.com/r/androiddev/comments/p3uzxv/smali_if_statement/) +- [What is the most recommended image/setup to have a light android emulator?](https://www.reddit.com/r/androiddev/comments/p3uxy8/what_is_the_most_recommended_imagesetup_to_have_a/) +- [Email about my developer account at risk of being closed for having no activity. What can I do?](https://www.reddit.com/r/androiddev/comments/p3ungi/email_about_my_developer_account_at_risk_of_being/) +- [Is there a way to show images over phone camera?](https://www.reddit.com/r/androiddev/comments/p3u9n4/is_there_a_way_to_show_images_over_phone_camera/) +- [Google Play daily installs drop by 2/3 because of new 15% Play Store cut?](https://www.reddit.com/r/androiddev/comments/p3meyk/google_play_daily_installs_drop_by_23_because_of/) +- [DioHub, an open-source GitHub mobile app, is now available on the Play Store!](https://www.reddit.com/r/androiddev/comments/p3mcj7/diohub_an_opensource_github_mobile_app_is_now/) +- [Question about backend technology choices for social network app](https://www.reddit.com/r/androiddev/comments/p3mbe7/question_about_backend_technology_choices_for/) +- [Weekly Anything Goes Thread - August 13, 2021](https://www.reddit.com/r/androiddev/comments/p3m7mx/weekly_anything_goes_thread_august_13_2021/) +- [Google play service missing from emulator on mac os](https://www.reddit.com/r/androiddev/comments/p3log1/google_play_service_missing_from_emulator_on_mac/) ### *InfoWorld posts* From 514353ab4972debea8eb901984c01373a4192d28 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 15 Aug 2021 00:37:27 +0000 Subject: [PATCH 0697/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 493179d254..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 61 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 29 Performance From 7fa0f5aad190835f2d05f683f8cb800bc5c393f0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 15 Aug 2021 01:46:53 +0000 Subject: [PATCH 0698/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d8152e0a01..95d590f806 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Where to download sample android app bundle (for beginner)?](https://www.reddit.com/r/androiddev/comments/p3w3ej/where_to_download_sample_android_app_bundle_for/) -- [Smali if statement](https://www.reddit.com/r/androiddev/comments/p3uzxv/smali_if_statement/) -- [What is the most recommended image/setup to have a light android emulator?](https://www.reddit.com/r/androiddev/comments/p3uxy8/what_is_the_most_recommended_imagesetup_to_have_a/) -- [Email about my developer account at risk of being closed for having no activity. What can I do?](https://www.reddit.com/r/androiddev/comments/p3ungi/email_about_my_developer_account_at_risk_of_being/) -- [Is there a way to show images over phone camera?](https://www.reddit.com/r/androiddev/comments/p3u9n4/is_there_a_way_to_show_images_over_phone_camera/) -- [Google Play daily installs drop by 2/3 because of new 15% Play Store cut?](https://www.reddit.com/r/androiddev/comments/p3meyk/google_play_daily_installs_drop_by_23_because_of/) -- [DioHub, an open-source GitHub mobile app, is now available on the Play Store!](https://www.reddit.com/r/androiddev/comments/p3mcj7/diohub_an_opensource_github_mobile_app_is_now/) -- [Question about backend technology choices for social network app](https://www.reddit.com/r/androiddev/comments/p3mbe7/question_about_backend_technology_choices_for/) -- [Weekly Anything Goes Thread - August 13, 2021](https://www.reddit.com/r/androiddev/comments/p3m7mx/weekly_anything_goes_thread_august_13_2021/) -- [Google play service missing from emulator on mac os](https://www.reddit.com/r/androiddev/comments/p3log1/google_play_service_missing_from_emulator_on_mac/) +- [Androids – A Book is Born](https://www.reddit.com/r/androiddev/comments/p4hf9g/androids_a_book_is_born/) +- [Web3.JS va Web3J](https://www.reddit.com/r/androiddev/comments/p4h0u2/web3js_va_web3j/) +- [Any faster way to preview compose?](https://www.reddit.com/r/androiddev/comments/p4gh3q/any_faster_way_to_preview_compose/) +- [You're currently unable to receive payouts because there's a hold on your payments account.](https://www.reddit.com/r/androiddev/comments/p4fvj6/youre_currently_unable_to_receive_payouts_because/) +- [What do you think is the percentage of developers getting wrong fully banned from play store ?](https://www.reddit.com/r/androiddev/comments/p4e16b/what_do_you_think_is_the_percentage_of_developers/) +- [Does anyone know how to restore data from google backup using a non-active set?](https://www.reddit.com/r/androiddev/comments/p4d2aq/does_anyone_know_how_to_restore_data_from_google/) +- [eBay Motors: Accelerating With Flutter™](https://www.reddit.com/r/androiddev/comments/p4cy2e/ebay_motors_accelerating_with_flutter/) +- [Which features exist to collect data about phone usage?](https://www.reddit.com/r/androiddev/comments/p4akue/which_features_exist_to_collect_data_about_phone/) +- [Room Database manipulating a list in LiveData](https://www.reddit.com/r/androiddev/comments/p47n80/room_database_manipulating_a_list_in_livedata/) +- [App Feedback Thread - August 14, 2021](https://www.reddit.com/r/androiddev/comments/p47l48/app_feedback_thread_august_14_2021/) ### *InfoWorld posts* From 58b61fcfd08a5006c36cb7b55c8846e796bed5b2 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 15 Aug 2021 23:58:04 +0000 Subject: [PATCH 0699/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 47832 -> 49356 bytes traffic/views.csv | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 11767a0589..908f2eba52 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -49,4 +49,11 @@ _date,total_clones,unique_clones 2021-08-05,205,39 2021-08-06,221,34 2021-08-07,183,34 -2021-08-08,208,31 +2021-08-08,217,35 +2021-08-09,150,30 +2021-08-10,175,34 +2021-08-11,362,43 +2021-08-12,147,29 +2021-08-13,193,36 +2021-08-14,153,32 +2021-08-15,145,24 diff --git a/traffic/plots.png b/traffic/plots.png index 58a393f1c27e79f1e6fe10186b7affe4b1da8420..c15fbac0373e8fa18d3ab9fc1684f74e6973bf46 100644 GIT binary patch literal 49356 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

k)@*&>gA0xiM*M1sa7GRg=>YlqcO6}X} z^>eGgaXv+wie=Z!l3Nu=Liv?id3uo-xn`w&Jh#rkb?i?uU50r#!=Dnmg40}nC9dL` z*9*)i2XtiFWc!@>5<9yey;H8%LIUZ#u||dD3;X0~Jk2lLVs^}``JNpfHjMd)_a*nT zZBDmla`o#Ua1t;&w{PvEXs~G-x$XAv-k*cgQhAZ>)bsJ~Q#Eh;@yfMu-Wu0BT6ax6 zS1@yO@4ng6GTX8$w@v4L6j~1Re2){SrhRu;Tc;^;CYzrV{@Xo$PucK%->GQV;N*yv z-@&Wq-4;itYWqG{im&>Fm9Cy2nby8i{)1Pknc3XAMb~lqnGwbWg4OT`49VltQde!6 zh7_JeR(Q*BljW1yNvC^noZ%4?B5l*>$CVA&7}H$qX=$umEe~rNiL0dc87*Xt`6qGz z$Bx8}GgBS5XRh5$&37168O>RbPQ7^uccPE8E#wh>>(j}**!EVcx^$kjS!}27F)5nA zMI#bc9kJcd<40?^k?YNdQTm~JX^Sf-7T@a8d!Dlv zK8Up{zQRV>v-_U0oTAgyvWwLM($mjIEjmAH50+I_sFHFb`L$iOHH-}F@L+lnJ zBjE*7xttEfJ~g^hHF{)Ug#y*j(Ry*CuoGsv7te%!O`-qQlIKXh)*Z5gYiH|s4(~1_ zCzs8he)%EVo2|EgXLxI~ZNc`-qmmLN6}Q$!wzn`v_+f@0nEUWC(AiT_dPSIaqL;0M z`j^Wws){a|_+{TOANzxxWwwP?ojQ5l{=L5c?%`~ih+nHe4V*5{u*$cYMj-gYv14lU z|F~qO-0C{`QAe}khNqGWPGHkZT8{cd-=1wN(a^LW;*ysTDyVV)v!cZqf=Y$AWt%kC z3*4uVtgR7P4?Q}&bQCl@??;_I>fh{Rf9n|&a=)^%VVNg6!bh%JNIa%@u%Fp$Dth%{ z;G;P)H+-0H#fyQ)C>K3Lr?T4mYBi~f2$p=AYzCQarnv!`p%p?ho;{}j^w4m#>*N1# zRBGX_N<=kE_)qO4%a`6knpkWs8AjcN3DJ{vB#+5LXH;1o(?_F+4I5f*1$QKlEsY@q zFRGx-6SW_=6NqWIwOBV;S)%hUwo@d#PCq+TqrEbCJ|t-k%Fd{-!rh%4TTWZ*V%`wB zNtW6c?U+eL^9!Xz*12b-8dE&Qe$}+{nG~}>-sbRbX~Q!uScXcpP>B(n-42Dor~N$f z5*v;;^`@okvc9QdBkU{73lEmz4$c>*3Fu%&`*4r%iJeT}-oIZJPFnNZ7Hj-ITToPJ zs=HUR+?EA7TG6&8>ydP6HIB}9?&LXb5?;$dXW|>JXDx4mDiAYfRTW=#@uQwRaYZV*PeKT2?_H18lLDfreYvksEwhfMf z$k#SgCaJ2b(wZ+NYIc(kWJu)IJYEsqDM#%K?@PKCJJCu};RqBuBN7e{hUl*FnF;3V zgcYJ-v*-w&)9C2BxY~)juq<mIh z$y0VJ+wS~$&$ulj&?Z;ey1k+5*6RMK;j#>@R|6Bjs=T~U*;Hm^-?onkYYK_vnp97T zji}0;$G{(VJ{FR5M#`~zbs$&M^ygA}NoXOihSGkrPb!kqDF~lr5j_|diBc#85(#U| z{QA88F1wkb8;Y%aKZPSlxbSSV*=07*kYgo$RVOO432C4xAJKQ2b{4jF6gm1zu>38$=^1x>BL!xKk$y>AU35mlSBa2e;`Zlqdi|S7$M8 zUvNVm_*nU2R0e70+-=r7IV+C{)5~mo>gYmwwL3JS;_&LbtBCuayWME5ZAmtWQImZd zsNT5tKsrCM3jGrd>cfQ;7Ah(W+HP4}GUB8++Rd(;Hl)=WgGyA0_0?0Vx7lkZ`X3tFa$5|%ETM8W_ z=H&5^k=XS##re9J%cwfm$!A*keScP3b~*^cgw6)t+naMf+Zq&{+YC-7skN&HLV7}v zm2_oRg*5LYh5lcHZA5UKpjiTt^=rX-Dk-0Nk_B+z1i~G%r5$W+UsIN13Iak(ul&QL z+q3qW897!t$O*5!KEY!7wD*H~s9&YzOD>@`}PaFKNNN z<(5%v-ear}|2PUGdZv&FJ^EO`sPV&|V1}lqEHWWra07lie;BQU40X;PpA;MtVpus1 z?1P5J9q*)aNDefB+4;pFXHtzF87ac%fRG#S43jQ@c|0StRI_qCL0j!fo-OzrC!xo#o1dI?n6pQN4hUlgm1erS3T9?W_(p_0;QNBl+%O(F zxAT=VsN0MOlwi+Pw7!3%#vhtY73;L>{;xw@E(n|@voJ~4>uFUl=h}hAqQH)H3rL#1 zd#{=MueC|$qO%8GK@imtswQ%%C?KtSIA&PmC&d#Dx$f_9G?MpnfC>{H#xT@yv6#KD zI*&H@T9vr2##@xSp9sgXk5n-#45DZxZfv5m;%x2~D*_qNBr$YdTnGaC{sRXn#&2`s zH*k?)oJ8=>KoSxL$A`jqX?o;Q80TJL;V)M*ogs)NT8<(mXQ?6Svw`q~=t;u3I`*61 zf;-rqD4TuDlls|OmOtVwaA`H6ope+5PkE`kEoW zUzI&~!mUl(Pwy8s z&@Z?4V<){4i*KwJ^=H!GW*0OZk9i;b3gG|75Ch|Y^sLq>I{7}dr!z~>~fCEOV59v z$|qhZOLs--*va>7A37*fA2sFU*^xXiAmJ3jYHd!aIr^2#f_kk_LF9csB! z^Yq&0b2Jor49n8uafRgK#vJpm^g2}4BD|7@ORL^WgPj*TN#83US(6uyXHvep;G$*h zV8gDU$>_^6bQ(STLo+jx(o$?Po~=h2=F)yv_D?)?;&n{lVfRvI%Qa*9pYG$eQom17 zJEcvZ98s%x(P2!KxZWn6(k9uF96WpNtzcL-Rj|7bg{4=f+u*08DZlzFo(er|O*T4E zdgZG@2In5pxVKliBFQ42RMAD%k=Yy!)T&a=<1DF-U-@YOk$sG+WllfSzCU+?)Rya zw!YL;DeGIE(%Q)%U(%DexcF>jb$b0%R&&`&R_5-~e*0*e)2@3q#2Kxgv{aI}HL&OH z`MGtIXU*Gxh6Y(lf z+UtIeiNgaIXm65_{5c`l>rM6K=BrTt<~q8|W+`(zuj86jb4T14bTWTrWtREqY)l)j z8F93j_M{AmTV-TX^-RjtYG^I3{82KbeDza(T($u6o0wEetj}Ev`UO3Md7To`|~~<%{bpa&tHs;NqXCw>e?c|JWqMR zUTtz)FZYOuKXYIELBS`Zc7>j_Ho4HH}eys@rP&O#Fs75 z#GBQA%F1J>G+qe1QxePamQlepa`pUpb@86G6O$bJ{^Ms8UL}E=Su6ZI7zp6*9Mkz$Bbs#$doCyCVMMo zC39)UQwY9oqaZ)uwE6YGL@S9jHszJ&d1`b_w@o5mbt--9xciCG0IkFIt!!p?&H59| z8PyL)6EEmec*GR9*BLx&S7trkY_FbsQ7$+8cyal|Hc9iwqA#lcgZ8B>iJpyLmSy&} zO=T7|(VyX|KO2@))fVWS%uc_+=H8q)r`7zxUe5BTd)tTOGj6$8N#(5`mM-~)Lr%3; zIuxIlW%Fu9W%Xr;wXz>S@o3a^zdpM~ZzGd#Jz-otzr)Xox8mm>V>4%O%hA(iK4w-@ z*{@x7L%Py^t=2+Bk5@;v1T9=ZBA+B(qiN@dapK1!JIVq2FcYtzbZ9F@kA{S z%44s8y`eoDaCPsV$K@VEk7YKMXc^l#ZSyF8ZDy^xHk181Yh^ybcENipy6I2EhuGA) z&=l5%H$5f=+P$-59Il4%=x74yEIw>|pQXm*J{Iqpu6I&0bv-H8DLyDww6)ct%;yQ! zi@2ckQ$guzKdCip=GWbWPt=T#EBxT3FQ>cD^u$s~qWHw_Y3=6pUF;4ViQ(}h4~z6o zZTbUaZ2Ec5yOYGzD1&K}^ko`mC#yVSdal^zp68gbF6av!_b@h0e`c(r?#`NZUP`s; zNpVQ*>o#piKYO?AKh#qeOONvoU&zt2-)iqKt?wq37p|AtPG6R=q@Asur(NXbw=OB# zoNa#Wp7FYj{f1!p^R^8emlAfh91e%#@)IRxM%|CjK4AYX*A-L|>E2%rWL=%rvpI9skE3{TIfZpXFtWm* zBlcRcUUG+vH_~=W+d^c>Zx0p6mGdyPZ+i1ed;DQaU4)|kRelxIW>djJimY|xIxn+E zBaUJl_uh{h=FdIkO^a4VM=nd~w|L1m4rjy}PCR(m)hHYB(n{w=_+-^s+#OnBJI8%2 z5~M^=p)cho-^#LmJRJDhZW+^uRa?7%4_Chv-@4n>w03dT=+j*j_ZrVyF%|<)?TmQO z7V1BtuHt2;x!h{~n=UU_$D z1vVeP9R9M#^xCGEe@vpuK7D4(7I5&(J)|F`lxXvAj6=uKMYaNav%RW9fzfd-w}a~1 zmb{?2+UbA)#-W?cV$-pFAcSeldLHxF{oVCai>ZSqCbb!Vx>N{dICIa{R(pnc_QV6h z@3JE2bQ#<1rX*aSEeg#sINz{m%RNQ@*Y+!zzicJTvs=ldAi>Ol`njX_hp)jaQ3xh* z41Kx(cujQFzh+>AR&kS}0iwqQS(wF~8L9pT9aMVJ7acy!sz%cVl$DK_UW2;aL*T~W z11u2ev6=qTV?iQcNvw>Fn@)mMswT`{#)T z4}pUG;&8`(B&CSmgHQ$Yh=?%aV1(8l84QQ&;W%=d0R2bl>A|I?;vo3GrZv-M41wa< zdH%bmUanCcgnxt>5S}a`8@-{=U@9pA5EQNCZ@`&11nY$|C{Q+t(r|TSC*Y1q4+x?O zAgGg_1wnwDcBj*l23d(FMX1>b->t93_AE%4w{l880F_nv=+XDUt3ukiUsUuy6ovU9 z=|W0(Y33a5uB=PD4jw#c326w}P0%(sqm}tdPL36bkb$Ow(cR{O6mB@V%OfORXSF_UJe;nnW?vodSxw#7yYc^&cQg24HMX;uhffiI)J z$aby9Ps)c5;dvlBtIxLB6%*Z-fY)?q8@!6Ji-TU!tNHzVOJu&tSzREY-oeS)bmmy^ z{_e1yPjhniA3S&ive&rGi^WDrl9fSFN%YrlkqXYXkDhvGZW5~MxDS+CoPBtOqLifM zC%fW8!R-roNuA1s)*h6aX6Y3^Ksa>t^k$)3bpaYmJz3guW{76j(T8ek@nW|@g8uYW z`v56|Q)T7i|db=&a`X#N4LOU=E> zJ2|P=u{*DkR!mK%pJvC1+zhNGpvT?>sgYieL7;l(b9c>>QNGJ?;nP}3xVKw_E9hz zpqc&>qrl{Wk*5gA%QC1zjV)?CJAt}5OhZExU^I8k_R}6nr3e=QzGsJ-JE}t+_K8B> z0J;}(OcWrTA-?Y_FHNP1Vt<*fVPf(T`sBu%%*@Q_gakFHnZdv$t|JhV1O^R2A;7<^ z0Y%!%E>a(n!CXR224+FCk7y=_AWPJ|Wdx}a;C7&G0lqK`D9;WS79}*w6SOaJ=K&H# zG%wtKgyaG?M({ztq$zC!SF{es7OE(U0cvzKtmexXEs(%YSz2;~ffLX*KZccj>Psc6#c)E#s7bO$PG=B;o|3vg0&Aiq25}m= zb_Aglx+xH`x+;|As9ki^DN&pl*Tj$mgqKi|vx+&e(lYZ2)s%o$j32&H^D@_e*l)i* z*9GW@8boTq7pgrF3ItC(6eJE2zd>L&_Y$R(Q&NOS8nL=zAb5kLxr~8Vnh+WdIb5i| znRf_?6t~mU_hSq%V;$+e{tvUg$@x|>!Yl!o8bP; zVhfK-NO17O{>i|`1{jzs3?wt2Jh_f#bguuO0|$)xGQr)!hWYwj*K!T&+qwT9z!J_u zU|1Xl=N-!)zgYzs`ouXB%vE6aR)@JZ22g3X!S=%JNkc)D&6GI3gJF>8jID-1L}3k; z$1ry+6+=X$@&{t~>nFByN$-w+{|35x0WU{fWB?R~t(*|&}OH9Cu6#9GR#XPzlU!V+H3mBr~Oe!^Z!aWh7 zM^EiL#LqthS>6S3;7UtN^TEUQTOMH{eDY>eX}A*}v=VoGAB+XhV^1e&470PY#C8C- z;qMRT>*xM`)qfVjdS4QumYg^naog~lIx0>Kays!6o&xZ2c>@3}ASjBrSY;6m)JdZ3 z4qm_wa8~i9OL6UhRTHa8!nuNTaTfX%FmwsP1ca!De8b>Q5PEyy7GMJM5XO)EdcYTb z{5vL#;haP)k0nmM4XED>v2G<6&2#CIphwT){0iYpyIk>k(8O5dJPLOVh{xrlY}!Jn$+AUoyfP#T@OD2h#z7<0^kKHXIjSu zLKs56(c?Q)McOUy901D2-3Jedjd;SO2?!qozXi+Cnt@`_8y;d3{lu^p8_mLX+5D8a z(czya7D&JVk=acp)mm5#ybK)m{x@p4T$ScSl&6I;oVP10eL{JY3L^sWy6-KS+rYdb zheHbOzuY~(QMzs04jew5-86!Ll8eu@yr_wL1aAZ-8TXC@f#4}SyF)cVaxe+*Lkw3j zT^^3zJc@`33oc`Jxu??@P;)mO^`5oT%QGXKPhm_H;_ZW-^Zxz&@Yyr?n4Fk+=G3X+ zx*{O%qlxk^tZ9ijE&Ln?QIHBsp4aVerV0^9$T6q|oD;*Zzzax{X{^zHYYX~wh?hkG zv`|)77CMXCG}ntBS6U<@AoG|N7%qn}q(1ulEwbRUcmr_D=Ro;EL)zG}u)MM|{Nu-s zni_)JU<2wC0Zsxr8g{nC!TQM(;^G?MTi1YH8o1<8Z#KBTK->}6fB5)uwg7Brm>=?> zeSqxw=Iz@qkBkrob(Qi!+*3RD+mD-m5CkGZ#+%}?Y3uKE8y0dULzXCC)|c}bg7_3{M} zLoN_S=Tm8ar?38Z0PEz_K7)j6LCoGa*8iCm5=TqW!gdZ4B?IU(1SB1h<%w(Fc-UnR z0$m_-7R-EN>L8paVU)h*f6+q@$LKu>8~_JnC1Gem{)Jms+tLz^ECc?!PS4$UV%a7> z#`!deO;(5&2xt`S(jNAMFb9B~;m7krtPhUb&?5yPK-;*R59Q4;YyX zZ2>@F7J`c+z5e?=G2!rMV&C`*X#d{{CZL$cd-L23v0(5sv9Rpiz5649&jLY;L_o1^ zKVL&WI*ZBEzU&D#bvg)|j7&^}!^5uuKq5{?4#aN=21$6%L;zs%Y=lsiE?+vJ_Tc2j ziwA*Ca++)-PRI4%9ip9pR9Rd910nY4Mc}TGll7ge#-0VA&@*6)Aznu~LBeoFn49bN z6&NBSsP1;EXgueG_u=G=XX9`i?*F|F?!3r>uz(U76R`dj&g{jE>s8*FkB99#y1I4vo&tY-;Naryet%^EPbgLXvy#GN hLCnqn@~mc6rvIB^d9L#69TI+26x2^Wle4(?KLD_hfH?pF diff --git a/traffic/views.csv b/traffic/views.csv index 2d43ae75a5..b608ef37de 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -24,3 +24,4 @@ _date,total_views,unique_views 2021-08-09,1,1 2021-08-10,3,2 2021-08-14,2,2 +2021-08-17,2,1 From b6d7fc5d90bccd492663527b8bd8bc1241800a33 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 23 Aug 2021 00:34:09 +0000 Subject: [PATCH 0715/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index b74ac84bd2..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 47 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index dd34d2c32c..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 36 + + 28 Performance From 72a646392b8bc4741b965d0f23e058a886ee7544 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 23 Aug 2021 01:40:45 +0000 Subject: [PATCH 0716/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1d31f2d280..b50dd24c22 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is it wise to download pre-built flutter template app, with a design that's already made, and left for to do is just the back end part?](https://www.reddit.com/r/androiddev/comments/p92x4a/is_it_wise_to_download_prebuilt_flutter_template/) -- [Any declarative based libraries](https://www.reddit.com/r/androiddev/comments/p90m89/any_declarative_based_libraries/) -- [Google Play Console analytics vs. 3rd party solutions](https://www.reddit.com/r/androiddev/comments/p8y9bc/google_play_console_analytics_vs_3rd_party/) -- [Upgrading Android Studio often breaks my project in unpredictable ways, so I created a script to clear everything and start from scratch](https://www.reddit.com/r/androiddev/comments/p8wzp8/upgrading_android_studio_often_breaks_my_project/) -- [Increasing organic downloads and the bain of ASO](https://www.reddit.com/r/androiddev/comments/p8u8ps/increasing_organic_downloads_and_the_bain_of_aso/) -- [How do package disabler apps work, and is it possible to make my own to avoid having to use shady apps on the store?](https://www.reddit.com/r/androiddev/comments/p8s7lu/how_do_package_disabler_apps_work_and_is_it/) -- [Looking for a 3D graphics framework for a mechanical engineering app](https://www.reddit.com/r/androiddev/comments/p8rmic/looking_for_a_3d_graphics_framework_for_a/) -- [App removed due to "Disruptive Ads" policy](https://www.reddit.com/r/androiddev/comments/p8rlsc/app_removed_due_to_disruptive_ads_policy/) -- [App Feedback Thread - August 21, 2021](https://www.reddit.com/r/androiddev/comments/p8r13p/app_feedback_thread_august_21_2021/) -- [Measuring the impact of the app screenshots in Google Play and how it affects the overall downloads amount](https://www.reddit.com/r/androiddev/comments/p8p3eq/measuring_the_impact_of_the_app_screenshots_in/) +- [I need help with AR library](https://www.reddit.com/r/androiddev/comments/p9jqlb/i_need_help_with_ar_library/) +- [Will android native jobs market dwindle?](https://www.reddit.com/r/androiddev/comments/p9i3og/will_android_native_jobs_market_dwindle/) +- [An alternative to OneSignal as push notifications service](https://www.reddit.com/r/androiddev/comments/p9hwgk/an_alternative_to_onesignal_as_push_notifications/) +- [Nested RecyclerView](https://www.reddit.com/r/androiddev/comments/p9gmqi/nested_recyclerview/) +- [Inputs validation in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p9g3gg/inputs_validation_in_jetpack_compose/) +- [Play Billing Errors in Trusted Web Activities](https://www.reddit.com/r/androiddev/comments/p9f6v1/play_billing_errors_in_trusted_web_activities/) +- [An open-source project to put my skills to use](https://www.reddit.com/r/androiddev/comments/p9e1x4/an_opensource_project_to_put_my_skills_to_use/) +- [A small movie project using Jetpack Compose, Hilt based on modern Android tech stacks.](https://www.reddit.com/r/androiddev/comments/p9dhrq/a_small_movie_project_using_jetpack_compose_hilt/) +- [Google Billing requirement for a semi-physical product?](https://www.reddit.com/r/androiddev/comments/p9bk0i/google_billing_requirement_for_a_semiphysical/) +- [WakeLock not turning on the screen](https://www.reddit.com/r/androiddev/comments/p9bbfu/wakelock_not_turning_on_the_screen/) ### *InfoWorld posts* From 574377e7556f1040eb1ff605fe8984a1e1837968 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 24 Aug 2021 00:35:06 +0000 Subject: [PATCH 0717/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 27 Performance From 954014d5148330c8917a93f746b779998e4142cf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 24 Aug 2021 01:43:27 +0000 Subject: [PATCH 0718/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b50dd24c22..28314ad06a 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I need help with AR library](https://www.reddit.com/r/androiddev/comments/p9jqlb/i_need_help_with_ar_library/) -- [Will android native jobs market dwindle?](https://www.reddit.com/r/androiddev/comments/p9i3og/will_android_native_jobs_market_dwindle/) -- [An alternative to OneSignal as push notifications service](https://www.reddit.com/r/androiddev/comments/p9hwgk/an_alternative_to_onesignal_as_push_notifications/) -- [Nested RecyclerView](https://www.reddit.com/r/androiddev/comments/p9gmqi/nested_recyclerview/) -- [Inputs validation in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p9g3gg/inputs_validation_in_jetpack_compose/) -- [Play Billing Errors in Trusted Web Activities](https://www.reddit.com/r/androiddev/comments/p9f6v1/play_billing_errors_in_trusted_web_activities/) -- [An open-source project to put my skills to use](https://www.reddit.com/r/androiddev/comments/p9e1x4/an_opensource_project_to_put_my_skills_to_use/) -- [A small movie project using Jetpack Compose, Hilt based on modern Android tech stacks.](https://www.reddit.com/r/androiddev/comments/p9dhrq/a_small_movie_project_using_jetpack_compose_hilt/) -- [Google Billing requirement for a semi-physical product?](https://www.reddit.com/r/androiddev/comments/p9bk0i/google_billing_requirement_for_a_semiphysical/) -- [WakeLock not turning on the screen](https://www.reddit.com/r/androiddev/comments/p9bbfu/wakelock_not_turning_on_the_screen/) +- [Interesting Project: LocalSTT](https://www.reddit.com/r/androiddev/comments/paa3z5/interesting_project_localstt/) +- [Selling In-App Products on Android: Implementing Google Play Billing](https://www.reddit.com/r/androiddev/comments/pa9380/selling_inapp_products_on_android_implementing/) +- [New Downloadable Fonts Not Working](https://www.reddit.com/r/androiddev/comments/pa8u1a/new_downloadable_fonts_not_working/) +- [Android Studio Bumblebee Canary 9 available](https://www.reddit.com/r/androiddev/comments/pa7m5z/android_studio_bumblebee_canary_9_available/) +- [help embedded bluetooth (4.0) hid app to android phone](https://www.reddit.com/r/androiddev/comments/pa6rnj/help_embedded_bluetooth_40_hid_app_to_android/) +- [Android change while app language](https://www.reddit.com/r/androiddev/comments/pa4987/android_change_while_app_language/) +- [Internationalization and third party libs](https://www.reddit.com/r/androiddev/comments/pa3cme/internationalization_and_third_party_libs/) +- [WifiNetworkSuggestion config for enterprise network](https://www.reddit.com/r/androiddev/comments/pa32iv/wifinetworksuggestion_config_for_enterprise/) +- [Kotlin property delegates for Datastore Preferences library](https://www.reddit.com/r/androiddev/comments/pa2ma8/kotlin_property_delegates_for_datastore/) +- [What to do if an entire category is being ignored on Google's Issue tracker?](https://www.reddit.com/r/androiddev/comments/pa2351/what_to_do_if_an_entire_category_is_being_ignored/) ### *InfoWorld posts* From 55d81aff3d52325214b6adcb993f23c518c7884a Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 25 Aug 2021 00:36:53 +0000 Subject: [PATCH 0719/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..62dd326fa6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 60 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 32 Performance From eabdf4abac26db0b0c9047c96ae01b96c5964cbf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 25 Aug 2021 01:45:36 +0000 Subject: [PATCH 0720/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 28314ad06a..5805c92090 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Interesting Project: LocalSTT](https://www.reddit.com/r/androiddev/comments/paa3z5/interesting_project_localstt/) -- [Selling In-App Products on Android: Implementing Google Play Billing](https://www.reddit.com/r/androiddev/comments/pa9380/selling_inapp_products_on_android_implementing/) -- [New Downloadable Fonts Not Working](https://www.reddit.com/r/androiddev/comments/pa8u1a/new_downloadable_fonts_not_working/) -- [Android Studio Bumblebee Canary 9 available](https://www.reddit.com/r/androiddev/comments/pa7m5z/android_studio_bumblebee_canary_9_available/) -- [help embedded bluetooth (4.0) hid app to android phone](https://www.reddit.com/r/androiddev/comments/pa6rnj/help_embedded_bluetooth_40_hid_app_to_android/) -- [Android change while app language](https://www.reddit.com/r/androiddev/comments/pa4987/android_change_while_app_language/) -- [Internationalization and third party libs](https://www.reddit.com/r/androiddev/comments/pa3cme/internationalization_and_third_party_libs/) -- [WifiNetworkSuggestion config for enterprise network](https://www.reddit.com/r/androiddev/comments/pa32iv/wifinetworksuggestion_config_for_enterprise/) -- [Kotlin property delegates for Datastore Preferences library](https://www.reddit.com/r/androiddev/comments/pa2ma8/kotlin_property_delegates_for_datastore/) -- [What to do if an entire category is being ignored on Google's Issue tracker?](https://www.reddit.com/r/androiddev/comments/pa2351/what_to_do_if_an_entire_category_is_being_ignored/) +- [When does a Play Store experiment get completed?](https://www.reddit.com/r/androiddev/comments/pasfkz/when_does_a_play_store_experiment_get_completed/) +- [API for getting all android permissions list](https://www.reddit.com/r/androiddev/comments/pasel2/api_for_getting_all_android_permissions_list/) +- [External Storage differences](https://www.reddit.com/r/androiddev/comments/paptbm/external_storage_differences/) +- [70+ Jetpack Compose Android App Projects for Beginners, Intermediate and Experienced Developers](https://www.reddit.com/r/androiddev/comments/papeie/70_jetpack_compose_android_app_projects_for/) +- [WearOS Tile Feature Pray Times Application](https://www.reddit.com/r/androiddev/comments/papb7g/wearos_tile_feature_pray_times_application/) +- [An upgraded version of an app made for #AndroidDevChallenge week #1 using all the latest Jetpack Libraries and more](https://www.reddit.com/r/androiddev/comments/papami/an_upgraded_version_of_an_app_made_for/) +- [Kotlin’s Sealed Interfaces & The Hole in The Sealing](https://www.reddit.com/r/androiddev/comments/pap8b7/kotlins_sealed_interfaces_the_hole_in_the_sealing/) +- [Weekly Questions Thread - August 24, 2021](https://www.reddit.com/r/androiddev/comments/pamu9t/weekly_questions_thread_august_24_2021/) +- [Admob accounts and contacting the Admob support team](https://www.reddit.com/r/androiddev/comments/pam47c/admob_accounts_and_contacting_the_admob_support/) +- [Bypassing in-app purchases: Android vs iOS](https://www.reddit.com/r/androiddev/comments/pam32j/bypassing_inapp_purchases_android_vs_ios/) ### *InfoWorld posts* From 46b2916ae0dcc2dacfefe4bb0f30c747b794f2a0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 26 Aug 2021 00:34:46 +0000 Subject: [PATCH 0721/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 62dd326fa6..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 30 Performance From c80d45f9169f2cb88858197a4fc2cf9ef2165e71 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 26 Aug 2021 01:43:30 +0000 Subject: [PATCH 0722/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5805c92090..b9f924d2d7 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [When does a Play Store experiment get completed?](https://www.reddit.com/r/androiddev/comments/pasfkz/when_does_a_play_store_experiment_get_completed/) -- [API for getting all android permissions list](https://www.reddit.com/r/androiddev/comments/pasel2/api_for_getting_all_android_permissions_list/) -- [External Storage differences](https://www.reddit.com/r/androiddev/comments/paptbm/external_storage_differences/) -- [70+ Jetpack Compose Android App Projects for Beginners, Intermediate and Experienced Developers](https://www.reddit.com/r/androiddev/comments/papeie/70_jetpack_compose_android_app_projects_for/) -- [WearOS Tile Feature Pray Times Application](https://www.reddit.com/r/androiddev/comments/papb7g/wearos_tile_feature_pray_times_application/) -- [An upgraded version of an app made for #AndroidDevChallenge week #1 using all the latest Jetpack Libraries and more](https://www.reddit.com/r/androiddev/comments/papami/an_upgraded_version_of_an_app_made_for/) -- [Kotlin’s Sealed Interfaces & The Hole in The Sealing](https://www.reddit.com/r/androiddev/comments/pap8b7/kotlins_sealed_interfaces_the_hole_in_the_sealing/) -- [Weekly Questions Thread - August 24, 2021](https://www.reddit.com/r/androiddev/comments/pamu9t/weekly_questions_thread_august_24_2021/) -- [Admob accounts and contacting the Admob support team](https://www.reddit.com/r/androiddev/comments/pam47c/admob_accounts_and_contacting_the_admob_support/) -- [Bypassing in-app purchases: Android vs iOS](https://www.reddit.com/r/androiddev/comments/pam32j/bypassing_inapp_purchases_android_vs_ios/) +- [Question about the deadline of FAN bidding.](https://www.reddit.com/r/androiddev/comments/pbofov/question_about_the_deadline_of_fan_bidding/) +- [organize layouts](https://www.reddit.com/r/androiddev/comments/pbmllh/organize_layouts/) +- [Building Android Conversation Bubbles - Slack Engineering](https://www.reddit.com/r/androiddev/comments/pbkudn/building_android_conversation_bubbles_slack/) +- [Gradle plugins and extensions: A primer for the bemused](https://www.reddit.com/r/androiddev/comments/pbibrx/gradle_plugins_and_extensions_a_primer_for_the/) +- [A Jetpack Compose weather app with offline caching using Hilt and Google's MVVM architecture](https://www.reddit.com/r/androiddev/comments/pbi6pb/a_jetpack_compose_weather_app_with_offline/) +- [Android Studio Bumblebee Canary 10 available](https://www.reddit.com/r/androiddev/comments/pbgliq/android_studio_bumblebee_canary_10_available/) +- [Fullscreen vs Banner Ads](https://www.reddit.com/r/androiddev/comments/pbf8xb/fullscreen_vs_banner_ads/) +- [simple wallpaper app ( still working to improve it )](https://www.reddit.com/r/androiddev/comments/pbdc5n/simple_wallpaper_app_still_working_to_improve_it/) +- [Google Play says release is at 100%, update metrics tell a different story...](https://www.reddit.com/r/androiddev/comments/pbb62d/google_play_says_release_is_at_100_update_metrics/) +- [Swear words in password app for Google Play Store](https://www.reddit.com/r/androiddev/comments/pbb03o/swear_words_in_password_app_for_google_play_store/) ### *InfoWorld posts* From 5d4b0eb953955546f61071958fe0097caa3d04f8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 27 Aug 2021 00:40:16 +0000 Subject: [PATCH 0723/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 58 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 25 Performance From eeec03367ea0f592ed02c3e1768379fe8b980abf Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 27 Aug 2021 01:50:57 +0000 Subject: [PATCH 0724/2080] Updated with the latest blog posts --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b9f924d2d7..7a6af53942 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Question about the deadline of FAN bidding.](https://www.reddit.com/r/androiddev/comments/pbofov/question_about_the_deadline_of_fan_bidding/) +- [Help with Google Play Console](https://www.reddit.com/r/androiddev/comments/pc8t3v/help_with_google_play_console/) +- [Acura Android Infotainment System](https://www.reddit.com/r/androiddev/comments/pc7br9/acura_android_infotainment_system/) +- [Need one line no internet notifier for your awesome Android project? Try Oops! No Internet! library.](https://www.reddit.com/r/androiddev/comments/pc4s9g/need_one_line_no_internet_notifier_for_your/) +- [Is it there any free translation api that doesn't use neural network and Internet connection, but just shows possible translations (many e.g. noun, adjective, etc.) for single given word?](https://www.reddit.com/r/androiddev/comments/pc4bgs/is_it_there_any_free_translation_api_that_doesnt/) +- [Emulator for M1](https://www.reddit.com/r/androiddev/comments/pc17sf/emulator_for_m1/) +- [Android VPN project not working when installed using Android App Bundle instead using APK](https://www.reddit.com/r/androiddev/comments/pbxoh1/android_vpn_project_not_working_when_installed/) +- [2 app versions at a time: Free & Premium - how hard is to handle?](https://www.reddit.com/r/androiddev/comments/pbwe09/2_app_versions_at_a_time_free_premium_how_hard_is/) +- [Is there something like Play Store Promo Codes for the Amazon Appstore?](https://www.reddit.com/r/androiddev/comments/pbw5pe/is_there_something_like_play_store_promo_codes/) +- [My first app as a self-thaught developer at the age of 31. Please let me know what you think](https://www.reddit.com/r/androiddev/comments/pbulqe/my_first_app_as_a_selfthaught_developer_at_the/) - [organize layouts](https://www.reddit.com/r/androiddev/comments/pbmllh/organize_layouts/) -- [Building Android Conversation Bubbles - Slack Engineering](https://www.reddit.com/r/androiddev/comments/pbkudn/building_android_conversation_bubbles_slack/) -- [Gradle plugins and extensions: A primer for the bemused](https://www.reddit.com/r/androiddev/comments/pbibrx/gradle_plugins_and_extensions_a_primer_for_the/) -- [A Jetpack Compose weather app with offline caching using Hilt and Google's MVVM architecture](https://www.reddit.com/r/androiddev/comments/pbi6pb/a_jetpack_compose_weather_app_with_offline/) -- [Android Studio Bumblebee Canary 10 available](https://www.reddit.com/r/androiddev/comments/pbgliq/android_studio_bumblebee_canary_10_available/) -- [Fullscreen vs Banner Ads](https://www.reddit.com/r/androiddev/comments/pbf8xb/fullscreen_vs_banner_ads/) -- [simple wallpaper app ( still working to improve it )](https://www.reddit.com/r/androiddev/comments/pbdc5n/simple_wallpaper_app_still_working_to_improve_it/) -- [Google Play says release is at 100%, update metrics tell a different story...](https://www.reddit.com/r/androiddev/comments/pbb62d/google_play_says_release_is_at_100_update_metrics/) -- [Swear words in password app for Google Play Store](https://www.reddit.com/r/androiddev/comments/pbb03o/swear_words_in_password_app_for_google_play_store/) ### *InfoWorld posts* From 1fdf22ae226105d21ec72cbb65aada552aa0ada4 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 28 Aug 2021 00:35:41 +0000 Subject: [PATCH 0725/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 31 Performance From d6bb6d4d27520304ff28f133ea4468c72825ad6e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 28 Aug 2021 01:41:40 +0000 Subject: [PATCH 0726/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7a6af53942..b7a20cd718 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Help with Google Play Console](https://www.reddit.com/r/androiddev/comments/pc8t3v/help_with_google_play_console/) -- [Acura Android Infotainment System](https://www.reddit.com/r/androiddev/comments/pc7br9/acura_android_infotainment_system/) -- [Need one line no internet notifier for your awesome Android project? Try Oops! No Internet! library.](https://www.reddit.com/r/androiddev/comments/pc4s9g/need_one_line_no_internet_notifier_for_your/) -- [Is it there any free translation api that doesn't use neural network and Internet connection, but just shows possible translations (many e.g. noun, adjective, etc.) for single given word?](https://www.reddit.com/r/androiddev/comments/pc4bgs/is_it_there_any_free_translation_api_that_doesnt/) -- [Emulator for M1](https://www.reddit.com/r/androiddev/comments/pc17sf/emulator_for_m1/) -- [Android VPN project not working when installed using Android App Bundle instead using APK](https://www.reddit.com/r/androiddev/comments/pbxoh1/android_vpn_project_not_working_when_installed/) -- [2 app versions at a time: Free & Premium - how hard is to handle?](https://www.reddit.com/r/androiddev/comments/pbwe09/2_app_versions_at_a_time_free_premium_how_hard_is/) -- [Is there something like Play Store Promo Codes for the Amazon Appstore?](https://www.reddit.com/r/androiddev/comments/pbw5pe/is_there_something_like_play_store_promo_codes/) -- [My first app as a self-thaught developer at the age of 31. Please let me know what you think](https://www.reddit.com/r/androiddev/comments/pbulqe/my_first_app_as_a_selfthaught_developer_at_the/) -- [organize layouts](https://www.reddit.com/r/androiddev/comments/pbmllh/organize_layouts/) +- [Android app rejects update for MANAGE_EXTERNAL_STORAGE permission request. Need help in getting approve.](https://www.reddit.com/r/androiddev/comments/pcybc1/android_app_rejects_update_for_manage_external/) +- [How to access external non media files on Android TV 11?](https://www.reddit.com/r/androiddev/comments/pcuca0/how_to_access_external_non_media_files_on_android/) +- [How to correctly measure the App Startup time on Android](https://www.reddit.com/r/androiddev/comments/pcrlcb/how_to_correctly_measure_the_app_startup_time_on/) +- [I wrote a free Jetpack Compose library. It shows Snackbar-style messages with less boilerplate code and more customizability options.](https://www.reddit.com/r/androiddev/comments/pcqi6b/i_wrote_a_free_jetpack_compose_library_it_shows/) +- [Hey! Update on the Lottie animation editor I've been working on to edit and export Lottie animations (supported by Android) without After Effects. Here's a vid on collaborating and updating exported animations in your live app straight from the editor easily! Feel free to sign up on lottielab.io](https://www.reddit.com/r/androiddev/comments/pcos7z/hey_update_on_the_lottie_animation_editor_ive/) +- [Finally finished my first Jetpack Compose/Native Android app!](https://www.reddit.com/r/androiddev/comments/pcom89/finally_finished_my_first_jetpack_composenative/) +- [Google Admob is garbage, rubbish,](https://www.reddit.com/r/androiddev/comments/pcodfa/google_admob_is_garbage_rubbish/) +- [AppyGen alternatives that let you use MoPub?](https://www.reddit.com/r/androiddev/comments/pcn8vu/appygen_alternatives_that_let_you_use_mopub/) +- [Cross-Platform App Development Tools: What do you use?](https://www.reddit.com/r/androiddev/comments/pclqdc/crossplatform_app_development_tools_what_do_you/) +- [Anyone using both AIDE and android studio. Is it possible to pull the GitHub of android studio into AIDE and vice versa. Any other way to do small changes in mobile app using my mobile instead of opening the whole laptop starting android studio and all](https://www.reddit.com/r/androiddev/comments/pcjq0h/anyone_using_both_aide_and_android_studio_is_it/) ### *InfoWorld posts* From 0295426c404366eeee9fcb04969b485f9d610b97 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 29 Aug 2021 00:39:12 +0000 Subject: [PATCH 0727/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..62dd326fa6 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 60 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 28 Performance From e767f6e31da2af31b2585d583b75f1a16fd39f4a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 29 Aug 2021 01:49:15 +0000 Subject: [PATCH 0728/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b7a20cd718..67f253e48a 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android app rejects update for MANAGE_EXTERNAL_STORAGE permission request. Need help in getting approve.](https://www.reddit.com/r/androiddev/comments/pcybc1/android_app_rejects_update_for_manage_external/) -- [How to access external non media files on Android TV 11?](https://www.reddit.com/r/androiddev/comments/pcuca0/how_to_access_external_non_media_files_on_android/) -- [How to correctly measure the App Startup time on Android](https://www.reddit.com/r/androiddev/comments/pcrlcb/how_to_correctly_measure_the_app_startup_time_on/) -- [I wrote a free Jetpack Compose library. It shows Snackbar-style messages with less boilerplate code and more customizability options.](https://www.reddit.com/r/androiddev/comments/pcqi6b/i_wrote_a_free_jetpack_compose_library_it_shows/) -- [Hey! Update on the Lottie animation editor I've been working on to edit and export Lottie animations (supported by Android) without After Effects. Here's a vid on collaborating and updating exported animations in your live app straight from the editor easily! Feel free to sign up on lottielab.io](https://www.reddit.com/r/androiddev/comments/pcos7z/hey_update_on_the_lottie_animation_editor_ive/) -- [Finally finished my first Jetpack Compose/Native Android app!](https://www.reddit.com/r/androiddev/comments/pcom89/finally_finished_my_first_jetpack_composenative/) -- [Google Admob is garbage, rubbish,](https://www.reddit.com/r/androiddev/comments/pcodfa/google_admob_is_garbage_rubbish/) -- [AppyGen alternatives that let you use MoPub?](https://www.reddit.com/r/androiddev/comments/pcn8vu/appygen_alternatives_that_let_you_use_mopub/) -- [Cross-Platform App Development Tools: What do you use?](https://www.reddit.com/r/androiddev/comments/pclqdc/crossplatform_app_development_tools_what_do_you/) -- [Anyone using both AIDE and android studio. Is it possible to pull the GitHub of android studio into AIDE and vice versa. Any other way to do small changes in mobile app using my mobile instead of opening the whole laptop starting android studio and all](https://www.reddit.com/r/androiddev/comments/pcjq0h/anyone_using_both_aide_and_android_studio_is_it/) +- [I made a flutter app for Anime episodes and news updates. (Flutter)](https://www.reddit.com/r/androiddev/comments/pdllgc/i_made_a_flutter_app_for_anime_episodes_and_news/) +- [Action button best practices? FABs and/or buttons?](https://www.reddit.com/r/androiddev/comments/pdj9bu/action_button_best_practices_fabs_andor_buttons/) +- [Design to Dev - Font Size/scaling Issue](https://www.reddit.com/r/androiddev/comments/pdg86s/design_to_dev_font_sizescaling_issue/) +- [Our user-generated football (social network where users publish their own content has been suspended and removed from Google Play due to alleged copyright infringement](https://www.reddit.com/r/androiddev/comments/pdex08/our_usergenerated_football_social_network_where/) +- [How do you usually perform mocking for instrument unit test?](https://www.reddit.com/r/androiddev/comments/pd9v4m/how_do_you_usually_perform_mocking_for_instrument/) +- [Android Design Patterns : Factory Method](https://www.reddit.com/r/androiddev/comments/pd9fz9/android_design_patterns_factory_method/) +- [App Feedback Thread - August 28, 2021](https://www.reddit.com/r/androiddev/comments/pd9cfb/app_feedback_thread_august_28_2021/) +- [Jetpack Compose : "remember" composable seems useless because it doesn't retain state during activity recreation(for example during configuration change).](https://www.reddit.com/r/androiddev/comments/pd936c/jetpack_compose_remember_composable_seems_useless/) +- [What are the best ads for marketing apps/games?](https://www.reddit.com/r/androiddev/comments/pd80bv/what_are_the_best_ads_for_marketing_appsgames/) +- [Developing Android apps with api.](https://www.reddit.com/r/androiddev/comments/pd6cbh/developing_android_apps_with_api/) ### *InfoWorld posts* From e123794a410c478f9eaf9fc05a9ee6caa29091cf Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 29 Aug 2021 23:58:21 +0000 Subject: [PATCH 0729/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 48965 -> 47547 bytes traffic/views.csv | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 7deea53f9c..8bf6620f93 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -63,4 +63,11 @@ _date,total_clones,unique_clones 2021-08-19,148,28 2021-08-20,90,25 2021-08-21,144,22 -2021-08-22,137,18 +2021-08-22,145,21 +2021-08-23,92,25 +2021-08-24,151,25 +2021-08-25,92,26 +2021-08-26,226,34 +2021-08-27,175,25 +2021-08-28,86,23 +2021-08-29,87,23 diff --git a/traffic/plots.png b/traffic/plots.png index a0f25151e60c5a59370d9929b348ddd8342793e8..0b6a01073b13dbb6db68ef0b3495aa87ae0f47cb 100644 GIT binary patch literal 47547 zcmb@uby(F=7cO|{4(Uczq`O-|LO_s^PLb~Jl2Tfb?gr`ZmhSHE?vk2)zVFVx&&=Fs zp7~>p2R-Lkd+)W^de^(w`}_G>P7(u^1Qh~-V0@JNpa_A$`amEstH_Ap6RxqvP4I)y zL0rv2$=b-lS>MhO@=4#p#=_dc!u0D)Cqp}XQ)?>@X7HQwrHO-sjXggLi{<}3fZ5v4 zn58$aHW^$5#YRfq9s=He-&~|1Wb^J+&u<>)c zp*5{L>JQrVbYxi6x_1cTzh}BW+frq|M8$*`$HO~C`Z4(GGi_r9DxS%JiK*$Hj_G-m zw?F(JJpS=q%i|Hpt%k%+;+?&|I{R)<<={+OWGa7bQRKpm8V4BYKd3(3ML|A8KkVq2 zg3v-g(l>kq!2{p;m$BnOP@#vb5u-o?pa&O)!uvqK!B&xgeFyypnc+1|I`kX=m|y=t zUuIUV0YaTKb5QSgMPE`Rxi7jVGr z(ZTli+y9Q_Pv|+({M+bv(9!*02dq$#(v;Xgtu({M1CTal$6QI z$&62i%=E(I3cdaPuc)YCAl}~IA+eIslbBWr#ms65Vo>oA8J_Y~&t5n~(Vrv73(mhv)O4chTnzX_KzF6i&?2cfm+EUt| z!RHOY9+c@5YO9|3fP3RR5wVp$`>^+@Ji`C}hE3$I2b3|#KG&v@W{ z#$kccI?q%Z%je1_C~n`!FI1UM%(i$oiVu9A>SfeZFnz$I=)4LQG;`-?uX6k}vC$1V zb!dXxu>yX5UES*X`q#a$%5>m5^Z{hW;iX~4-a>HYQ;TkUh%4w2gQyCrkzb(?qR6&1 z8{J_BGbP%LYGsfZ=>X}RSN!~m+KoM@MHjH#=7|x-=pp&n5S}4*cB_l=AQ1 zLBhksIjt7s5zq*J=WEHtGG<7Gk?damgN+cm92FD1npA2_Y4mBm+a~?)=VxnU^OBbK z2TSY2_~qj32*HlczUWUkd9n%L!Ohs&aeSJZ1d~%z=4vcSA?DLX8Lk)Gy!`y@TU+8Q zEuMXYgN$QW$^`!zNE+7PsQ6TwPgs(H)dgQx>&=FpZtMB5(_%XlZXM>QE~-A$1z=B0 zE8taB^M@oajHxJPC*+_JFs>fXRdSk7ht5?R!v!V>-mG|wKu3LdzV$&ug57rg0~r}v zJfHnG`OVq&wM6NRQlScyN~um*TpXdkzP{k&<;3m%J;&F-KfcCz-=3~DopzudF4jj2 zd;Wt&CMOSW4<*fk+Ox#*Vl>o?A}m%UcL|u!lVYyV5!kr^=|Sj z4kQ?rMY3?CP&3OpuQ)k>8>e~3j*fnwueFYd zj>i4<>(}Pa4u{1o>;7~x+PjPGp%6!mm|qSsA*d%aVsUk`u`(FWNED`;2jL6w_oUM> z!qgnT0oa+na%sY!q@<*L3H~x`H$?vW)xI?lchYc@DIQ|7P{Xvmyj)jTSN5$B=c|E% zjB>a_mc-eDb?dLBBs3z8TMG9>w#ohHK)Qs4gk%x#)U%DAq;AB9y1LWj#uK}zri}7* z^-3cbH@6D&8D^)GYt(TM6I)f@5_7tra z>l88%@@2CTJ}aBl-|-U!kt~mnTv_-u52eHnnXaE;wiVP}+A$dX7n+^$4iaCl!BX^g@oL%v&BOQHn+F!*8ie(bacdXTPB*O0aL^w zAn1-|(!5;{VR6|A<3Yy4qIvl;{lknBG4R&(RpfcNKV*j5XNFSOj?4%fQpyodWj#pv zo4-qFv#}SWQ5E?~=g=$i6y?m#&1Fn1krWbAI+6P+NxZZ#-vqVc}xg{Uk%BaBsO;fYSSct-ikAVQ;*vs#rQFQzniX{5zm_#Ve`7 z@u0%#NJGc#ZVN|ONnG_zx47dEah$Wc?g(yB<3oS(!B%K=N??&7Ibo?W&hG0ySbyyG z6|n6jU0is_#>Rk+oPwvkm@`g0>p){+bv^$!oXpoLaMIK{z|v~5@AY^ioSK@-X)zlK z%a)10 zg-Oo;H;j}=_Pypvs!#&IBfXQ8lf%*c)a5K#bd!}9q2b|Sh<{K}rRTj9us&fA4-e?V zu(ADGU0ub|l`(v201*#}O^iYE35q__uARvL!g(ES3w*pS512)g&}Tcr!zrnxEhYZn{|ORbNj0<7qjld9Jv<|>{o7_46^#Q$a#`?}*^ z4e79C_%4M8MR2yNITUa%r>pI-eq!>;yzg7R9*KlKTr%##)7Wkg5>Gs4zA3|-rlVdU zg3K@3FX*Y`sv%R+C(q8RC32c7?p^@zl_{6PzoqsH#t0eG+}w<|_`K?eWipx$16G~Z zfigz=%gc;x>;Sef7>6cjG`+|)273HA**kVZujBTauMM>Y0XDe#oF#z)rrv30NBoZC zfN>RsJg6OhGS53+FE<(`&Iyso{dX9JkME9GCl#~<}4i4b5GZv#1geI#cenmw^A|5NP zj0I?%K54lRzdD$?*oY9xoH^KAtiKTA2p>riAar(io+x%Y>ag$l`6r9l0P?;Y28xZv z^`{}Hz-bz;w)r|+4r8F8=nuxTRhdl%QwX`8g7w}wI?~n~+ZIS*Ge87uo4b%B6E~>t zpa8RXiE7Fh2pL^ETQ-2K)ljc}BZIDk0&S%uOwZrHWtI!vUeAv=UyqE<&1HaZ{TUqG zaNu-(eLcG{5YKELm73KRpWWMx3{IZ@5IIrtCi%Z-S3{tu-QM1^f~o&{lsB=*>-E6< z^z^h%ADsUxbg6aNiR92C_*&6Yu@f7TDnIyAvaqpd8j9f^*<~R4GY5B1_b0>xPK?~# z2&DKup~Rh`#2m6W#v`diz%fGokYqTSKCt<}fB&-Tcfi}@i7QieeS|UC+}Q@(kLk`W zAm2ZG}lN-2A0hJt?+t$;hu{I#8(mT>}CG0pOPU__5qUAy_;|u^g3=Ae4@27`55CK-m^6J%gN=ImyA8N>KZuAN6wLc$m z4}^dVAynbiQoAjnS{7hgu0N`!6luVX`1XJcbqywPz=)~t@vL}sj%JA2+Sz65cLqKH zpOI^MGKtV+F~`0?S>OjEIzTOk%T2B>E-vw@lsr~sVu9#%Hp6sExuXEcPIxx!j4amM zqaY)RlU`vol<2M#p;MX%0wJSLQ(fDJWCVqHu?j9Ou0cb|LZc6hcEjHvFJ7OX zp0-U)L;w6 zq>_@7B-|Fg0PcB@RA?r``($>|n-bcjN1)Y^;P3I>X?^Tt4#`BJ`tUv&)-@rvKH)Ct z7$6`bwy*Hd4;NTamh{Nl_<*j_`V7Woh?o=Tm*i%;JBYe)sTCps; z!>YQTT_6-dy?mBrgb@JL&P(#eDjas3QUE%sub!oO{rd^v3fSjM&xcu4W_v5GA|L@g zTy9Q+#?STj4j&k}-hqKEu=QPBT@!}Er^m22Fd&~ZMAchyJ75BCs4LC;sc&y0Prb>7 zZK_a}<@!0j=_6rTewkuerB4VO3VhqJ#HaKKhP;h&Uh+7(Vlz2I1>k?`#FG$CG)+D& zJU5~`4I2q8*4b`AktXD%^;sBPk`D=!Os~xc=6TMk{W}6QdVzbujpi%71{h+t$<_YX zNL*6V0ND2L}B(%z!;>fU`k143J^n zMopf4TCPD)I06L+qOCYSKEAk$3c=&QtIn>jE(gsP55Ap|wAP&`5Yb-o^3G18)&aDK zgM$NN!!3Dj#E%~@>FH5bRaGbI1%-tA`uf;XN`YnOek^KqI?8lDSdU1V?m<}A8Yyx|L{m!uM{v=(4(~q$+`SFLq6FjN^0=B(4X|3s{X`0aA0fazHum<7 z8{9)lJbA#`Gy$&%;tVPwA)(v#VP6oXS1*82sIq!&Ivca)22cmS)Zn-=rK($e3X=}a z6$;-l_!1Et!}h#2{*{{54E6c?5iddhlyD?UkFrrq$uJUefKFU@GlHPECS=ih1JWKsU5{Vj z+Hip?BLJ&kOvsBQd~YUT(uf3m>iTE_4gL>+(%c6#r8EE`N7Kkx=yxK5021<#rHTjz zAi(Sy2I^rrHrxboiB5n(!_V)HrN|97R z+rTn?2XN?J-b4cIyK0S3AYV}^P|iK`*6R)9HRwjys4{sEJ{vRPEYhg{)4NrJ7o+$Q zHwXM$J3f{(Gc(KhRF`=!Juo)@b(;Y4Y6rcoz2>&{bDD-zB>69tL9cu|1JV72dVf)5 z^O)%9PGEr0C<1Oj-c?`&B1!jeIwkrgJKL=-tJ1XdP)n$fkm^43#;n=LLGXUb0F9E^ z0Z{HnD)-H3mlndNQ!f7dH~690qRJX0!uJ-wm#nobP~a>>SUMi1-j*pU-N$@)E0Xn= z3mr!9n+N|LzYsUcUGr;yY(q=1l>nDBY|)b>>VAi>MI8w`JHJTA>VT-wX}a>)vFtv$t41 zHE-&;Mzi^-e3Q)9XR{Xf9pyklw^m)~pr%hYMc1Q)d$;icTOCIZS)Z9C3=wd5I5_BO z1%O8YbR}Axw6a5RW@Jo^I3U|7C@69?e7nfrK&o(v>+cR*BfmAYzOML+ z&TdnSc5W}8^Bp``iSef5QjQ5)2pZMjB`75k|NR|RaDQiK=jFfhHz<(ezp3^!WBYg$ zMYBsgCDC!EJ;S+Q!(r>V5X&5xeB_+C;a&Lb*WBKM=(amOxoxReW&|@Y=*;*k0?bpu5F)yc`gM&p4b{RBJ>Ri zi`K~I~*&-U({)uHlGw;iVuZ_%$oZj|UqAxJV$8jS`L)EYDORV(q^T%aVsJaMk2W|9#MQ|Z=aqR z&BWi_QEyJ1BMht#Sz+!YM6IhUZ`)>FnuH$z(!#?W_V3YB8-AEAF|RX?X65FzVu5lL zwg%WGbz$&6UlxZs0ts4Fs)bND+c*$?kg}{J6Sd0~iLw*v5C)GDZ)HSHz~gk}Pr|GM zYzTHbg4O%?@12*7f$xJyKv-K{g|az-6H_t`p+eP9-dor)YBN@z8Ay0XN$B7f&^q!~ zBhw^+eFkbBvHxM%S=nUJ^uS&M;FV+P`fyHZw+2vep=5kffT6L!+*JrfC+>)(663X9 z_vZ_KWfh$@RnD`|Z)5(jauoW0ZMZj>3v;vzJ(*asjc6$qHTTu92LS;8{n6^M??7?{ z$Y;QTT^C2=!q)s2#gzo?z_ruu1740W?g^uHH~ z8-1NqKfcQ=<$XUE#(0tA!)CU6^c}30o1Ac*^|z#>I&g~*hTmc#ryy=j<}3L9yE@B*m$5}|y%8J?4)D*#L{n%;IV(tKc)4rz<&+Oi{ZDeY$jh1WPUCm<&q7)o&CiJurk#Qjt~$5C86#PFpf|N2;xh&X026r zUfzoB{q3!bhbNkoQwY39b+!be&Mo8$M9 z&X3?-B$S?}@>eK;Yx9LeV)wYUfx7GGr$?}WxO8-M4}i4XrcLVu(L(CeC$1%cV!usq zsB#&X8ro1(le&{~rI6w+Q(L2BIxDB!`s5m}CJ*u;Vp|m>zhVMh1yxZ>SUuM6+S+>n zVt#;hZ{xzt%S)?Kh4p5!+I;5p;-c}u_UP!SytcOWfP0<5z^j$ncgnVkK`_BCLSi}p z3pR1u@D{21oVD12oIhf2B4RRkg z*YnMB0`WzM*BlYA%L6}>-=IP;7KpmPS(Uzo(UW$X3x&C~smKa!gwr!QgVv&ozJNIg z$N-upknmUyLQ|dd^RHm)UEE1y$wR`zsF|6Et2_bBP_MV6hVtwnoP!i4(D7h;4E%)N zt?Izym0MTjLtS9dhEVMZt_3nq=P=E$m^j_(uEsn~SI7`4AVg3yO8a@C#jWYWNdt&# zv4-Q!j+mI(^Tq7xS|>4}L`>zGQ1vbP4#+n>BbYEq{?&ahOneQD9G4*G!^+#|PbAtp zc2)d#7gs)anviyEh*gB_e+{Q7u?Rt{%f!*mDTNKuM;vWanLfspyDX>C7t|a`s!<8u zD@PRAKf(V}W`zzp0r;1}wRqC(t<8-+3(3NH3i0Jq=Q1j_#TTwanKC&E-OqgU%WSTW zro@dtBY*RvODB>ZZ^4-#48bJg8w~EuRF?CQIF7;Phr^`u&YJ)MekHyNOT1vxe zBjUb;Oq$`p_X_kMjYW5W76oOZAZ4gOTT=V({>oZR(l>C?dt60yDEr&`6y)NuZV$n@ z2pI5`z3~T5M!)zCq)0TB$(bBh(AJ*T3r(Xm2}bX44j#^g{g6gYCjG(x++$$uz2Uu? z#ZL-Ex;#jUGY&|4JH!K3u*&R6@=_mi4rb!=db{qwifY#_bzmdFG_c zWnN{sfN`j(q-q-=j#T-N5qyMgqyKupH}3dM!d18yURx-X;L4AwCCe>27Mvpp`_5;T zWE=yakPbHxIuLfRf=vf?(i9PW%&LQR!Z2idEhCy#_ABsJrEAzAjE&5CK5w7?>!q%s z^LD!TQq~t7~QZ3h_KuUT3B(*%4}htdu#y zE$z+<_>!9v1Emeso@caV3%@5bw>q#E@Mu0O)7v|0TH0sbTb}WB*4;E9@Fhc3Y7}ZO%$oLHNkV z1gBa9+_sf2PDzuo0JPE=`vx3cb0Uf}r$PR7jG0^Yc6)Ni=yUyrEG)n09Fi2>)^FJE zeBavtljdmorOmtp^*8jeC=iBn^4j9348;WRL9HZyiaLS$sHmJRlS7P3%I6iu0Xl@x zUnyaUfx>}p>J6aUBC3W9&Y=@munK!d<370+c}*IYND&rV`2DvhPnjukot+ts|M#Uf zaCQIcNJv=}zdch51Kk|&?4P~Gbhm_*9wMz{+8_s39xEr9xEZ2%b(XJs|AV(g)v%yf zHt=d;#`v?LS4dZRacQy{reTQ8%R+4&Gv}KAU<}h~DbvxV=?rn9?#uP}`5vn-@+`4LKpy9|EFECobj_y>In( z(cuUlhO%QMd7VGOzE^MsTLFdIcst>(VZ8ZWZ6jT&11sHJw|d*w48q~sH%U;eg1jo` zq`EwjWVQ!^QPrIk;5)L=mi7&qPS?u=PbfOxTSrl#O0G+kFiOQFtwt614SW7;yJGBp zu|6XCQ#x|%jrbO@YHHxrVcoh|eKP`s3=+~t;=l19df=$L-WfWj0*^jWihy0@{_2NH zp7Gi+EktL3A+lBXsB1Q|Vb*lgUsra!oci9?W6ujyf=070TU1Tuc8F3;i1hw+M`np= zbP`M4SL9WR-O7Wu?Bf;@D355={T9X32C=B#erLSJ(_Kqj`|RvYzc-R98B|3}?in>} z&;ifAy1lykc|KDO1HeuD(kF#@faXB`IV!Hy*jjn68aYQpkAPL}=0l{TWT_1uU(!Ca zQ|P`Lp@=h*kmZyWa;S5gm%-pIXv4(9OU5OQV^g4&lk^WigSN+VhpGuz{5bP zBzBIICqzIdyaqATA>`*zI!lG3?_i2%)H}y5ng?hf2U-i1>6H|B$$!oCZ<1-Gq+V)? z9b`)K4Ff=-0V%e4CDkG~l9^QOE$>_!k+oFZ_kl~0%+*=S-bwDDuNTv?Ordbr^Ozrt z1=HZr8Hv}4u1hqBAoBrG-bmJnKICvsvJpJRYs2GgN4G1RC6_4Y@AFh|k9rN=Mi#m* zxn39w+sgeIFQYqx;kI7ZT79Z895_8YTLbae0T2+QkIMA;02t*6HBa&3dHP)@do(2< znWztBEe*5l z?5O%@3JOiLceXdotPS?r>a@Yf9s(sopq=A%uBOsI_2VWe$=*Ho;s@3i4s9;`PBI3q z@r&XG&9&|+Dk;I7US2jGI1v*QPZn#&%~zXWjEZ5|o^O7%C(My%uW7roIP{aSe3}wL zonULjr4hhD*{e@x^ea&`KqXQ|O0vUh+jrq#v&f@j(Y59>Z~-YofB<^2H*VupPv7zJ zduK~|8ez9=Y5|?S_D)N)3>D(H2pBqbK|cq;P0Y+(@idV`kXucN{*4Q_U6iCX7Mr=3 z9rj^9Tx%IOa23h5=&bF)m0v!%&{&rU$Z7py+9uOQ>KO}M z|GP>FM;wbTvqKsv=Z%k#qb?SWU9;;vX0c+{kTf8Y;K*6C_+^jgetFmL3XANcQT%Gx zh#|e25v6u5tx&5j^(QDC$ontWU!BP9yYX>Ye~_tZUi8Z-HqTUP2OT#=mvk}*a1P$v>gK^bs9{0~=4W`J&B9aZ6t z5e9_jQzD?{?n{awybptlh06kjXv#mb&7rk*=0o?c=Lv?f7RCh8o$Uc0VTbbj9}V z=ri#bIbK1)%=$&2>TYu2F0CNm*GrV*vndzsX7EiKFox znH(m&9D~8m8LBp1o}hDUx`U}%Y>0%G9M?Tk9JMB7?OK`ji-^sfgJ5{RKl&n>1(8zd zbgKZ$rS00qui`oO905O#Tez|_7qUl@`y@gyVQFR2sb}xtKTPbxVO7Z<$w!==jh(lx znY+p>A-bu@fBR9$O?692T<_dkR!BeHL^z!v2P(bE-ASyU6kXITfO{vd5HIM;Za!0D z*b`0;4-b!bPXtK7jh={&lM~%tZoqzm0waE%dQu7xT-&+SlLw8k6=qc(->S%^Y^HjI zWj~DCFkp#7ao_)OqbF+CSqmZGfe@`!3zr!EqZ%8Xi4l*e)xY>{g>GTg8*$zGqwq56 znMX;5d`mR*O+S8&((TakO3js^441Haj^Y?!8GoxVZU-zX3)(FSh|Tv&>&N3H~>0C z>e_z2mLw8#<78uFlZ|K1sOl=H7`Ly=_3ici?#ZNrX>eNKIk*A&bO6!JM<^?Y);zUF zdW*-G*puYD?XNWuOE9@Z4-`iZd$7*!4bFCJEZoXTZ@A9H74(+M3ojoX2w9%pLQNPF zzPjf?rZ&}i*cmYfmA)LI>MwIvYsb1-xm=5< zw$(ILLUC|}(R+aOV(h7QKzm8l4WlD9xapupB1Dp~(?B1^lvnbCI4vBIP#cYS-uV(A zIScoOc?=eCZ8=2dhdF*0340`fNO~%@pdq`DFJ&p8XGa%;-Q~zlmGYaBDZGYc;*`){ zsX+M>^E^k@fU+h< zK`tPU3b{DH@~GT_U4m^!`$Xc=$%*opoykX!2&wKYjW?tOh0IeZdL>-T$YRG$*}0r& z!4|(cH9jouv}6b&@veTO#o(gZnLR7E?PfW0H-11QPU)viUtm_*eLSjjnuh-jQHUIq zuFckvy1QTC-u>B(PIuwe%kT3yVmUS8A9ls{NuE_}Noq*Ak{1w-xnuk4mEVb^TYJ_i zGlh6F=aFbYoZGjX&Bz}7__RFp=T>OIk=n3@6Hw01lJjQyy)rQlWVvfhhUb<}aJs0+ z;!p54?m`!QAB%BWj~UNb%z2T&6M_n%++d6ine-)v+KpiLqLv+t3oCje z7IT;N-afep2PCwqTfi@A(f&)M^^MkM){yb-m{4F!>2=da&|opM-T(qjY$~#yFq>ab z>>&-CP~7Y$BZ1)byhTs=Y)i0lMI6cU*^JdPV;ku%9D;~z)T&KW_*R2&EZuK>g^av_ zeb{Esp4|dr35KfxP5GxgxH0dkHI1wulzovGH)dODW`8p2Sf5xpP`t?D<}1j1{=n`p zHsQOZ{k5b%?RV1|6PC?zvOA|MC@BY8~xcm58|y8+S7!1%QY{2!28pJZyL^Mu!I z--%~W?@Tc#^BYe7Fu$A-<*iwBrGg|Jx#rF0NtwBz=xYhzol-s| z+b>Ff>61c}6FrJ7=WrGB-u=F2o@cvH=op%gwf!pZ#T8_ke8>;n+gn)B+jXxbMi1BQ z7=m;Z>RgTxxiVG8I7I@(Fs&dwk8kA>8|JH7ct-AeVoUt^&KzXXtg+@P79&gz6iW;_xpM7?bAj+GRl7^Um}r~ zA<^6&aBQXJnl-!e{Iyem$v)C!*`{?!t?op-&i2K$FcJ!l{*@ZEpdS?mu$=8=ZA(W2a0zPT^@G;A*F@~Hx8>E zG=5KL42;ci5Z6110N}=X?U>V0Nba5$rB?MiSf0}I%l^hQ?mq@5M}=>6*Dk^>cphf4 zEu%(?LLyi#yrK5{)Hl!Y^>0d7f|D{d@@_Fnwm*DcM&j7{MuS> z8~&}KWiQtai+D42?HrE4?;7kzR-io1ewge=e1i~{Y5JUJV_RrcK0t4+fI|Gna9iIx zD>ony6O)lmaLoBFJO+KOUA`|OWUsU>u)t*4B3owgYlBIr{;uk(_N}v|!VuZw@6K|b zS!~;wPc-WvWk(FJ)&_uQB*voAMC82M@Fn2dRc>`Cu=&vSic3A#;jZjnNo~9n`+?7; zt#hU02R^)$cj(4-aru|My35uZRG|-AX54w}==nBoG3nIAaIUzcLBqNAueA4(TY zFv&}u41Z2w5cxX zoxqO9F~9cHD9-d0l7}XOj~xF_FaFAf9xEfU7z-#?R2A{N{2W^eoLGB2dRUp?@K0$C zm-9YBNzeQm4Jj*nlNxaHkF-J8(RI`WB8wWd9TERl*Tk(E^WDJ#>5m8@=bp~PP)=D< zQ|$$~(o9*@Iy<74V@&-tQsG-oVa$;ezd%nkD`NvB&*kqZni*~ey|O-EUh5xKMyA+} zOb}_l#_Cyod1Z94)cW{8JF3ssg7^g|nuQ@~&Jr0@OJ={MM#jD-%UbOvSZ(oPo+{cA zypB7hVde@#Tplh;p8W~>yf{m@_EBZ@ko&QL&95Vw;Nv-j@XK|IoL?fTXv0B!BJ?`|HkJO zE%3}+Xn$7pcF0iLU6y5Rldn>tAbrc=^uY`H5UD|H_8+&02zJzP(iR>`b#Nr2PLn`3 z-`ev`P}*CEZ{LFW0b525I@n{@$^~0ElfzG}cZwZpkXs|)wChoW7Weu+N9>x>Q?!SE zsxs#wsu2CnKd`MeFo_N%Z66zBXA2zuKAb&~V;O5X-=y}XUD)g2lilW0YKg!N3!l!8 zusX2uy5Y6x4%M6vu8iJ^ze9K-(iuk;IA`UourTpcqJ??)61DM|Rf&Jc=&O>?M`+J_ zKJipJ^OW{s-S6a~hAdUt1(HVZlp{_8N*661nGWriUtI<=*Y;doLI0*w?p(jpG-+ES z+=2*z+%})3DxJ(BKXy>Qa?b{N;f1BNRQkOn&C)=(44+k3MXWBXNtU;gn7au*t=fl0 zpkuoBr5n%gMLPpFzYvyuQNSLd{^rQ&G2JPxYqPuZP1Z!dbNM?R`nr~c)r?E<7Gbu& zBgaN<5#gEzvH5BFp77Vu5OIfn5Z6u{si*prG7^QQDyg%iCMcCweDy|;V4jojT|63m z*mx6^89gS$s%8qxhjJfx^ygmAo+EDVyz>(d)Lky7V0lnAh?s$xq}(FSFcUr?!~rgm z29(Dl&b)1(+oE*J?r}dm1j6)3cTna3(8jO9v{@l@*=IQ|!rD_^%L`hIAVk-e3E1`I zpt}s8curCLcj2oB=<9;LwcaxB!0HV0BThljN_?BKVcK)+8rbDT$k%!RPv3Hd!su!I zveSzF8}r*jf_Z5K{DA!ds8PCSy znQZo@fQ->E%IfEv%=nUDlABY={sC z0}z`rPE0uz3#K>^*yC#^rlYU5;O}AI+JD*dBTaCS*7~%h>t?^-%uM!gWoC0*`RUCH zsHy_ZKuFvtZmtnV4#C-tFZoi@`pWbs9Ehn{em)eDX&6bmL6nGM=i-%V!zx+1?ys$d zJ+cvyR(1z&sImGYrLDNiQxxYW~EF)Fm|XG_FOF3NixcK(xl=I@h!$J`}N$w~62R zSm8@_kJ#ZWM{dkMr+=|l?rCu0UwD!7yNmLLDva#hG1Jl`+GyJXfz zW*1&u;!rR3ef{s`PueUrUa7Mvy0rq{>ZF=5-hcv?>Fc^z{Br4L;p7e9#!raEIF{5#$8M7)467h^$Do!eF zz%LA^gVA67W9rcim;GAkVL5a&Ep^3qvHNLum6Zw;Ab&_hx9-c} zxj#RebwW4S#wBzoU01Zf1!|%|PhyD~Ea&s5+=&lb(!cb|U_mLO%Ia@haM0?A>iZ;w ztA=)a{ZS{aUp>LQjm@a<3jMF%=!9_#wLBW#SfA*nJ#Wu9I-$1g!DXC~Hh6zW>bzL% zlG{6{bdqB|735&Z zj@PL8dL|!P#*Yq_p>}nUD*&HXfd3LO>&4LSJgTdHIu3dGpYlWcn^BK{-x@3QOkh9U z)e|l&PSjX&{SU@!V01m~gpat!SMP|<4quZ5-8HL9oQ2Y|=X*%$8W-VNWsZ!Jmm)K9 zOOdLu5z)ZS1}n0zMSNRM4Vy>qWfEL8X4`LXbluCaf27NW1liLjCSw=+8uBY2&L<>i zRd*2KBSck!NatGy5Vf7T1}p6}e4T+pl5dfj%t(du2#NWKb0YEUf$kV2^dT?9RK z0nM?IXne}TgIEQft*NCyvNWp9uqI^IROYeAQNaESF8i1gHroQG4sIW{A7* zJ)Ox3-*QCZswz?w6}_ZCWoY=WgvWc?oDp!iz7qI;=EfV=;K|3#F~l)HR~ylOz6Rx* zo@r;M+56%YRp9vd(-t#Fh)mRE{pYI&64*H>dE#SAEmU1cwoS~YK8Y;uAzAL+KYc?y zMTRJ+fZ%kN{U`V~n}R~F2BZajf!-x5Kk!&|aTVYG6jNEXg}45>)@;I|u$L ze{IcWp4mV-)f60Z*px5N#9C5u=?w@7PY8k$U`ZuI+5ke%0*ID8`WggXwxq{1B^ zgOPhMck%Iu>>|eAdY~4Z@O)hvkE>d|yrZISGWlLn@-OM9Cf8ruH+xv4T);H-D_3fEe4y*z{~xFnbNdsMR)Sn~r!K;jPaq>HJN3&GPa z3O7%j{vK~}yM41cjOrIRZ(;O4X6yJ;QU+oup%=jH`?poPr+5Cvd6ZTznA&u1o#rW~wnI0)CS>~E6QEmW?V1J(WIix6rxY+jSJv{G_EQ<`A3|6t?g zl2cLl+-0{d;Ja;@<7iq+K}u_!U0}^9%)mblAy;@~NYd!TBmx=$(vZKVLRhJUf_h?) zcRH?Q&D?m;0q~n-6g@>6ZAqp1FSp5v$uzIl7OkITlIWZ)*cIp&lXEqae-yoXXsK4d zou*%ug2w~p`5fLunbOOpja5nHj5B}ob0hAh7h38ZM(KwRF|>?6zrdFNfq_I+OuOX_66$v1l z*l2*qbE~@~W6~C$eGinG!0PSpB)EYnsm&bjd;gBx@z<5RHy~uo7n_A2x)wVZgvZ3E z4)o^S|CH`c2N9}O5LeW4WZiM;s5SC0Kv)KO3YF$=@()WV6oRSo3w}oRJ;*mCqCJFO zw4ctH3{G|e=ZdFb_0FkAl{-AH+{m?r9XNoUndY8@nnLt6`)Ew%63D5O z8@azHjKB&9Ckby|XIn%@7jj7TTjTBRN+EV%j2EgXLP=6OPsL{&7@k^0lO1VD8k4LT zUFFycYth6LvH375D<(4W6C8A4mxnce=&K zPKe*e`K%4Bw+GxLYbhEHKOuNGne=kyDvIq85<9l=xMy*gs4w{akfC#FoUe3uD|Khi zsnJ{D+qM=kZxAui!ydV$ZEZgc_&78^Zg&mZ8JFuz|3)hTNOyia{+Qex>)YB0SD1SI zL7QaFZj3*pdG9Cbe;n)=g>8F9Tk9Q_Nu<(0 zdyBf6?bD6vHq5#?#9=?+pE+ZH{20#JFETK5=U11hY@EAMntxG=!4Y!bYOFRqG``_e zVcnKin$WNtm9o#V-K~`T8J$jN*)1JqqY+?ZPqUiX63XM3LNt^<5foPKKd$j#t7^w# zIYC1Vpy|JEyowoJ8s~*6#HV3d}7YcIX>Nv}vAeJidQ=ShA`? z{}*>F>0n3&qxa(XfC$~|F;?FDOUl6eCnk(mWY47ELw7y~3#wygH?7lR#WNTb8p?-# z)P~2Gh@HH>gCEZExfmQCrD`wM>M1bFrtp}g9`6?&ua^fMd5b=MBDp7MDY0?Yu)k&B z!C^-}x9@sp=5R!_UpFK9xmRB|yKw3v*%>9BlcA@kdUqaXL2_I7Id9&((Klw1Q?!Ip ztk6Wt!)`@;Ca&bvZUUp&XO0Jb1GaFg(&4977E$*`>Vlct`yHp2A&jL4j1!K~)<5*^ zV#L9Gp7C|$A*NAvC_Lygl-qP9;f+pW2NRiE1DR8F@Z!%twe(?&@6!xcye#TdTebdD z@)RL>9~rHZ3(k&aeewNf?g;it``#_**AinpcPmp7=b)s$2F3|&#o8W|hlAK9<3e~J z@z2c9*=d2K-6#2$>Gux1*XKfU3iM3kr8^JqN63>Yl7&ufHP2+7mrud-+P@S0EB5e} zX=XGU-mK@sO(Bl0<-`Du%--YUPyI!6aibmBEBEEY`6FYsjQ78#oQ(K;Y8g8pH&ID; zG@WW}n&z=udE|cI?KF37?zFE^k{T^AP@*PcY#<6G<3m@b3E)O-~URIXGMQE};nM6j4sx zBD6nu)T;kA6js!9-fLzrDGZmZ#8YRPK&}hj%`~wBHK&J z%l9lTHOr1Dm>R^ITlT1R9YNLCH|Pfv6)CXg)SO3%^JIufso2GkHs}qd>bR|8FmV zATYMJ9swFpKcM6TFD5{xa{Shueas+S@LB;U#tG-ge+EEHYzp)L=~WT%cXxNO%-^vy zvAc8R16XN5vwlKfZ|_SG?`hKlip9^go84l73iK2xtTh{GGn2s(ZI9-;+RCbO^IgE$ zrKO~hLDTDN7M79mt`}dxdnhtxq0NLqCs7W>tq}Fnde}rDDFS`9og*U=KwzW^B$Q;$ zKqLW=h*)8>ChEhkYp;yA0y-A+HEWrH_8F>Pn4OzbZ;;9iE~qkx2??g-<4XV<4`>rD z1V}zUKA0WV(XmB(?KR@3c&p`wFoGqYO1ZD0N zAln$PwbljF5=L!V1%zJdmzm1osLyy^RqzU4Ucx}olZ%y4ljadsX*_Zc1i)jU=S7BK z%8a;m^5Wv6yqxV}d!fmd11bOmnxWV1>`|cU7KfaC2=uE$bq_$$lmid@<(-@yrbaOV zD5kcZYCtV}Xb8gxs!axhYj)3n4uP2DW__6&#RAPDuV245U2ft71K8+~Vet3&kBp3b zr>u+zT8|BZ0gPL+NPp6KpZV8lIQb*cjzI+^Y8Bs5z?06-&aQ537?3DGfgTsTt$uu< z*pZZ$MtzAZ+CKr5CGG!F=MAKtd9M^}@}#%%!3RK{lAbcT3;eY61@ zo-6bU0{EZ?0%kD~Xo#S%1i&UF43f_27#bS7d`bp2ZBV){(rrxz?*@Q9e`1seecT2e z{wR>#RV?UB9C(&p{6a&~!OIbbfUKt%NWJgQ2UzM|&R$g-4OJ-r691BktRSmVtO8y7 z-)(L0wt!gXvqU&q0jK4>GBKygXWygqiwk^lh2NmFh!%8>_XGWzsheEsOq_W_@et6~ z{eF79XP}Rf2J=;40hH08^=#^ACT%~cO~-iNU(@lY$c^m*1p=+KqGHr|tGBn|`DPzN z4Svi3c&|hZxTPW3E&V{lT~uW;rwEiT%~7eTR`cCztw25gWxmQZ3rG!TFO!=@2ByJ= zifQ*lVgN$y;L_643b!jWaRt=>gSWSg%JSR(es5Ax1f)a2LP|nFK~hmfT98IM1(Z%H z6_gN=1}UYxyOC~??vm~XsWY$Ne)fOw@jPdYGtL-ioZpN6Vhh~&wXU`1n)5s7{LE_M zSMu^9(AlgGjn&DAMoLOy2qeOw=f@KXJG)}hHnwzpun>)Q%fIRIX$4xKx4kXmzMcw{ z=pqSRs0ct>H49_%u5A19Ox8|L#y&6|wAh{%9n8_{ju-X4r|6uK3r_}k4b@^ZO4w9} zBl!lvLP+Q}mdX!95tG(Uhbhpc4UJXxO-)UE=QcJrf1pbU%t++t2^=}yF#pG*^H3>I z2_33TP!WJd>jurZqyz*3=mFGjz0j1F<5N;nA`hpvv8n0#G4$297j+EYWn+^WDKZU@ zXY@f%858tBE5JcYW^9{Kw}(c;iqn~TvU$40FIbM zdl+jdl(I4VSY^m;=tFUp1T;j22%jG%tX*MA7eL-!a^JG?NIpFr63GwEP)Fkdo$$~u z#qll)V>Kzvw$!Paz`!IC7IFoC9(-m3TZC|cJe9q4(j2NP6gw@$?z zn*Mlp3VQzvpp8(|X_@{r0i6sSV}oBZ^oHiuz+%N_b$wr7K_y#)M1?vH+$m2qzFbDL{x}(>#L$iMibnrIAi5w}n zW$`6r4cgGsAp`OWdVE3x(o5}lFk*zXnz(vX4f)#I*%>0`iO|ER<#t9|O8T<2qGE1g z;kk&&$2T=#Du~I+8L}h{)9 zq*HX>hBW>TT*+}0jDQHj6mpY@0H!gIFtC8r>Z!L5mnFL zYZUAF`SVq3qHEXcpdYZcvr{yoH$o`U%*?E3+2(YwPgdYySkDG}y1_Cay?}j|*;+LS zfC0=1x8TC;to+8%D^k)Te-csXOmyX#;K8SL+v^pBZgd15U<6J3HfzIyu&-v<)})}o ziq-K=JPxuifobr|G^gr0EbkE*3b)>-%VBD8Fbuj3d!f4r`VZ^i17%^WKeAmR0lYhP zToe{u9njkK3D(wfYx+qw;A8+*@yK!((;|ak7n}*CUk1<`&T=zCjNw*lVQE8;}>;!?`*LA*1r| zN`}DcRy|m~)|0-kKCi@}t_bOUNv`y5S_FR)IqA@o-3ZO=(1niMFFKOnzeX%~UteFJ z5juR7|5-M@YuB#%`1$!+!6WzSu_$G}G#Sdyat0_+va09vIOiSj9eBYk@bf(LQN#%5)V2W)!9dGFjv3HT zP(j!WExQZdaorxc#4jWz^>xlfg`|5;7kiL|?dE*MZE(?S!>8v*LFX zZJ!8)RAR$#W=1>nsYJrbK-%aRIwGIS%M(5R;EmZt@Bmm`oSdBQ>XJ{-_;bHa=a@wl z_5 z*m6L8^1uE_xAm5KOn&-p+3eHn{rE_M+|*9SYjT zMWGQK+TJhWv5Ga3r9d10l&(PunY>thI`YloleP8qUfp z!3H7-t>mQoXCp|MWuI}<(((dcuE}Ly{pg22o?(VyfthZ^zOs;G4l8C-{aE>;ZYC;qbDXNBFGGI*As2izKYYR=EM(HS!OQ6 zCmt^)1f*)!2t9oG5IV8)pmnd$R3st}{&4!8t5T#^DTVjIHY5|oUc3FA5H3XUE>bnC z%HKo*D**wR30<68i_^$8CHiM7zgek%T++U}+#-5#x@nM;UxccI&~aloX?5EqBsy zd_+oFYRg zN817?YX!+~A+~W?P6|H)Q;amEfn#2pHg61e9~|8XI2b<$Opx6O?pI;|yn;CF3dxn~ z*3xL50G{SQUHHbmzY3ugm!!J78j4xbE;Oo_ptAeu z?_ae)ROx(aw^!+HwYJ4+a6z_8$~Eky5)cqD9xY@7t9jw*3T64o{VxDGxXQDGu^^%b zba)Bj{Vt6Rws#ubT8(!un}JIJe+^+??Lu8D7c?IBX&Y2&noFGZ=4c6vh=>fASu+4q z0QIf##{9FD7ANruWoLOY5fT~n+RKc>!ie*V_z#nA7cPM6>I63i;qri+PtU_c4t|nE z66buX(~Kv1OKYnRL~{CuhVhJ-!N6j@>og=@xcxuD|IH0)I`>FHYNw1xU*p7jDC3c(fY2TkDY zReMCz-??vslbof*vV6JC9n5P`dCpOyzXzirwIq2hmDxmj=*8KlTYrvL90ad@U?Wg} z_m=Bfaw=6Y6nlskMN&*0)p?cJoj{lzn zpyT=*UF9=E?-Ov~00;jr2rdY52?6+kEkq%1AiUxT0EAhvY%f8{K5&5$ngvSV$S61_ z#;>4&3p}z}_=lZ3gS-E=1bC{+i)AbA9UTg=DKiBAE+w=9vO+4reyQgPCC|HPh^&Ib z!jh5W>I1hO5jAxNV_Q}pE3g<|-j#~b9^HhSWM0K-^}k+ETUa3~>>6BX5PrhnxQ>Q~ zmK=hCXdPhjpUaUz^N%CIeE>sq_4f0xH()VCB}C24?t!z5N6Fb>Qwfoq+LA;%+kX~7 zu2{k6R)SW$k5WeC;2>FTh_4A)Ke%WMfWp^jr=0!zCmcEmaQm_~_#ytpxqKO+nINVl z{YdG_e@=D?4KAu(72L^4UdvnHI6laFlBSdajHp@Yk^xd$AK=YkB}`|6)Y$*?@jA3b zsIUYGetW7f;FK=tBo}j>XRVmi>@0U(j0b0Q*J!#S7F8K!-vcf%Y;>?E!Q%0b>*6an2AIm}qo#bPF4s#D8@!Cy!@K z}#xJqvG@r{!F8OYX%nsPn4 z>JI!=kgb|OVqHN+@Y}N?+!j!`W+4=ois1|GO%Q`PJlm@3`ArYTubEi)JaYL!&;)07 z8~A5Pe>(~!vNXjEGFjm>ZopiP&>Zpu{smg~83YAsz^?@N4iJ~*JnzP9>+3NPlpkP# z5I!mNmM6O~NJTsbnh=X}_Py11ViB+R`FRL+IKDClc#;5i12&_vQwQ*>z$GFd-hiEp zNV;BLI6#T~pqX>&1~e%^E5i8pFt`~&<$%ks20dVLe!dsfOfD^Ncp?7)i7hVyqY}|* zKoCQqF*EDy(r^yJjbdPD&*?b>pBaS!A|Wcgw-sGgMq1_afv8Rnh78Nhmiun+O75MLyk*YYFidL+Cupd~@DZZ@3z z0US*_2-Lu=L_T~=1>Z(AXQ;2pR2jS~(0w6tW}BcrA^ zU55OCN8=0fT*7#Xw(f2QKECpv#npj~FMfU&KG4|ZjOVZA4(={n(l6HMgliqH%s3( zaexBn=f8NtaoTfmcvxcWhlR(E2vEPev`VzSJyLlS>0d`kiaN3)4|C%olP~nEahs4%P&@XOJ+ZCr zL3-}vR{&ImQ|I4eiYm-dzY5i$B2*MjeCsuj@L{WN7y^C>F5<-gW^aH0=SlLG5Od1Y zNsh-Lcp1Cs`yJ=&#A_Ij0jvN$*y3$S1wWo7nKX`^2;gD$+d`NOssmD^;qia989?#G zg`u)J6fUETjS`ZfKpSR^IoFg2 zQYUDK?h;8NN%GeqHv&DmOFcg^Ab$V}pj~iNgX7}dhFom;XrL_)XtO9V0tn;+thU7K zhY%zKj`W$f_6_(2U~GLkoP3|tv%aZh$Wf?P4V+rgGiYRGW#M*-cw}w(K@W)%0m}#y z5=fW{z+i)jIU*KNZHRvh=-gQl{~%lij@L`?oIK8N06tWCG`BW2`9uiIFop8&$7r1k z&pS3wSbpWY9j}Rh{f7LNdPYG@8O_@VqTfZ!A-3#_6_kWDMg&luv|HXdfW*xO0twLl zWFT?|SrY_?50P9(la_Sm=H>wFgtkjvutjjOTm!r=SZKrv1)quW-~rOS2uMsMdPERx zuU}sWt7|`g01=@*Ye6r8@M$e%D5L;I3)-+Ayio*e3rsyU4!E8mb9TJjEo^CTzX+;V zGN6W|1>cjwVgO`S6mCNV{X*sU8T=z1Q&aUd(+nx(W%)4q$lpL!Y7|htD;*vC78cyS zT+01@z^3HcHP2Lw|AP)au>SuA9eQui1`&{dd0s)tY^bYL+(;77e*7GsuF^Dez~rfz zA-J{X)X=zT(G^ zAEla8R}#VBVX@mWp@Q}kfO{;dOcm5xKcspRQzD1$!WP9u0k2x>t@o(DhVu7E)0a5E>Hr{TMcjcmm< zg{6Hb6!Q6phYZ}@d%`Dx(L@2BNQ&0&)DoQ976ko>(20RG2s}39$dHm-0FTFEF~mci zoMr&jg!kH?=|=rRKEYzDWo|+^m85CZgTKKU?OA^3r-+A-zW~u9OK#I4--ZId8U zv>$ISl?J+uBdFri0ilJSnLzgB<>N#0ZV*3Mbg%o$FT6)W0pJ0^(m^)3N~FZJKlK_& zQ@W4=K>$qvk*t=uWy`!{}>O7d{i1&$b^`#}hE3c)L!fiUDo|8$8U zEL94$GDKfMvecj#Wtd)dfBC~G?YL&63SBdyDxT%SXgTZU@Ef?&Hd(nkw2Ig+Z1b>0z& zkrEAh0fNurVL{6QnIb4Ch=R)y4|#`xSH-)|n_Jrup8g_<#5yJgiH_k%AVBeoX9PK% zz!{wT>w-=pkX7Fqx9-lfoO=#38v=EPlsr6If&HdtEyvX=h@2rkwv76M00L3uwJVC?Y3l2}}Yl#QgFH`#RU?YDfiJ%>~c1P6ce^}PZnHVI^@>-=_j z;JNn|n%vgX(t?I=G_QaFcEVH2I36M82#8v&tgWRFp$1h#-sUD|iQ&b8+1jVSv@Fi4 z3ZE_A-JZRs2ZI&!&L5XV#LF#1E&&^oo)xRR@w$w1NMNA{nXu<3Cd@FCK?i({wb7#X zaRU}@z(gv#K29c_Ps&Aj4rL#1qQ>pd`Swf|!bFKh6m&tWh1wLvm&1|h$1*cA5`#+~ z(ca+~ku46Q-Spz37^tkk7Q-s8v0MNCMwL=nxaOkc^25m*m*q&esQ;o$Bi}u9vT-#M zYP!As)I>`@5BL@a+^3t)lVsALZ~f{5uVt+x=+euaq2Q<}NqE5^jvK%ole`E#_or}# zzzm>Z?JPhqMSoQdafMG*6gB8XOncYC_ek#NYKkI^Kl+;GhVYwg8Ao*&Z3SXdmuCR4 zV!`XA!Q7roKL69v&Vf zVGOo@slWA`&@3c|65w?SY&Q@)Lz)gr@*=48H^1-n-RcA+b3sAGM2&^@b!`mx!Ryr> z)mOxA%>QU80p1Wt4&R3cb@$F44v4=&V1i=e6tGN)IfN^ez#X7x2}&7`V2>b+m;{Lt z=i~YCz5o( zt$_HgHtsX*g7~hpfkp0~xwl}mO$r|G#`JGlB*umlJ7M8#NlF0PW-zx((|L$BfQz=4qv8Va_d4Lk@;-Xho2&Em{AiA#uh@PC zT@%VQ;H}rSwt7R26hQ7P(KFm8(yrKnJH59y(r2UfeW5y*35TYZt(6 zn-GT=h!Qw>c!{t};YpD~BB+C~TQXK8N1#aJ7~%>*ZeIs4I01gW@w_IagoqW30ZcQ|Z>yt4D`u1+bvWA>twrpCNAFob zxsV4@43AF%Dm31z*Rbw{Os((WBKu=Z!3aL6JG@Ysgjkv2`?V@>C?aqhA@P(r~(Mr&#iQ< zCS`MTD=*XafLv(+;Qdf7aK5G7;F5sa2qo>L>@lcl`3`oS%%Ov#fm9K)JF2Rxh$#Wp ztM4tmTu-~X$qkUEZB_?6Nlqs^!NNch6f%HgFCr_874iww@O`j~tIjT_H_eZ9OizU& z5aWP?3H13GxbQ(d0ZHpVL@{92(qO|v+@uduf@kpyr8~$}Bhq2HkI21|R?Wan`ix%x z+qbY!0qV=>5;vJ?)ES;iMkjS?JTobxn%B~3Qp+lyo;fFd0obNJCl_yD`yA_k2B3fo z0+Nrac13(9_QKMV%545b=laE^xkU20i<`G^e}W~v57N`c+9Hrh;ln|a!h?%J4|WaW zb0QuM+-4asKBObVs-BUCN9E`pmiciY*!h0*&NIdM|3P4b zZ(~#*_x}vRCN%kP2=<{2AT{gY5V$L4R2f+e0NWh=@?ns_z`A1L)h$60S|q1|L}2#_ z9ChU0($?1gIR>6MCnS2X31~YK#e+dLp9MDnyvO90MJ97#&qgNX@c@+Sji%%dpQ`UC za`SJIDfMFmv4#&iUTs2m4JCT*E@B+z_BSS?KzqFpe+;s8$cQ39G1Ci80?qmbl!G4q z36^z$l0&3c^PKBE2mB{wjqYhxM}PZ9=n8`>WMFm%tR5OzF#||)g3L-C_l@G<=G_Wvz4yH>Cra_x<9##&lh zen8F-q{}dn0?0NwUtojG+edJuwreiV2tWb86<1FLT}FQB;9UN@%ZP_Zl04;C`_M9Fr3E{1 zlBELtR$m8{&>DYil6vwX)qzCx=OV+;hC2q^153qt#tTMabB2Ew`m6@YfB_+xvmdWi z6dxc-6we8zK{H^wAk{cMePd4J;w`KQaOIQaS;>vw*uR$!H8Q)+>aH|C+sOsxm z!^ls#F|}1yxVtlXrIa)qD{->7<=1928eJ1FoW z_+-geRp;{kd#DQ@j)?G+2fDp;Z*vRe3ZU=gIW#}(I%RuGGPV8ciYjp9A2|HgI9d7B z_369hPa_PtKRpQzch(BJ$zGILovcHFVUf*tI!Pp^d?S<3ud!8GUl8 zp%Suh{}0&rczY#M*KjUytsB@n!zK!q!iA0>*q8101&+^-*}k5fqwb5V;+=4Q1zJ!f z(V0&hE2~(0opHUD*usm89diWu3;H1d1VBGTPgg!IqyWHVC&-m_bh~bv-WNe^)6Dna zS2~1c(6?T9KSp;(3uN86>(zQ&)^3j+^>}L_hrKcfa$`1 zxO-bRWid&yS*4IG{a57+(N>BIxA);s4s+xdv6~ELvcpFndF0;Fa|+DN1i|x}0%_Aw zP?9okAbii27i(8t@dD7MCw_KXblsaK@UKhQ7PmA*1Yu@S2-QC}W`zSDdc0xnLWev0OL2_L) zV|M!l*^@8J4-CY2vNW+=Di&`AZZ88JVczdaUE`#i)C)nAQvRJ^-D1apRH?5SZ9beE zomGz|_8&O$!}yubUfjz?xuHy5XOqv&I=SF?G_E z{lBI%7xNyD0kN>EP5WT8#x{Mkal?9O#QvtYrN%~8NHAe&=<|d$4z0;S-Q8Z6Xo;3G zN7?2GI{&<-?T7GjroC2*SfMqniV=)HzoJ%Uz9kGGmpMU6nrix7QR;l%=psMy(wxX^ z6a0XClg%5}-bsAPnmHD0@|WY@3ATT_a@ccT^|rEnf$kw~z->W>IFG&8ce4b3g(!-N zccxR+6z)5DY7uD8CUgesFD~EHh<@)Q+d1=RfLnoiX=J#fquVGNC;vi(ldnqZI*~|3 zcfiS2y^*-h5%=o4>OTvsjtkB8r*=pAo{~z(;#agu^Jn6C?P8=GWD*vt+~!YN(ne!t zP7lnCVl^$jwtQRRz&@Fz8;rgNbI*<`(p1&Xg~D69S}@^P?l5uX)b4hgmP6Y)k08~1 zVpvGPZtGTiBY^ zvAUyss4|(K?ciaeq3I)<@aF~JHw;{5Zay0zr;Ka*89@yMo+i8OFX06=IcIj!z`R-r z9k>QR>zJOg#}^WUz<{9>PW6Hxs}}lsxwp>EyJ~{0?DGwdkMJvt7w86QD%$oQTv$AM zF^eYK>}F^VwJ2n%$qxTI?z~_w*naq)Jzg2lbZWua_LO~=8R)|R5L0<) zz?4nHQ{mQr3xd31<9-{QEqyV4^ph?IB(cG9MQ?S=McR40>R51l`!=hEec^mX6?tUU z3<;B}qo*smcLfWC)4)te22sEi9AvH&1cKoBywXNSe}T^C5gtwsnymmxP_HZOvT7ef zbt@hfHx49pkOU-n5Ut(a>=Oejc?3LS$gnM7u?UP6RF4Fhn$7J2NlW?USD-E7O)*^!lk z`t!mJjT=W?Ccw9$)>>l7$WCsRob+Fv#i7OJr^Cc4KP0L=kEK+M! zC&1)duYT@6Q?azZ&(Pbx6|Bo*cje!JQzRt~bxs#2H5YTBBFsUegqNRMi8=y$f}pTV zAF>an6%|~dEI~bS6X?2VP=|!95~RhT&ce&r7jeU2QY#X+L>*qvs-20@SNhzHzIEQS zFgz9_Eg311q^ow(1aS2h>Q$MolU|mFJ4VRlic=9zN4}~z>X+0XXizDn7=8O0np2$e zDz9r^->81=%lBTM;c(@lXBIGz0Rf`Q=RDS2qEWfar4I1k?Jhb7X;x#9Q4p&yNJZJy zD>#{lZ#3J7Ky_caJ!&%Vwtsk%81egZO@x$EEI#0-z7I0iw%#vX*yX{Gs zlz*^9%DHRPe`t3%@k!mhxFR!Y@Oz$yiB^A*3bh;0Ddh8uI;bb}B@(@v*qM_;+6C|2 zy$eBgJ(7!p@qsXz45ro;Sj|h&I{vwax^??DEfgQs!z^fp`u_a!$zcYd8&LtVP(-dCg^NfczRt6!lOZt>2?#Zx3&-McE(#E-<^E&hrYVEyDFA{v9*67wStW&Y zZ@8UWJkR&KWxS26n8`LZ`uq3G?kOoZN7i75C4_j8-xw;ChIyo*bLhYlp^#c9C}@fL zDC`dMDrAJ4Kr`QTi2XMS74zQl3A#~s5>VWmzkX=!K30|&q;f1+DC-g!PbM?RzifEI zA~?KnB5No#91`p2(m{6mK?iSk@wWPIW6L0Lr>#yUm=E2mn|nmn+YB$Zu88CP9q-YI zNf;oOpYj#fTIp&(d{902VA!Ppo>S#j+p6eN=i5<>t^#H&*d^RB8+WoxAK> z-O*Q5DE6g!p*!E#CG$^*fTjjbT>@~6*luC~1q<07p~U<|OV)?D+yl|;M}|`Tuh-t< z)I@Y-UQ8T|Njmb!MbrVl8krb^d+#E$ujw5XQht!66Med^-A+}?Kk>e59G3aWQsfd4 zP&G4@2Y0v;9_@dOoSFo37+^*mGme@$~xSXj(#`TFPrBxoDlJ>3@> zzvoXg?m16fKbmPh06G*UU?vVUUg*}I)*P>I8TfF1f0Cno1TFeii=O#^4QbPw`3H5H zSp+FZ%asB@4S%lA222GhGbxNHZufENO)9%rFzhQ1m~~eTEFjdy!el+B+%qWdl`@@z zO5rmjrQB^-oz=OKu`xsunKtY^_bP1z_b0DFZg+!l_YXWcR4yg(4;b`GP8e%6e*%P# zrYcQcfiUe|rrRYwXI%{`T(he#l?P*%fG)#4F54Nij&XD|-o16!c3Lv|q`LCq4IKB# z3w}|R5CfxHDu$drrsk2Fk}G?bKg)du%Z{D=o022Wj=t!<>se2TvH4yR)5*ZRaBnSr z18|;*DIFSl2GgKFFw_XYFe$bv!QDOH?=jf1aZ>BIN)crZ&|Rlq+XMq@mkcH+uT@px zRFNWZoAY%hMTW&;l#_btv#@I~Cn5*BJ+@3Pnub#qPi=Ro5RUHKl*{L(Er4d+ zh)bc|JAQ}XI9}T-Qy=x|URL(bms_&NXZ+f`76tVmjyqI zYU4R;UsqsOjI_nb5p;?SlspKA;m#6aVMcBO9Z{?PlBU{^_$=;6UensV4frLXds*i9 zG;-!iG|WgeRgvXuQzJKM@=m0dF&@KAu%%Q>6ja@}A2q0#+}uaMG1 zHa}Dq=|j~a)C$0S6j^6yfsv8VmMUsCwOa#@Zyc>g?q z$^hngkAQ6)8H5dlT#}8P;O(#H52Jx1K01)qG`d)k`*(!!bo{!PM2mJyeANy;i^Te7 zfj1Q4_(grX`boW?aof^){QA-SG9l2Xp93%?p&FNAPwH2deIaM#IreL)Ie_aF#BO3Y zH@CiZSg-qUxuCoOk++d{I7I)2Hr|?x^NM9h7$pr32_!io@514Xmt7y(cz4mQY5&@J3M|CrDf(<-mmcs{@_F=m#be{LSFom3!pQjB;cXf0wmc`-k z8Z0@Y?(Un^0xO4e?p!-ec;Ewo`Vg)F#2~r4Zc>3w?mn~Xwl@a3$EwV8*@b16yefiO zrA8Va^f}!}l4@TU%KLKK+gKW0UFefWm`(G?cps4zE?QR$ z+~pV13Q0^mFe1Wp7SFrwi9^51Z8%Oc2cLnAI6s7wov5#upmZN@2hBBNuV9T4nXg`@ zA-}eA4g=vA%3`ld&0(~Em&xhbn8*SoK>o_IOmbpJ81%{kzoicFJjh3ue4eD|>lz3# zyL)Qk^~&-M(Ego|URZxFW{bd|b$ZSQu5KNWI^1>2QVHnZ$!!$OWH5`$K}_!>TO5t0 z{j5R_go|My4MWPhNN0mZ*6ywLxR7I2R2daK~TVI^c}t% z#3G2}&rAwq*i=7+iZXwf2)*<&B#z!Kj)D2+CxHCVlf71W9<%a3&ryPB0q;#y9J}q@ z{)Z<9w5Mo=nd^1U0Tds18h}GS(V&{`O5L(P0+4`LbPj#MO3HqE|xaZ^< z=@!k6M za-e*Fak-zWu+=qvw{lc?DVx;^K#e@u4`!--^pwGFkH~R&uKI^Q*`E z-*k-omi!mYV_-;hhhr)w`@zFZ17Y)3Rgho4jo331EMWnOCtRe*J9r)$m*%27^T zoqqb4x)M?)rjf=X$zE{vY;I!oJR#^Hm7@gf`GLUVlO zcl^l$bq$7s%}IamRZmz4YT;|%I$4k!t|R?ptAmFM(2}{yDh4`V)vGnodXS+1SIlR+ zM=qaSRJT+zZo$ZRrM{Sps-94IdHR50g_ZWHS`1d%QeiPsEErFWXuB)e%u(-Tu0RCt z@$U0N=E23zRDatvjZSZIVVarRM*YvOW#OAmMJd&k>Nd{?3Xb&!VBXA@Z9$4TG1LUS zM27;1@J-XNpyn6wM9+exw`aEY^b4w+^N|)ZRa=sYizn_v^z}T<1$g#ahV{1)MCbh( z8_xvUjaH`c2v=cAYTJ+f=fYiuts=wS{AwqkcZQ`+q^%mnywPF~2CNct2|;C@+Mv~9 zxRFRlzQ80Tq@g$$-7VIup11oBxPy!DAEt7k-FVy`U{3^iz7oB$UWTI$x+R$7QF$tf z86`_)bs{*HfYx`y^E``fgd%^xIeTkilo%Pqu%camsa_3qOE+(S18G1pI$DjO$-EY? zACaj?%%N$0P!=PA*7;;z-M+!R6$jpt9guX%Xrh>zi?3;|&po!`WZ!?&((mfmcIwRK zdhsQW;B|ap&J}9SC8eKtUxk5wi>8emQySFPhLM*k?Bv-IRRE=M%zt_I^?(9;RKZUe z6Vlqas`^Z;`wkyd@D=aK*V3H}?=CDs9a~YXp`>tn^s2c%5KxHJVQi~Y5#m+o?aP-% z-yn{0Pka^JVwAtrv3CIv9RFe4sp{833uf54%Lk0!68X0<=%ur7Vik%9ls%~}%un58 zdLFp*&@l>>7`;x{$!~7W_}og1P%&qU?X^w{7{N8%o=s0k_UI2N%IO^Y6cy60($mHW z^^*+MR~YUxT>%%m+AZHDFL>)*UDt_CHix&NcbEibjli8+ciS*kU9KqFTQ=pw$Snbe zc$}!2pN@Bqsar9Cv$Gdj;+xnZkW66Qu`9^Zb(jud8EtPA$DE<*RNIz{zgF46C^3iU~O{!C*wsqWWs#`4_M zRe|jZG?3PZurVW>E|H1C?*WulrThe)oaicUGORbPnQE~21P0DdMrpy+1vsO=!gNXA zHPlg>D|XFqA+4b^yYmzrn%Q|XrL_<*%$HmJ48Y)ZN3&f975NB*x2G(qoY@`nZ|` z-ue70!)WN3qo1HDez8fh%(_nRX<7;3cX8Tw<7`gze->>9=wYd!U~}&p>3F{1#m>m1(@OSo1`Qs}qXr(X{7GSFyTGN#-4!CILNNQJ!tFN~SY}dHU#+ruKNk4~P$!R1;p_eV{Hq`q%F{T@bC8nF5H1lY!nWq2t=}+NrFYv?AV@igA?~vBKszPR^+nakA?WK>t8$P1DRg9_OIK($I~3<$#1y`@kZj{o zv{SqBh+wqRfOq#fF0IBX3%3(SnBS(S&cynZas*l~ZRY+h?<|+_T>5n?3BN2CiAWOU zYn}WpI<)mN$L%jP-p7_Y;=^Jh-yvLC^=I`yj8bcqXP=+Ta9P~$Yc+dy(ev(Y<^A;! z2NZ)9=j9u|JmX&&u^q*?8Z0 zs12iAc$k*Ws`=f7n)MdZ~HLnX{rSK{NiN&s9rh~)!JL+ zN*TW(ONfc5o==yOO|EmUr*VJ(!+~8|v#?!E9jyB`7#tb5D1gJx;)!bzfXPQ##eb<+WR1H4iG%*qLq|FwjsAV8i2@ zD`nk0Ho59lRdVIyjqFj&f<*M{raIbQvg>QT6iHMxWbgRjs3}+QDSMJ+U#5IL&soZ3 zU=ipmT*0KDJT^|kSxVtXcG#{>hvldGC4F+NYpccp^&{C#nY90gy5sK55Vf5GP^>6iptDnvRt*zg`J1MQFPXB z9<$7TZk}0eENp{4kfR{Ab*=h7UAh8xEU{pIr`EWHiau2ly{J z+#aPj`JFC z;5x_ZPox zx{D3_MzNRMgFFIk`|XlZy@j*~ONWOOJxf=IqaB3fMVvDaRQC6G?8WlnSUX{6Xm@|q^=`7s{Zg)l3H z#l^5&?$Hv@6UIz@_@0tDy@W}@cq zL6bXvag<3y^?4pwec|A7v+RDZ`bEzQer%0rO{Rbu6`rxUX0}yk^zV``+w80?k(B0s zMX{~bk*F=ZP`&!yv)C40a;{N&F_Lk`nr}s7m6Nx;oe$(5&vqbsS2Yh!j1wO**n$8Zn z30wQkx|#a#<*Q(-7|+9Fui7W!nI<>=P)?2csV?8MdFUbjM{U7e)T`nqYb%g2El#K5?5?NNCf85ZiH z`XWi{qs7Va?)?vO;d3a2(c~=Z?->NEr>}ow**B zH(_=(&Z~VrVa9UPWPSFnjg(sJy8A<+cVv#IX&L_0i?1Hx-=8gh$dE&-18h*(<(Uyg zeswd0t5*QcZAjg`>@D%Eze8$ih|HXFNaWn?Q1#x}`>yl=BMzLSKPh;X<=Yf+b^{KL z{r3C*K5{<7KzTp=cqnGu?3H?B2@hRUW%rV6cjcQtzEdkc@>j~`={$-(;ltvQWZpR5&LIoY>0Z8$0-W=0ADo>g61|I>l9I%Pj>{UT>sYYhfu!_! zc=Z=ouUNwpsi8! zC|~g!5r`ZtT-C=<&JjZQn{+=qLC-aFHqVe=T2KF`bL=tcP^f+bJdN}60|GNayH4f+ z#fjg7i(5t8XNNOOw8^ASCUdJl8@{LAH=djOyvs8X5n+SlX)yZU>2#k-l>_H7T&Qqn ztWrW*-yYnK=~bKeX?HYG`P;7gUb)$X0_E+Mxt2p<+tB`$4-Ey^iuZ#{?5c&Q)QzMR zyYo-Xgk5PaM^eOVdS5XQ!Z3$TE<`s*jKN|G{1UBpC9C*6$s#=(&}d3e=y{)73&Z}Q1(tLtSU0px>;A_-jFrTF}^ zhI5AESf`b*3GL(7PwXBlfY9x=PKCp^@L%tr=DhW>GEY~68yto^ab+JysDJ-3pWg8ft+O+;@p>xlp%HE$>*XFL@)_(_ zZm&;P!NG5C*DKGSb-F*hRR>m`VvL96BdX*0oB}Q|a|Kn?S8O_MZS{=VJwMGO*dLzl zyB3yA+tB#ej`33b46b3Y@?qu>TE3BgrJYs&0Coe%$q6?F=5(Y`-O*9ni;ArCm&er( zGj;eV_rv12U%v$pClA*SJE9`;H1SFk-eb+JH&YAK8Eh6;tDL_!XVfP$yV&KM9N#ml zQg7^9Aeoy!7I;Bl8&U1gwK+9`Sz^(=Ce~0}xm1(#EoE@H?0Hxt>cuntr$pYEn*nQ| zd#gVF^oBBpy-vzvb$uT=3^LG+FMX$4DmVC)NZEz*E2kF8VnWp%=}(6dYr;wJn=M?Xq$oOmlJ; zA3FG7rCunwnN9=`ab0o?=!B^Ih~Y+=m}ytptNA;SV|BJXoQ;N)-($mB%sGF~0r@Er z*EBNU^Y?9&19^2`tp1k_@4-$OAw>xeo|SPS;6 z%N{(RZP8H9+md%D$6V9vZf?OTx|_p`S@b*rjYdtkbvTxczeq6iz3Dxte14RrdqaLz zq%Eyhdhd+b-0~|ix>Gr7PbnX;$6ubIL$vlWWVd8ZgWmVe7QZf}SSf^@d7;7WM&OHF z$6dpMF{~%GPyp!%fX8|uNkY8?@B6_@CVqBy0w~A+0zGU{_yF8U_aLHGn=SfVR?j%o zFfTSo7#k>41R@XCuU*fatEW#%z21Ggin5F8_#n^L7?dY?e{MzwKhHm%72Z1!bs(SP z{LK)BB`Srcwkfu0*13jpT#WjyF5<&Se^z;1US2wV>%n{Z0YsM_Q_=WO1y9B`x>y>m z#hJk2zs1>b3GO<*?KJmTKm5ki=5lnD&^Z%E#wtbWPF$fWvb*0(+T*P)IkXcFiftCN zatu1G{O#;q_M^g_^P;+r8ZdbPNqA@$*XnmVf&Nbqm}#yJRmYH~`v7&0kh+)C)EqEJ z&^EjP3Io)JClov)>F5X{7pJ*6tZQ<_iQmMxk4s}67{>|b)i8*ZXtQl6D~N|K-`8C> zhZxEuj8-BuZjeCs8TQD}rh|dWZer8q1J5?;4+*NXOkGxQ&ywkn;nX`At%{>&e>?Be zt*(5V$@$%IzP{DFMEmVU!>iPsa|=8^mx;RDC8^ivYGj_s$YJqaa?l+JF?J|dF-j{+ zBPeX{_`;7)$RL&d_HpnHoMa1Lp}YM$YHHMTMMrGL^Jxub<3!E|bx-&XY-AMe%HE;k6{(!_%@ zcaNVThAsh-kX9)P6&0yL5D)~VQyQc}l#tMo4k;xB6oFUiR7yfR1QC#C5D9}0Q9$xO z=e_S*_x|o5cdZ-#=hB%ubI#uT`R-@W_wyadp+hXdk%Iz9i%s7KW@PN_>&$AqD-D_^ zIQ>>N^gPz^yp~jqMQT_xN+H&Q3u#=@kwR6InxyaDUt6t_@B7KuJ*(V8mPKH;wLkEr zcZ}vlrS(sW`o(8et1tY{u207dAb8dw>6ygpkF>`R@(GWqWQV|ecQZ7Wl;+rO6A7kzH`aOL);RQcu$-$e!G8IQ>6)o+246cYM$4{+b+zU_+V z-(rXL5EUF8orMeSrQb6yZqKfB7Nvpm!ZT&{X8IH?c3VDHPqh)bK8_KI^i z`akZ#=H*|Gvym)vWMJEzH_%&97a_PC4k{l!) z$K19Fl~2UU8%N*q7)qRA6S@#mUobDeQ{fizKrb!HX0qY%+~O%vt_Nj{)CZQP`&O?0 z7tLH-IecO)?5l7fV(H+X@A(Un=@=ZBDC*QI9^w`&VF1VxzhVl5I^~74fS4h8MHg6V3=e?wx3Sa9G~M_Hp==jWPzc zItV3p-KC&-yL;xml9EP5^6kmm-M~6f|2SUE+@;p&n zQ(R!KtNl$vqJZZn-`>ul78yHDi}T;_7ggn$=>J$ze<7%4zs&0OMb-_7l(zawdD~?& zd6=us?T2fVqF_sxU_ifAWA}GYoz9nrmx@`SeH3E+SI0{?+UeQntRNbz#X8w#75$yf zPB}TO{)k}VI`YHG-+PgQDe((or*qS$|4;znstEoW$A(l9xC^gUkz%pD7cPt}c|F$* z19ZoLM8!R@b7&bF+Si!Ab55~M2oLAD`pv_2fUKeeCe%~8T*W7sY#p2wYb)AegN7i5 zm)t41_7fgnIh1xuP5)Zd!M9d-JMde!E3QM|@Od9gx~RuX)6N!Ru9YUu+1#~~laWOo zn=|=w(~DR8=NJmnVz&6`&Y{NKNaa}l19Sge;%4J}+*Q>?hokq}Cx;x)MPVDke*%s= zE8wza2VA*w1?Gdo;lVxz0TPIcf&vCW8X6sNx=Mx(!T_|wD{UmbwRT-#77`;*BvEEOiTE%WIl# zQCCxQUzv~^=w%T##Tgs3`3D3ru(3sg8DkoVp^AWDr9XN!6r8J6K+wvLZwA{F3Kx}d z89xV30}dc5pSAnY2&>?NEYZ{O@Z6doI~7+_l*1Yh4LH`;x3oS>h-S}=NDtG;^T=(x z`pSzyyFmFjwem!Ox167y6Z9DhHN%@~O|ElSIw2E@!zrQdlUOguka#VH(Pv&XZq7T5 zTrn${=Vs6ez~x*BA8B_fGQ&@D<8Fx`i_II)k>oUaTO=x4Id;c>?VLDDdIVFJ)6xqF z8rLs2rBI+R1x5gBuoDmvXav7*ne*70yDJl8cb&n@2q?^lfPKC!lxPKJAe7xKBfHoT zb0X&<4{sJ>-~S95X!T#KeV-=vGVNBBZSH zTq9C^%f=P6*ozplprVM^Q8RT(sSn;r>FYMSDF_dLMh&|$28Q@2mIy!m2ahvXIa?g)}!`h9C10 zYA?ko1TbD~FrW@dX+YXWKDceIkzJz3$`Ipc7IFQO8FTqQMI(c&5~cyJRN)HvoCd?} zF!`zZQ)XucE+zfEJk`!R)$XwFF;IOo&U0&5?Hev_5?4#siaU0MSYV>i{1z|oDeG?M z7R25m5V7w@QZCmSKB?rW_P;^xm*R(Cn*CnYee+=@F@7`XAuSy-W(#xV>awS3PXT36 z_9CIOVqs@QV_p#3vXI$#He=4d2$Bk9&Vmztu+ zz4HMfJ`XN@NzLqFiWDM_Td$FWYr;?H3~4SNVCT9%#8S+OR{r!nCX!zBMpr$W8-7Yu zLDu@19e=56!PsE3^mSsoUP(xl_cBjKndkYrd{JMQ(*$E&NkIT1qrfP;d6u@}dP8ba zhG_cM0S7fUqpoo~y}O}hSBy^JBgWMZSzrfHlQ8+(qQA)~6`73j@XfHjC@cCx>foxd zt8azrKe5BRcFP!-i{d|>y?>Z~gh=Ma%4)rPxa0O4+0 ziBG;sd%C#irvxIY`NoRB8Y|9C`KE4vyUdHxZNgtSX*|Vb-+y$?!JuM!nod>fV;q}; z3GG*N#MPGQUdoK85$6=4Y5TC?&2~fgkwfd_=zV)?_Am<46<(C+~r*K=T)ggiul@e`bd-WFW)>ku@UE8we?WxWN7qJm$pWu zeNSOAghX-ng^r8)pyRG|;VMhT4n0XmR&|oN`TjlTNQI$O>iXY}MWj>rckj=Z)kLOd=J4m(A=+O^ zNCNg3`MepgFY1TN9TsbBy|DilX7PJO#d^B$bYj$L8Eq+U$@HY;u2z@4iS0LaE6ZIk zevhX%$PaANY`|&The_dAIb|mbDz~htB%YNo@Q2Eo(2mlRl*wD#a@SRJ3Dn!(f23p_ zi|{b)CZ&>wI5ss2&wV`Yi6y?FWk1RGU?geRe_f8ocJoS4gI#rUt!~K0f!Rs3Q?p(! zr$79jo_zg%QD^MucSh|){ll(O?`3z z$IP66JB=yq$$JaG$@lACHkT>bpe{U0T@b*qX>a@IhrK1*aP^H(qJ3Bu=2SuFGD}uB zPi$(*iCn7^{Lu1n;&&yT{w!HhR98)o1T}V@cv=%v#%}=mpbZFederlGp&TQnM}Q=eGnixYWgcKF)$l-?k9h@|MGmAZoq=Jn64HG8(4 zTpHhXx76hc%J)zsu{PE^lqut5w-OOgw$@Q2zfJ>FuM*_eva;_)>}>%EZiXthNDFe zFM4tYJ&C!tcUheGHFl$-nz-*zrG{LdO|D!hYJfp`i+F)@o94K#u9@Mk;IFQviyBv3 zx(YZq1AQY2lSS#{V$c$tN3IUdOZ)Yv;xvMktd0DXUf4~xo&U-4 z)-_2q*7MB+qZl*JMZ3e-A~(}dbPI`yDB0WR3eFnpJfXpB&$d2>y^K|64}n0ivVCuJ zCQPKezuWrrl6lgr?mJ&=jA~?tdk$=+eD4*e?RUSvdoQV&{YK*L!iXSTA-{w~KTr36 z|ADU-?SxG!TAOV_Uol9Ap59P>;)1z*`*stcu%>|OaN}S80TpLi?GCR`qcTuw@FF#S zYYu$6xLU8}sfC5er%#V@T)In+#3d((0gQ@QMur0rdgL@TZR%q6!61^PN1i$_YpyaN zogY550+|+I8)U$lkpaXxILyneUEU`Fog@r?_0K0DKn{JbvB3 z`E$o>8l=QivcOa)27DumzMcXeF%AG)(A0hsGj z?~3=K3%;?rLyoO&Z3?{c7GSR5UatC*(Ql7Zv5rw={S2Nv1B@R6S&o?duU{#ux@Bi) z1xRT$|7COKa}>16W{avO0}BcYqMg(>A3uBcsI^rILJ8>M<^}2(TmcT(pku}SQ*g>y z1Hlp{!rb4PKLrOK)zudPz$88VjN|w&G8qJSSxH638Vvgg64ZnT7c?*&8G-0haC;B1 zjuJp3gX`@4rr|}Y?1-(ByL% zI0?L@Pvvgl$+;oGWLWQ8u`i@d`wiX@s81>$9%ryLY`TjQ9kE<0aKnI43&!b7qt&5< zx}~J0@#olRV5`?7_Yy)lP)s3wapP4Tslv4BUa5&?S#2#XOoWov`SI?dA!hA7rroX8 zDwV|d58=K!e|d+ZjFsUx&wKm(42+CAiw;&EoQa>qSIV`6jf>g=q7Hkr_E*|@n$-B{ zyBps%;AVjL_vtbnIXMmhk3}6~rq%QS*{afGe*bZ0lXHHggbQq$YhakkEH7sQ!+y!T z9dPN(LR5ikj`5SfIw98J>QxH4?I~iQB{RXTKnLR*Ja%3wsju(1rR|f zZD6Sq9O_MgPXQ4A_LswhFxVd|Zxt$3Lo_=A@n&_eog?`iUW^u5cuMYZ?Qbu{Znhf&LnsqZH(7tEEg9Z2Wbf01K>C40@l*ftIS4p_1)zWy0AZj=wRUJ&FmQ6Z{z!dtIw2up z3cP^XFJO$}AuR;Bz`W5b6%~wKM$H#;E?**_w9Lx9)zIY6su z_~P-xAxD>+8mP)i1K17z(sNoAVupss0CYY@6iTBac=7;^M+b%`CKhzUrL80Wf)w)mzZfSze_n^Yuc=qb zW|!5}BF6+Q5g==x1gu*qun;X8@ffsd$8gEVpzGDz7(`Yu80o)xM&`b~HVtd_=(_;F zXaf3$Q3(R*F`y%Mz_h&$0~;`VB-druNdWib>gDJ&-5i2;z`DA-(WSHz)^sRj&A``j z{sRrw@NkiABP`Cz7YHBd@;FprK&TZ$?`rfXk?R-}H3tVlfNsWYZ~JuGoPlfvPOxg8 zg|i^r)%?E|6q^aMctc-56eJ9~Y72;osldH}Xp&gSbb|&PAKXpHbN}?Q21L*n96ShV z>wolT&q+iS+Sed)fb|#%$WEXDMZlSko@ZpQ-0p|MM}VwG(VZx&>7}+Hq}tg=<*2~du#td|IC<(6pM(Sh869UUxKSa3 zfdR-dm7mZ?Z5i;yohPapV4PJ0{cH>$1LG2)sc0w@dh9jnzoAhFQ6q*mck||-!UBxe zxr4nw;g24b&)-4y;p<>KY4WfCq8m`@hyFicXreSF1VL%;u;zkHzyRQ}e=3w657`S?r1Rs)Q0=_Gr)?Qf`{1v|7079M$8wl>iD_A zs*Unmx(qA+BEv5}l%nFC2ZBT_5{R;`P=pgsd zg^`E0akci(rOEwWP;}-0SAAY|@jv4WOdxTfi~AV_g?BEXTUIs)fc?a&@U|{vq(uxh8a>2-`2tFW6ahaO1CTti2&$7| z69OzrECNy$5-7+mEiIv5D}n^RzdcQsCVPQ5s}{YUoO3{u2hP4V0D9195LEI*5>m_3 zu_FB_$VHd|i7*PejgSdtPk9fpf7<|~#2~#SHyi_UKyifPm3BNiH8s+E@*Www`a@nNHI^9R78a(0=UR~z07ond zNl7yh`zJvt>9_BDbL%>lJR@uw(OZ-s0-1pz^I@}v28hCf00g&K#Oz3{w6y>pe2BwXd-`;H;e5e<!{QDV6k2Yihz=&VbrO+IFM6S`N`MW?b zojLC2Hd1{2t4B-_AMcOWe-2fA;F|x_nM=wco#F@j7dGBrYA>G}b(ukm>beD8@OAAPM$I#u~oO^uVFU~q= zt?$nV%f&b|&vVy~YhQcs=f@{mF$^>UGzbKOAtC-z0Rn;dfk5DvP>{eoY$Nk);18Fh zh^nKajj^MPp1l!7M$ggK(#Fx!O#ijBk-dYNjWr8B_@#Yq>gZ_ez|Fv5^*_HrZ)0!5 z@HehD8QcWbR$R>i0>RRQ{e#OB$TfpNnkyteeo%5v-dk|d96u**J)SD(K=DiewbIpu z!^kF9LR($cuh6$=VxDc>A<0r~nPk*a!Aw(Gk&(UeUb?fmuI)#<&%3{iE@@EG&6Hnx zDBZ-ihnuTynRT~|p3uY6`Gs44#ms006f*y3LMVlL2HOzW3o?H<3AlH#S9(TS5Ny~R zWy}f?G}yOP@u?x-VBaYU!S;cD@=RG2P4M6KG!%&G|E`XSfd2&hq`g=C|MG42Xo&^Q zwjH@wR#)v@T*NX*RJn;@V}ECsmyC#r_%M*jR$fjGWp9wwfOK_tzkKz|ber+tlBD0$ z(}&GgTg2^hy|;qfIyk`GVu%b34E&b)9JY#gNoQw{@CXQ@Y_e_zRfy>sb5k81!v9&A z68^@kS;{EEfA{%+FWU!0Y|!DzGBLXYw($O6qhWB^?MmzIbLW`iS|kIc9_Jw5H{ z?Ce}2-T1YlC>fEGBBP-20s;pIhZ`z}Ca70UZ@6|m()AKDe(X%f{x<1vozj7YPIIsg z8rge}Vr2{32M-SqTH>(0kI5-1aN?4Z?L$LDzZTk|EQ}2uMnz9Wjy|g@0Gn zRXa^)=e!95R?fO_0c@(nVfp{i^=_<3Ar<+4ST+>HP zzyJ85Hlzv=^g56ru?#x0eX(?Q&dxwP0vDUyqhew{7kIo!hn?DLF`N7v z?$#Fe+JH~&!_>mzj;Yux!NJG3#$^obF)a1#nP$?fzemHLOXhTet=WKxqYRhqvOa;Tx~J65vSwT z24?X6J4&kS3M$xzSNtAVR-FQt(~PNKcBmijFLl10?;r|FN}_o`-g6YHl+s@?3EUka zu$T-Qw)r7eSoTJ8V6xht0mRbE%5A@TDx?J&5wYBAj@|3wdUK8*Quw)0 z^zq?dt-&$B9HQCm!8K8+vN_0eNPEFl+I;i=u;r0oI1rO9_3>{61+8Y?&yh^Au}m?n zRJRR$dd)hYloVpIFe1IK5Pbi@Ko+k%*Y=K%?dfs~dV2bgA|mpts(*(wg!46O=^=C) zHNT6A-cxMD<9<$6&egd-c8#{O(eUPwqN$b%Xa9i4)OC92Y7 zXz{E(&Eo`hf3CKBY6_2ogQNLs1zq33KnkZD%;@@jN~fo<58;f?1B?IaH9PxM9JQL7 zS~9O&WVt~%K{rxEef{yxZmGjbmRG!7FfQHE#f34De#^z*2{l%8_LmDTm1bj82l zuqcRnt+h<4c9ZE$#oLYmjMYAdmbKCB0s;I_>JX8bS`Rs*z|}E3mkNVftx%gUmPy>& z5F*Yb(G2CllwuFD7ee!il}&VF#+TL8^#fKj6-LrPsV|}4X+M8Hn_pOP1B1mHQ95nF!omV~1x|5$zTP3?_Nhjp87o19)2^tiD`!|( z*xA;|SLI^$h`6}!3}GO+-*soJ%(}XZbXrn@6i*gwba#___k$_-hY|CjprO70%pc>6 z?enYm)?-sHN$?xMX!s+Sh;bIMr zMbAsElamt^baWPy!Vy#Omx7iyB!R_5q1IZ<>+#+tM>a)$C;2_M+2XU$i3&lLaTRc{ zhMAXQyXU4&O>y!L$-_dV=!S-Yuix95DC`DH2lj1wr88JMp3%3ijuWQLzkdBvE!Rhc ziL+v^ESqzS_U)?_S+Pvf(CH?34vVRh_33hh{&=RZT8+*z)HM+lVio2S@0%ZPc9U?O zA*D?h1P+^n>zU#FE8u%XyskfOny&+ZxV5@Uhm-Je+OMGmVv**6`*h90_JP}R%croA z2EyaKw=}>3HM~4n_|w&OGH26bx7?2C_w{REw44YPVtU>vI0Wk99TR)EM(*e>CMyI6 z1{7kA^KKsiZu+Xs#>%Rzvw_{Zy17yK^r;mrZ>HXXs#v4e`0naBgqSB*McZvXApA#Y z=(_jgEh*5_bzfwXbTHR9R8)9o7__0OeC{jz`!bG>tXOgACL9vjYn3SY&D53xp*6Oevniy|8*nL zsYnv_vMx%SZAzxV7E)rbudh$$_e@Mrf1RA14Dv*MeikODswY+v@;6ls6(NZvZDi{#6)@ znEPWIzvnA<%V`YK)#c?6j*eBwmyxu()E~{>nC!%1A2~N&uZ0(Wc5!$!JeN=xO@#R; zd!$C6#qwNDD)Pa^H>5r=dAS0A6wA}LeQzYX*(kAuP1@635>m6QM$ay040r%7xUZEkL! z0tdR!$DHaeq7^$yk=eOCYxv%0;Se;Gn`~ zb17I^&thr9hEjO&fV)_g)74F<7RLJ=U5*V-ovjfWJSZ`S?3vXM}+eU+>pKkIv8OD$E@0a^%uv)zuS^sp#nkqceiv7gTAr z4w!#g(zOtlROYv%=30NA2s;-h%3XMVhmEI%?3PQlP_M?~?wPr{u^KB4U@Yv$R*8s- z?Hp;Z1-;0YcIcPpZs+W(DznvOu*g>xX7F5oaP!lzKTn0-=Q*VX+}%c!&C%(p!BVSl z?Kx+$a$nn5WK@*8b9xM+`I2bb`?`@iE4U~3oPs`{<@uB$;$S^xyiwRb+$mu&g$0hw zz(l1=-flckUOJ6`;p%p8rc$lenmAWBMgMTIiTCcPBbmz~09es^>zXb+nj+lze$W%MNs};!{IRYc9a)+RGzA=Ct zHtd!V4n{x4!eThN{q1%d&ta2FElcx9#%SH5hhZG9Rsj9g>)|@QiW4rPG}%V( z32EYA&xDlTXJll&dGlszd)sXLleLtP5d1_zkNeexG&j2H_n)>KDLIP zon5oe7S1O+8r#y+()FkfIW*k+{(NeCwwflLbe7$IP29uN6ClqVFjbG!0gl>`g;AiU zpOwwSs@K!GR4{Y zA&LN$QM124vmwcm44`NEpBOgkrgC#}D{XBPhH@MLD2s-?f@@8(Y3>mt_53rK!m~Y9 z3U%rpOcO}+y1zNTI~_t8uCp^BCnvwUJ#3NkXa@Fa(c@GG*jGVuaTLh;?vx2|A24iq z0PNz~F@;#z8nALy?Ci1JPCMyi+p0B|_@%#3z^*->jmd2}a^upe8}9W!!1Vd#gq)W* zx$&SO*m|MiISI)ixKa)Po^bw~cL1)DzkeTughBA^`E$K~E^tGD*+w&jkp-c>>iFX5 z>3J2s6;DEZ1EcsbJQpA^X)ePoR2S1@GeGvRePU zsi|jRfGxEYILu|XlwrO?6H*ciSHz!LL`g3oJpk+Sozxa{9Z#nG>K;^`P}k7l3kPGOOfrs;NjCvxcHEzh$;*2OaC*Jt_6uTe$JR~}?}gjT z!yy2>RGYrA?M{{Es+4L=Cv!%CV6XIJxkeBSM!w%?x1BQA$R%jmP~t^vY~Zv3@0oo&f3AWzU=f(hydClo-=*d^21qu#s*+ll#A`}ZxF^%3aRJIE zvu%^WkI3@5U#vAAHX8sfgCRMXQ?Rhm*x7Wy+0MNN^6hrmbjj&;$BB+hTW5WzGnC3V z12CdgEba2u@#^oJok9^bAs`DmGD%(0)QVRZb2eOVCvSi}tgnU(YygZ$Cr<li0~?>O-NX$xlp%@3X5(yo48%*PKph+|_S6KSJ2LfzCw;Ic@YO6seZ`y`+-0y*knZkdy&zuhbV*IzW2K8zt!DG77E|SaZ(JMJA~H z?Lkk-L6JcrqtyrE?RdDD0#=&ji-64RdZbIhYWitsb9Xcw9fraI8<6X?J6WVrd(hB> z2gJn)*c0BzyHm%#=?D;+iiQ$=UW?~)*kCm1db%-~A_e07`P-q)dd4-0Um0#(dx%PQL@GR_c^F=n-`;dq_- zzZU%#(j;Eb23K|Bvlu@Gv=GzG=|C!95^w-G?rBfqX!x$NUw$5)VDXVDH*>?lqB8%& z{X8wU&$rUdpY@%WCpDlGbJl_Ir=_K3cjVb;p{r_&6)H~A&8p30#p@E*S>SiUiFRct z?s36rP$}T7vF)}r2?mTG1~e>w(Gp80#OsqTS!e-k`0|7QGo>4b-gf5qz0gpg#NQ8V zQpid_b-T2a?#pddq1*6pAxUINseC3rRwqz9HS5=zkZVRp%@?;+; zj4UjI89(&~5_20UnkMpED zX6UWa(qni&gP1j}7`B_k^^WBKD8}}n>)Ts|SHXg0lD&O>eOH$T5`Y-VjJaKf+nO!o z){xa)gKnW`ZQ?F18_pQ-jEb|5@V8Ex6RL&^Z;sC3x&QDjhL^sX7y8}{1n}9jXFh3Z zq=<-!v6x~?FD@=FaBZ$xz+OUbzC}%ua$&VrHOp|OrS=_XNl%hU8mb2N)}E`mIRd#r zJzHtqH!-9vdj>!3f~*pady&4XWWR^6_*|l;eYfJU4XjR-%{IxJpOAqERD6oj7`)L=#N`Uc|9?$1FRaAX^f=SP?>+fHRl{FE_L9?;iOK&+U?#WXm-3i~`F*H{rq%yPaNBpY% zeZ{D=(@nn1KN%8 z!E&ZzJ)m3k<3~pQKPbR5^)-9mzT$Od{ECdV0SKxb6p?vKgG-y;6_-0eFF<$*F#-p( z9d?9rxP)n{qwUoZj?4q>d~OYiK!V}B45lpczEba17SIETGywWW2HI*sqP0{ zz&-;JEiy4QF7X$<63oS^CC76y@S&x@Rw8cK_)c_GZU4>*Lf_w#F zup{A*fSVaFQi}rEj|CuBKy=x-?g7-Z1?a_yxtojqKJXvwFJSZO6j+wwmT!+T;Z80Uxh9GN>GqBYgf+f2L-e}t8ieZOCr|!!F1_7reXXu;ZX>{T zg7{K??;e~`vVeE&XsJKK^pQcbs4G}UuYkFi` z!7$}80kSAl|H-0wsMn`TfoPmDJJS0G+6vII^%rkf*DI%53_|u0y^esG^YLHUj@+F( zwKMk?!_|6D1@+SoOe|?uxsmmm5jJlAs+2u(R6a@$cCB4qXSWa?84$p-4+lGm4Zg%r zGM{G$#EpO6mLY>KO(oUEi(|9;I-c2)%pXuIzRAVOfCsvBk<~ODNA@y3c=2=lREYj- z7=9H}5>&>HX*;}&_}w1FaWFtM*Qzy8_g@U~>qP|oa1ge+ zQxSh2X}FtQ(#qvSQ;h8S@BHOuaZzisq+bm2%)C*IQ%`ljDp&KBj|h6G({GMB4A{%U z3}aCiq>3CEcZtE??zsuyVI=m7Ig>}ud9HW z=>_RO8vS?ENL6Rui#2DDX93nrp<+>g2N_r;EOR0)=Ml5+YJ3}&=lWJ5M*r+@%r|Tw zW%63VzFFa$`&gUm%fn*e79_Mt@$Av6iUjN*Cb1YP4DiYlD1BQ2<9@4eME)H%&<8Nk za}rPAkl#Y^yeV6sYSj}`r2tCPfTNkU)OBzH97aMb@=*5Y>GS7c-@X@0z?r^%;7w;3 zKd{EpjXXa_(xQiO5H|{%J9{Oh4Jq~Wp}$J^EhV%Lb2i+x06g=Uw1JLAkLfjS&bujLYaaaa}6y|V2_@)P)BkdFKLkF9x+Obsb+P3tO#n*SP! zw{~ak;B2)5o8Mb@N8lPq?;CH(DfqOYkqg`?M8Wno{lMNP9{9d>AhyrvWW7Tj;S6JQms+$| zQ3Q7b#UD~V^l=W+N)?Fcf!BE5L)YdT57(y{oE)x&kSXfJKp3i1)Y}SWW9WR zDT$u(L--YgF8o#%3wJm2?;!}Vm5fNhseZe6dJUJIu0_lM-=x*M&)YTA8i5OPFbnXm z6S20E)WLsV1GgLP59SfC=N5ai^T4(RZ6|ftz>xoePb82gU$WVdV7N;EdP57oE8R^7 zi^$SSe6W{_{%too6HvBiZ^;mKad487WehdnvlG0UF7QAXWWYmiU^_vi<-z|`hmriP z!H0O?615~>$HY!2`9D*$15*>h?^^xFo)=c?eqH;0VQi!K*Kq94L)F=vXLZbgi?l50 z)CabT%vuDje5ZG1Xr1MHRlVt}#gd_ou(Ulp@{pP_el+m;g0$)oZ8l6;qCYP$3sU44 zmNNAEJre?0!+l~>F2vEPDpSQ4qt$+)l^T}>0Y#<8pXWuItaiqvz8!1@928&$hVh|u zP35Gi^c!<81{i17N)b@E95?onCU>y&yF7j9rr=e(=MVwgc2dn9_9s_^786{#Vho1U zk5=e9_71Rf+ZfIK!Ehk!{3dI?f`+oQXtOywC0uVykBtSlX=>DzwM$tLA6eBNog-y! z0w<6&@wG_hGn|Fm=S=}2+wkymMjTOA}j4`YO`I+($t3bO--br8xOQl zhgg7cw>{i^O&u5=AC(=-y9XyLpcb=8UykLJB0~^pGmf_2Y?S1n{ z;+k~d5QLqP7KKi#ZC>41xjVTf3^Lq0g`+`;F(;RO)N*(+yxQcgR&|YS7T0+3?O7}y zi6}sIDnxkoX<@)Oy2zs@wa&EWRM{W(HBvD`)3E7l zK#vEEFNbH$(u_?nEdj zy91|v=bkX-N$X3Oag)V)1z9c609P0*YjaQ+f zifi3HJ^4i$s!b_O)X8!~9UVPk)}e(OZ;*I22$8DBhj_KkfM)cl#p=L!wRZHRA~jn> zKK6395=svC8!QGGK%{r)p2(TFo4awH>ObaKx|icQ1lDBPVQ_#D$fNfDY11O~&sM3+ z3z8JW3kgvnl)p6N1TE9hnep&M?ZMx}a^QSF1JDB;K9k+bN8o7(0kETf_im}A@qnC$ zW;ZAN^yug{8Clzv1Bmo10`$+HBC53DK5)*?sMBJ0EVk}qrcu?l@=9gAYV@J2LjPO+ z6oyM$32$}pnV9X-&2X36jxc>i4ji1zj6UXa7p2UHl9C)sAL>Z_qp=a_E+% zT0s{8LQ`}R2LJOJr<)fu*XkY%#NcYZ-}gIHyQAGaV?1>MzqM(6nXz8n0v;szuG#fi z|L*Q?y3zy-1nrH>s~|)Hc*=;csjf({&|skL3FN>`tM6BNRjFcVVyY~tRsh@Zu?2U% z1$Q}yekn*EQj@>h$>2UH3FnF+wla2YXF?14m)dSyB?t{D3z$H)P)%X!QS%_Q3(#@y zw%ZZHWlSQajitFnCI^7pW?P{A2)Vu1+NOt*QawzIq(=GO)$Fp?GE zfcI3NYc+@Lg-gX8gj>AJj=!JMb3{X`L3?*>dECHX(oZxVV#RQ-Kbda)eP2Tvmh8)kS7}PCkgvbiGh2dOH#xzP9?ap`4tKAd(cB|o;&EWFJwqdlJo}ONn z>BvezH=Eh0e`(7@A`Xr65rB4p<2v*rYHib>4<=O0Sb1OzWglfv?XFggk9b&CN?C~)aDT|2t_|5r+B2_w9ky&h40 zl0^1Ne=R^Atfku@?srPoaCTI^*F5UehKAu)7Y0r$eLe`_=NMVZ3F7)Ut6TfVawvns z81DtbPmSu^jlPzatN=iVA9gt#cZ^%}&SztSS{qRPanxRljGE9G;qnkhPDanD|b%EQb)TKC%gx(6+qhKDIM=)fSnZ@o%iRy6g4&RSROU3er@3r#G>iC=a~Z*;7<24D+-92h1KGQGTQzCIg%kEiOCR9jt>?e2Z*6@CbY}!g zKWqR1~#7q4GC2#I(8BaFK4oI0Ki|MZl$;ByxIk-f!U`6+(I9o*3%R33muGo4!X`p4qgnc3k|5s1J& zga2na7bDf%S;UrI=ahvTwF9ZN#LZSmM@R4-zs(}=#z2zFq#}9=ZKb{3 zt~yS^?G#{+5`R}y1_Af>CTD%+(Cmg-=V`FutJR%Ie17tkh7~UrE2U`+~QTmzBt1*68#Yecg+s*3XbT zr|6e*_lGC7EypV}Q<6QsCVlHxZckVDdujKH_O6lO8wE2Ljl3GvwFiL~hc1}VA5ZzZ zlC)&5Av{)|paG1*dar&p_UEyyI0?rN{`&`j!j(y-i)>dRF$zUo(c-eru^Iclmwm!l z0v2@)%NC-X?R?H`%M5+{3J6P(dGvV=Jo>A(=PB`R32T<)YMt3>df8uzzg2UWK^t2{ zRz4A0oqkLaI+jD( zIHb8UbYH6iX})*Cma0ivo@z2t6R4iUsI8SM@d4okpo=a$vwuYwJS(pHrcPY>$lV@k zb+eCGSU)>fX%=eFrDA;ZR^2*5P_D5L@#w*xOD6wX`(gXbd0H&yca1(ds=evVL{&;g zd40GyV>26h$GOciD=|D#Ua#G!X!ed#I&;?VS$Em7#i(X{SDf$M>u+lvJZ&_I_m}oa zuB?(p^y`;**}UkAhv?VO+XH9PEs&$3w|lLza3Gle%0qCoVyS~!j3YVn+UTWA^24)I z&HK7MA9?m#d!Gvw&upHz7R3b4c(aGb2djPdaDOS4;f)(QaaXmthyrgP4rC|BLyXQ8@}eqC5l9+J+% z9DSDwY*Q!Apc||f^tr3?O%pH6rdO;uJjNEQsY!zSRea;Jb5g};OxO2S!7C~NyyaBq)h(Op!;K=rZI-9Tq}TX*2}hG%C1 z?z};rk@o@GF6#<6c_rr}l9=<=}k0=}13%oRF zQse$!Qyg6e+kT09aJhtR@dbC_;S_U(=W4YxugLOB=yt?%cqaN+5jl5eL2O+L6`UU_ z_X61%ge?6ZT*7BC_>V z*_$WRwT+yP^u%I3gupNQ)jo!8oORMRhkn=7}lk8<8pSg{j|$I?g)NiYexqFevu}Cb33$29Y_J#-AgH#s;_Wx%A~~{0p=d z`E1M=t>q)!;FS3h(HnPz1$a#E(TzswP3=fcSwA(A@t(cpy`xdGfuHF)n!>&}khN*v zKeI8hS%Ps`cFg$5JcO}fyVARY3>7EUzbn}rrdJt^32J-`U84jA1u&n{Hj?Nn>2rS- znCZ=M*uJXcK3aXL^=gvr=jQEpBd5Tu>-?G&?VEdU3}hKHWa7DzhN-WVo(J~p8@V>e zNYh6IYrQp5#+lI%eVeH^%e7Rx+74HF7)9|Yx8CD;-UJ$X6L9URz7c)P-&l@5a?YP~ zvu>+oz!qR!wJa-xNdOWOFlmx+rQlIT1wKH+n1gA5;N z`fPE;&{|J&=zR9mI>fB>rpP~WqckH^?)z)Aw8{&_3K|%E-CS~c_o=38V6m%Bre)#G zEEG5(mg`JL9f85aRp&An)b#Yu`=fE|tz&Xd?6InaG7jE)oSP;L*;Lzy*Bmi%76dTCY^ps@O8LhIT}D9^4t{&sF6$B0f26!E!vYaJsxn-R@c zMAoQjyi;PY!}7wDK|H)^lHELBT7XnUp3$NI@_2`c7uI%As&}n=^;-4u;cRovc8N+{ z0Ga*b*))EG?1VR&=ke2!ITTN0;Y|J|r3x81OG_&=5^kSCInUrZDXJN$=krG1+sORn z<4t(27vAa1hX`Cexme@_OQUeqz)PT>v2Vv$k66-<1ke@RO)h2e(W_En%Y zFJ@`#sXcw$j@gl$3g>lcc4ndN`=Qtk*49xCvu;m7KQh7$9swP>){Hh*x-a&*3qPIN1d6w*71viR7N};1P}2 zrras5n9mU(OK$%wrop)uy_ib7pKO^O=9N(Ak+IC(O=q#d+(BsO*YfhAc$r6ik^kh?|8Cb zQ%geMpZ2|SEoJf;m4`Okn$|bBmO1%wXAJLixvpV(wsANUpLu`x0^D{!#R30 zsOOk`!s5)3tgG`^Y!B4qmQ+xE>U{a)@~xBi-e3=x)l9P?5~_*x<$7MlC&}ktZnw2w z)eIaYkoj|@=_D^MhNuE4@k1>>QZv@zqV4iK4~|z}9^%@4DiQEyyl>L{v$5JQg_reN z>#kZCNZTJDzNYh7-wZDyLziBVjE{AeZ%(afkUTWZ-{4J_-4stXH$KCFLXiddA=FfD z6IciLPrB~WorJ9!7*t5>K!UUd(XYXm9gDpM8J)ZJ!RQ9AokMT>et8JtxU+;bAv(3s z&pQm^rnp^`xb&&KXS0r?CXwX~VbT{Z4tsk<2FO>QeArUId5MKO+W9kxunntOEoZYL zugf#zgWT}OE|tWOx!kd~>y9#mjOMAOg@7Y76VJl_W#~CwQBBwlD&m5U|A=>caQV?R z!F~KHl8c`(z6xg@A{8FT>;_z>ZeOIr5AG*7jx0{BqCGLlPw?5wl z{5)qdGDT)a{ZnN>w$$QsuGQQCUsm3@k6)F#*t}=@@H7Q$C`0WGo?go}+PqoC`1*Zz z2?%5;7h1UDUf)^WbE0HVxMccE4~O&6>c#b7OqiC~=!dIkr@gbMM)G=0d(iNFtj%yf zrsHq&ySKF~dka`EQ1P?+f*R?tD3p>$M+yL1q}u$?Yy2QVO1U`m(`8DO#l;ERGjXD| zvkfyl+AeK5h!g$QS+S+nj?!w20p9nJ#*clo>y4CZ+8ME%UR=6&JZ=pp!Z~MV9%FA! zwfCUWPGT=+@T1xbzM^KQsz%3pq;`q%!@uUfqUOGh9y(z*&KMDd)*q?mJ$zkV6S(pF zG#@XEyosfiP-SOa_|UXv?mYNxT3+XD0^_UtK8aZXWZny)BAn@fj3@$l~FGM9-VOpS4LuUpbA9q7RBimuq9u4n&L&B}hb zl+kr+rH@x3BPhFq8g@Bj{BmY9c`@d2&8rCwNlR4}UtSOOp)p5)t;zTNO||Bb12s*W z81B9ysKwp0Wc}^nO_Q@Yu@<|FHF;*g(Q|M^e_3Cc`L|~(cIQqku1T7W`FnZ3@NI^o z)HxAOkdES(quW4bOKzX;iN$u+vlc9J+}3c4rIasaN0|4L$nxIX!2<4hdEU9rB8TPG zH@M9s-a9R?rqBx+JE7GD*GR)|)0M2=W-L9A!G`XuW<-@1A;qF2FUN6a^ z+ua8(&98YX&8_4vY#d*(Z@H51qTgc>lZ<&^mloY6?sWg;KRb;%Zla-Ti*pg$bCwb_ zc|HoSs%%28JAnSvRq(M@9*|GWs&!HOgyj6v*qI_Y==)Zsgn;Z zSAqkhJV%gIXR{uEN^%!HF4R(=C22Gl<6g+xb}N~lKC?{5h!EI{3*oxSeYp53A+or1 zXr>hfcx(VN;Y*)d1{8-PWn))9jCb=^X%+9PBVi=(S-BbMGOo5j``RC6nTmwd?W9v0 zGZ!%Mf=W+@?j7otrChpUwq zMc%R7jlOfu-To0iNAVjR)}L;hyPr)$t4SDkT=?srWv3MlU!zKi8FI}E-Ji&t&@=SB zXp|AixiZJJ{*)Ws>{Pl){HZe3i^%TnhDIexGu8ma7zSWh9&W=3$_r6OJBKOV3HKJ2 zvvHGU`>1t?5~O%dZy6R7x?6kD4?Jc@^D>GO8QoT!;sV`@b4@xzE&vc%$EVjza$VU2ZF-(7eS&QPY`BVuTPK*h}SSL*|pNYb&T0<;qwQCr|l_bV9TGzFY5$gho<{O_JY4wKiA@&qq z)xg=e+WO+#j#-aPp$!DYx0>yy?%hq<5}Eq;B}jZalMJh8hlIl?Ub|`<(i)KCh-Z~* z&=kT(;*-*Zv-K@FC!w=qH>bv(sWq0V+c3oO0#fPX8yk3=7Y>dbs2a^wj9wVk5=G4D zvNl{^&sDUL7&srFqSc*d7o2n0Y(g^RJ`^G|c+1j_$O#3hBWh6zZ;f@92FZ6SEvT5e z^$d-MlTLG!qB)$elFx=ty4chuI**t>-a;u3lNi<4#423w6;Me20&=g8dwR4opLETr zbpuOx4*p)yDYSSUucc^0TfpFO$==g9nE+iNeAJuq%o`o~G4{-6d8k6m?yg=Sb+WoC zzEQMgukQ~Jp+aW-x75;{5z~0CJbVO!*?wS)uiUn%+LYD~bbQQ9Fae3Y4niY9vux|N z%S@;ci|h6dMXcfNn5y+fm3BF{4mCM0m?LN)m1QmBJ9lLrO(wqMCm5;u7(VwnBv;il zC)HfharodO<#d2nyzpxJyt>(m&x8JHo*$Q=SAO1A(~Td4G0mTSf4`z%-JEVa8kai( z+rj*g%C$|L9-rkI>JZNTc+wq7=k43f!o#pevxE;N%a_htMkII*E_qVl3qzyEmzksj zmH6j9mQ%ye(vrO8ro4Ml)6m^p#%hrWCOeCNu@)35KG445<0A$Q1*4;*M@Nh!bu~%y zJCgEIc5Zj-O+05>MGqX%>P*@ix@_F?XAIulv^saUVw-bK;5Oo0dbKZk8qjrfj*H3l*e$|MYKbXH6WH7Bq*; zRu=39FEJ45`J5fmVUk?|68opV>E^?L9nV>d`vmo9v07>c%h+F!QVg%GBj>iSd&6u- zcCDqZSw!QcpXkH|Hp(O(gKlNsvR&A_TpvQ-iD7NvJYBEcOU2f-_J6orzBr@lNeqa~ zHe4TDUGSC|n!xHMUCdxVoQKYyl_w2HS~2x&+QlD)dR||Y%Nl(t5h@N#puwti4D`|{ zV#+v=x2yG%&Zd@r+=mDpgk*})VJXY*sqbYGecgu+WcBr2YyLsc&5x*a!xjjrl)T#3 zyT6)DKVUQ$>GT{}5dVOgypV0P5Ipni(R-h5H?-kO6Td};;i<>hV&_;xHJr6gJHuVc z6AEuK&U1lzR+XS#P8pfONfPma5-i193Bo=^x6rS4`B@%J-w$e#huIIp_l5gti6h-` z*0!kFtgazw6>u0;#Hf5Ge(u+$=C2WTQRCOijoxS{OhaxGN;;)2-`O;(c*zDfG5jpG zv>Vn;P1#<;Tu2)`RMk~ssugUM?N|0B^K@(Pm(YT=m^aGLb%#Dr*|BXT&2AjbDqH^U zl`%?x?paqU(WxCqMn)G0(x{xXbI;VFxza;U++0b3mNI1>F3gA0X>41oD0`8CJTEx_ z&j8;Q)ME>je1@Zw^ZJoQ8K`Bon7+CsK^dCaF2RM7<~WHbqebbX@m6hvl0!zo>u}!s z-ZrAJ{zi+W#if4h)JowRZBFtv2TxRHlD7!4rfg-16{i_m$Yn}Z@z6J)6P?qtH=~g+ zw~{W{gI>2Cj|rPxnyj@w@vx`7UyCD8n5H|RW{g%yuHdKV&}(~P)BTYFYj zeBvhVUVNG%p@+@QIvsyJ_q}Jks_f7mZL%f6)4C!%^Est`e+d&tu1zWSYErLdhsDjL zZ*MQ(Qtwq$gI2~D3hJwVS_-;vTQUNA-e(+%Mu#IV)yj-wy8@C&d03z`X}xoQy!7mO zi^}7z&t(ZM#%Ihd2rXQtX4W6!GV_Aw;B%y4!X&Bo1XKNohxnW(QTbxMnFcHx_?W2P z2OVe^l|X8%d3KsrOoU1+;BN`0Y`fcPR$LTQqy{MY*=qZT3=A?eyqr`D5?tAjCmbd1 zSjkfMG>TC3DxK1eAI+Yy7ffp%QAVW|lfFxJ8X1j6aqS<=!$Yesu>u1`Ml z_~5fKZ_V2KTSH{=``}E{WccsUs6za%DHSB{6fd{RCTLrpKo;WgXuoqrbR>rq$osd? zCS;H>n!u?ZCrQ)F1POq*gp|s^2>yQ_KagL=~83_5A(YIyP3RIV5jp0=N4=pDmz>h-3`z09ty*H8qpnYHA9} zi_RO=3>G6Roz^VrC%;$~GadFuS1JU7dTsN`q8~C`hpmcc8W1Z>OVB-2lik6{g@qN4 z_K2+hTy58>vg`L-6FtfQUKZ)#R(ps4_sz3^Q~2K>oKWUx>*%-!dcZnI%I|98^Mn4! zpp0)VnrbHFYuPq5U&J`S0EI)KisBvdzv`L)^Ya-#e*2`VYP$Ul)YJXcvrx5j2LfS& z$DsX&oZJsIWvX#UOHzS`->NFsR$f8_l_#KJZ?gkSU=1{lt%9yg!HFS0e*RQYUC!jN zAuScC&rVHE4J+UWh3p#K(eJ7F_!eBXoVZiIWiq9KhZZclu3|J_ZxDiFNhH;7cQKI1 z1kD2!0s_#{WhHK4V>3bR`AZ_Ae$a_zHu4J*)QM7XaRKo584aX=K&cz<-NWr6k`P_>W^kggplwhf)*FhNnfx>cnz8W@>EJmKw?}vk+o-ZIleQPp;;Vs zuDk+?GSHO11RBlBsHnQZol(IJxIx7mtbH7^-W+Exay)BMI#Q-542BX|bU)+^z#!}@ z(P}I>bMFT2pLw8b8gw1PnhrpVmMV9aWH+}qu`w=KbFpHxF7ih-Vb_jH> zP#unlkWdQr&8XJfztyO*)LZY30X3*&0Lm7|$G<|tAov4j2J7Mhja?hfw+E}BQ)3e( zRbw$r75e)74cq-uL1!uHc%e!-C{wL;+Eq?BZ?S5U75l1@vV?zeR?CwP4ILd71x5GoPclv(p3}b+;bqSI>Yx-iu&Jr(8wDG&@L&LF z+_{8;-jvZo6$Z$vH;>bfp8pawZWw_^?W^0{e~k#v`=H!7 zD!YR8bv9Wder?SvnmOfOR7PNgV-+@%QI8nu{gP%Al8dJYO*o*13d@{Rceu z;0g?BHdR7AI5_xur$PI6vHZ)qIRun^APWMKC@U}511*A6d^zv)KraZ$OurQnNGmI2 zyx5=XR?+eNmYYijdc1O74i~SkuhqEwdq4bO2Bq$bpiI3BI+P|*%5F7lc&Al3@jgX1 z7qnqdw0}dVd#?X2CN3`5-oYWX1rHlL4`>9THz|v82pR^)XC9Y>s*kSgE3?TC_V(i} zL%f-=%fNFNCOU)hCP3x$XF)+90%pVSUqEN8lAc}$A_YAUxOudKh&GkQWRW~UsOW;z zlvV-IJaf>sUSQN0+dDKQ7fLFycopAUke;3{j(L21Y!1quMZ!QsQKb3e?|Sum`|SFT z!f|_hd!;X58enaHxd17Kv<$^F2|I0%irj;~nOKz4|A)J`jLUNGwnnjCB4QvQDA-5| zNJ(3u(hZW*3J4<7We13ebR!|s-KA0zf^>I-fFK?6j?3rSdq3|v`^))yKCHF;xo&Q* z>mPHDIp&;Wc4-78TgT+GkeTb`@n*!SVR8XWFhjlPUt25J?Gi6T>_-R_q z977gY$=cdF4t-Bd?Ci2+^uihoWA#^?lQh*AraD#bW~xa%SC2&{pBTz%^3<=p=uE-lT|W0Yft zzAhy+$SAQD&cDyYYsrf%O?>U^2qtr3qvbVIL_46O)9Sn&nhxXeQDfYgiFTtfrOTHu zPv9n~h{uYrlrPp_r;kM~IE@SM`Wnhp;&2n=QCsl|#n*A@f{6B($7ZRZqgy%5c{Nsa zfcrUbucJb@(^B`umtFLV%*qL}M~)m3o#tH^5EB(;Bqt|7eE6`zYj);nd}|zfY!1`V z#A(@&pE*oVZ(dM$Uz0c^c{VdiVjgsf=;Vv>j_aDC71yj3U}2FgoNtgQFNlbYY(C{7 z7_quElML|)MKm}y<9s&1q<8)l$ZMW7ojXbwtvFn>S-8}r;32fAnz~d70~81QV!XCE z#Uvu4%^2NO<-@E5VGXx}-dD67d~$z{{-6`hxSJbhjmmu z#L{pZD@F}hs2#=;y-sI$joY+M)@f}j+Zd7gYiUDY#h!<9Q0B|_n4OS*1*okLf$8a z=)@d!@>!sv^0Rrl@0g;Y;m2A3UYAWxG%&>9aMQN6&3W+fp&}{}e0S$J?V}e?fPIaE zhKQ0o4R;e;@p^tF2YW>nISXj*pLz@^#?_&zr}i-vtCz zdWihF0ngT+XT^-&qDBuD(H|X*Cda0xrb)VVn;9*B>z_o~JBfO>*)ZHGr{&P$t7xJ{ zh0MTHa^c%(hi1{t^Trm;qG6F8bq0eLFF2U-Bo|=cShS0RQSXtiTee4dW$2K^b8RNx zsujEs_lPO7Ll9VTc6Nphrm{1|^D}k7r^NLrt*`gQeIwLJ(18VQnbMY)7Jmt}Pou7! z6n6&d59kYp7RTAMXJ4$ZJ3^a;HCVJ#v%uC97t$5Gk_Ls6vofKQXa$8V&ImgE&|pdJ z!M%QO27)T+D5Ev+gc<^R>9TID9}bXrg=>OkrX)Hrri(Y7iKb(S&D5ei1#N6++uPee z`t}|EQ2X1!Ob^jS_P>7)c~9 zGm6T}?w1i>IUO1rTE4?nNJ!}Q+qdN^JFOBec!qVMQfN32XL|*W9u&{vv<3Jut298g1aJFCoHso=ijU#!Su|GZ z2D3W`NG(-jojikjvxL~ltqvHGb@2bCc?A&?q$Pv5l(;pKOShCEz#nCN~9!>-JvS-hp zy~D43{ezjyUF@lH{4g#jS_lvPkfAndOF03{eu7YM$+wx=$xgYA7UPSA}iBqR=f|vU~dSs@io&b`>&(S%}*E4aBM{C^5*hoE?pU2qoV|~4fIr&q6 z$xCe;Q;0#tDJKS6yeWr)bLdvRZ1P~}+ks{@mM%c_h9Xypl~t-aSzB8wgkOo#YM7>? zwDc3qHnY1}B=OBB^>#43sSmHCag#aPyCcoOZK5kTeQt44nP`=LU}K{KXjovj_m;sS zDykTurjI-K9sP9h&>smXZp%PIpvIQIDmFiq~cZ8KG!zrjC%#A}0rKbTmab z`4kgSZK3p#jN-%+S+rS5c0Z>PAkYM?hzi=<;>>%Cs-V!}PR$YVEy}ZM3>WjS5rbi8 zI(t@(QEC475{|nu%#`s!>1*P%QvU3hU#R)Kqj(g3f9m4Fk{Os`S@Xh$7OM(sLxC61 zpT`2i1hC1Hq9Z=9-!=$MGJg&K+H}55h_I6y)=z2;FjEP77mOF2^{TuXt9pBjzt(L( zFH!sW@na@tW(hbGsM$2VKO@mZYhLgHjzrJ5O=8lJkCu8)1DZs8{`p7F9D*@c73;XX zaWY}Tagg~ST+#5s_}H#PBwq;(wpP+ekcSs*IS&aetPIH#Kc)(6QPCsF!R%KlZ`;XPeISer9e)5;qHUpDqB5 zeu6t6&s$6S^CG#)hdjHfNpW~^P(go%swCSdD(ZA50ONx7gi;HRaAAXXL z8{^H4Pws|2|AgMC=pN^_sgoX?18!`8eG~lsn{1`|7B+=p(`AR)z2bqtn~NdR6~DPL z;}QoHYmB`XXEa#9Ut3e7h=OR&>toT@0(`X70{A7wx!kqyD0`2Qe__D8cj14qlym#? zx#nY8-FcMeis(WKsNQH6D=ivAlTk!%74+*ooxS{P?)W@rM(y8A4?VoM-qwu&TAS zwQaAO`Mbp{#ZNaq`iLSr%W`~@pQb(|l`~RDi@|T?_S}4mnN+@7hZ(t1o8` z{eX0C^BxU6CAa>!cYAs#ZUqJ>Yb6=s(oUcuO%4(&A0Jp-E2Dv45r~)DhUT#R<;#z0 zc+G-|JBmO<5mrhTPD2GM3ZmurkMvkV0qGNPzv7iEPXamgUd)=05gR)_Jv{->%X>ag z+Y@v~cF^z4uw?P^)&??CQUzRIELz45HqUd%7)g>Zpc=Wk*u^EZc#N5%wImCT zFR-kN@ydx!h}4rz633fjy#V`|E?!*DYyK0T21C@GZLYn5-vXFW>{6VTp3dCBItyDA z`}y;w1+W{Mtu>oi&RB*}+bakiT62^&M9=a~b~BBdXrBV$Q|RgGi9^q}F%XrZTVY03 zprx|1FC;cX34CcWSgy>uH!2G4nM#u_iOq1wcMDigp1hK2-rIAL&KltWfey=xM$g|$ zyC#IbdgHMlAAAP5^>4e|`EieKtS!X@xyIr(lo9w=eKjWi9B*`-l9DnGE^GnuN*oHA zH3=Jprsw#VboMtg?>34Ne}>nVWsG*cXIzJiPDCfELCJCX*1WFq#dgM-YCgfi3Fw+N z4&JYKf66q&b=`eI?Y-r=CC@i}yw_}4INkj$KoxM;!~5^x(J+H zMfiIPv|z^m_#w-E=f`nwRQc*j+_mVA@OjNWaxX5J3`=R=!O0+A!PL4XSjd3~0N9{5 zm=BUudZ^Vw8$YC-2#NvbAnkttm7>i*4n%lMIPSUOYC>-ZdV#Hpmq#Zis$lWIKp275 z+jB+3VXCi6O(|U4?VrzOWzVsLeN`ROI4Yu{@o5Q-r}_L?jY^!7l9C9So{`jGD3RU=!(<4& zO3{+C6kAdCcG|x92aML%}p6O996ByemsU$jRksu#n-m_2A>&? z3rx@L8tZVLt7Q1uTTBnj4N8H4c_3LH6_v%n7DGp5sRKc3m*|sl zGT+~*eb1@*J@|WcRBH>n?*jlO;(#|LYtv(iA4I0T72mQO1$NaQez*B#%J!2)J75v}q*Vv%xy%v@&2ET^)) z(MHcqMMbp$dWboCzLSRtw+Uj00Av8mqB~H+&-*cZXN&FBX`{*&VbzXS}(#*9D#o1}>!AD*rv@Nqrr1(K}XgFYEOO-(kvPAXBPqqxqB1f~VW z7zg=00#%Mkf6+~t?YLR{KK-&%b-PBwLWi1OPm6y#H=)Wa9ixCKS_yA1&KNzNKO;=o z$V?oflNCn=tRQg{MxI+Hur!uIo@EZSed9!EDDDfQM7o7<_ zg}f^?bS^+1%zCEhJAn8YL_={9uEjU2HJ_~g-@coo0wP!Cs9Sd6aLUaoUzneO zChJq<#*gmM1Yw?2E!hCAA&+=RJhJ{1eEUG&U>uW4f%U%)3)O$6Fj&lzu24J@*_iht zTsnc}KW!#bTTuTnU1z{rcSPs4NbJ4Czmy*2Yp+pt{zdwPlJ$VM1P?pWl%q0K% z)&#}on*TT@=RlD^0wPdA7^Q&7_w_1z>6$?j`+%5UCD6RI^jmpxkv7Gc#@OKCqo5g> z7XV8RuW3MmNriYIzLM;7|JxIb*XlwRnsGI=RZ9VuMFpz5^GVcN%{bo z&@uTMr2RX8|2vL^8Qr~i@9E>m9~p((y};?T7^yk3XU`s4@mr_KCH}W>j-aSfx|^h) zEiJUrqyR41&KSW+d1o<1TZgBo&5ph?Uj8@-$*ND~?zHhPn;R;O(VJp~AcRt)8aJY( zNPEhx7SStw74q4aoXeNbu`~SL!>>&?WNz&8Onm{@= z1Gj{O`!*;jgo7>*5JQ(90bW(W^Dy!7C^K3atY3k7Z-)AlnPV4tscO!yJ!SvPgOfHg zwQ@XyEbc{qeuyo$}W6t~UI$sb9_lt5_? z5={dDSx|4*5uApA2O%JftBd1u3Ca^_=_6Dg!2U%FUQI~(m#MN;`u-n>84JNi;?|gH zqJqt;z-mAN`jK;f08j@3PZ0QC#!-jzRz~jC_+S6qH=H|Txx^PHXeZx{U-Qj&Tf6i} z{lA~Hf1iGi^}jEpc%A7aNnACVJCaXd06{PI^x>2b0`H#yx2y3%k^g_Q2i_qexzhTo z{tp0qx?s@>C0ty2Lfs8HDgoH}n#1DJdhV^#4}62;jcZ4A6I)yUI_c;C_^0P`Ffd#v z{0kx;BFO8ppJcTREs{_F*L8_7{cp>Ejy7FpE7FDJAUFxe^mAopWpGT={J&l}{T%Io zyvNTS;mYx4U^|0j5-$AxK+6{zOP>F+JK}XGt3MO%=T~-Db9A!Y{`)66j{na(^*IU1 zg-C`9B4r8Xm|Q50LtcSVQ1B=;w~dYCqOTsf@~ZRXf9m1u_@t$!5m`xya-kKDz#ZB) zHCVUnpsDYpf4a9fj5vWfa3qja%mKRC@<}<725ciNAqn_ee*v5GNN|AdZOpSW0lR9J z)rD?&WkTyzH5xi+Z*izn!4#t}@H&WFM5U|`Brjjyf@F*i_z5CMSXx?2?N)#w%z0x$ zg#MS^xxKcx76A*8oNnEX*P;45O28aRoXz{veqx?cUSL~c5sb4sUDqBYXhn}ed^RUC@2ylcX$s%=uS&Zi)3hcxPNNuJ7LxS z`G-Sz5zoUQAP@vr&DX{r!Z;GvzWXjgMt=%f;i1vd##~FI!Fvb_{HX(p zB7oyCzh3frE+!8PjUg`&4_9}l0|S`_&7={6Fz#1>n1us2BLpXT9dS=Jy# zA&3)}!jHWtl!LKX`+%)+MQm4w{ZdnNFR&%S$|24C3u{8CoDnU+@XD@&GHCv;zr(c- zqX+m*f;b6M)&V^CXcRt5UXE$3hjl=R--i4HvTDeUcXW;KIZfr;9G*hxU5g4mr1(jLSlPSoUrOF^Ge`xOvy1 z9B<9fd8b}S8Bq0&>za?hs}YNDhE(}Dk%4}(0Kfv1VZ$mx=~C}(2$+mLG|j}#hlfXW z$pN3>^mI-VXweb5^$Y>kvyX}T6;Jo;3#?REJ11<;U4$Mw=@C2My|G*GtB7P3bgonqH}|jy_m2Un(zZ>+IOy@$11B+Xj9$ zlCtma|5C{HTd{)$hKm0+F)`nj+|uv={$3t2%me88!c8)!T1SgMoK(j4(rA743tSf4 zgzV>U&ka=$|Dl%S``4#G4k%b&41D+2U95NO?!IY#8O(-wv;ZBJ2&TW|QA(wbsBLz% zCW=8eZE)&?U&R(PFSEWqMhI+8J2GA)6hi?7o&k3y1rqt-9G@YJh-n@KML|JH*)z|f zmgozS%YzgY&#<&ekLtjXN57SdX`Dqa9Bh8qpC-~@jt>v zH=78HTSyMautack0dq(Pr}c#tFYCpcSr z2!4~@arswgtqvGjN0?3`07k{m`*-gyDJm+aR)m5F{m4Prpf9 z=2ns@l80oY#r^wW)ONVIY?!eUNnIpfKpl|)Cm?V9+QVb?IhEFJh>w&B@B9oYvQ{mJ z@5>IzSb_u{gjPY()K+$+*|2=+AgfSVKz50!ok6NQwZa8^$?M);F4pVWjzC7sX+enu z0c0sgP_*S(oWlF+0BQg1%Jsrk#aY;53*G>^2N6}wnIL>NvfzSCU6vSD(X@P2Ddgc6 z(i6{eKD;_qiIV6~n%@J&S}ANHZw7@CvPbunQ!s>`)E!CR@b-LskHAUhEy*wC7%6&YI-Ncud|YeFhDi0oSig z1n}`!-_Ob({`RwoQXo4QDur*r7|#M&9XfdM2_`0htUeD8JZEb3g6VTZ<5ufdV=fx# zy^{dN;3(~MM*nbbv16jAcUf^R!<^@X=Y!C_2sz-f1l_8tiP zR6V%)#Du~@^3GNI9_{3?e-auQO- zcQCPphy%z)H>WrK{$Q*SHQp{r%wW|Aq9ug4kzt?1w)D;|zb|!U#s^Pva2x>HgNg;4 zl0i`XlHj2NE*R{Aa9kghqGKC&g#X>Eb1nVL4{Kva`v-1Ij2@rS^|-6lNvg6-T|S-k zVxYg-$nLW5L{S*7!Tv*sO5pJ^IAW`Xg@qu3Lx2|oD-wqWD{p*M!e&YjYlBD9MLq!i~5#@e?3Ih8F;$E`H|e-MT1gRXG|mtRJw{oda^8XO<8(d>}ACE%x| z+6#rR=w3_y=57tJM}ogf`WpWcyRpm zX+l<;dZzCCcLStC%ZnBPV?0o*LuL0C(*cmteFef6bq~bZ75(@Shc>0a<-E;iPyHu; zY2GpWjO@%0jl%=%1J77?DR`nhj|{_>z&gHw%pO>^1g*kAlmImVM1zp3!{xUd_E9lg z_Q#hK2}WX|29dDhx0#ki36*Ed=T2^{Ln!3XG0Wv9qFajA!f^a(*n{Es8Zoa6knU6_q#YB(3&G$q&v77XZo7?t5n|Oe+(~=SO?PIqfh&Lnd=5)LfCjtguTP{T z5Qcpnw)S1UC~${u->|NXa*^*gKQ}R*5G0b^STY|>$=vmQdtf+HvC$vt>Kmw9MK&b| zBW%DTH3BGuMu$0PmyYK_JWWV*lAJz!mXh($-X+@Ud{1bCBH{g}I0h|ddcZbpw2`j8 z8<7{$B70?GEoDUZWT&)NlvB6y@UhTO;V2otsjojIHA8jyYV4lRxF7qE9J#5cMnhDU zf-3+BsBB6-%waR##UyfEVfP89Cuo@t@|dKuF0x+op#A4wI2%cJ=nX^py0~JuC+9*@ zH3OzO;~{m#cJbyNKl}PFVdd}k772j^k484ECQO7LbPO2en^ID&4^Tfd>fTue(5KDI z-1cj&S-nofG@AbR&K$gceT>>x7A;zQQUP~=I5CQtQj&%`y+-V zFUYIJG-4{wb(n+H>}(?(^71tVmPlQkIemKjBMjfcTB_<-Eg^$LzzaYQUcr}OiY&&D zlz0#o*qkhz4ZnBhyHLbDPG)wVehcr@<}e~}_k!UW`{T~(t)aqB{J1n26v3~ruMhct zc?6cX@~v4>(L;n&I02Zm;{NjGE*YT(3b4r#_}}q}5VZ$oHj9FQU%*3P)V?t%7kowC zta}g_VKeqdH{EmJ-sL*4haSl)*?gbZ?iYiwu z(YDX1PeV0nKX{H)aB--fnH!G@qoFr9F{y^tFM|j@;_BT6^y8o0ehzG%0qD$Z z2V;E2uxW{$(~`OBwy@5g8J_t$`$xFao}TKD^1TWx2M=BGf059_h#+Z<{_2wX{mOh7 zGGi6X4{x(cp+%%3=^A_WkRc@<-CME9Tr*uGQ63Os1iLlP&a~q%>?gU87E2*NhWqoT zYH7pTNd|Xzcso62E{4+@yw4`L@Rujq`betce7M4orrr<;$UsQ5WXR){7Zm8MK{ew% z`PrV$`9x?WU)jCob9r@jvG>E-(Sc`8t=S}WH*bu}D;M1yI2f$}u2dM&_{nUfR$t&y zY*`KHME!^^@?Dr*@#B-+Ddi-MyMkFc=lkHfK>r=n(9od1puZc+NY0+!#jcZ2LZI&j z8YGdE_Uu54F>x|=-{KCW)wds8F1k_@&`HB1YF_E z-XizbKQ{Ia>B$mI9kRuQxHn~OnV~L!>0Pj1^xI9CN|upEWpV zBCAB_@RMWE3B`Pdu+)OTYdDW$v;|TKY4AHl4Fn1CC6GU=K>a5l)cIZ3XLkW^6--U) znnic)kp>0UoHkl>roobQ*4ipuDqJNXlsV(F6(k`~LyCH5#$I-*M~81-<|(-QLFk^g z>#kiYUP9fNj7QC(yPX7X<1A5W4(uMKUF_U?OaPfuBHfEuCBFoF^7_@QK5Y8=*%jDV zTa=x)Bfnzt^c6mnj+#U0q1^yvF<)H<4Bd{x5nopI7vTFj-VW#+7|a4(5dITsLh{cj z6sW{ct)Otk7Ww8k6-AhZRc;A-+->jCi|Eb z@&@|*<@95c;!zdijnZJM-0!lbK286_Tfxg5aUqJRO3b?AMa9G(R2;LRb}J4d#v8!f zVN%Hv^YrZO7~BJ7Of$Zvs%XD_M6%&WSz^^z>>`3mZRZcpE7{T=${;2cBWsf!}9^kD0=O%1I(P zx>oZFu*N5oyf;Wyxe9l4Klc`k1monxU!Wd>QE7)B0hoXEb98qh?Z`3)8nz_As!$o-okiG)-PzV&b?$)4ZU2qV+@kDC>zUnm`${llz*NXn zV`0x{abj=@L^Ay^Ki%0sJX}^2z?qtv$-3}cXk)$+dp!#}&H}+&8o>8t`R2mUb}ul+ z1VOw1;K8p@v8zMX-kr`YRub4XqW=Vi-e8Ck7Bb(xdzS!+C{`c5m`_VUMtYZZ4wPvg zN1#PCQ6PEM7^}b#$ib{qxKN_118YX2oD{PMTQ)CURx*DGN_QH^Pp zgENGnjv$hc@;`iq`j`-yWfX;DwhJfnDvp~QOIRdYw^~>6p6=)S#R$b!XrlUO_fvbY zwM!XlmC;w6tg6jfd-+eE3)vOgG4+GlA(BN&60-gkz?|b4P=|NqMUk~WCV7H(4R5Mz zjh3K-t&$k23zI?EK$Nc#lWaWohzejNnTT+N7x~WPs+e z!SQhd(Se!8n1fg1GegfMS6y-f9255m(2_mp7rp;zm$t|FrAJ09Z}JcL`gy8f>TI86 zY-0QxvkX;viLe zF{s2%4X{iZx+sh!+>3&u{bPAoKNpc3MatK+%ZpfCE_hFv?K>)U!{`@-Iwn^cj_()c zYj<2fiRW+}bDBm4uRAs#|8m6Jhv+I)4EZ;TIFS z%4!6ARHL;InTXGnZ?~WH3)nqxt+V3w;Tg}b6U^GxZRR$!-HV*QdzJkCm1B1Eewn7{ zJ!qdx(q%mt@n%~>1ol<0VY(M^>d=uRw|>@vN0PFpJCXkAd5XQ|AO0(9(p$c76{POW z96N3bp&Lq(j@N$9BH!kOi~?pWPUw22`}c@Y2VFQ%$--j3*{+Cjc9N zk5$3_wCsLeLt!WsHI(*t4~_0ua>I-YXXlUR?v$-wF!2ehwhs?7pBzlB|J?O~)lGA; z3>1*fjCol`{(L8^Q|<~EXj%#BqL!}yJ%`r*i(>REc`x$TI_qJ=DA}dbO1HBv&X(^f zC3Tn%51SLTcY>m|^NHm3585eKl6Uqenx}2Xi$&_l*NN4*q>$~);#qgP=y^cfZ1jp) zXh6i_VV#m;xS3r+MQg2}Q;td+9NTqARqM2XK<8J_S8-o|W$TY?Uct zRUdr)IO}?p)(t0G^RlH_p)YPXklzha!V5!h9#BaU#8K z$MI%cmow9mL}?$pFdfVE%*--$LFKR|fc~|JXNP?D|20G;qKgXeXh)*qsLa8cM@IkT{8N@KXJx0n92>h?Wyl;Ebziy0-}Bgw`b+03Z5x^WzE_I5Ri zy-&nia#1oZ@k{m>26M7|WlmGo=GDnL-lkc>Ij=n8w?WzEowEOh)zMGm zHk;?(h9r`OJauflKQE{*b6TZptL*=CCW-F<%p}>({QKUuy}N2Z_D}0q#6J!6S+#?7 z<4XT*t>9Xrj+ ze%5QZ2>)^zTU6pO8L@>p#UdVQhh@RcIj-MUhuGJzTgx{`%mt-2#Ca@dOkPKJPr1mR zjT+t$O?j8d_igqACvT~I=gP{g|B;u)fElVQGi^Jj1G8VZFJ<-h@Nl#C&@4l*Bwd;A ztWeCO8TuK?-+`f&?xV^lrB8cle~N@E3(ZQd&)Uk~l5J4Ad#C-WuH;&G+r*Q`cwVapl!F6 zp7*-fkfi{qb;uqa_#+&Ar{G>!cK$7nSmvVX5s#QC9x=`Kjgq5fmYB)}m9}@mJ~B{9 z4|!5hy%BunRZ#v^vJMdrgWAf;&mSBet?2vm6zw4AA4r;+okwE5w4!1c5|>165hk!{ z4-uTu|4lf7diQ0eJyA-Q$mjj7{L^VnZK*ld(J(~H=P{=E63V}&&;dRcqd>iSYkO*C zD_e*sG@t772mF7P&~<#*s(Y$!I{I6R;k9_prO3zDRt2_MGJ1c4n|v@Se4tP#kr?qJ zs5vijmTTT}u$AGe9sW1OZV1uMUh+-74bR`LA@K!>FdS!lZ`!-0ye=kZ&^3wFF>O8m zBrg9TCK)ZyEWJ}vlt%tiBEsq?GSG=|W8V&aXo9wi7lBO7k#^gFv3C4iCH^atSFoN)BXB z{$6wW`>*><#S59%6;Z$DW?sG$PBu^cDVt4`On&#Wf(toVd42e~%5SXtckfP!QQ5C9SL zE(~(_3bHi7Vi#dQ0;Iw1J$ToO?fYS@6(z1Pw z>d(Hu`;+7(aHi*S32)SJEVXIL%3z_<#(VAMpOtxya_4+EOh`)3mx+7~%Qsfv<|h!e zTA$`?6wvabnz?E2%c>ssn$i0SM7|3I61a89r1Dv$Fy<3u&4>MjjJA9l(XE@`@};Xc z$=b7}Y4fdSUwv8re0t(8uHn~ahfNwv*2yXYfWn-DT5tECItHzIh<-nG;XUf0PPV39 zNJ_Qq$m7$cnKidMz3on$0k4qs^sI6mL%#h(c=#jajcGjyyo;JQ9Z+l}rkz>th_Gnf zL>__ocpn;Ci`JfMn)mw$nDTYyRr5|!KH`0u!6o4)gXvn%_9vh9_!;@z^LJXxOa?l# z7jWlmO@DWNts^) zU{k){`2fs_cs1!W&g_rEUF7Hhuj?a3NlDNZMC4|wtK+|=f~P&s!BKBp(_9wT?_A6S${!;Z%YQ1i;3Nk8SUJyzlYD*crVn%Y6Qh+2K$7 zN>3XdQvIIW=JY};R!_*hMbL7WW$V%5wW(Cc{HeX0$BMtLm8e7PI#XU~w11gPYh`dh zl!3PF-uJ6-;S1{>?WK`AUj7Wa`cY0os$FI?$D{Y`v-;BBx%}wU2199^34bIUJU$L* zuU)r*2(8}?pG0Y;exA?Z^eOOk%#8wb2u%1Mj_pUzhf_(Am&;~a1EjIL$m7Q!1HRl5 z$9RC3$Bgdq8VOw$aXZc^)Y@?3ALi`)jf~Q#4dgK`V0>F(;Kn-2O~NOVhPBp@JDDfl(qBO9~f4Zu-VWK^(S4db<2w zR^|`JWv=zpOXu6F>YoJ_)A`7+TOAMWp*J0vOpK{#q;6w+~YZDy=j3^*A4=$4jcIzNZTnwoc7*FW9=oG^!S= z_rIR=@=7*XUvgNnh$(tZ2)mQJWIi4CtEhE#9nK>C48mj%E0hin7jx|7EwIKS=k&*g=5R!!GxrB`_N9*-hWVH$I7;)qt!r|Aa4xA6Q zPb`_eyZ6sSX7j|?kdLW2<{p=BCeC|y!L-!;(3NqDAt^Df6CUS#%F;qoefO!TdTLvT zaXX&~urw!)r}OB5RJsX+O{7dZ4NT5VlDlEs*L%Tv;oAIXF$}0+p<-;U-vt_`2cR;0 zcFC-?*DF6jKUgi2X4+9Of|Z7hrSotFueu)eGNV%m754y18QWfLDEK&Bbm=8c>ozXU zE!2=*79!0`<2<_q!{fU`ezwsDRXth>x^=*=R)6#WuWw*TU5WP8?UMT65Nc=N{KB)> z^vI>h${bUE8wI~@DELDRiq>BZbT3|D=UqL%0!K}a>4@RlyH~-E4P(62>HndzDaU(+ zkh&shf&TvfoV>gX_Vag$5}}_z#d+Au-dBGfqP(-R95(1!G)|!w@)gtZj@a-H7FlPy zYJ_3G*;qtA(|gX6NRHJ%x@*JDv9c928K)q{Z`=u~%fpXD53s z3$o_eF;n4UdnbFA$$l5$>6+mk@%h|~28%-9V^zAFhekK&iWLe{SI_a#EZa+7x98$8 zXYPV9^{t}^N?u7n2L7tT+?Ni_rjuOOVUse>Nw*fyz97<@SMpkNh4FoYBP(%Ox$?Fl z4kP}e+h{)B{bg2SnaL7QMd8ubml=joucO{rkcKTB=-01M(c^DO4dvwz(Zv)JM@PGJ z;>9C>hxm(0c&6VM`cKZQwQbjWI>xMnu z!CP22suMF68OwfGlmDs?O~){;*|k!3nm`?Tt&-ds+fi-Ab^Xbn} z-{h9Ig$Fb8<^eI@1C77D3bN1BL?2K1KprO8RC}={Q#M}jOEJUpok0soD`_CDl+?4FKsSa|_&0=G2}%^&`EpTCI;FqOW! zB)9PFIz#FM7eO8xTa!D?jDK9^s;dKL=q77SmbhY&o6yVOnK}!-}uf`xAu89N)oUArM~t>(pjzJYu0x8{QHlFZ{F_Is5;TIp*DJt_# z7Rq`*y~{&ftKj)s+B%Cza=P0;Y?BJ7(nwb!Eq610H*DE{J>H2F z+Z8FcP;IxlMB!OxL9)ZAK0vOXp8sNGZI0W?Cy!Vnw(W5?xb#j+oriIEnmMb4x_IY9 zsi3nUx{f&)v!>*K_ z6B@TiZ5P%yG|n+yjeN|oT0YkmzR1JpGQ9FczMQSCGIU;W{=8a`eF|wwURKKG@1hDm z=3KMg)0`~rp|$jxHKL>a6IZH_%c$+Jt7mF+YrDN*ZJI)LLfA}2P%wAq&0`(@&01c0Rmc!$lu4-Lm0XiKmdG@aOxvlWwZ9>g=!@%N|;CBMzhA|GbYss#}=rv^(t0 zbkFJ9FY33s>K8T>OHAe3R=<)&Y!ysi^;dGJy|57^L@h zLvQ5;6&^OacEpFGq}ry8_qA{RM`<~VKZVl+;cq<)b@2;d*xPV3@~YcfH9J#Ae@fST zbK}j(CfVdOErxsY7j{SOqnVVdVyCvdJ1jhT!pr(Y&-(Aj=gEY96z_>w)ktb)1#M2L zgpICTo(kX!PgIa;wJ4OMc;4Ia;8p=^2)(n2TYVJWMB`*eS3P4eiHs0Kn%hOY53d?? z(L8;Z60VDO_%_S4R5Y*?%VedASy^qW;PMti%u&paW&Zk63CLD4!k=ze{rHSlWA z9c~ue2r8%K4=$ng`i5oGoQ_4q7b}={#^&DPCVt?b4fV!Y(Z-2`_h%}KQv_H&vgyXY zJ{2+%N%ty?_%$u_(ysXA!@aLa`wKn0e-*wsP-rkriG^SfGZTIhaVcm&TMvD^JMGD! z7KbKp?;zH7r!ryRDaFy{ApVqNbzLn-*Qk2O+~}5j_ZzuuLqD`f{2KAt<)1#horHYx z)d2mHRZ=FK+a0&wCg&D)dawumMboV3*E~4`SffTMEa$EqU`TJC zth#S|Hv1X#!Yvz{W?imZzpPqk8!dSShA6ZnbSOmo+mn}4beE2-3u@fri)Bk)2!1kh zMTe18K{}Ovg@TG{r{7A>ICTI;$sli5o^CPAb^A$|T`OawdR?uFJ2stjOx!0a{Cs}@ zOcP3IPo|3tu~jh9qHfqiMJpA(P+f2OkyYYMd^km+n=jS$*ylq|>XmPo&k%<|Yn^tI z-0(y5=gATQPA10kvj*lD{VTo8@)?;p8~NMZay=MY)&%Ygd6KB^%Ch&8G$hS$oLgSX zyBc*=Wo_`xwYA^LYx!+cLsO()G8YEdHdL8DURYlCq+7Q8=BV`jb;P--qjgwVF6S;k z9id^r{CMB|{A(A|RQ7i3ttYEG&#Q^VqNsEE<3odxH#lv#=!5Euf0!Goz!RV>pt`f z`#s$n+5TqLkyfY3ENXortGbBRXil7Zb69#`aP{?>h+*vA$YVOWOz)Qae4+;H!$E~D zk;2)f&wsUS`-dzvbj03EU9mie&E}W78l4$G>x{?G@;+K)VFQz^$7;SAb*+a4S2BO8 zEAeTMboddY8~!exSQ;`XFYIC4%E>G`zPgskcD(h6l#HXYye)O)u6m}uszFmaEzK{U z21sfZ1Pxr^oVrpNz{`^=y`lR|&w$EzZYrsfrQ1{Mo}!K8GqzJ+y3{S)bAkJmG~Mg< z!5aEEJdp4bC}o&9AOHDV3b{*v@Ru8#)?aEI1XIhMm0TlIrmpP^Gv}+7*>yftJYB+@ zesC>&q*l8ByWs?VWTm8EYm2KQp;y#aoBCU{`K+zk-ceHVfRx(| zvEz1Q88m+^%#G;86ADc}FNklweXMCzDo<9m3QJ%r^!_{k6U<2+-%Stmz-sY9lC~|> z|9HjoBqyW2Z`K~{3RsEW?vT#`qjxY^zd_!s{VUdeZf#tU|N2TJcSo36{e;ycmBxuf zx~b<(g#y1f9J`yacIuGVt&Kf)h}`eUiSp=qyj z4YmE#1z~*S=7#fI;;byWt~7Gd*k7|XR4Xm$>5(0e_?Ks%3k*zjk=>A^kTiUL&?`XR>qunf zlhiKBn*sR4o7Ao=LHm;pQ!QQCPla)4n=)_~d+!#pdNR7G0@2`FPq^%ZN{&{3|Kbp7l&V}^f`sdZ(h8k7(|Ew0%oUl?msJ`Pz^1a;~ojVTE z_jl?G-yYq2=1oZUQ#?#gzOkLlHQt@=Ik|<5tD}KW9n)r2-Ip@=%te`qQvakmbjk5q z@>MZ6gAv+WMVui90*yE8axcDAy^QLm7!2PfNLPop}wZ_o9h*T(OZ|wY>u*Pp` zfpr3#<@!#=gJq{qOD#z)t+up6;^e5X47(Pq_(!-kv&adQ^WFI z9S{Akrp6bAzh$3v7b}Q)1@O8Eep}a;*}9)IS!@mxlH}FsvmdeR}HHK z>8Zsu|C&A39W*~OTQ1Vzo!!=u^MZABu0ip0+3Pl$BGLRaa-?j#CHq zUU_89uvNg ztN*j^I3`FU)7#-2yRB2;VTEJK7s*iVqU{r5z(K1 z-GQfaJkWW4<7gd=M07&e72S9eVHcLv%fEZH;%DUR*qv6is%j|BUd>$Zx_?(pe-0$x{FPdb$b&jVPnG`F|I?>f6>`&Xdoi~49;jkfTvSV>rS!a{o`#;u3 zyUzABm4C@hD-4df@S-3;AmK>^jf{Mlibi>8<4)_C;rD@9HhVg|vX9kO|I9V0+&weT zaH6BPW2shG?%R1Lr4kLFOMW`CSG5eq6qdz7yYK}E}{h7LQbbjJ| zcDU}Ph=|X9v|nw_ukpTg9>E^y3_Q^UI6PI;>MlC?{!Z(+mmiKv!EPxQ-K6;~BaUy_KK=T$ zrEW?JtD2bs+Hw@qn&%8{?9a#EH9o#Rs8N(juXVNdt_#>I1z z1^S(*uPx^u8j06>xn{SYc4+vAaKu+TYAHj?=->#cSLpB|zk5Mbk*4I(Z=00<+m!HW zHFgOMni1>AG^51~E~xv@H=8GHoI1oC;=7`UxsavtfJ=)VR~+ajR>)>>Ezv>`SvUZb{k4)Em{h zneX-ZpTsfBL-#dnPbQt)!{(UpmuwSS-l|!#hJj8uej5rN3^=?rW38> zxn@|gP1B;x=j_}<*=qDcvfFe%c?5BH#kSHlU(xbU&d-?mN5|-T`kv+U3oMZi*{5rk zRz*s8OLYjLIr<%RJ1MJM~m^PR4`CA82oMTj#C^Z?iJy+C# zzyn|2Y*kx!__YwW+IH{u4k z_;apfLD$1)Yk7wT2G1TcB|Q$GD(Ccd@X&HRqf$7om z@viqY`R6p5zDa1a?iW*fRysyP?wB$B?B#ZGl7fRqdme>P-|gD?qFhVmePQ_pyRco< z^>iT?eXfAq(UL^$=#X#D{t=`iNd?SCrT z9m}0^pIYub^(QpRkw0(O&BUO^p=x*(!TGxv#`(@4_&cH*nn`O~$_93B>TBEep$*Nh=8UFJ&^zTV*&(u?N}s!)fkSzSl0Rr@UhP;uz@e92+R3(mNO=)fzD$tV#@S#+PdX%WOyVMkNviOc=6(=eirq^L0=)ypH>1vc(%|l%`$JwA)(JH_JD6$!nZGVRfcNQ$nh4)IYIRfSYmW zcFRahw%DYoC)-P|?d=n%lDloza7i>ueSDmwUGq-)d;QWr+A`nu>>caAjGJeiTlqEu z^&A6#vAuX1q9CQ3y<}5VXE|uYIsbE+!F-Xqi}McV`l+HB>W{~&qUDCeXBHffo{|i+ zn{`pUVDhTr7}Sagr#De-&s>1r;X-SKmKDUwA#bCnCZv%&hb zXR-s4-rT60e-ji=>-hE1g0p!C#W3C}XD0B7N3Wx$`29+h#3#6HVi@yLG;fc8W}Emj zM1`xZvZ?b-=d;n3ewS-*v5&$IPN?|Ci`OsR$=ANuxcA&4RSLy!#qPp1l(nMp^0=Thvq45$iVe(mJMd-K`Up1*E-F7-aw2!OE>3|1<#EamcTeC6ar{-%cU3|v@UsC=)7J>zU$1xZ)77{|WP98Y z3v23oo~I+Xq}yt|qTCm1<+J4I$e^PunBML1i0NIQd!s`2Ey+iXM*5a7UcHHt%J5l4 z{?+RAEztT-msejRE`Tf`y(EjuT#tI)O@Z3la_3n)Xqsr9 z?~`>#$2m5kP&U)}Cgr0+F&#SYrh6)umi4Sr@XV~iPv0Ym3bqnO0Scp*Y(=l$bj$@e z)Gy7F-~BvaE$aEAxBC%;ymMt=yQqqttHKz~7gyd*p;UX0#1AzdV(1X3%#^-Yx5(o{ z1cJP6i3qi0PVPY;-KfhzE*5}r1ri0wh0}Eka=O=ol4d|&WZb^}HV#1JTpi9Bv$c0X zK0kP0;b3`ZClmJ8pczpxG@O0X^faZVz;wy>iVH&1xrP%a^$+?U_T;l!dd3#2RVi}L zZ<_gF^?hO@VOD1=>sg0Ay9eqXY$@5Y;52qlgEd*YU*5W9M0^RUC^4%~tq6Q9GQ}R; z771bY%&s`T)Wkb37Uj}E)QjXj3ztNuGo~&Rf3mXP2E62D&C14HmKUMv5&#MdNZUJ+kxbb7sxdA8?6^jNr@c0AL2y(HtyEXB zs{nR%EEm%lDcvTPzO}@4w5ZvvP2a1WyvDD6)6I-S?z#y|7G5(MX8(3M8rG;HwCeV# zp8K<^HWVdGNL&&9nFxobAL2#^pZ(v>tnBk~VyyG*i+%fU?!6vgvAv4~X?oq!S5^2x z(WH^achQEY)$a`XIq8%GzWQA3+_2o;>3EDWRK5~t#tA}ZLf$$K^8Nz(=qC;yQW)^= zrJ1|1E(?$OehJg=Rt@RzTzMxM5i4S1+jBVhsm$qrZtc8e4&5o zuj}t*Ww;==YSDOF>dQ?!eU}5$DkXt?=0ue5LZuOPppj!>P_=z&d`HsiRS~JcuSQId z3k4%k0p=xs@!&glA74~~oO^z8d@Q-6=H7-d8i7--sWo$@eNIsm{ol%y%GUal7dt6* zZSB+=QY2r8Di41r4ky2VZvb9Y$91T!2>Mh^44sUXYQ_ryhTU{p86HZu;`_REdd+?LRsv94W!~?@Xx!0UakeUh84& z)Jk)1s(#jIDE}z8?a2|tD%ipESwbWwCzN${+Z!zThYgS=kYr7!|Ek; zjegdDT$J~eV)eDvh}BxmHucycoVVrL=#0t-mX0mD0#X^;M&RF|QdE#XT5WLA0Fkic zNAtieSFP(v(VDlL^)h+7pgg7G&}R|S9pKA=Cf2la1^alebY{jD;EB{eeLX#h816d7 zM&YRW;MA1%_dm^v=Jt)S`7*_6+4`R>Uls>tlBN2S9$sE`JiHT)xCI5r%FAABjZcpF zGAheq$={3Q||kExE$ujK|)vThB}1z8P!-DI`Y6MG=`m*g8W zQV0}45)v^u@2wpl_A74GVxNL?;9G7aL&5JNyzfEcl9*_GxDh2&h2}J$6|A( z?k2QB>-Mimf38Rj**q0F!Ea|5skN}yFcJ++0{VjmPG z;Nlv9==E6X7?{T&0=BbFN^HK`)|bFs@dVvjV$Mfud`s4SDcpB$v!zC9i}C2h(V`Pv zZ*3h`7~{s7Enepk`nU?ZiMOckF%K5p8sZRs}*|jhucVz=gD(YLOTl^uGB?qDK74W7&dDA7H^d!LZ5@Vy!Mr)#QYf@F)^9+%;{BR zV?FWbv%}$}abxUbIMPI(8O1Mr1;U@O{Y{66385sk60$VM**1Zh0;y8nIYKFfcjn*m z4?yDo^)LL}-!RIm>uohVVQWwOxS{OrAB$&Sc9w1*I6$Svq|kW@*P+MtDl|_ZrSTt@ zuFQ@fY|B#9yR@>rpJ`@G7LDJ1CZEJp?DDCdnLp;;>63m&?2(-}6!D_TVMys@y89QI z{mtYHy`&u@8{B6F*fueiJ!X&_E5EXNq=uuj+JHZmxjMD;`H*4GZ9`e#0a2MSB%}Zx$^EktLCYLXDF=UX@GQNs(34)_jp^PRO=1!b`0+=^ zGMTa>F2Uio#hf4GT=K4=`| zexdq?p|q5_elzuISM9#{Y!-~F@me1(yRtdxkKcNCGtUoS+QrVLMsY9LVpxi-xjkm} zkGocCKK)BR?b9xEzK=W;8%d`Y{hZU6W=;9h#Lst3e<}!mOPkuuE!= zEX#UCrG&Efv>G$-)5<_D^T^v3A10@!debN?);}gukN*x`DEx42PT+CmbG?%$Gc;;0 z#uA&$l83aME56rW+05-WA#_RAsa{Cv(<;TlI{hNYok`}z`q0beqPaYmb@SbBf7$7H za5BudNw-g=u#l`dnrQt-SCZpL)>VZuz3Wf>3&$)(k`L-N^uEx$U~h3t&*j}Dm!Dy5 zTd1wWw$sOwm)#WYIWisEJNz0Rjp!BYK5*cZ$am{t*<5^v$L75KtX*$S9{>CHMXlLX z9-d5luk)GRQB;%i6FCEy8!WOEgM+H+Zd@K*q!P*7{^@N>dDR7q`?~F~I!85}*sRhX z?U%c#udOVuDL0nLJ2jMB@aEQa@|x0kiPeHM`C-tEh8X-~}MGx{ls^Es%M;o#3IjSJkC+b2Yo?a$&86e3HzgFn00iE{y`6 z{kwQ{J01_txv4#%9-F_SbE&;QA;u`7JtdT76IZ!3)hcHer}c`jqD-+bWtrHk((^pa z15?fsht#q@2Ky&*tenv8_DbQ?-pjF2m~q?oom-vMQ)?yeNO3}5t|5RV8aq=DdjgdV9d+FONLsLFGkLZUstv#T(Xs5U2O(X{wf)poHr`d7@F ztG(P$7o5Yb4;D~(NkP6kWtG-?)<_MfZ(;qk_Qkch%gKIa9lKexO1dSF=9jo-S5GG- zz03$wr!cg0o^#TXWEIvl-m65sJ&z(8B z+_A#F)T86<*KFB7GM1QL=A3mpSzUOUY~J{5Yw69!j<~hiU2>9D9`+e?|dpAmJ*g{P9;?i5bENiY{^@$Q5vqpxrgL`y;=Ss&r zX~t>w-?5)9d78`h-0i*nLYlUyTo;q}Z;mtidRmQB%e69R$pPoo!uWk%E}pUck}`R_ zl>aNUN+)X@c`1G+S511@&1UX>*xZozh;y~4+o3u49=h}Y^v;~g4?X$lOn&&s3{Nt6 zcV2yrJ?V}Oz71jtt|!Gd#ah*=H3)?Oe?ncWRkxu z>K6`n7PJ=|T74_0i}2UT+O?zcI%BH>y~q8&sPAF%mrrnNY`EmE=>sG9O-E;f_j+}1 zwEnEwiR`NbtG9!1&$RJOj%lZ*nbN0z+Ocb3pyP0`9Q|#lE>^2^op%af(#@apr0Vr( z8_V3Eli3#8s`Xqyq9c!EI=kc9g@!M2-PEK%s`Tg}%gZWN*z;k;{4J%0qD{o3{@%-z z4xPdt=Jv18^mnAEQl{4*7%tpuo<>z1kjbPyFR?mBmOt}Y*?eQL z-i;|neMN^{v@3Pmwf%bDw!!^Yb2C@9X^lfYFHlUbNk7B}$KO#pz>S0Jih}J}2jjK| zMb=^mxdy$z_Rsf5cg^P(D}6tBg==pI<1QZU7k3QI!q;u)G>q zF=jmH2PyHXu7AHUIzzN!rQ`39_0;+p8@w7enMkVV@75~0+yEX_Dc{-co2Si9b1(jK71&WP*ZV{0K0=;>j!8H z2vL^(r3bums1p!6SvaLYJ_iWW45;u%yn9)6j0|mZJ>^NLoCyyJMd<8tF$o|;q3jcT zl~)lbWb@?%-Y+mD~NgPD?9ljgvEK_ZDw@7+M@7 z@FW*5Y=yj`(wLtQLeHR}p!6wFwFQ7kB}AW~+jM0cQHLK_&1;ykZV@DS6aWQ1+9zN# z184`h%w>?0)YaDyL6!zE_aj)nM1wiU2Q4%1MkS=VEV@>P3gqRGUAuP^?*M--W+6+$ zpe!*xJp_8rYuQ&>be#;T<>cf5^q7HrQTxpe0G`Gn)POAA07~d@eMOOY!9Euk7xB(3 zg2JDuKgvU=qKdl=8=ax&(bk(20AlHdd%=eo(bn?Zop&ERe0Ua|FTx6hv?thaeB6{^ z`@tpcX4mq+P!sq-iLIx4%*5m*btVJ|btGY^0{nCa+h%$y3NWV#9L#MBYO$QjiY9z+ zAe0RjX9hd214vWW-X4L8AeMP8N%O&TcIFfbOR}iD3y6DY46p&R49fU@aB{6nmrQ_& zo_ue@>iA(jQAb-2p66!uQ2EId$;Zo}o)SNLKhOuhZleh(Z+si6DtUqE3R54F^%zLHz4D z{Ux@?x+oO1Rgs*+3KcNa`Jx-415npK2>m90LZ_NzM8nbW=uQi&D9@bVH_=xl4B1)n zOa<*OCZ@|*u2exf8rEew3Xtcv)Lc^z)YRxYd~Fo&2dcE?s=*VE+SZekH$7UE$!uE=~+|G#j_-0*~J~xI00Y;o)HvnU00~p3-I1gB;E6T zERIKsi8eWg5~b|Fx?&Kkbc}$2`c51ckzPP4&UUZY6OCCEZ@# zT63G?53a62B}{NW6Y^H!_eWEr*9@f%58FbFlCBh61VG6@7Zz@SX#!Ed9R$mtiwcth zTc+l)(9}E23kJL)34O!?dcre~Ak9PW+aaY(O!%8OVHWrpLIF?=52LRL-or0QckO2e zP7@x5)SY^t8(ud{HGoGz^x_C07&On%UcL;#SJtZ3x3l8|mjbm`JgkyrB!7<$4Gj%+ z)4Jz>xA5l9;XY|z_y}1bea9$pp>Dt47&g2*h3o_7`)cKB2e!u zqMt-?t;Vrp8L5+r@3v)&cZC@uNdOQ41niCk-WOrW07Ya5c^}4oYTma`@6e_RcrHIS zzLjQ>ozO}Gkk*~RAa~K$!C@FnFbLs#&LW?U`MZjuh!m;uJZ*yQg^`gFQ0=@4cmQC6 zQ-uBkee4|Lx*Z@kv9q%$ynOk7IUk;A<|9?r)tFaz%^SGawDEdVb7<8?p0%fu!=s}c z5GK*FO>^!?+p8I$e5rq9-5#1|OOWy5L> z4u)2>WH#K~wy+Nr>@lB^24r773CavZWZzrQ6=(Q!5%{RuutPU6p8#0BL&OF59|itc z`!&P`CE#vKSeJ#!vk^QvAQ6y@!~%uoUU~#~KB?&l1g}O2?c$I|oYcwx*rL82H^Kaf zzqemLRdsbW;gnhKL#(S6@Kjm^6$s>j*yJ>%OtNhkKuFD}I(qad-2t(OaJV!Q+z+3N z;b)P0Lm&w`IJOhROA8P8pLQ5OeF!pSR^RaZBw+AlX$Fn)?l1VTCP2D|A;pT|3hA8# ztWC_P_J+z6ISilx_|Ux|dm|gtn(oJ!MbtYYCbl0y2pH_VN0cIGgy6aI0T>1dLYPL{ zb+FgxZ@S{G&c+fWi%>kmO*Ifkrr25WuQR>|@>hG)Z$7JTK{O_-;Um%oF9{GVGK3O{ zI1apgj%mxEFt=#N<8oO?FDs$|w zJt}qoGh@I$hfG%I@bt94RUdK{etv%QlVj)@6Xv9+;w}Mj<7=8q+a{-H%KV`*ubyW;+P{5E(U zQ=M6Fxy7OLgYFI6MYV;NKynb)8c5P-YM5<4XRH&WCgVM;!Jr_0V9mLO=J`S~+@ zerguXqsmGObPWkw9KxO=TI5Ke37!zl?yf43rhDFo0cjk8VLS`an^uFZogM3uBUQ^f zV8xOkf3{y=b-i@?GD0uXiJk>HT0DVM=uZ2#0;P3|J6_o4AikJLf(qpt_P(;Q23$~7 z+$V997a)@CImQ_v;|ThZv*tc9guWtEAbVsgb`tZ5MQ$_jtbY%ADT2A^%cvs%@8A4y zlK_8^71_7tKl_)9gO9YW4Kc>=X5PW7D@MGmMFxI*s1EK$MvjfAV&Iqjk0!KA3W9&_ zL3cW=|M2#>iIB;yePgh~kHFjk+>B&tA4uLn+LHj3da#Ltip0ps=q;Z-2z)a&k&R-K zf++{w8If=Ra8zTRg_0_h_%;jtY+~|JEM0JAcb~ z_tS1eun55D697w+a5F^&!Ap$*g?She(Y~CItcrANagds@i})^u6KL`oud%vD5aoO; z2%z*xTnUjfjB!XPVnjU_dEx6SKmxGmD*#r-kiVT(P@tG(9Z3D{CP^}R-Box}O6nkF z{~&3nU*E!d_A;?IG3Z!aQbN#^kgpwQXAb}pY#n&Wzw_@cB3LdE>wuj4CnamK=1^Y*Q=DmCR>SYyKf-8ezmBj)S>+Oe74*i>p6 VB>%jKvyX(I^KvR@Gi43_`Y*h`P!0e9 diff --git a/traffic/views.csv b/traffic/views.csv index b608ef37de..89b142a133 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -25,3 +25,6 @@ _date,total_views,unique_views 2021-08-10,3,2 2021-08-14,2,2 2021-08-17,2,1 +2021-08-23,1,1 +2021-08-26,1,1 +2021-08-27,1,1 From b9474c2df02ad5832a9f05cd1b1220b55e1ecaf4 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 30 Aug 2021 00:37:03 +0000 Subject: [PATCH 0730/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 62dd326fa6..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 60 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 29 Performance From 6e4333f6b1921c7831ae46dc46e5b7675a037fea Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 30 Aug 2021 01:46:18 +0000 Subject: [PATCH 0731/2080] Updated with the latest blog posts --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 67f253e48a..0dba28eebd 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* +- [Alternative Ad networks to Admob (CPM/CPC)](https://www.reddit.com/r/androiddev/comments/pe2b9w/alternative_ad_networks_to_admob_cpmcpc/) +- [Databind lists of radio buttons and checkboxes with the library "bindable-radiobuttons" just published!](https://www.reddit.com/r/androiddev/comments/pdyp3z/databind_lists_of_radio_buttons_and_checkboxes/) +- [how to handle the scenario where the versions of Dependencies/MinSDK/CompileSDK/Kotlin Version/ Java Versions /.. etc OF A LIBRARY does not match with the project?](https://www.reddit.com/r/androiddev/comments/pdwod6/how_to_handle_the_scenario_where_the_versions_of/) +- [What do you use except SingleLiveEvent for one time actions in MVI/MVVM?](https://www.reddit.com/r/androiddev/comments/pdtin2/what_do_you_use_except_singleliveevent_for_one/) - [I made a flutter app for Anime episodes and news updates. (Flutter)](https://www.reddit.com/r/androiddev/comments/pdllgc/i_made_a_flutter_app_for_anime_episodes_and_news/) - [Action button best practices? FABs and/or buttons?](https://www.reddit.com/r/androiddev/comments/pdj9bu/action_button_best_practices_fabs_andor_buttons/) - [Design to Dev - Font Size/scaling Issue](https://www.reddit.com/r/androiddev/comments/pdg86s/design_to_dev_font_sizescaling_issue/) - [Our user-generated football (social network where users publish their own content has been suspended and removed from Google Play due to alleged copyright infringement](https://www.reddit.com/r/androiddev/comments/pdex08/our_usergenerated_football_social_network_where/) - [How do you usually perform mocking for instrument unit test?](https://www.reddit.com/r/androiddev/comments/pd9v4m/how_do_you_usually_perform_mocking_for_instrument/) -- [Android Design Patterns : Factory Method](https://www.reddit.com/r/androiddev/comments/pd9fz9/android_design_patterns_factory_method/) - [App Feedback Thread - August 28, 2021](https://www.reddit.com/r/androiddev/comments/pd9cfb/app_feedback_thread_august_28_2021/) -- [Jetpack Compose : "remember" composable seems useless because it doesn't retain state during activity recreation(for example during configuration change).](https://www.reddit.com/r/androiddev/comments/pd936c/jetpack_compose_remember_composable_seems_useless/) -- [What are the best ads for marketing apps/games?](https://www.reddit.com/r/androiddev/comments/pd80bv/what_are_the_best_ads_for_marketing_appsgames/) -- [Developing Android apps with api.](https://www.reddit.com/r/androiddev/comments/pd6cbh/developing_android_apps_with_api/) ### *InfoWorld posts* From 95c19a50b01e800c5dbf500868b51e44093c061d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 31 Aug 2021 00:42:31 +0000 Subject: [PATCH 0732/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 8 ++++---- reports/pagespeedresultmobile.svg | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..254099e304 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 56 Performance @@ -139,8 +139,8 @@ - - 83 + + 75 SEO diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..b3bcbe8b1f 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 32 Performance @@ -139,8 +139,8 @@ - - 83 + + 76 SEO From 1e5d4a140f94e4b279c18bc0eadca3633ab13a3d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 31 Aug 2021 02:09:47 +0000 Subject: [PATCH 0733/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0dba28eebd..e1dd4b604e 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Alternative Ad networks to Admob (CPM/CPC)](https://www.reddit.com/r/androiddev/comments/pe2b9w/alternative_ad_networks_to_admob_cpmcpc/) -- [Databind lists of radio buttons and checkboxes with the library "bindable-radiobuttons" just published!](https://www.reddit.com/r/androiddev/comments/pdyp3z/databind_lists_of_radio_buttons_and_checkboxes/) -- [how to handle the scenario where the versions of Dependencies/MinSDK/CompileSDK/Kotlin Version/ Java Versions /.. etc OF A LIBRARY does not match with the project?](https://www.reddit.com/r/androiddev/comments/pdwod6/how_to_handle_the_scenario_where_the_versions_of/) -- [What do you use except SingleLiveEvent for one time actions in MVI/MVVM?](https://www.reddit.com/r/androiddev/comments/pdtin2/what_do_you_use_except_singleliveevent_for_one/) -- [I made a flutter app for Anime episodes and news updates. (Flutter)](https://www.reddit.com/r/androiddev/comments/pdllgc/i_made_a_flutter_app_for_anime_episodes_and_news/) -- [Action button best practices? FABs and/or buttons?](https://www.reddit.com/r/androiddev/comments/pdj9bu/action_button_best_practices_fabs_andor_buttons/) -- [Design to Dev - Font Size/scaling Issue](https://www.reddit.com/r/androiddev/comments/pdg86s/design_to_dev_font_sizescaling_issue/) -- [Our user-generated football (social network where users publish their own content has been suspended and removed from Google Play due to alleged copyright infringement](https://www.reddit.com/r/androiddev/comments/pdex08/our_usergenerated_football_social_network_where/) -- [How do you usually perform mocking for instrument unit test?](https://www.reddit.com/r/androiddev/comments/pd9v4m/how_do_you_usually_perform_mocking_for_instrument/) -- [App Feedback Thread - August 28, 2021](https://www.reddit.com/r/androiddev/comments/pd9cfb/app_feedback_thread_august_28_2021/) +- [Referral Tracking for Google Play Store](https://www.reddit.com/r/androiddev/comments/per6pd/referral_tracking_for_google_play_store/) +- [Android Drag and Drop Tutorial: Moving Views and Data](https://www.reddit.com/r/androiddev/comments/peqq1p/android_drag_and_drop_tutorial_moving_views_and/) +- [Android Apps on Windows 11](https://www.reddit.com/r/androiddev/comments/pept2v/android_apps_on_windows_11/) +- [MyFitnessPal Question: how do they get nutritional data??](https://www.reddit.com/r/androiddev/comments/peo3tj/myfitnesspal_question_how_do_they_get_nutritional/) +- [Jetpack Compose navigation architecture with ViewModels](https://www.reddit.com/r/androiddev/comments/pelh3q/jetpack_compose_navigation_architecture_with/) +- [Kuberam: Jetpack Compose Project using MVVM pattern](https://www.reddit.com/r/androiddev/comments/pekc0a/kuberam_jetpack_compose_project_using_mvvm_pattern/) +- [Android in-app purchases tutorial: how to retrieve active purchases and process a subscription change](https://www.reddit.com/r/androiddev/comments/pei5v1/android_inapp_purchases_tutorial_how_to_retrieve/) +- [Weekly Who's Hiring Thread - August 30, 2021](https://www.reddit.com/r/androiddev/comments/pehlmy/weekly_whos_hiring_thread_august_30_2021/) +- [How To Make An Android Runner Tracking App?](https://www.reddit.com/r/androiddev/comments/pegbq8/how_to_make_an_android_runner_tracking_app/) +- [Daily active users(DAU) displays "Data Unavailable" on play console.](https://www.reddit.com/r/androiddev/comments/pefa1p/daily_active_usersdau_displays_data_unavailable/) ### *InfoWorld posts* From 44ad98844a803d44f5b497fa1907ae9b9dadfaf9 Mon Sep 17 00:00:00 2001 From: Alexander Rogalskiy Date: Tue, 31 Aug 2021 16:13:35 +0300 Subject: [PATCH 0734/2080] Updates on files Added changeset on workflow --- .env => .env.example | 0 .github/linters/.yaml-lint.yml | 11 ++ .gitignore | 3 + .husky/prepare-commit-msg | 2 +- .pre-commit-config.yaml | 61 ++++++ Dockerfile | 2 +- Makefile | 55 ++++++ Tiltfile | 5 +- codespell.txt | 1 + k8s/backend/deployment.yaml | 105 ++++++++-- package.json | 1 + policy/deny.rego | 5 +- scripts/build-docs.sh | 3 +- scripts/create-changelog.sh | 2 +- scripts/docker-build.sh | 9 + scripts/docker-compose-start.sh | 8 + scripts/docker-compose-stop.sh | 7 + scripts/installHusky.js | 6 + scripts/rootAppName.js | 12 ++ tilt_modules/extensions.json | 44 +++++ tilt_modules/list_port_forwards/README.md | 6 + tilt_modules/list_port_forwards/Tiltfile | 12 ++ .../display_port_forwards.sh | 16 ++ tilt_modules/min_tilt_version/README.md | 29 +++ tilt_modules/min_tilt_version/Tiltfile | 27 +++ tilt_modules/print_tiltfile_dir/Tiltfile | 8 + tilt_modules/restart_process/.gitignore | 1 + tilt_modules/restart_process/Dockerfile | 15 ++ tilt_modules/restart_process/README.md | 181 ++++++++++++++++++ tilt_modules/restart_process/Tiltfile | 146 ++++++++++++++ tilt_modules/restart_process/release.sh | 24 +++ tilt_modules/restart_process/test/Dockerfile | 5 + tilt_modules/restart_process/test/Tiltfile | 5 + .../restart_process/test/custom.Tiltfile | 9 + tilt_modules/restart_process/test/fail.sh | 9 + tilt_modules/restart_process/test/job.yaml | 12 ++ .../restart_process/test/test-custom.sh | 21 ++ .../restart_process/test/test-docker.sh | 29 +++ tilt_modules/restart_process/test/test.sh | 7 + .../restart_process/tilt-restart-wrapper.go | 74 +++++++ 40 files changed, 948 insertions(+), 30 deletions(-) rename .env => .env.example (100%) create mode 100644 .github/linters/.yaml-lint.yml create mode 100644 .pre-commit-config.yaml create mode 100644 Makefile create mode 100644 codespell.txt create mode 100644 scripts/docker-build.sh create mode 100644 scripts/docker-compose-start.sh create mode 100644 scripts/docker-compose-stop.sh create mode 100644 scripts/installHusky.js create mode 100644 scripts/rootAppName.js create mode 100644 tilt_modules/extensions.json create mode 100644 tilt_modules/list_port_forwards/README.md create mode 100644 tilt_modules/list_port_forwards/Tiltfile create mode 100644 tilt_modules/list_port_forwards/display_port_forwards.sh create mode 100644 tilt_modules/min_tilt_version/README.md create mode 100644 tilt_modules/min_tilt_version/Tiltfile create mode 100644 tilt_modules/print_tiltfile_dir/Tiltfile create mode 100644 tilt_modules/restart_process/.gitignore create mode 100644 tilt_modules/restart_process/Dockerfile create mode 100644 tilt_modules/restart_process/README.md create mode 100644 tilt_modules/restart_process/Tiltfile create mode 100755 tilt_modules/restart_process/release.sh create mode 100644 tilt_modules/restart_process/test/Dockerfile create mode 100644 tilt_modules/restart_process/test/Tiltfile create mode 100644 tilt_modules/restart_process/test/custom.Tiltfile create mode 100755 tilt_modules/restart_process/test/fail.sh create mode 100644 tilt_modules/restart_process/test/job.yaml create mode 100755 tilt_modules/restart_process/test/test-custom.sh create mode 100755 tilt_modules/restart_process/test/test-docker.sh create mode 100755 tilt_modules/restart_process/test/test.sh create mode 100644 tilt_modules/restart_process/tilt-restart-wrapper.go diff --git a/.env b/.env.example similarity index 100% rename from .env rename to .env.example diff --git a/.github/linters/.yaml-lint.yml b/.github/linters/.yaml-lint.yml new file mode 100644 index 0000000000..f3eddf35df --- /dev/null +++ b/.github/linters/.yaml-lint.yml @@ -0,0 +1,11 @@ +--- +# https://yamllint.readthedocs.io/en/stable/index.html +# yamllint --strict -c .github/linters/.yaml-lint.yml . + +extends: default + +rules: + document-start: disable + indentation: disable + line-length: disable + truthy: false diff --git a/.gitignore b/.gitignore index 76c3ac178b..3e63d7f21b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ site/ dist/ .cache node_modules + +# Env files +.env diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg index 1170ca003e..e188806f54 100644 --- a/.husky/prepare-commit-msg +++ b/.husky/prepare-commit-msg @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -git cz --hook --non-interactive --type=feat --subject="added new features" || true +exec < /dev/tty && git cz --hook --non-interactive --type=feat --subject="added new features" || true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..8f586a712e --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,61 @@ +--- +# https://pre-commit.com/ +default_stages: [commit, push] +default_language_version: + # force all unspecified Python hooks to run python3 + python: python3 +minimum_pre_commit_version: "1.20.0" +repos: + - repo: meta + hooks: + - id: identity + - id: check-hooks-apply + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.4.0 + hooks: + - id: check-added-large-files + - id: check-case-conflict + - id: check-executables-have-shebangs + exclude: ^scripts/windows\.sh$ + - id: check-merge-conflict + - id: check-vcs-permalinks + # - id: check-yaml + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: mixed-line-ending + - id: trailing-whitespace + # - repo: https://github.com/Lucas-C/pre-commit-hooks + # rev: v1.1.10 + # hooks: + # - id: forbid-tabs + # - id: remove-tabs + - repo: https://github.com/jumanjihouse/pre-commit-hooks + rev: 2.1.5 + hooks: + - id: shellcheck + # - id: shfmt + - repo: https://github.com/codespell-project/codespell + rev: v2.0.0 + hooks: + - id: codespell + name: Run codespell + description: Check Spelling with codespell + entry: codespell --ignore-words=codespell.txt + # - repo: https://github.com/igorshubovych/markdownlint-cli + # rev: v0.27.1 + # hooks: + # - id: markdownlint + # name: Run markdownlint + # description: Checks the style of Markdown files + # entry: markdownlint -c .github/linters/.markdown-lint.yml . + # types: [markdown] + # files: \.(md|mdown|markdown)$ + # - repo: https://github.com/adrienverge/yamllint + # rev: v1.26.1 + # hooks: + # - id: yamllint + # name: Run yamllint + # description: Check YAML files with yamllint + # entry: yamllint --strict -c .github/linters/.yaml-lint.yml + # types: [yaml] + # files: \.(yaml|yml)$ diff --git a/Dockerfile b/Dockerfile index f05562e721..fafdc2ddc0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ ## ## ---- Base OS layer ---- -## docker build -t --build-arg IMAGE_SOURCE=node IMAGE_TAG=12-buster . +## docker build -t styled-android-patterns --build-arg IMAGE_SOURCE=node --build-arg IMAGE_TAG=12-buster . ## ARG IMAGE_SOURCE=node ARG IMAGE_TAG=12-buster diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..91b0222972 --- /dev/null +++ b/Makefile @@ -0,0 +1,55 @@ +# Since we rely on paths relative to the makefile location, abort if make isn't being run from there. +$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in)) + +IMAGE ?= styled-android-patterns +TAG ?= latest + +UTILS := docker tilt +# Make sure that all required utilities can be located. +UTIL_CHECK := $(or $(shell which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to install `docker` and `tilt` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS))) +DIRS := $(shell ls -d -- */ | grep -v public) + +# Default target (by virtue of being the first non '.'-prefixed in the file). +.PHONY: _no-target-specified +_no-target-specified: + $(error Please specify the target to make - `make list` shows targets) + +# Lists all targets defined in this makefile. +.PHONY: list +list: + @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort + +# Lists all dirs (except `public`). +.PHONY: dirs +dirs: + echo "$(DIRS)" + +# Ensures that the git workspace is clean. +.PHONY: _ensure-clean +_ensure-clean: + @[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; } + +# Run docker build command. +.PHONY: docker-build +docker-build: _ensure-clean + docker build -f Dockerfile -t $(IMAGE):$(TAG) . + +# Run docker start command. +.PHONY: docker-start +docker-start: + docker-compose -f docker-compose.yml up -d + +# Run docker stop command. +.PHONY: docker-stop +docker-stop: + docker-compose -f docker-compose.yml down -v --remove-orphans + +# Run tilt start command. +.PHONY: tilt-start +tilt-start: + tilt up + +# Run tilt stop command. +.PHONY: tilt-stop +tilt-stop: + tilt down --delete-namespaces diff --git a/Tiltfile b/Tiltfile index f68138589b..251ea0beae 100644 --- a/Tiltfile +++ b/Tiltfile @@ -20,7 +20,7 @@ namespace_create('webapp') conftest(path='k8s/backend/deployment.yaml', namespace='main') # k8s_yaml('k8s/backend/deployment.yaml') k8s_yaml(namespace_inject(read_file('k8s/backend/deployment.yaml'), 'webapp'), allow_duplicates=False) -k8s_resource('backend', port_forwards=8000, resource_deps=['deploy', 'conftest']) +k8s_resource('backend-android-patterns-v1', port_forwards=8000, resource_deps=['deploy', 'conftest']) # Records the current time, then kicks off a server update. # Normally, you would let Tilt do deploys automatically, but this @@ -32,9 +32,8 @@ local_resource( # Add a live_update rule to our docker_build congrats = "🎉 Congrats, you ran a live_update! 🎉" -docker_build_with_restart('android-patterns', '.', build_args={'IMAGE_SOURCE': 'node', 'IMAGE_TAG': '12-buster'}, +docker_build('styled-android-patterns', '.', build_args={'IMAGE_SOURCE': 'node', 'IMAGE_TAG': '12-buster'}, dockerfile='./Dockerfile', - entrypoint=['mkdocs', 'serve', '--verbose', '--dirtyreload'], live_update=[ sync('.', '/usr/src/app'), run('python3 ./record-start-time.py'), diff --git a/codespell.txt b/codespell.txt new file mode 100644 index 0000000000..5a95200ed4 --- /dev/null +++ b/codespell.txt @@ -0,0 +1 @@ +arbitrer diff --git a/k8s/backend/deployment.yaml b/k8s/backend/deployment.yaml index dd3d026bea..b9c45d542b 100644 --- a/k8s/backend/deployment.yaml +++ b/k8s/backend/deployment.yaml @@ -1,16 +1,55 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: backend-android-patterns-configmap + namespace: webapp + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: serverless + app.kubernetes.io/managed-by: tilt +data: + SERVER_PORT: '8000' + APP_NAME: styled-android-patterns +--- +apiVersion: v1 +kind: Service +metadata: + name: backend-android-patterns + namespace: webapp + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: serverless + app.kubernetes.io/managed-by: tilt +spec: + type: ClusterIP + clusterIP: None + sessionAffinity: None + ports: + - name: http + protocol: TCP + port: 8000 + selector: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 +--- apiVersion: apps/v1 kind: Deployment metadata: - name: backend + name: backend-android-patterns-v1 namespace: webapp labels: - app.kubernetes.io/name: backend - app.kubernetes.io/instance: android-patterns - app.kubernetes.io/version: '0.0.0' - app.kubernetes.io/component: backend + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function app.kubernetes.io/part-of: documentation app.kubernetes.io/managed-by: tilt - spec: replicas: 1 minReadySeconds: 60 @@ -23,23 +62,33 @@ spec: type: RollingUpdate selector: matchLabels: - app: backend + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 template: metadata: labels: - app: backend + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 annotations: scheduler.alpha.kubernetes.io/critical-pod: '' spec: - dnsPolicy: Default + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler terminationGracePeriodSeconds: 30 - tolerations: - - key: 'CriticalAddonsOnly' - operator: 'Exists' +# tolerations: +# - key: "node-priority" +# operator: "Equal" +# value: "infra" +# effect: "NoExecute" +# nodeSelector: +# node-priority: infra containers: - - name: backend - image: android-patterns + - name: backend-android-patterns + image: styled-android-patterns imagePullPolicy: IfNotPresent + terminationMessagePath: /etc/logs/termination.log + terminationMessagePolicy: File ports: - name: http containerPort: 8000 @@ -53,16 +102,32 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: USER_AGENT + value: "k8s-agent $(WATCH_NAMESPACE)/$(POD_NAME)" + - name: LOG_DIR + value: "/tmp/logs" volumeMounts: - name: data - mountPath: /data + mountPath: "/data" + - name: data-tmp + mountPath: "/tmp" resources: - limits: - cpu: 2000m - memory: 512Mi requests: - cpu: 100m - memory: 32Mi + cpu: 1 + memory: "2G" + ephemeral-storage: "2G" + limits: + cpu: 2 + memory: "3G" + ephemeral-storage: "3G" + securityContext: + allowPrivilegeEscalation: false + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: false volumes: - name: data emptyDir: {} + - name: data-tmp + emptyDir: {} diff --git a/package.json b/package.json index 40c0927079..72e5917af6 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "remark": "remark -q -f .", "commit": "git-cz", "release": "release-it", + "name": "node ./scripts/rootAppName.js", "format": "prettier --single-quote --write **/*.{json,yaml,yml}", "format:md": "remark-preset-davidtheclark --format", "format:check": "prettier --check **/*.{json,yaml,yml}", diff --git a/policy/deny.rego b/policy/deny.rego index f20deb34a0..48e205b0a6 100644 --- a/policy/deny.rego +++ b/policy/deny.rego @@ -13,9 +13,10 @@ name = input.metadata.name deny[msg] { input.kind == "Deployment" - not input.spec.selector.matchLabels.app + not input.spec.selector.matchLabels.app.kubernetes.io/name + # not input.spec.selector.matchLabels.app - msg := "Containers must provide app label for pod selectors" + msg := "Containers must provide name/version label for pod selectors" } #deny[msg] { diff --git a/scripts/build-docs.sh b/scripts/build-docs.sh index 61dec61b2e..8062d77701 100644 --- a/scripts/build-docs.sh +++ b/scripts/build-docs.sh @@ -18,8 +18,7 @@ if [[ $STRICT_SCRIPT =~ $TRUE_REG ]]; then fi ## Change working directory -BASE_DIR=$(dirname $0)/.. -cd $BASE_DIR +cd "$(dirname "$0")" || exit 1 ## Install pip module wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py -O $TMPDIR/get-pip.py diff --git a/scripts/create-changelog.sh b/scripts/create-changelog.sh index 34e4441da9..010d751006 100644 --- a/scripts/create-changelog.sh +++ b/scripts/create-changelog.sh @@ -2,7 +2,7 @@ set -u -e -o pipefail -cd ../ +cd "$(dirname "$0")" || exit 1 VERSION=$(grep 'version:' package.json | sed -E "s/.*'([^']*)'/\1/") RELEASE_DATE=$(date "+%Y-%m-%d") diff --git a/scripts/docker-build.sh b/scripts/docker-build.sh new file mode 100644 index 0000000000..98e210a477 --- /dev/null +++ b/scripts/docker-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +cd "$(dirname "$0")" || exit 1 + +# Build docker images +GIT_SHA=$(git rev-parse HEAD) +docker build -f Dockerfile -t styled-android-patterns -t styled-android-patterns:$GIT_SHA --build-arg VERCEL_TOKEN=$1 . diff --git a/scripts/docker-compose-start.sh b/scripts/docker-compose-start.sh new file mode 100644 index 0000000000..a21bfccd33 --- /dev/null +++ b/scripts/docker-compose-start.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +cd "$(dirname "$0")" || exit 1 + +docker-compose -f docker-compose.yml build +docker-compose -f docker-compose.yml up -d diff --git a/scripts/docker-compose-stop.sh b/scripts/docker-compose-stop.sh new file mode 100644 index 0000000000..bcfb59d390 --- /dev/null +++ b/scripts/docker-compose-stop.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +cd "$(dirname "$0")" || exit 1 + +docker-compose -f docker-compose.yml down -v --remove-orphans diff --git a/scripts/installHusky.js b/scripts/installHusky.js new file mode 100644 index 0000000000..5e306824ff --- /dev/null +++ b/scripts/installHusky.js @@ -0,0 +1,6 @@ +const {exec} = require('child_process'); + +exec(`husky install `, (err, stdout, stderr) => { + console.log(`stdout: ${stdout}`); + console.log(`stderr: ${stderr}`); +}); diff --git a/scripts/rootAppName.js b/scripts/rootAppName.js new file mode 100644 index 0000000000..334aced0e4 --- /dev/null +++ b/scripts/rootAppName.js @@ -0,0 +1,12 @@ +const packageJson = require('../package.json'); + +const moduleName = `${/[^/]*$/.exec(packageJson.name)[0]}_${packageJson.version.replace(/\./g, '_')}`; +const packageName = process.env.npm_package_name; + +console.log(`>>> Module name: ${moduleName}`); +console.log(`>>> Package name: ${packageName}`) + +module.exports = { + moduleName, + packageName +}; diff --git a/tilt_modules/extensions.json b/tilt_modules/extensions.json new file mode 100644 index 0000000000..159e0f8993 --- /dev/null +++ b/tilt_modules/extensions.json @@ -0,0 +1,44 @@ +{ + "Extensions": [ + { + "Name": "restart_process", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-21T23:51:31.73649+03:00" + }, + { + "Name": "conftest", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:00:56.518226+03:00" + }, + { + "Name": "list_port_forwards", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:01:05.4623128+03:00" + }, + { + "Name": "uibutton", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:01:17.1423703+03:00" + }, + { + "Name": "print_tiltfile_dir", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:01:26.3106616+03:00" + }, + { + "Name": "min_tilt_version", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:01:37.6678026+03:00" + }, + { + "Name": "tilt_inspector", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-07-31T19:01:43.045349+03:00" + }, + { + "Name": "namespace", + "ExtensionRegistry": "https://github.com/tilt-dev/tilt-extensions", + "TimeFetched": "2021-08-09T12:53:55.8735512+03:00" + } + ] +} \ No newline at end of file diff --git a/tilt_modules/list_port_forwards/README.md b/tilt_modules/list_port_forwards/README.md new file mode 100644 index 0000000000..f0a664d476 --- /dev/null +++ b/tilt_modules/list_port_forwards/README.md @@ -0,0 +1,6 @@ +## Display Port Forwards + +A simple bash-based extension that displays port forwards currently being used by Tilt resources, +via a UI button on the (Tiltfile) resource. + +Note that this extension depends on the [`jq`](https://stedolan.github.io/jq/) utility. diff --git a/tilt_modules/list_port_forwards/Tiltfile b/tilt_modules/list_port_forwards/Tiltfile new file mode 100644 index 0000000000..c9452b5d00 --- /dev/null +++ b/tilt_modules/list_port_forwards/Tiltfile @@ -0,0 +1,12 @@ +load('ext://uibutton', 'cmd_button') + +display_pf_script_path = os.path.join(os.getcwd(), "display_port_forwards.sh") + +def display_port_forwards(): + cmd_button( + name = 'which_ports', + resource = '(Tiltfile)', + argv = [display_pf_script_path], + text='List port forwards', + icon_name='travel_explore', + ) diff --git a/tilt_modules/list_port_forwards/display_port_forwards.sh b/tilt_modules/list_port_forwards/display_port_forwards.sh new file mode 100644 index 0000000000..5117cff44f --- /dev/null +++ b/tilt_modules/list_port_forwards/display_port_forwards.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -euo pipefail + +command -v jq >/dev/null || (echo "jq not installed :(" && exit 1) # ensure jq is installed + +echo "__(.)= __(.)= =(.)__ =(.)__" +echo "\\___) \\___) (___/ (___/" + +echo "---- Port forwards in use ----" + +jqquery='.items[] | { name:.metadata.annotations."tilt.dev/resource", p:.spec.forwards[] } | "\(.name):\(.p.containerPort) -> \(.p.host):\(.p.localPort)"' + +tilt get portforwards -o json | jq -r "$jqquery" + +echo "------------------------------" diff --git a/tilt_modules/min_tilt_version/README.md b/tilt_modules/min_tilt_version/README.md new file mode 100644 index 0000000000..06f8482728 --- /dev/null +++ b/tilt_modules/min_tilt_version/README.md @@ -0,0 +1,29 @@ +# Min Tilt Version + +Author: [David Rubin](https://github.com/drubin) + +Specify a minimum Tilt version to run this TiltFile + +If the minimum version is not met, Tilt will stop executing using the `fail` api + +## Usage + +It's advisable to include this as close to the top of the Tiltfile as possible. + +Include patch version + +```py +load('ext://min_tilt_version', 'min_tilt_version') +min_tilt_version('0.13.0') +``` + +Only care about minor + +```py +load('ext://min_tilt_version', 'min_tilt_version') +min_tilt_version('0.13') +``` + +## Requirements + +- `tilt` binary must be in your path diff --git a/tilt_modules/min_tilt_version/Tiltfile b/tilt_modules/min_tilt_version/Tiltfile new file mode 100644 index 0000000000..f55742e450 --- /dev/null +++ b/tilt_modules/min_tilt_version/Tiltfile @@ -0,0 +1,27 @@ +def min_tilt_version(min_version): + # this assumes that the tit version command always returns + # v0.13.0, built 2020-04-01 + # Also supports dev versions + # v0.13.0-dev, built 2020-04-03 + tilt_bin = os.environ.get('TILT_BIN', 'tilt') + ver_string = str(local('%s version' % tilt_bin, quiet=True)) + # Clean out the version file so its in the format 0.13.0 + versions = ver_string.split(', ') + # pull first string and remove the `v` and `-dev` + version = versions[0].replace('-dev', '').replace('v', '') + + # Python allows you to compare two tuples + # (0, 12, 0) < (0, 12, 1) + tup_version = _version_tuple(version) + tup_min_version = _version_tuple(min_version) + + if tup_version < tup_min_version: + print('+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+') + print('| Tilt Version is out of date! |') + print('| Please upgrade https://docs.tilt.dev/upgrade.html |') + print('+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+') + fail('Tilt version is out of date minimum required version is [%s]' % min_version) + +# Private methods +def _version_tuple(v): + return [int(str_num) for str_num in v.split(".")] diff --git a/tilt_modules/print_tiltfile_dir/Tiltfile b/tilt_modules/print_tiltfile_dir/Tiltfile new file mode 100644 index 0000000000..451d66fcb8 --- /dev/null +++ b/tilt_modules/print_tiltfile_dir/Tiltfile @@ -0,0 +1,8 @@ +# Print all files in the Tiltfile directory. If recursive is set to True, also prints files in all recursive subdirectories. + +def print_tiltfile_dir(recursive=False): + cwd = os.getcwd() + files = listdir(cwd, recursive=recursive) + print('Directory where Tiltfile is located: ', cwd) + for file in files: + print(file) diff --git a/tilt_modules/restart_process/.gitignore b/tilt_modules/restart_process/.gitignore new file mode 100644 index 0000000000..3758a00fca --- /dev/null +++ b/tilt_modules/restart_process/.gitignore @@ -0,0 +1 @@ +tilt-restart-wrapper diff --git a/tilt_modules/restart_process/Dockerfile b/tilt_modules/restart_process/Dockerfile new file mode 100644 index 0000000000..2ad4b08e0e --- /dev/null +++ b/tilt_modules/restart_process/Dockerfile @@ -0,0 +1,15 @@ +FROM alpine/git + +RUN apk update && apk add make +RUN apk add build-base + +RUN git clone https://github.com/eradman/entr.git /entr +WORKDIR /entr +RUN git checkout c564e6bdca1dfe2177d1224363cad734158863ad +RUN ./configure; CFLAGS="-static" make install + +FROM scratch + +COPY --from=0 /usr/local/bin/entr / + +ADD tilt-restart-wrapper / diff --git a/tilt_modules/restart_process/README.md b/tilt_modules/restart_process/README.md new file mode 100644 index 0000000000..b47f82ef58 --- /dev/null +++ b/tilt_modules/restart_process/README.md @@ -0,0 +1,181 @@ +# Restart Process + +This extension helps create images that can restart on `live_update`: + +- `docker_build_with_restart`: wraps a `docker_build` call +- `custom_build_with_restart`: wraps a `custom_build` call + +At the end of a `live_update`, the container's process will rerun itself. + +(Use it in place of the `restart_container()` Live Update step, which has been deprecated for Kubernetes resources.) + +## When to Use +Use this extension when you have an image and you want to re-execute its entrypoint/command as part of a `live_update`. + +E.g. if your app is a static binary, you'll probably need to re-execute the binary for any changes you made to take effect. + +(If your app has hot reloading capabilities--i.e. it can detect and incorporate changes to its source code without needing to restart--you probably don't need this extension.) + +### Unsupported Cases +This extension does NOT support process restarts for: +- Images built with `custom_build` using any of the `skips_local_docker`, `disable_push`, or `tag` parameters. +- Images run in Docker Compose resources (use the [`restart_container()`](https://docs.tilt.dev/api.html#api.restart_container) builtin instead) +- Images without a shell (e.g. `scratch`, `distroless`) +- Container commands specified as `command` in Kubernetes YAML will be overridden by this extension. + - However, the `args` field is still available; [reach out](https://tilt.dev/contact) if you need help navigating the interplay between Tilt and these YAML values +- CRDs + +If this extension doesn't work for your use case, [see our docs for alternatives](https://docs.tilt.dev/live_update_reference.html#restarting-your-process). + +Run into a bug? Need a use case that we don't yet support? Let us know--[open an issue](https://github.com/tilt-dev/tilt-extensions/issues) or [contact us](https://tilt.dev/contact). + +## How to Use + +Import this extension by putting the following at the top of your Tiltfile: +```python +load('ext://restart_process', 'docker_build_with_restart') +``` + +For the image that needs the process restart, replace your existing `docker_build` call: +```python +docker_build( + 'foo-image', + './foo', + arg1=val1, + arg2=val2, + live_update=[x, y, z...] +) +``` +with a `docker_build_with_restart` call: +```python +docker_build_with_restart( + 'foo-image', + './foo', + entrypoint='/go/bin/foo', + arg1=val1, + arg2=val2, + live_update=[x, y, z...] +) +``` +The call above looks just like the initial `docker_build` call except for one added parameter, `entrypoint` (in this example, `/go/bin/foo`). This is the command that you want to run on container start and _re-run_ on Live Update. + +A custom_build call looks similar: + +```python +load('ext://restart_process', 'custom_build_with_restart') + +custom_build_with_restart( + 'foo-image', + 'docker build -t $EXPECTED_REF ./foo', + deps=['./foo'], + live_update=[sync(...)] +) +``` + +### Troubleshooting +#### `failed running [touch /tmp/.restart-proc']` +If you see an error of the form: +``` +ERROR: Build Failed: ImageBuild: executor failed running [touch /tmp/.restart-proc']: exit code: 1 +``` +this often means that your Dockerfile user ([see docs](https://docs.docker.com/engine/reference/builder/#user)) doesn't have permission to write to the file we use to signal a process restart. Use the `restart_file` parameter to specify a file that your Dockerfile user definitely has write access to. + +### API +```python +def docker_build_with_restart(ref: str, context: str, + entrypoint: Union[str, List[str]], + live_update: List[LiveUpdateStep], + base_suffix: str = '-base', + restart_file: str = '/.restart-proc', + trigger: Union[str, List[str]] = [], + **kwargs +): + """Args: + ref: name for this image (e.g. 'myproj/backend' or 'myregistry/myproj/backend'); as the parameter of the same name in docker_build + context: path to use as the Docker build context; as the parameter of the same name in docker_build + entrypoint: the command to be (re-)executed when the container starts or when a live_update is run + live_update: set of steps for updating a running container; as the parameter of the same name in docker_build + base_suffix: suffix for naming the base image, applied as {ref}{base_suffix} + restart_file: file that Tilt will update during a live_update to signal the entrypoint to rerun + trigger: (optional) list of local paths. If specified, the process will ONLY be restarted when there are changes + to the given file(s); as the parameter of the same name in the LiveUpdate `run` step. + **kwargs: will be passed to the underlying `docker_build` call + """ + + +def custom_build_with_restart(ref: str, command: str, deps: List[str], entrypoint, + + entrypoint: Union[str, List[str]], + live_update: List[LiveUpdateStep], + base_suffix: str = '-base', + restart_file: str = '/.restart-proc', + trigger: Union[str, List[str]] = [], + , **kwargs +): + """ + Args: + ref: name for this image (e.g. 'myproj/backend' or 'myregistry/myproj/backend'); as the parameter of the same name in custom_build + command: build command for building your image + deps: source dependencies of the custom build + entrypoint: the command to be (re-)executed when the container starts or when a live_update is run + live_update: set of steps for updating a running container; as the parameter of the same name in custom_build + base_suffix: suffix for naming the base image, applied as {ref}{base_suffix} + restart_file: file that Tilt will update during a live_update to signal the entrypoint to rerun + trigger: (optional) list of local paths. If specified, the process will ONLY be restarted when there are changes + to the given file(s); as the parameter of the same name in the LiveUpdate `run` step. + **kwargs: will be passed to the underlying `custom_build` call + """ +``` + +## What's Happening Under the Hood +*If you're a casual user/just want to get your app running, you can stop reading now. However, if you want to dig deep and know exactly what's going on, or are trying to debug weird behavior, read on.* + +This extension wraps commands in `tilt-restart-wrapper`, which makes use of [`entr`](https://github.com/eradman/entr/) +to run arbitrary commands whenever a specified file changes. Specifically, we override the container's entrypoint with the following: + +``` +/tilt-restart-wrapper --watch_file='/.restart-proc' +``` + +This invocation says: +- when the container starts, run +- whenever the `/.restart-proc` file changes, re-execute + +We also set the following as the last `live_update` step: +```python +run('date > /.restart-proc') +``` + +Because `tilt-restart-wrapper` will re-execute the entrypoint whenever `/.restart-proc'` changes, the above `run` step will cause the entrypoint to re-run. + +#### Provide `tilt-restart-wrapper` +For this all to work, the `entr` binary must be available on the Docker image. The easiest solution would be to call e.g. `apt-get install entr` in the Dockerfile, but different base images will have different package managers; rather than grapple with that, we've made a statically linked binary available on Docker image: [`tiltdev/entr`](https://hub.docker.com/repository/docker/tiltdev/entr). + +To build `image-foo`, this extension will: +- build your image as normal (via `docker_build`, with all of your specified args/kwargs) but with the name `image-foo-base` +- build `image-foo` (the actual image that will be used in your resource) as a _child_ of `image-foo-base`, with the `tilt-process-wrapper` and its dependencies available + +Thus, the final image produced is tagged `image-foo` and has all the properties of your original `docker_build`, plus access to the `tilt-restart-wrapper` binary. + +#### Why a Wrapper? +Why bother with `tilt-restart-wrapper` rather than just calling `entr` directly? + +Because in its canonical invocation, `entr` requires that the file(s) to watch be piped via stdin, i.e. it is invoked like: +``` +echo "/.restart-proc" | entr -rz /bin/my-app +``` + +When specified as a `command` in Kubernetes or Docker Compose YAML (this is how Tilt overrides entrypoints), the above would therefore need to be executed as shell: +``` +/bin/sh -c 'echo "/.restart-proc" | entr -rz /bin/my-app' +``` +Any `args` specified in Kubernetes/Docker Compose are attached to the end of this call, and therefore in this case would apply TO THE `/bin/sh -c` CALL, rather than to the actual command run by `entr`; that is, any `args` specified by the user would be effectively ignored. + +In order to make `entr` usable without a shell, this extension uses [a simple binary](/restart_process/tilt-restart-wrapper.go) that invokes `entr` and writes to its stdin. + +Note: ideally `entr` could accept files-to-watch via flag instead of stdin, but (for a number of good reasons) this feature isn't likely to be added any time soon (see [entr#33](https://github.com/eradman/entr/issues/33)). + +## For Maintainers: Releasing +If you have push access to the `tiltdev` repository on DockerHub, you can release a new version of the binaries used by this extension like so: +1. run `release.sh` (builds `tilt-restart-wrapper` from source, builds and pushes a Docker image with the new binary and a fresh binary of `entr` also installed from source) +2. update the image tag in the [Tiltfile](/restart_process/Tiltfile) with the tag you just pushed (you'll find the image referenced in the Dockerfile contents of the child image--look for "FROM tiltdev/restart-helper") diff --git a/tilt_modules/restart_process/Tiltfile b/tilt_modules/restart_process/Tiltfile new file mode 100644 index 0000000000..e732621360 --- /dev/null +++ b/tilt_modules/restart_process/Tiltfile @@ -0,0 +1,146 @@ +RESTART_FILE = '/tmp/.restart-proc' +TYPE_RESTART_CONTAINER_STEP = 'live_update_restart_container_step' + +KWARGS_BLACKLIST = [ + # since we'll be passing `dockerfile_contents` when building the + # child image, remove any kwargs that might conflict + 'dockerfile', 'dockerfile_contents', + + # 'target' isn't relevant to our child build--if we pass this arg, + # Docker will just fail to find the specified stage and error out + 'target', +] + +# Arguments to custom_build that don't apply to the docker_build. +_CUSTOM_BUILD_KWARGS_BLACKLIST = [ + 'tag', + 'command_bat', + 'outputs_image_ref_to', + 'disable_push', +] + +_ext_dir = os.getcwd() + +# shared code between the two restart functions +def _helper(base_ref, ref, entrypoint, live_update, restart_file=RESTART_FILE, trigger=None, exit_policy='restart', **kwargs): + if not trigger: + trigger = [] + + # declare a new docker build that adds a static binary of tilt-restart-wrapper + # (which makes use of `entr` to watch files and restart processes) to the user's image + df = ''' + FROM tiltdev/restart-helper:2021-08-09 as restart-helper + + FROM {} + RUN ["touch", "{}"] + COPY --from=restart-helper /tilt-restart-wrapper / + COPY --from=restart-helper /entr / + '''.format(base_ref, restart_file) + + # Change the entrypoint to use `tilt-restart-wrapper`. + # `tilt-restart-wrapper` makes use of `entr` (https://github.com/eradman/entr/) to + # re-execute $entrypoint whenever $restart_file changes + entrypoint_with_entr = ["/tilt-restart-wrapper", "--watch_file={}".format(restart_file)] + if exit_policy == 'continue': + entrypoint_with_entr = entrypoint_with_entr + ["--entr_flags=-r"] + if type(entrypoint) == type(""): + entrypoint_with_entr = entrypoint_with_entr + ["sh", "-c", entrypoint] + elif type(entrypoint) == type([]): + entrypoint_with_entr = entrypoint_with_entr + entrypoint + else: + fail("`entrypoint` must be a string or list of strings: got {}".format(type(entrypoint))) + + # last live_update step should always be to modify $restart_file, which + # triggers the process wrapper to rerun $entrypoint + # NB: write `date` instead of just `touch`ing because `entr` doesn't respond + # to timestamp changes, only writes (see https://github.com/eradman/entr/issues/32) + live_update = live_update + [run('date > {}'.format(restart_file), trigger=trigger)] + + # We don't need a real context. See: + # https://github.com/tilt-dev/tilt/issues/3897 + context = _ext_dir + + docker_build(ref, context, entrypoint=entrypoint_with_entr, dockerfile_contents=df, + live_update=live_update, **kwargs) + +def docker_build_with_restart(ref, context, entrypoint, live_update, + base_suffix='-tilt_docker_build_with_restart_base', restart_file=RESTART_FILE, + trigger=None, exit_policy='restart', **kwargs): + """Wrap a docker_build call and its associated live_update steps so that the last step + of any live update is to rerun the given entrypoint. + + Args: + ref: name for this image (e.g. 'myproj/backend' or 'myregistry/myproj/backend'); as the parameter of the same name in docker_build + context: path to use as the Docker build context; as the parameter of the same name in docker_build + entrypoint: the command to be (re-)executed when the container starts or when a live_update is run + live_update: set of steps for updating a running container; as the parameter of the same name in docker_build + base_suffix: suffix for naming the base image, applied as {ref}{base_suffix} + restart_file: file that Tilt will update during a live_update to signal the entrypoint to rerun + trigger: (optional) list of local paths. If specified, the process will ONLY be restarted when there are changes + to the given file(s); as the parameter of the same name in the LiveUpdate `run` step. + **kwargs: will be passed to the underlying `docker_build` call + """ + + # first, validate the given live_update steps + if len(live_update) == 0: + fail("`docker_build_with_restart` requires at least one live_update step") + for step in live_update: + if type(step) == TYPE_RESTART_CONTAINER_STEP: + fail("`docker_build_with_restart` is not compatible with live_update step: " + + "`restart_container()` (this extension is meant to REPLACE restart_container() )") + + # rename the original image to make it a base image and declare a docker_build for it + base_ref = '{}{}'.format(ref, base_suffix) + docker_build(base_ref, context, **kwargs) + + # Clean kwargs for building the child image (which builds on user's specified + # image and copies in Tilt's restart wrapper). In practice, this means removing + # kwargs that were relevant to building the user's specified image but are NOT + # relevant to building the child image / may conflict with args we specifically + # pass for the child image. + cleaned_kwargs = {k: v for k, v in kwargs.items() if k not in KWARGS_BLACKLIST} + _helper(base_ref, ref, entrypoint, live_update, restart_file, trigger, exit_policy, **cleaned_kwargs) + + +def custom_build_with_restart(ref, command, deps, entrypoint, live_update, + base_suffix='-tilt_docker_build_with_restart_base', restart_file=RESTART_FILE, + trigger=None, exit_policy='restart', **kwargs): + """Wrap a custom_build call and its associated live_update steps so that the last step + of any live update is to rerun the given entrypoint. + + Args: + ref: name for this image (e.g. 'myproj/backend' or 'myregistry/myproj/backend'); as the parameter of the same name in custom_build + command: build command for building your image + deps: source dependencies of the custom build + entrypoint: the command to be (re-)executed when the container starts or when a live_update is run + live_update: set of steps for updating a running container; as the parameter of the same name in custom_build + base_suffix: suffix for naming the base image, applied as {ref}{base_suffix} + restart_file: file that Tilt will update during a live_update to signal the entrypoint to rerun + trigger: (optional) list of local paths. If specified, the process will ONLY be restarted when there are changes + to the given file(s); as the parameter of the same name in the LiveUpdate `run` step. + **kwargs: will be passed to the underlying `custom_build` call + """ + + # first, validate the given live_update steps + if len(live_update) == 0: + fail("`custom_build_with_restart` requires at least one live_update step") + for step in live_update: + if type(step) == TYPE_RESTART_CONTAINER_STEP: + fail("`custom_build_with_restart` is not compatible with live_update step: "+ + "`restart_container()` (this extension is meant to REPLACE restart_container() )") + + for k, v in kwargs.items(): + if k == 'skips_local_docker': + fail("`custom_build_with_restart` is not compatible with `skips_local_docker`, because it needs access to the image") + if k == 'disable_push': + fail("`custom_build_with_restart` is not compatible with `disable_push`") + if k == 'tag': + fail("`custom_build_with_restart` renames your base image, so is not compatible with `tag`") + + # rename the original image to make it a base image and declare a custom_build for it + base_ref = '{}{}'.format(ref, base_suffix) + custom_build(base_ref, command=command, deps=deps, **kwargs) + + # A few arguments aren't applicable to the docker_build, so remove them. + cleaned_kwargs = {k: v for k, v in kwargs.items() if k not in _CUSTOM_BUILD_KWARGS_BLACKLIST} + _helper(base_ref, ref, entrypoint, live_update, restart_file, trigger, exit_policy, **cleaned_kwargs) diff --git a/tilt_modules/restart_process/release.sh b/tilt_modules/restart_process/release.sh new file mode 100755 index 0000000000..b236822a7f --- /dev/null +++ b/tilt_modules/restart_process/release.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -ex + +TIMESTAMP=$(date +'%Y-%m-%d') +IMAGE_NAME='tiltdev/restart-helper' +IMAGE_WITH_TAG=$IMAGE_NAME:$TIMESTAMP + +# build binary for tilt-restart-wrapper +env GOOS=linux GOARCH=amd64 go build tilt-restart-wrapper.go + +# build Docker image with static binaries of: +# - tilt-restart-wrapper (compiled above) +# - entr (dependency of tilt-restart-wrapper) +docker build . -t "$IMAGE_NAME" +docker push "$IMAGE_NAME" + +docker tag "$IMAGE_NAME" "$IMAGE_WITH_TAG" +docker push "$IMAGE_WITH_TAG" + +echo "Successfully built and pushed $IMAGE_WITH_TAG" + + + diff --git a/tilt_modules/restart_process/test/Dockerfile b/tilt_modules/restart_process/test/Dockerfile new file mode 100644 index 0000000000..95934f1b4d --- /dev/null +++ b/tilt_modules/restart_process/test/Dockerfile @@ -0,0 +1,5 @@ +FROM busybox + +COPY fail.sh / + +ENTRYPOINT /fail.sh diff --git a/tilt_modules/restart_process/test/Tiltfile b/tilt_modules/restart_process/test/Tiltfile new file mode 100644 index 0000000000..5a943f9305 --- /dev/null +++ b/tilt_modules/restart_process/test/Tiltfile @@ -0,0 +1,5 @@ +load('../Tiltfile', 'docker_build_with_restart') + +k8s_yaml('job.yaml') +docker_build_with_restart('failing_job', '.', '/fail.sh', + live_update=[sync('./fail.sh', '/fail.sh')]) diff --git a/tilt_modules/restart_process/test/custom.Tiltfile b/tilt_modules/restart_process/test/custom.Tiltfile new file mode 100644 index 0000000000..692a9bcedb --- /dev/null +++ b/tilt_modules/restart_process/test/custom.Tiltfile @@ -0,0 +1,9 @@ +load('../Tiltfile', 'custom_build_with_restart') + +k8s_yaml('job.yaml') +custom_build_with_restart( + 'failing_job', + command='docker build -t $EXPECTED_REF .', + deps=['fail.sh'], + entrypoint='/fail.sh', + live_update=[sync('./fail.sh', '/fail.sh')]) diff --git a/tilt_modules/restart_process/test/fail.sh b/tilt_modules/restart_process/test/fail.sh new file mode 100755 index 0000000000..1e51f5e0a2 --- /dev/null +++ b/tilt_modules/restart_process/test/fail.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +echo "Are you there, pod?" +sleep 1 + +# Exit with a non-zero status code; we check that docker_build_with_restart +# surfaces this error code to k8s, so k8s knows that the job failed. +echo "Exiting with status code 123 😱" +exit 123 diff --git a/tilt_modules/restart_process/test/job.yaml b/tilt_modules/restart_process/test/job.yaml new file mode 100644 index 0000000000..09e5445b6e --- /dev/null +++ b/tilt_modules/restart_process/test/job.yaml @@ -0,0 +1,12 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: failing-job +spec: + template: + spec: + containers: + - name: failing-job + image: failing_job + restartPolicy: Never + backoffLimit: 4 diff --git a/tilt_modules/restart_process/test/test-custom.sh b/tilt_modules/restart_process/test/test-custom.sh new file mode 100755 index 0000000000..e06b5da8cf --- /dev/null +++ b/tilt_modules/restart_process/test/test-custom.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +cd "$(dirname "$0")" || exit 1 + +set -x +tilt ci -f custom.Tiltfile > tilt.log 2>&1 +CI_EXIT=$? + +tilt down + +if [ $CI_EXIT -eq 0 ]; then + echo "Expected 'tilt ci' to fail, but succeeded." + exit 1 +fi + +grep -q "Are you there, pod?" tilt.log +GREP_EXIT=$? + +rm tilt.log + +exit $GREP_EXIT diff --git a/tilt_modules/restart_process/test/test-docker.sh b/tilt_modules/restart_process/test/test-docker.sh new file mode 100755 index 0000000000..63c50ceb72 --- /dev/null +++ b/tilt_modules/restart_process/test/test-docker.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Test case for https://github.com/tilt-dev/tilt-extensions/issues/92 +# +# This job will always exit with a non-zero status code; make sure +# that docker_build_with_restart surfaces this error code to k8s, +# so k8s knows that the job failed. (Thus, we expect the `tilt ci` +# call to fail.) +cd "$(dirname "$0")" || exit 1 + +set -x +tilt ci > tilt.log 2>&1 +CI_EXIT=$? + +tilt down + +if [ $CI_EXIT -eq 0 ]; then + echo "Expected 'tilt ci' to fail, but succeeded." + exit 1 +fi + +grep -q "Are you there, pod?" tilt.log +GREP_EXIT=$? + +cat tilt.log + +rm tilt.log + +exit $GREP_EXIT diff --git a/tilt_modules/restart_process/test/test.sh b/tilt_modules/restart_process/test/test.sh new file mode 100755 index 0000000000..2705502a1c --- /dev/null +++ b/tilt_modules/restart_process/test/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -ex + +cd "$(dirname "$0")" +./test-docker.sh +./test-custom.sh diff --git a/tilt_modules/restart_process/tilt-restart-wrapper.go b/tilt_modules/restart_process/tilt-restart-wrapper.go new file mode 100644 index 0000000000..ddc81b3403 --- /dev/null +++ b/tilt_modules/restart_process/tilt-restart-wrapper.go @@ -0,0 +1,74 @@ +// `tilt-restart-wrapper` wraps `entr` (http://eradman.com/entrproject/) to easily +// rerun a user-specified command when a given file changes. +// +// This is Tilt's recommended way of restarting a process as part of a live_update: +// if your container invokes your app via the restart wrapper (e.g. `tilt-restart-wrapper /bin/my-app`), +// you can trigger re-execution of your app with a live_update `run` step that makes +// a trivial change to the file watched by `entr` (e.g. `run('date > /.restart-proc')`) +// +// This script exists (i.e. we're wrapping `entr` in a binary instead of invoking +// it directly) because in its canonical invocation, `entr` requires that the +// file(s) to watch be piped via stdin, i.e. it is invoked like: +// echo "/.restart-proc" | entr -rz /bin/my-app +// +// When specified as a `command` in Kubernetes or Docker Compose YAML (this is how +// Tilt overrides entrypoints), the above would therefore need to be executed as shell: +// /bin/sh -c 'echo "/.restart-proc" | entr -rz /bin/my-app' + +// Any args specified in Kubernetes or Docker Compose YAML are attached to the end +// of this call, and therefore in this case apply TO THE `/bin/sh -c` CALL, rather +// than to the actual command run by `entr`; that is, any `args` specified by the +// user would be effectively ignored. +// +// In order to make `entr` executable as ARGV rather than as shell, we have wrapped it +// in a binary that can be called directly and takes care of the piping under the hood. +// +// Note: ideally `entr` could accept files-to-watch via flag instead of stdin, +// but (for a number of good reasons) this feature isn't likely to be added any +// time soon (see https://github.com/eradman/entr/issues/33). + +package main + +import ( + "flag" + "fmt" + "log" + "os" + "os/exec" + "strings" + "syscall" +) + +var watchFile = flag.String("watch_file", "/.restart-proc", "File that entr will watch for changes; changes to this file trigger `entr` to rerun the command(s) passed") +var entrPath = flag.String("entr_path", "/entr", "Path to `entr` executable") +var entrFlags = flag.String("entr_flags", "-rz", "Command line flags to pass to `entr` executable") + +func main() { + flag.Parse() + + cmd := exec.Command(*entrPath, *entrFlags) + cmd.Stdin = strings.NewReader(fmt.Sprintf("%s\n", *watchFile)) + cmd.Args = append(cmd.Args, flag.Args()...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + if err := cmd.Run(); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // The program has exited with an exit code != 0 + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + if len(flag.Args()) == 0 { + log.Println("`tilt-restart-wrapper` requires at least one positional arg " + + "(a command or set of args to be executed / rerun whenever `watch_file` changes)") + } + os.Exit(status.ExitStatus()) + } + } else { + log.Fatalf("error running command: %v", err) + } + } + + if len(flag.Args()) == 0 { + log.Fatal("`tilt-restart-wrapper` requires at least one positional arg " + + "(will be passed to `entr` and executed / rerun whenever `watch_file` changes)") + } +} From 7c75c0211915a8e560ecb2d9aafae68b283c3e8a Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 31 Aug 2021 13:16:57 +0000 Subject: [PATCH 0735/2080] [nodoc] Update Changelog\n\nAdded CHANGELOG file --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f23d2f4b13..566ba98259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,71 @@ -# [0.0.0](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v0.0.0) (2021-08-11) +# Changelog +## [Unreleased](https://github.com/AlexRogalskiy/android-patterns/tree/HEAD) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...HEAD) -## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/compare/1.0.1...v1.0.1) (2021-02-18) +**Merged pull requests:** +- github-actions: bump wagoid/commitlint-github-action from v2.2.3 to v2.2.5 [\#47](https://github.com/AlexRogalskiy/android-patterns/pull/47) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates wagoid/commitlint-github-action action to v2.2.5 [\#45](https://github.com/AlexRogalskiy/android-patterns/pull/45) ([renovate[bot]](https://github.com/apps/renovate)) +## [1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/1.0.1) (2021-02-18) +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1...1.0.1) + +## [v1](https://github.com/AlexRogalskiy/android-patterns/tree/v1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0...v1) + +## [v1.0](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/v1.0.1...v1.0) + +## [v1.0.1](https://github.com/AlexRogalskiy/android-patterns/tree/v1.0.1) (2021-02-18) + +[Full Changelog](https://github.com/AlexRogalskiy/android-patterns/compare/1b4e42605dc8c8659e4cf3ba3034b5a0494e7a8c...v1.0.1) + +**Merged pull requests:** + +- github-actions: bump wagoid/commitlint-github-action from v2.1.7 to v2.2.3 [\#44](https://github.com/AlexRogalskiy/android-patterns/pull/44) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates Matticusau/pr-helper action to v1.2.5 [\#43](https://github.com/AlexRogalskiy/android-patterns/pull/43) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump Matticusau/pr-helper from v1.2.4 to v1.2.5 [\#42](https://github.com/AlexRogalskiy/android-patterns/pull/42) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump JamesIves/github-pages-deploy-action from 3.7.1 to 4.0.0 [\#40](https://github.com/AlexRogalskiy/android-patterns/pull/40) ([dependabot[bot]](https://github.com/apps/dependabot)) +- :arrow\_up: Updates JamesIves/github-pages-deploy-action action to v4 [\#39](https://github.com/AlexRogalskiy/android-patterns/pull/39) ([renovate[bot]](https://github.com/apps/renovate)) +- github-actions: bump mondeja/remove-labels-gh-action from v1.0.0 to v1 [\#37](https://github.com/AlexRogalskiy/android-patterns/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/cache from v2 to v2.1.4 [\#36](https://github.com/AlexRogalskiy/android-patterns/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Merge pull request \#31 from AlexRogalskiy/master [\#32](https://github.com/AlexRogalskiy/android-patterns/pull/32) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#31](https://github.com/AlexRogalskiy/android-patterns/pull/31) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#30](https://github.com/AlexRogalskiy/android-patterns/pull/30) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#29](https://github.com/AlexRogalskiy/android-patterns/pull/29) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#28](https://github.com/AlexRogalskiy/android-patterns/pull/28) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#26 from AlexRogalskiy/master [\#27](https://github.com/AlexRogalskiy/android-patterns/pull/27) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#26](https://github.com/AlexRogalskiy/android-patterns/pull/26) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#23 from AlexRogalskiy/master [\#25](https://github.com/AlexRogalskiy/android-patterns/pull/25) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- Auto Compress Images [\#24](https://github.com/AlexRogalskiy/android-patterns/pull/24) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#23](https://github.com/AlexRogalskiy/android-patterns/pull/23) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#22](https://github.com/AlexRogalskiy/android-patterns/pull/22) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#21](https://github.com/AlexRogalskiy/android-patterns/pull/21) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#20](https://github.com/AlexRogalskiy/android-patterns/pull/20) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#19](https://github.com/AlexRogalskiy/android-patterns/pull/19) ([github-actions[bot]](https://github.com/apps/github-actions)) +- :arrow\_up: Updates actions/checkout action to v2 [\#17](https://github.com/AlexRogalskiy/android-patterns/pull/17) ([renovate[bot]](https://github.com/apps/renovate)) +- sync: master to main [\#16](https://github.com/AlexRogalskiy/android-patterns/pull/16) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#15](https://github.com/AlexRogalskiy/android-patterns/pull/15) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Merge pull request \#12 from AlexRogalskiy/master [\#14](https://github.com/AlexRogalskiy/android-patterns/pull/14) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- github-actions: update actions/github-script requirement to v3.1 [\#13](https://github.com/AlexRogalskiy/android-patterns/pull/13) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#12](https://github.com/AlexRogalskiy/android-patterns/pull/12) ([github-actions[bot]](https://github.com/apps/github-actions)) +- github-actions: bump wagoid/commitlint-github-action from v1.6.0 to v2.1.7 [\#11](https://github.com/AlexRogalskiy/android-patterns/pull/11) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump dessant/lock-threads from v2.0.1 to v2.0.3 [\#10](https://github.com/AlexRogalskiy/android-patterns/pull/10) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump Dunning-Kruger/unlock-issues from v1 to v1.1 [\#9](https://github.com/AlexRogalskiy/android-patterns/pull/9) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump actions/setup-node from v1 to v2.1.4 [\#8](https://github.com/AlexRogalskiy/android-patterns/pull/8) ([dependabot[bot]](https://github.com/apps/dependabot)) +- github-actions: bump prologic/action-remark-lint from v0.0.5 to v2 [\#7](https://github.com/AlexRogalskiy/android-patterns/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- sync: master to main [\#6](https://github.com/AlexRogalskiy/android-patterns/pull/6) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#5](https://github.com/AlexRogalskiy/android-patterns/pull/5) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#4](https://github.com/AlexRogalskiy/android-patterns/pull/4) ([github-actions[bot]](https://github.com/apps/github-actions)) +- sync: master to main [\#3](https://github.com/AlexRogalskiy/android-patterns/pull/3) ([github-actions[bot]](https://github.com/apps/github-actions)) +- Main [\#2](https://github.com/AlexRogalskiy/android-patterns/pull/2) ([AlexRogalskiy](https://github.com/AlexRogalskiy)) +- sync: master to main [\#1](https://github.com/AlexRogalskiy/android-patterns/pull/1) ([github-actions[bot]](https://github.com/apps/github-actions)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From fd81ed1f7015388aaf0582e1663764983f1d7328 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 1 Sep 2021 00:40:33 +0000 Subject: [PATCH 0736/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 8 ++++---- reports/pagespeedresultmobile.svg | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 254099e304..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 55 Performance @@ -139,8 +139,8 @@ - - 75 + + 83 SEO diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index b3bcbe8b1f..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 29 Performance @@ -139,8 +139,8 @@ - - 76 + + 83 SEO From d6847330393cdcd8650938a2120a1d9c1a68bbd3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 1 Sep 2021 01:53:17 +0000 Subject: [PATCH 0737/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e1dd4b604e..79908be5f6 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Referral Tracking for Google Play Store](https://www.reddit.com/r/androiddev/comments/per6pd/referral_tracking_for_google_play_store/) -- [Android Drag and Drop Tutorial: Moving Views and Data](https://www.reddit.com/r/androiddev/comments/peqq1p/android_drag_and_drop_tutorial_moving_views_and/) -- [Android Apps on Windows 11](https://www.reddit.com/r/androiddev/comments/pept2v/android_apps_on_windows_11/) -- [MyFitnessPal Question: how do they get nutritional data??](https://www.reddit.com/r/androiddev/comments/peo3tj/myfitnesspal_question_how_do_they_get_nutritional/) -- [Jetpack Compose navigation architecture with ViewModels](https://www.reddit.com/r/androiddev/comments/pelh3q/jetpack_compose_navigation_architecture_with/) -- [Kuberam: Jetpack Compose Project using MVVM pattern](https://www.reddit.com/r/androiddev/comments/pekc0a/kuberam_jetpack_compose_project_using_mvvm_pattern/) -- [Android in-app purchases tutorial: how to retrieve active purchases and process a subscription change](https://www.reddit.com/r/androiddev/comments/pei5v1/android_inapp_purchases_tutorial_how_to_retrieve/) -- [Weekly Who's Hiring Thread - August 30, 2021](https://www.reddit.com/r/androiddev/comments/pehlmy/weekly_whos_hiring_thread_august_30_2021/) -- [How To Make An Android Runner Tracking App?](https://www.reddit.com/r/androiddev/comments/pegbq8/how_to_make_an_android_runner_tracking_app/) -- [Daily active users(DAU) displays "Data Unavailable" on play console.](https://www.reddit.com/r/androiddev/comments/pefa1p/daily_active_usersdau_displays_data_unavailable/) +- [Material Components 1.5.0-alpha03 · Early access preview of Material 3](https://www.reddit.com/r/androiddev/comments/pfhr6y/material_components_150alpha03_early_access/) +- [App Takedown – Trying to resolve inadequate prominent disclosure](https://www.reddit.com/r/androiddev/comments/pfcf4y/app_takedown_trying_to_resolve_inadequate/) +- [What's a reliable method to wake up the device from sleep and activate the display?](https://www.reddit.com/r/androiddev/comments/pfcd2l/whats_a_reliable_method_to_wake_up_the_device/) +- [Anyone received mails like these after publishing your app/game on Google Play Store or any other market?](https://www.reddit.com/r/androiddev/comments/pfcd0x/anyone_received_mails_like_these_after_publishing/) +- [Unique segmented arc view with rich customisation options!](https://www.reddit.com/r/androiddev/comments/pfbiru/unique_segmented_arc_view_with_rich_customisation/) +- [Getting started with android developmenz](https://www.reddit.com/r/androiddev/comments/pf9mh8/getting_started_with_android_developmenz/) +- [Try the New Kotlin/Native Memory Manager Development Preview](https://www.reddit.com/r/androiddev/comments/pf8juy/try_the_new_kotlinnative_memory_manager/) +- [Performance and Velocity: How Duolingo Adopted MVVM on Android](https://www.reddit.com/r/androiddev/comments/pf72pk/performance_and_velocity_how_duolingo_adopted/) +- [Software shenanigans](https://www.reddit.com/r/androiddev/comments/pf6biq/software_shenanigans/) +- [What events are fired when someone uses the camera app to take a photo?](https://www.reddit.com/r/androiddev/comments/pf660d/what_events_are_fired_when_someone_uses_the/) ### *InfoWorld posts* From 15c1ec8c0d46c9ed1764b97b034eb00d128ede11 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 2 Sep 2021 00:38:01 +0000 Subject: [PATCH 0738/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 29 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From ee9d4ba04644eda73510bb63883a665f71abf30d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 2 Sep 2021 01:47:12 +0000 Subject: [PATCH 0739/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 79908be5f6..5e93d331c8 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Material Components 1.5.0-alpha03 · Early access preview of Material 3](https://www.reddit.com/r/androiddev/comments/pfhr6y/material_components_150alpha03_early_access/) -- [App Takedown – Trying to resolve inadequate prominent disclosure](https://www.reddit.com/r/androiddev/comments/pfcf4y/app_takedown_trying_to_resolve_inadequate/) -- [What's a reliable method to wake up the device from sleep and activate the display?](https://www.reddit.com/r/androiddev/comments/pfcd2l/whats_a_reliable_method_to_wake_up_the_device/) -- [Anyone received mails like these after publishing your app/game on Google Play Store or any other market?](https://www.reddit.com/r/androiddev/comments/pfcd0x/anyone_received_mails_like_these_after_publishing/) -- [Unique segmented arc view with rich customisation options!](https://www.reddit.com/r/androiddev/comments/pfbiru/unique_segmented_arc_view_with_rich_customisation/) -- [Getting started with android developmenz](https://www.reddit.com/r/androiddev/comments/pf9mh8/getting_started_with_android_developmenz/) -- [Try the New Kotlin/Native Memory Manager Development Preview](https://www.reddit.com/r/androiddev/comments/pf8juy/try_the_new_kotlinnative_memory_manager/) -- [Performance and Velocity: How Duolingo Adopted MVVM on Android](https://www.reddit.com/r/androiddev/comments/pf72pk/performance_and_velocity_how_duolingo_adopted/) -- [Software shenanigans](https://www.reddit.com/r/androiddev/comments/pf6biq/software_shenanigans/) -- [What events are fired when someone uses the camera app to take a photo?](https://www.reddit.com/r/androiddev/comments/pf660d/what_events_are_fired_when_someone_uses_the/) +- [Help with Android Emulators](https://www.reddit.com/r/androiddev/comments/pg4q0p/help_with_android_emulators/) +- [Starting with Compose. Things I'm not comfortable with so far.](https://www.reddit.com/r/androiddev/comments/pg2lux/starting_with_compose_things_im_not_comfortable/) +- [A Bit of Gradle Housekeeping - zsmb.co](https://www.reddit.com/r/androiddev/comments/pg2itm/a_bit_of_gradle_housekeeping_zsmbco/) +- [37 days since Jetpack compose was released, what is your learning state?](https://www.reddit.com/r/androiddev/comments/pg1hlm/37_days_since_jetpack_compose_was_released_what/) +- [Android Studio - Arctic Fox | 2020.3.1 Patch 2 now available](https://www.reddit.com/r/androiddev/comments/pg0j11/android_studio_arctic_fox_202031_patch_2_now/) +- [The Shift Left in Mobile Engineering](https://www.reddit.com/r/androiddev/comments/pg06g3/the_shift_left_in_mobile_engineering/) +- [Is there away to use Play Store subscription as reward?](https://www.reddit.com/r/androiddev/comments/pfxsaa/is_there_away_to_use_play_store_subscription_as/) +- [Is ban of Google dev account after 3 app suspensions Truth or Myth?](https://www.reddit.com/r/androiddev/comments/pfx28b/is_ban_of_google_dev_account_after_3_app/) +- [Nested RecyclerView Vs. Two different view types performance question.](https://www.reddit.com/r/androiddev/comments/pfwo4r/nested_recyclerview_vs_two_different_view_types/) +- [Can't download Android Studio installer from official site.](https://www.reddit.com/r/androiddev/comments/pfv3rb/cant_download_android_studio_installer_from/) ### *InfoWorld posts* From 23cc5ef72a9303bcad16fd6defc9498655867851 Mon Sep 17 00:00:00 2001 From: Alexander Rogalskiy Date: Thu, 2 Sep 2021 14:01:47 +0300 Subject: [PATCH 0740/2080] Updates on files Added changeset on workflow --- .github/linters/.yaml-lint.yml | 11 - .github/workflows/chart-release.yaml | 52 +++++ .github/workflows/helm.yml | 74 ++++++ .github/workflows/lint-test.yaml | 47 ++++ .yaml-lint.yml | 24 ++ .yamllint.yml | 7 - Makefile | 80 ++++++- charts/.helmignore | 23 ++ charts/Chart.yaml | 22 ++ charts/README.md | 118 ++++++++++ .../docs/build-and-push-container-images.md | 31 +++ charts/docs/deploy-using-helm.md | 75 ++++++ charts/docs/deploy-with-ingress.md | 104 +++++++++ charts/templates/NOTES.txt | 34 +++ charts/templates/_helpers.tpl | 77 +++++++ charts/templates/certificate.yaml | 17 ++ charts/templates/configmap.yaml | 11 + charts/templates/deployment.yaml | 145 ++++++++++++ charts/templates/hpa.yaml | 41 ++++ charts/templates/ingress.yaml | 43 ++++ charts/templates/linkerd.yaml | 14 ++ charts/templates/secret.yaml | 10 + charts/templates/service.yaml | 30 +++ charts/templates/serviceaccount.yaml | 12 + charts/templates/servicemonitor.yaml | 22 ++ charts/templates/tests/test-connection.yaml | 22 ++ charts/templates/virtualservice.yaml | 44 ++++ charts/values.yaml | 217 ++++++++++++++++++ cr.yaml | 4 + ct.yaml | 8 + k8s/backend/deployment.yaml | 1 + mkdocs.yml | 4 +- package.json | 8 +- 33 files changed, 1404 insertions(+), 28 deletions(-) delete mode 100644 .github/linters/.yaml-lint.yml create mode 100644 .github/workflows/chart-release.yaml create mode 100644 .github/workflows/helm.yml create mode 100644 .github/workflows/lint-test.yaml create mode 100644 .yaml-lint.yml delete mode 100644 .yamllint.yml create mode 100644 charts/.helmignore create mode 100644 charts/Chart.yaml create mode 100644 charts/README.md create mode 100644 charts/docs/build-and-push-container-images.md create mode 100644 charts/docs/deploy-using-helm.md create mode 100644 charts/docs/deploy-with-ingress.md create mode 100644 charts/templates/NOTES.txt create mode 100644 charts/templates/_helpers.tpl create mode 100644 charts/templates/certificate.yaml create mode 100644 charts/templates/configmap.yaml create mode 100644 charts/templates/deployment.yaml create mode 100644 charts/templates/hpa.yaml create mode 100644 charts/templates/ingress.yaml create mode 100644 charts/templates/linkerd.yaml create mode 100644 charts/templates/secret.yaml create mode 100644 charts/templates/service.yaml create mode 100644 charts/templates/serviceaccount.yaml create mode 100644 charts/templates/servicemonitor.yaml create mode 100644 charts/templates/tests/test-connection.yaml create mode 100644 charts/templates/virtualservice.yaml create mode 100644 charts/values.yaml create mode 100644 cr.yaml create mode 100644 ct.yaml diff --git a/.github/linters/.yaml-lint.yml b/.github/linters/.yaml-lint.yml deleted file mode 100644 index f3eddf35df..0000000000 --- a/.github/linters/.yaml-lint.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -# https://yamllint.readthedocs.io/en/stable/index.html -# yamllint --strict -c .github/linters/.yaml-lint.yml . - -extends: default - -rules: - document-start: disable - indentation: disable - line-length: disable - truthy: false diff --git a/.github/workflows/chart-release.yaml b/.github/workflows/chart-release.yaml new file mode 100644 index 0000000000..321494d2ae --- /dev/null +++ b/.github/workflows/chart-release.yaml @@ -0,0 +1,52 @@ +name: Release Charts + +on: + push: + branches: + - master + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + + - name: Install Helm + uses: azure/setup-helm@v1 + with: + version: v3.4.1 + +# # Optional step if GPG signing is used +# - name: Prepare GPG key +# run: | +# gpg_dir=.cr-gpg +# mkdir "$gpg_dir" +# keyring="$gpg_dir/secring.gpg" +# base64 -d <<< "$GPG_KEYRING_BASE64" > "$keyring" +# passphrase_file="$gpg_dir/passphrase" +# echo "$GPG_PASSPHRASE" > "$passphrase_file" +# echo "CR_PASSPHRASE_FILE=$passphrase_file" >> "$GITHUB_ENV" +# echo "CR_KEYRING=$keyring" >> "$GITHUB_ENV" +# env: +# GPG_KEYRING_BASE64: "${{ secrets.GPG_KEYRING_BASE64 }}" +# GPG_PASSPHRASE: "${{ secrets.GPG_PASSPHRASE }}" + +# - name: Add dependency chart repos +# run: | +# helm repo add bitnami https://charts.bitnami.com/bitnami + + - name: Run chart-releaser + uses: helm/chart-releaser-action@v1.1.0 + with: + charts_dir: charts + config: cr.yaml + env: + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml new file mode 100644 index 0000000000..ed3f27e507 --- /dev/null +++ b/.github/workflows/helm.yml @@ -0,0 +1,74 @@ +name: release +on: + push: + tags: + - 'v*' + +jobs: + build-push: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Prepare + id: prep + run: | + VERSION=$(grep 'version' package.json | awk '{ print $4 }' | tr -d '"') + CHANGELOG="https://github.com/AlexRogalskiy/java-patterns/blob/main/CHANGELOG.md#$(echo $VERSION | tr -d '.')" + echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ') + echo ::set-output name=VERSION::${VERSION} + echo ::set-output name=CHANGELOG::${CHANGELOG} + - name: Setup QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: all + - name: Setup Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + buildkitd-flags: "--debug" + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: AlexRogalskiy + password: ${{ secrets.GITHUB_TOKEN }} + - name: Publish image + uses: docker/build-push-action@v2 + with: + push: true + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + build-args: | + REVISON=${{ github.sha }} + tags: | + ghcr.io/AlexRogalskiy/java-patterns:${{ steps.prep.outputs.VERSION }} + labels: | + org.opencontainers.image.title=${{ github.event.repository.name }} + org.opencontainers.image.description=${{ github.event.repository.description }} + org.opencontainers.image.url=${{ github.event.repository.html_url }} + org.opencontainers.image.source=${{ github.event.repository.html_url }} + org.opencontainers.image.revision=${{ github.sha }} + org.opencontainers.image.version=${{ steps.prep.outputs.VERSION }} + org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }} + - name: Check images + run: | + docker buildx imagetools inspect ghcr.io/AlexRogalskiy/java-patterns:${{ steps.prep.outputs.VERSION }} + - name: Publish Helm charts + uses: stefanprodan/helm-gh-pages@v1.3.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + charts_url: ./charts + linting: off + - name: Create release + uses: actions/create-release@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: false + prerelease: false + body: | + [CHANGELOG](${{ steps.prep.outputs.CHANGELOG }}) diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml new file mode 100644 index 0000000000..3df8c3e5f6 --- /dev/null +++ b/.github/workflows/lint-test.yaml @@ -0,0 +1,47 @@ +name: Lint and Test Charts + +on: pull_request + +jobs: + lint-test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up Helm + uses: azure/setup-helm@v1 + with: + version: v3.4.1 + + # Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and + # yamllint (https://github.com/adrienverge/yamllint) which require Python + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + + - name: Set up chart-testing + uses: helm/chart-testing-action@v2.0.1 + with: + version: v3.3.0 + + - name: Run chart-testing (list-changed) + id: list-changed + run: | + changed=$(ct list-changed --config ct.yaml) + if [[ -n "$changed" ]]; then + echo "::set-output name=changed::true" + fi + + - name: Run chart-testing (lint) + run: ct lint --config ct.yaml + + - name: Create kind cluster + uses: helm/kind-action@v1.1.0 + if: steps.list-changed.outputs.changed == 'true' + + - name: Run chart-testing (install) + run: ct install --config ct.yaml diff --git a/.yaml-lint.yml b/.yaml-lint.yml new file mode 100644 index 0000000000..bd6b74765f --- /dev/null +++ b/.yaml-lint.yml @@ -0,0 +1,24 @@ +--- +# https://yamllint.readthedocs.io/en/stable/index.html +# yamllint --strict -c .yaml-lint.yml . + +extends: default + +rules: + # 150 chars should be enough, but don't fail if a line is longer + line-length: + max: 150 + level: warning + comments: + min-spaces-from-content: 1 + braces: + min-spaces-inside: 0 + max-spaces-inside: 0 + brackets: + min-spaces-inside: 0 + max-spaces-inside: 0 + indentation: + indent-sequences: consistent + document-start: disable + indentation: disable + truthy: false diff --git a/.yamllint.yml b/.yamllint.yml deleted file mode 100644 index 169fc32eda..0000000000 --- a/.yamllint.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -extends: default - -rules: - line-length: - max: 150 - level: warning diff --git a/Makefile b/Makefile index 91b0222972..1163e76648 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,40 @@ # Since we rely on paths relative to the makefile location, abort if make isn't being run from there. $(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in)) +# SHELL defines the shell that the Makefile uses. +# We also set -o pipefail so that if a previous command in a pipeline fails, a command fails. +# http://redsymbol.net/articles/unofficial-bash-strict-mode +SHELL := /bin/bash + +# Set V=1 on the command line to turn off all suppression. Many trivial +# commands are suppressed with "@", by setting V=1, this will be turned off. +ifeq ($(V),1) + AT := +else + AT := @ +endif + IMAGE ?= styled-android-patterns TAG ?= latest -UTILS := docker tilt +# UNAME_OS stores the value of uname -s. +UNAME_OS := $(shell uname -s) +# UNAME_ARCH stores the value of uname -m. +UNAME_ARCH := $(shell uname -m) + +# TMP_BASE is the base directory used for TMP. +# Use TMP and not TMP_BASE as the temporary directory. +TMP_BASE := .tmp +# TMP_COVERAGE is where we store code coverage files. +TMP_COVERAGE := $(TMP_BASE)/coverage + +UTILS := docker tilt helm # Make sure that all required utilities can be located. UTIL_CHECK := $(or $(shell which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to install `docker` and `tilt` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS))) -DIRS := $(shell ls -d -- */ | grep -v public) +DIRS := $(shell ls -ad -- */ | grep -v release) + +# Run all by default when "make" is invoked. +.DEFAULT_GOAL := list # Default target (by virtue of being the first non '.'-prefixed in the file). .PHONY: _no-target-specified @@ -17,17 +44,35 @@ _no-target-specified: # Lists all targets defined in this makefile. .PHONY: list list: - @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort + $(AT)$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort -# Lists all dirs (except `public`). +# Lists all dirs (except `release`). .PHONY: dirs dirs: echo "$(DIRS)" +# Run version command. +.PHONY: versions +versions: + $(AT) echo + docker --version + $(AT) echo + tilt version + $(AT) echo + helm version + $(AT) echo + +# Clean removes all temporary files. +.PHONY: clean +clean: + rm -rf $(TMP_BASE) + rm -rf dist + rm -rf release + # Ensures that the git workspace is clean. .PHONY: _ensure-clean _ensure-clean: - @[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; } + $(AT)[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; } # Run docker build command. .PHONY: docker-build @@ -53,3 +98,28 @@ tilt-start: .PHONY: tilt-stop tilt-stop: tilt down --delete-namespaces + +# Run helm lint command. +.PHONY: helm-lint +helm-lint: + helm lint charts --values charts/values.yaml + +# Run helm start command. +.PHONY: helm-start +helm-start: + helm upgrade --install backend-java-patterns -f charts/values.yaml --create-namespace --namespace webapp charts + +# Run helm stop command. +.PHONY: helm-stop +helm-stop: + helm uninstall backend-java-patterns --namespace webapp + +# Run helm package command. +.PHONY: helm-package +helm-package: + mkdir -p release/charts + helm package charts --dependency-update --destination release/charts + +# Run helm dev command. +.PHONY: helm-dev +helm-dev: clean helm-lint helm-package diff --git a/charts/.helmignore b/charts/.helmignore new file mode 100644 index 0000000000..0e8a0eb36f --- /dev/null +++ b/charts/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/Chart.yaml b/charts/Chart.yaml new file mode 100644 index 0000000000..05a38ccedd --- /dev/null +++ b/charts/Chart.yaml @@ -0,0 +1,22 @@ +apiVersion: v2 +version: 1.0.0 +appVersion: "1.0.1" +created: "2021-09-01T06:23:41.21262323Z" +name: backend-android-patterns +description: | + Java Design Patterns documentation +home: https://alexander-rogalsky.gitbook.io/android-patterns +icon: https://d1j8pt39hxlh3d.cloudfront.net/emoji/emojione/5.0/png/unicode/32/1f4d2.png +type: application +keywords: + - java + - design patterns + - documentation +maintainers: + - email: alexrogalskiy@users.noreply.github.com + name: AlexRogalskiy +sources: + - https://github.com/AlexRogalskiy/android-patterns +urls: + - https://github.com/AlexRogalskiy/android-patterns/archive/refs/tags/1.0.1.tar.gz +kubeVersion: '>=1.19.0-0' diff --git a/charts/README.md b/charts/README.md new file mode 100644 index 0000000000..aa4c4bc3ab --- /dev/null +++ b/charts/README.md @@ -0,0 +1,118 @@ +# Hello Kubernetes! + +This container image can be deployed on a Kubernetes cluster. It runs a web app, that displays the following: + +- a default **Hello world!** message +- namespace, pod, and node details +- container image details + +## Quick start + +You can deploy `android-patterns` to your Kubernetes cluster using [Helm 3](https://helm.sh/docs/intro/install/). The Helm chart installation and configuration +options can be found in the [Deploy using Helm](docs/deploy-using-helm.md) guide. + +When running through the following examples, ensure that you are in the chart directory in the repo, since you are referencing a local helm chart. + +```bash +$ cd helm +``` + +### Example 1: Default + +Deploy the `android-patterns` app into the `webapp` namespace. The app is exposed via a public Load Balancer on port 80 by default - note that a LoadBalancer +service typically only works in cloud provider based Kubernetes offerings. + +```bash +$ helm upgrade --install backend-android-patterns -f values.yaml --create-namespace --namespace webapp . + +# get the LoadBalancer ip address. +$ kubectl get svc webapp-backend-android-patterns -n webapp -o 'jsonpath={ .status.loadBalancer.ingress[0].ip }' +``` + +### Example 2: Custom message + +Deploy the `android-patterns` app into the `webapp` namespace with an "I just deployed this on Kubernetes!" message. The app is exposed via a public Load Balancer +on port 80 by default - note that a LoadBalancer service typically only works in cloud provider based Kubernetes offerings. + +```bash +$ helm upgrade --install backend-android-patterns -f values.yaml --create-namespace --namespace webapp . --set message="I just deployed this on Kubernetes!" + +# get the LoadBalancer ip address. +$ kubectl get svc webapp-backend-android-patterns -n webapp -o 'jsonpath={ .status.loadBalancer.ingress[0].ip }' +``` + +### Example 3: Ingress + +Deploy the `android-patterns` app into the `webapp` namespace. This example assumes that an ingress has been deployed and configured in the cluster, and that the +ingress has a path of `/app/android-patterns/` mapped to the `android-patterns` service. + +The `android-patterns` app can be reached on the ip address of the ingress via the `/app/android-patterns/` path. + +```bash +$ helm upgrade --install backend-android-patterns -f values.yaml --create-namespace --namespace webapp ingress . \ + --set ingress.configured=true \ + --set ingress.pathPrefix="/app/android-patterns/" \ + --set service.type="ClusterIP" +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, + +```bash +$ helm install --create-namespace --namespace webapp backend-android-patterns . -f values.yaml +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +### Example 4: Helm uninstall + +```bash +helm uninstall backend-android-patterns --namespace webapp +``` + +### Example 5: Helm status + +```bash +helm status backend-android-patterns --namespace webapp +``` + +### Example 6: Helm list + +```bash +helm list --namespace webapp +``` + +### Example 7: Helm lint + +```bash +helm lint charts +``` + +## Documentation + +### Deploying + +If you'd like to explore the various Helm chart configuration options, then read the [Deploy with Helm](charts2/docs/deploy-using-helm.md) documentation. You can also +discover more about the ingress configuration options in the [Deploy with ingress](charts2/docs/deploy-with-ingress.md) documentation + +### Building your own images + +If you'd like to build the `android-patterns` container image yourself and reference from your own registry or DockerHub repository, then you can get more details +on how to do this in the [Build and push container images](charts2/docs/build-and-push-container-images.md) documentation. + +### Development environment + +If you have [VS Code](https://code.visualstudio.com/) and +the [VS Code Remote Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension installed, the `.devcontainer` +folder will be used to provide a container based development environment. You can read more about how to use this in +the [Development environments](docs/development-environment.md) documentation. + +## Upgrading the chart + +### To =< 5.0.0 + +Version 5.0.0 is a major update. + +- The chart now follows the new Kubernetes label recommendations: + + +The simplest way to update is to do a force upgrade, which recreates the resources by doing a delete and an install. diff --git a/charts/docs/build-and-push-container-images.md b/charts/docs/build-and-push-container-images.md new file mode 100644 index 0000000000..91b43aa702 --- /dev/null +++ b/charts/docs/build-and-push-container-images.md @@ -0,0 +1,31 @@ +Building docker image with docker command: + +```shell +GIT_SHA=$(git rev-parse HEAD) +docker build -f Dockerfile -t styled-android-patterns -t styled-android-patterns:$GIT_SHA --build-arg VERCEL_TOKEN=$1 . +``` + +Running docker image via `docker-compose` command: + +```shell +docker-compose -f docker-compose.yml build +docker-compose -f docker-compose.yml up -d +``` + +Removing docker image via `docker-compose` command: + +```shell +docker-compose -f docker-compose.yml down -v --remove-orphans +``` + +Running k8s cluster with `tilt` command by acquiring k8s deployment configuration: + +```shell +tilt up +``` + +Shutting down k8s cluster with `tilt` command with provisioned resources removal: + +```shell +tilt down --delete-namespaces +``` diff --git a/charts/docs/deploy-using-helm.md b/charts/docs/deploy-using-helm.md new file mode 100644 index 0000000000..b6d3fefd11 --- /dev/null +++ b/charts/docs/deploy-using-helm.md @@ -0,0 +1,75 @@ +# Deploy using Helm + +The `android-patterns` Helm chart can be used to deploy the `android-patterns` application. The chart will deploy the following resources: + +- ServiceAccount +- Service +- Deployment + +## Prerequisites + +- [Helm 3](https://v3.helm.sh/) + +If you are using the [VS Code Remote Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) based development +environment, all of the prerequisites will be available in the terminal. + +## Configuration and installation + +The following table lists the configuration parameters of the android-patterns chart, and their default values. + +| Parameter | Type | Default | Description | +| --------- | ---- | ------- | ----------- | +| `message` | `string` | `""` | A custom message to display instead of the default. | +| `ingress.configured` | `bool` | `false` | Indicates whether an ingress has been configured in the cluster.
Note: this chart will not install or configure an ingress. You will need to install an ingress controller and add ingress record to the app namespace. | +| `ingress.rewritePath` | `bool` | `true` | Indicates whether pathPrefix is rewritten by the ingress.
If this is set to `true` then the android-patterns dynamic content and static assets will be served from `/`, otherwise, they will be served from `/$pathPrefix`. | +| `ingress.pathPrefix` | `string` | `""` | The path prefix configured in the ingress for the android-patterns service.
Must be provided when ingress is used. | +| `service.type` | `string` | `"LoadBalancer"` | The service type. | +| `service.port` | `int` | `80` | The port exposed by the service. | +| `deployment.replicaCount` | `int` | `2` | The number of replicas for the android-patterns deployment. | +| `deployment.container.image.repository` | `string` | `android-patterns` | The container image to run in the android-patterns pods. | +| `deployment.container.image.tag` | `string` | `""` | The container image tag. If not specified, the chart's appVersion is used. | +| `deployment.container.image.pullPolicy` | `string` | `"IfNotPresent"` | The pull policy for the container image. | +| `deployment.container.port` | `int` | `"8080"` | The port that android-patterns app listens on. | +| `deployment.nodeSelector` | `object` | `{"kubernetes.io/os":"linux", "kubernetes.io/arch":"amd64"}` | The node selector for the deployment. | +| `deployment.resources` | `object` | `{}` | The resource limits for the deployment. | +| `deployment.tolerations` | `object` | `[]` | The tolerations for the deployment. | +| `deployment.affinity` | `object` | `{}` | The affinity for the deployment. | + +### Installing the chart + +Ensure that you are in the chart directory in the repo, since the instructions reference a local helm chart. + +To install `android-patterns` via the Helm chart, use the following to: + +- create the webapp namespace if it doesn't exist +- deploy the chart located in the current folder into the webapp namespace +- create a Helm release named android-patterns + +```bash +$ helm install --create-namespace --namespace webapp android-patterns . +``` + +You can override the values for the configuration parameter defined in the table above, either directly in the `values.yaml` file, or via the `--set` switches. + +```bash +$ helm install --create-namespace --namespace webapp custom-message . --set message="I just deployed this on Kubernetes!" +``` + +### Upgrading the chart + +Ensure that you are in the chart directory in the repo, since the instructions reference a local helm chart. + +You can modify the `android-patterns` app by providing new values for the configuration parameter defined in the table above, either directly in the `values.yaml` +file, or via the `--set` switches. + +```bash +$ helm upgrade --namespace webapp custom-android-patterns . --set message="This is a different message" +``` + +### Uninstalling the chart + +You can uninstall the `android-patterns` app as follows: + +```bash +$ helm uninstall --namespace webapp custom-android-patterns +``` diff --git a/charts/docs/deploy-with-ingress.md b/charts/docs/deploy-with-ingress.md new file mode 100644 index 0000000000..dfea5f48ac --- /dev/null +++ b/charts/docs/deploy-with-ingress.md @@ -0,0 +1,104 @@ +# Deploy with ingress + +The `android-patterns` Helm chart can be used to deploy and configure the `android-patterns` application for use with an ingress controller. + +> **Note:** +> +> The `android-patterns` Helm chart does **not** deploy an [Ingress Controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) and does **not** deploy the [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) definition. +> +> The chart aims to support deployment to as many platforms and providers as possible, so the choice of Ingress Controller and configuration of Ingress resource is left to the person deploying. + +## Prerequisites + +- [Helm 3](https://v3.helm.sh/) + +If you are using the [VS Code Remote Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) based development +environment, all of the prerequisites will be available in the terminal. + +## Install ingress controller + +Install an [Ingress Controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) that is available for your platform or provider. +Here is an example that uses the [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/deploy/) on a cloud provider: + +```bash +$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx + +$ helm install nginx-ingress ingress-nginx/ingress-nginx \ + --create-namespace --namespace ingress \ + --set controller.replicaCount=2 +``` + +## Use webapp with ingress + +### Deploy webapp instances + +Install two `android-patterns` instances that will be available via 2 different paths on the ingress. + +The `android-patterns` instance will display the default "Hello world!" message, and the `custom-android-patterns` instance will display a "This is my custom +message!" message. + +```bash +$ helm install --create-namespace --namespace webapp android-patterns . \ + --set ingress.configured=true --set ingress.pathPrefix=hello-world \ + --set service.type=ClusterIP + +$ helm install --create-namespace --namespace webapp custom-android-patterns . \ + --set ingress.configured=true --set ingress.pathPrefix=custom-message \ + --set service.type=ClusterIP \ + --set message="This is my custom message!" +``` + +### Deploy ingress definition + +The `android-patterns` Helm chart has a `ingress.rewritePath` configuration parameter that is `true` by default. When used together with +the `ingress.configured=true` configuration parameter, there is an assumption that the ingress being used supports path rewrites. See +the [Deploy using Helm](charts2/docs/deploy-using-helm.md) guidance for more details. + +So from our example, a request to `/android-patterns` should be rewritten to `/` before being passed to the `android-patterns` app instance. + +Create a file named `webapp-ingress.yaml` with the content below. This ingress definition will be serviced by the nginx ingress controller due to +the `kubernetes.io/ingress.class: nginx` annotation. It will also leverage the path rewrite capabilities of nginx via +the `nginx.ingress.kubernetes.io/rewrite-target: /$2` annotation. + +```yaml +# webapp-ingress.yaml +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: webapp-ingress + annotations: + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/rewrite-target: /$2 +spec: + rules: + - http: + paths: + - backend: + serviceName: webapp-android-patterns + servicePort: 8000 + path: /hello-world(/|$)(.*) + - backend: + serviceName: webapp-custom-android-patterns + servicePort: 8000 + path: /custom-message(/|$)(.*) +``` + +Deploy the contents of the `webapp-ingress.yaml` into the same namespace as the two `android-patterns` apps. + +```bash +$ kubectl apply -n webapp -f webapp-ingress.yaml +``` + +### Browse + +You can browse to each of the `android-patterns` apps via the $INGRESS_CONTROLLER_IPADDRESS and each of the configured paths. So for our example at: + +- `$INGRESS_CONTROLLER_IPADDRESS/hello-world` - the `android-patterns` instance with the default "Hello world!" message +- `$INGRESS_CONTROLLER_IPADDRESS/custom-android-patterns` - the `custom-android-patterns` instance with the "This is my custom message!" message + +## Alternatives + +You can deploy the `android-patterns` app via the Helm chart with the `ingress.rewritePath=false` configuration parameter if you are deploying with an ingress +controller that does not support path rewrites. + +In this case, the `android-patterns` apps will serve dynamic content and static assets from the path defined by the `ingress.pathPrefix` configuration parameter. diff --git a/charts/templates/NOTES.txt b/charts/templates/NOTES.txt new file mode 100644 index 0000000000..b88fdcb2ee --- /dev/null +++ b/charts/templates/NOTES.txt @@ -0,0 +1,34 @@ + +Thank you for installing Android Patterns Docs! + +- The application has been deployed, but it could take a few minutes to be ready. + You can check the rollout using: + + kubectl rollout status deployment {{ include "backend-android-patterns.fullname" . }} + +- The Android Patterns Docs webapp are accessible through the landing page: +{{ if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}/android-patterns/ + {{- end }} +{{- end }} + +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "backend-android-patterns.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo "http://$NODE_IP:$NODE_PORT/android-patterns/" + +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "backend-android-patterns.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "backend-android-patterns.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo "http://$SERVICE_IP:{{ .Values.service.port }}/android-patterns/" + +{{- else if contains "ClusterIP" .Values.service.type }} + kubectl --namespace {{ .Release.Namespace }} port-forward svc/{{ include "backend-android-patterns.fullname" . }} {{ .Values.service.port }} + kubectl port-forward $POD_NAME 8000:8000 + http://localhost:8000/android-patterns/ +{{- end }} + +Enjoy automation! diff --git a/charts/templates/_helpers.tpl b/charts/templates/_helpers.tpl new file mode 100644 index 0000000000..25609a5070 --- /dev/null +++ b/charts/templates/_helpers.tpl @@ -0,0 +1,77 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "backend-android-patterns.name" -}} +{{- default .Chart.Name .Values.general.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Expand the app version of the chart. +*/}} +{{- define "backend-android-patterns.appVersion" -}} +{{- default .Chart.AppVersion | trunc 33 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "backend-android-patterns.fullname" -}} +{{- if .Values.general.fullnameOverride }} +{{- .Values.general.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.general.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "backend-android-patterns.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "backend-android-patterns.selectorLabels" -}} +app.kubernetes.io/name: {{ include "backend-android-patterns.name" . }} +app.kubernetes.io/instance: {{ .Release.Name | lower | quote }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "backend-android-patterns.labels" -}} +helm.sh/chart: {{ include "backend-android-patterns.chart" . }} +{{ include "backend-android-patterns.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Create the name of the tls secret for secure port +*/}} +{{- define "backend-android-patterns.tlsSecretName" -}} +{{- $fullname := include "backend-android-patterns.name" . -}} +{{- default (printf "%s-tls" $fullname) .Values.tls.secretName -}} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "backend-android-patterns.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "backend-android-patterns.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/templates/certificate.yaml b/charts/templates/certificate.yaml new file mode 100644 index 0000000000..aef286b114 --- /dev/null +++ b/charts/templates/certificate.yaml @@ -0,0 +1,17 @@ +{{- if .Values.certificate.create }} +{{- $fullName := include "backend-android-patterns.fullname" . -}} +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: {{ $fullName }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +spec: + dnsNames: + {{- range .Values.certificate.dnsNames }} + - {{ . | quote }} + {{- end }} + secretName: {{ include "backend-android-patterns.tlsSecretName" . }} + issuerRef: + {{- .Values.certificate.issuerRef | toYaml | trimSuffix "\n" | nindent 4 }} +{{- end }} diff --git a/charts/templates/configmap.yaml b/charts/templates/configmap.yaml new file mode 100644 index 0000000000..441f04307c --- /dev/null +++ b/charts/templates/configmap.yaml @@ -0,0 +1,11 @@ +{{- $fullName := include "backend-android-patterns.fullname" . -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ $fullName }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +data: + DEBUG: {{ default "" .Values.configMaps.data.debug | quote }} + SERVER_PORT: {{ default "" .Values.configMaps.data.serverPort | quote }} + APP_NAME: {{ default "" .Values.configMaps.data.appName | quote }} diff --git a/charts/templates/deployment.yaml b/charts/templates/deployment.yaml new file mode 100644 index 0000000000..42511ea779 --- /dev/null +++ b/charts/templates/deployment.yaml @@ -0,0 +1,145 @@ +{{- $fullName := include "backend-android-patterns.fullname" . -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ $fullName }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +spec: + {{- if not .Values.hpa.enabled }} + replicas: {{ .Values.general.replicaCount }} + {{- end }} + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + selector: + matchLabels: + {{- include "backend-android-patterns.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "backend-android-patterns.selectorLabels" . | nindent 8 }} + annotations: + {{- range $key, $value := .Values.deployment.podAnnotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + spec: + {{- with .Values.image.pullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + terminationGracePeriodSeconds: 30 + {{- if .Values.serviceAccount.enabled }} + serviceAccountName: {{ include "backend-android-patterns.serviceAccountName" . }} + {{- end }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.deployment.container.image.repository }}:{{ .Values.deployment.container.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.deployment.container.image.pullPolicy }} + {{ if .Values.image.command -}} + command: {{ .Values.image.command }} + {{- end }} + {{ if .Values.image.args -}} + args: {{ .Values.image.args }} + {{- end }} + {{- if .Values.securityContext }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + {{- else if (or .Values.service.hostPort .Values.tls.hostPort) }} + securityContext: + allowPrivilegeEscalation: true + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE + {{- end }} + ports: + - name: http + containerPort: {{ .Values.service.httpPort | default 8000 }} + protocol: TCP + {{- if .Values.service.hostPort }} + hostPort: {{ .Values.service.hostPort }} + {{- end }} + {{- if .Values.tls.enabled }} + - name: https + containerPort: {{ .Values.tls.externalPort | default 8443 }} + protocol: TCP + {{- if .Values.tls.hostPort }} + hostPort: {{ .Values.tls.hostPort }} + {{- end }} + {{- end }} + env: + {{- if ne (.Values.deployment.container.port | int) (8000 | int) }} + - name: PORT + value: "{{ .Values.deployment.container.port }}" + {{- end }} + {{- if .Values.message }} + - name: MESSAGE + value: "{{ .Values.message }}" + {{- end }} + {{- if .Values.ingress.configured }} + - name: HANDLER_PATH_PREFIX + {{- if .Values.ingress.rewritePath }} + value: "" + {{- else }} + value: "{{ .Values.ingress.pathPrefix }}" + {{- end }} + - name: RENDER_PATH_PREFIX + value: "{{ .Values.ingress.pathPrefix }}" + {{- end }} + - name: KUBERNETES_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: KUBERNETES_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: KUBERNETES_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CONTAINER_IMAGE + value: "{{ .Values.deployment.container.image.repository }}:{{ .Values.deployment.container.image.tag | default .Chart.AppVersion }}" + volumeMounts: + - name: data + mountPath: /data + {{- if .Values.tls.enabled }} + - name: tls + mountPath: {{ .Values.tls.certPath | default "/data/cert" }} + readOnly: true + {{- end }} + {{ if .Values.deployment.livenessProbe.enabled -}} + livenessProbe: + {{- toYaml .Values.deployment.livenessProbe.config | nindent 12 }} + {{- end }} + {{ if .Values.deployment.readinessProbe.enabled -}} + readinessProbe: + {{- toYaml .Values.deployment.readinessProbe.config | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.deployment.resources | nindent 12 }} + {{- with .Values.deployment.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.deployment.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.deployment.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: data + emptyDir: { } + {{- if .Values.tls.enabled }} + - name: tls + secret: + secretName: {{ include "backend-android-patterns.tlsSecretName" . }} + {{- end }} diff --git a/charts/templates/hpa.yaml b/charts/templates/hpa.yaml new file mode 100644 index 0000000000..b4ecd538e6 --- /dev/null +++ b/charts/templates/hpa.yaml @@ -0,0 +1,41 @@ +{{- if .Values.hpa.enabled }} +apiVersion: autoscaling/v2beta2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "backend-android-patterns.fullname" . }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "backend-android-patterns.fullname" . }} + minReplicas: {{ .Values.hpa.minReplicas }} + maxReplicas: {{ .Values.hpa.maxReplicas }} + metrics: + {{- if .Values.hpa.cpu }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.hpa.cpu }} + {{- end }} + {{- if .Values.hpa.memory }} + - type: Resource + resource: + name: memory + target: + type: AverageValue + averageValue: {{ .Values.hpa.memory }} + {{- end }} + {{- if .Values.hpa.requests }} + - type: Pods + pods: + metric: + name: http_requests + target: + type: AverageValue + averageValue: {{ .Values.hpa.requests }} + {{- end }} +{{- end }} diff --git a/charts/templates/ingress.yaml b/charts/templates/ingress.yaml new file mode 100644 index 0000000000..34b6763f98 --- /dev/null +++ b/charts/templates/ingress.yaml @@ -0,0 +1,43 @@ +{{- if .Values.ingress.enabled }} +{{- $fullName := include "backend-android-patterns.fullname" . -}} +{{- $svcPort := .Values.service.externalPort -}} +{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ingressClassName: {{ .Values.ingress.className }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} diff --git a/charts/templates/linkerd.yaml b/charts/templates/linkerd.yaml new file mode 100644 index 0000000000..b35ce78619 --- /dev/null +++ b/charts/templates/linkerd.yaml @@ -0,0 +1,14 @@ +{{- if .Values.linkerd.profile.enabled }} +apiVersion: linkerd.io/v1alpha2 +kind: ServiceProfile +metadata: + name: {{ include "backend-android-patterns.name" . }}.{{ .Release.Namespace }}.svc.cluster.local + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +spec: + routes: + - condition: + method: GET + pathRegex: / + name: GET / +{{- end }} diff --git a/charts/templates/secret.yaml b/charts/templates/secret.yaml new file mode 100644 index 0000000000..bc8a4ad059 --- /dev/null +++ b/charts/templates/secret.yaml @@ -0,0 +1,10 @@ +{{- if .Values.secrets.create }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "backend-android-patterns.fullname" . }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} +data: + BASE_URL: {{ default "" .Values.secrets.data.baseUrl | b64enc | quote }} +{{- end }} diff --git a/charts/templates/service.yaml b/charts/templates/service.yaml new file mode 100644 index 0000000000..031d197340 --- /dev/null +++ b/charts/templates/service.yaml @@ -0,0 +1,30 @@ +{{- if .Values.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "backend-android-patterns.fullname" . }} + labels: + {{ include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | indent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.externalPort }} + targetPort: http + protocol: TCP + name: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + {{- if .Values.tls.enabled }} + - port: {{ .Values.tls.httpPort | default 8000 }} + targetPort: https + protocol: TCP + name: https + {{- end }} + selector: + {{- include "backend-android-patterns.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/charts/templates/serviceaccount.yaml b/charts/templates/serviceaccount.yaml new file mode 100644 index 0000000000..960ab7ca27 --- /dev/null +++ b/charts/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "backend-android-patterns.serviceAccountName" . }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/templates/servicemonitor.yaml b/charts/templates/servicemonitor.yaml new file mode 100644 index 0000000000..7f5e7a8094 --- /dev/null +++ b/charts/templates/servicemonitor.yaml @@ -0,0 +1,22 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "backend-android-patterns.fullname" . }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.serviceMonitor.additionalLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + endpoints: + - path: /metrics + port: http + interval: {{ .Values.serviceMonitor.interval }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + selector: + matchLabels: + {{- include "backend-android-patterns.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/charts/templates/tests/test-connection.yaml b/charts/templates/tests/test-connection.yaml new file mode 100644 index 0000000000..75ce78efb6 --- /dev/null +++ b/charts/templates/tests/test-connection.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "backend-android-patterns.fullname" . }}-test-connection" + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: curl + image: curlimages/curl + command: ['curl'] + args: [ + '--retry-connrefused', + '--connect-timeout', '5', + '--max-time', '10', + '--retry', '15', + '--retry-max-time', '300', + '{{ include "backend-android-patterns.fullname" . }}:{{ .Values.service.port }}', + ] + restartPolicy: Never diff --git a/charts/templates/virtualservice.yaml b/charts/templates/virtualservice.yaml new file mode 100644 index 0000000000..641f266b14 --- /dev/null +++ b/charts/templates/virtualservice.yaml @@ -0,0 +1,44 @@ +{{- if .Values.virtualservice.enabled -}} +{{- $fullName := include "backend-android-patterns.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- $svcHost := .Values.virtualservice.serviceHost -}} +apiVersion: networking.istio.io/v1beta1 +kind: VirtualService +metadata: + name: {{ $fullName }} + labels: + {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.virtualservice.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + exportTo: + - '*' + {{- range .Values.virtualservice.hosts }} + hosts: + - {{ .host | quote }} + gateways: + - istio-system/gateway + http: + {{- range .names }} + - name: {{ .name | quote }} + match: + {{- range .uris }} + - uri: + prefix: {{ .prefix | quote }} + - uri: + exact: {{ .exact | quote }} + {{- end }} + {{- range .rewrites }} + rewrite: + uri: {{ . | quote }} + {{- end }} + route: + - destination: + host: {{ $svcHost }} + port: + number: {{ $svcPort }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/values.yaml b/charts/values.yaml new file mode 100644 index 0000000000..8ac94b1167 --- /dev/null +++ b/charts/values.yaml @@ -0,0 +1,217 @@ +# Provide a custom message +message: "" + +general: + debug: false + replicaCount: 1 + nameOverride: "" + fullnameOverride: "" + logLevel: info + host: #0.0.0.0 + backend: #http://backend-podinfo:9898/echo + backends: [] + +image: + repository: styled-android-patterns + tag: latest + pullPolicy: IfNotPresent + pullSecrets: {} + # command: ['./run.sh'] + # args: [] + +podSecurityContext: + fsGroup: 1000 + +configMaps: + create: false + data: + debug: info + serverPort: "8000" + appName: "styled-android-patterns" + +secrets: + create: false + +ui: + color: "#34577c" + message: "" + logo: "" + +# failure conditions +faults: + delay: false + error: false + unhealthy: false + unready: false + testFail: false + testTimeout: false + +service: + enabled: true + annotations: {} + type: ClusterIP +# port: 8193 +# portName: http + httpPort: 8000 + externalPort: 8000 + nodePort: 8000 + # the port used to bind the http port to the host + # NOTE: requires privileged container with NET_BIND_SERVICE capability -- this is useful for testing + # in local clusters such as kind without port forwarding + hostPort: + +# enable h2c protocol (non-TLS version of HTTP/2) +h2c: + enabled: false + +# enable tls on the podinfo service +tls: + enabled: false + # the name of the secret used to mount the certificate key pair + secretName: + # the path where the certificate key pair will be mounted + certPath: /data/cert + # the port used to host the tls endpoint on the service + httpPort: 8000 + externalPort: 8000 + # the port used to bind the tls port to the host + # NOTE: requires privileged container with NET_BIND_SERVICE capability -- this is useful for testing + # in local clusters such as kind without port forwarding + hostPort: + +# create a certificate manager certificate (cert-manager required) +certificate: + create: false + # the issuer used to issue the certificate + issuerRef: + kind: ClusterIssuer + name: self-signed + # the hostname / subject alternative names for the certificate + dnsNames: + - localhost + +# metrics-server add-on required +hpa: + enabled: true + minReplicas: 2 + maxReplicas: 10 + targetCPUUtilizationPercentage: 80 + targetMemoryUtilizationPercentage: 80 + # average total CPU usage per pod (1-100) + cpu: + # average memory usage per pod (100Mi-1Gi) + memory: + # average http requests per second per pod (k8s-prometheus-adapter) + requests: + +serviceAccount: + enabled: false + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# set container security context +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +# Remember to set service.type=ClusterIP if you are using an ingress +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + configured: false + rewritePath: true + pathPrefix: "" + hosts: + - host: podinfo.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +linkerd: + profile: + enabled: false + +# create Prometheus Operator monitor +serviceMonitor: + enabled: false + interval: 15s + additionalLabels: {} + +virtualservice: + enabled: false + annotations: [] + hosts: + - host: "" + names: [] + uris: {} + rewrites: [] + serviceHost: "" + +resources: + limits: + cpu: 500m + memory: 1024Mi + requests: + cpu: 100m + memory: 512Mi + +deployment: + replicaCount: 2 + container: + image: + repository: "styled-android-patterns" + tag: "latest" # uses chart appVersion if not provided + pullPolicy: IfNotPresent + port: 8000 + + resources: + limits: + requests: + cpu: 1m + memory: 16Mi + + # An arbitrary use of livenessProbe could make a lot of service interruption, use it wisely. + livenessProbe: + enabled: false + config: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 210 + periodSeconds: 60 + + readinessProbe: + enabled: false + config: + httpGet: + path: /actuator/health + port: http + initialDelaySeconds: 180 + periodSeconds: 60 + + # Currently only linux images on amd64 architecture are supported - support for arm64 and windows/amd64 coming ... + nodeSelector: {} +# kubernetes.io/os: linux +# kubernetes.io/arch: amd64 + + tolerations: [] + + affinity: {} + + podAnnotations: {} diff --git a/cr.yaml b/cr.yaml new file mode 100644 index 0000000000..3b20d542d8 --- /dev/null +++ b/cr.yaml @@ -0,0 +1,4 @@ +# Set to true for GPG signing +sign: true +# UID of the GPG key to use +key: Chart Releaser Test Key diff --git a/ct.yaml b/ct.yaml new file mode 100644 index 0000000000..ca30461ddd --- /dev/null +++ b/ct.yaml @@ -0,0 +1,8 @@ +# See https://github.com/helm/chart-testing#configuration +remote: origin +target-branch: master +chart-dirs: + - charts +chart-repos: + - https://github.com/AlexRogalskiy/android-patterns +helm-extra-args: --timeout 600s diff --git a/k8s/backend/deployment.yaml b/k8s/backend/deployment.yaml index b9c45d542b..ea3f872dcf 100644 --- a/k8s/backend/deployment.yaml +++ b/k8s/backend/deployment.yaml @@ -34,6 +34,7 @@ spec: - name: http protocol: TCP port: 8000 + targetPort: http selector: app.kubernetes.io/name: backend-android-patterns app.kubernetes.io/version: v1 diff --git a/mkdocs.yml b/mkdocs.yml index c6643650df..c0e94843e0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -110,8 +110,8 @@ markdown_extensions: - pymdownx.tabbed: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#tabbed - pymdownx.details: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#details - pymdownx.emoji: # https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#configuration - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: "!!python/name:materialx.emoji.twemoji" + emoji_generator: "!!python/name:materialx.emoji.to_svg" - smarty: {} # https://python-markdown.github.io/extensions/smarty/ - nl2br: {} # https://python-markdown.github.io/extensions/smarty/ - mdx_truly_sane_lists: {} # https://github.com/radude/mdx_truly_sane_lists -> proper indentation of md list items diff --git a/package.json b/package.json index 72e5917af6..eb6eb35ed3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "android-patterns", "version": "0.0.0", - "description": "Android Design Patterns", + "description": "Android Design Patterns Documentation", "license": "GPL-3.0", "scripts": { "start-docker": "docker stack deploy -c docker-compose.yml dev", @@ -18,6 +18,7 @@ "format:doc": "alex", "lint:text": "textlint docs", "lint:md": "remark-preset-davidtheclark", + "lint:yaml": "yamllint --strict -c .yaml-lint.yml *.{yml,yaml}", "lint:markdown": "markdownlint --config .markdownlint.yml docs/*.md", "lint:json": "jsonlint ./package.json --quiet", "lint:style": "stylelint --color --disable-default-ignores --allow-empty-input verbose **/*.{css,scss,sass}", @@ -47,7 +48,7 @@ "release-major": "git checkout master && npm run all && npm run bump:major && git commit -a -m 'Build project codebase with major version' && git push origin master --tags", "test:license": "license-checker --production --summary --unknown --onlyAllow=\"Apache-2.0;BSD;ISC;MIT;GPL-3.0;CC-BY-3.0;CC0-1.0;\"", "format:all": "npm run format && npm run format:md", - "lint:all": "npm run lint:json && npm run lint:style && npm run lint:docker", + "lint:all": "npm run lint:json && npm run lint:style && npm run lint:yaml && npm run lint:markdown && npm run lint:docker", "check:all": "npm run pretty && npm run format:check", "test:all": "npm run test:license", "all": "npm run format:all && npm run lint:all && npm run check:all && npm run test:all" @@ -83,7 +84,8 @@ "textlint-rule-stop-words": "^2.0.9", "textlint-rule-terminology": "^2.1.5", "textlint-rule-write-good": "^2.0.0", - "validate-commit-msg": "^2.14.0" + "validate-commit-msg": "^2.14.0", + "yaml-lint": "^1.2.4" }, "repository": { "type": "git", From 329811ffbbabfbb7b1263a0f1b8bbaa37afe8514 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Sep 2021 11:05:00 +0000 Subject: [PATCH 0741/2080] Optimised images with calibre/image-actions --- traffic/plots.png | Bin 47547 -> 35949 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/traffic/plots.png b/traffic/plots.png index 0b6a01073b13dbb6db68ef0b3495aa87ae0f47cb..7849201fb36153c46899b1fd7e41b686bd071554 100644 GIT binary patch literal 35949 zcmbrmWmp_b+ci44ySqzp2^QQ5?ruSYySs!S0fL91A-KD{J0!u~AuxDwJ3ZO^dEe*z zb-r_*&J~6krn{@F?z&~wS{0?LEQ^Lrj0^&S(B8^Pse?e!!5|RS1|mH03D1v}9pDAY zSx(Ol1j2X+`43erT4VzPQG(t|iEDZ7Z>Mp;o@3EhK2@5qhb+_{(0CBL_ggm<)_?MY!;orG8`2+ zeKU0#_wZD?|As0YQv#7nEBa^w?(c87!GB-Ep+7@D4_5_YLtZeE#s0oXK*>SgNic$t z{+4>)AN=Ron@0NzzXVVG5xSaiT72Hf zi;U!-!=S)+njbfK0F+YhfxS+=@XtZoVKd13o)o#;OicD$(iuCXp^@Lsl^i7hy+72j zGBu>t-$3~wT2J}2MT>R03_q!id`Q;n!J$GT3k$)QyqUWc=^y6mlw!@WM|zP^XR@$IAZ3B;lEL76eJ4t7vh9af9=*x#lIUpZo$= z$VVnev~sTWwyQ)WwK*W>vV>sN=9z*a`Z&$9Ow45w`P$~^-|mF2W^xtamNh1=sgqkw zyL(VBnF=)A8v=$v6_hGgrd_c!ZxYmS`(_V6xTK^ch5mQM-!@|@9dx|$Y_ixjcnP-l z4qamc><>3MMFpgt@=v$ocAD0@?i3`nB~Kd!aEu=EP>Nt3XdcBKlR4L$;#3v+68nLDoBt=yEXWTxc{%2~pys~oY-b9AN z&B-bqFRyk3xAi0=)l8WVJ6#;F!xHVys#gxS;Xnn)7jm!TgQ!+gS@iNcb9f!TzJ5O~ z*7fK%C0rCZ4_>UBT}MDC{cJm1`qtOCm1)%fmlEGd{@bMFW;9e(O*3pqYh*EGF|)A@ z2kp3aA$jX3gH5-k9j;Y;3iWmN%V>*_SQ6!IAgcb?D&Y+z*GBrtZEg=Yr&Z9u}EYZZ($RdwtefQ>!ETA0kEhN1L+ms)?GM@;)^)m%W zwmsh;(TRu{vvZsW08?%DhDJ6n8J|_Z_=Q5mU-x&^uOgLY@Z;aPO|Scv;m|qB?qr9a zXt9vtC;2{cY3lE`O-8{_m=aLB@=&+uLlk3t>;C5Tieh5HzMV4C(kYA}>+vsC?Cocv zwdJdU567c<@H(zOup3JacDt2rCyAdvphs#twbOnmAULVu^VY^&4!79AY37PnT$4EUP*Ug|KpCiytqiG__20 zTF=#0fR2=^zZH5~EqM2+C@1jei%}*D;T*@rlfE}uaM!x;5$pFUQ)%WZ5G-aM*&FxI zHReO5JLrVPI0k zCWqk}0pgJSSm zxv(9oEqW6p9c+=vk{DD{Nu1i%zVg@=noJH2$pThcfUR$O6)s5388$gN`FD7<6<1sg zqgtUdpsQNIvfLQOmQApkmP1%TNK^vVz@EdLYkuY87^n!-71jk~HhBSaQei4vxWH+> z6AwEWGj$j|AflZ0Mk@~l%dAtWx!A$)*zAeL*X*(_^Zj_!t^dV_5*>4SsK(ZmWx3Iz zY^4)3hS7#Q;NCqWQxwtw+8ptWu;gNrQ{Tt0W7o@s#i?Z5*rRbYkVySeFo;whG*_Zg zB$pufdIpzkU~3>Ih6QCn2}(}!{IZlre&!wiXSWt5z1FVyV?PU0>|jj=bKyWnFgPVe=#fqU5x) zm|@ntmegLQG2Xqq?F}~5{OIpu<}NnBF@qzCiWzZ(wZg7{-7u>)G4Cv~BiRrwsy9_t zvS~}$!VAU&Q|~ROv<7-&o){sz1GR9T7u&50`l zQd0j32bv9Bvb=^bUkH)AnYxd*uaj+}oA?G#wZ=|SVyyQeBY*^#%L7Zf2MTW%^lQ9j zQDkRl*K2hz8SNL}`|)tvRb|+V=}s4dN~uv30R)kZK}oNjG|#uMW-mIlNwvqOuJ}hL z|8^v@m>ps_;87XHb?`a9y*3;yrqaZ&2WbndE~~ix9xO_pED#Lv`lA0lKP$Ts@;5tz zdT#?2`8L_9c@thss-hL2>+BoHp~*b-X09&rB$2(vO$^!cwiZ@`pk>Q!!RceVQaQGv?}nQ!9$=3a27 zaN-RPv>v&>-tSu7f17E#_$^ewvxTTm_ZPN8jtcz-^jAFr34k;f$C7K`C7dV z4qR>vTrO)asQl6XjjIfj0Agz`$72^}!`f%o9B>91SpVH;aKLLM-(`O!uZs*<+k>!^!l{I_G6*0Pt zM{|=Vn?6}hQxfo%v97|=rw^V8g z=IrS+j~6aX9rDGYSLFD5j`GfwBJlRx4-rl~LW%y@pA|NCc4$40=CpjEVoCT?f!~ZS zZ%jL6$$g{%$8PyYKw_-2>)BW9o796*1lz{J!TURK-PDZB8W1*Z)uV@p<*tlWRX^(! zXsm{!5U>?@33`HyO@jI(v3}NCDqOwf=hNP8#jx*mKAdO_#fccyzsG{3grj`L?z|~6 z9P5I_`pcJ*=+ffl*mm_xzPl$aRsRJvCVNJ@O{0ya_Yc-sP(O++_ixx@;H{F<~OF(eT%kpfD=dF^D+ zG6guXa}@?-!B8+WFMc;CtW&}_nYZ`%Ojs>;^K6T)9?btdN7vI)mDCF9P3_d-d633+ ziHBFJ8Tva3#FA=II3|f}kpuCygACMreoje!{jc}q0|Nv3An-~{o&4Tw*woruM6v$8 zRnKJy+d>XWppOI_p6o)>2TZ@kL`SO!*=hGI)>&uZ1_SxCj@i_-BI03Q)lPur9Gg39A`?k%IMj< z9$iZU=j*0Kn7_-$Yrm}5S;y=1adQ612Zaw{{+h#IqmatqlaHXQ6Ayzwe3=q`X~*uq zMZ-+V&d#=d`2G70Mp9i}9d`VIETXi(3X~j_98)(CTNttSiAfFiJoZlo3+A3&(kTQJ zG0l9S4k+0+hA4sz0SniZ5+XwG?%h?V+}lWGtpbI6pmKUf{5hOeU^oiEFRs!> zg@sI;s7Lf>co}?7j`ackC~SJQQk{<%3U~;J1h4-NE`w9tdYM$_R7pQq)e%v4?p%Na znEW3bofZ#13rQJ0(?dSe@`1~JMZiJt&4C*n^zzj7+F@zteL9e+9l)8&%SU7D0dtZ0 z=2QYq2Ah$SlM^le2&7Iic)^!@6B;KgiGN^L`fk?zs{Eg><}XH>tBR*KY-LDIGk6{H zO}YXHDg~`4Nn5t#1pk&|K0blB%5+RK*iu=YQ+}$CE($@ z1QyZan0n-UJM{GOvH@MlCkjzxy|F@-9AjD}*eEhgYiAns^qw#T=BC}JsIhLPC?;g>7U;nO9R^Jyee`vqj51v;#3?M85ybCb+n%olnMl? zr#A;A&Cv~dlb8mGn~_sz8L#2di1V?fO~u0nAAm7n|KS0IWhgm$O1_&?p*0>j+5I=^U0D@h~vr)n9n~Pd67#8eT+h zZ)esM*jKn4xNPbwSt=2d>VP$DYr8t{s%?*3!hecI6#N_4_+m z72?1D`B&owZJwCo?Pr;6(9%?Md?3&e3uFj&l8`Y%X95L1o)1ye8PrFd{vA*{GZWo* zY$pc>zhplWEF>FSk}G(A1y5x*!4x2X9R&9e45YIxhW^jD?Yi~o)GAuHnkJvifC_v#{mEtIg}1)@VBCKkJ0WjoeED$qYaxQ;u=g+pvfD3XR_h($9prh z?z)r#oMm~riH#^o8zKwlq$o)Y^oS=jw#?2Uki$frf@(RoxW2Z1SWjhQx-<=xW>GpX?ENDmY<%jS&mSoOVMbu8mvU zg61mCOLJ9a@n;s405AgpHM%^Ak)7{%u04=`DkWUsHw$~};b0Es4=`tU=$><-v`J2t zIdpK3WHG=1=#DK3a(8J@e-=YB=;z@J5q)^(CzXb_ZKW|m5mr68x1@Nxh8LC%6)#uI zY&x~B-V%SI9}5Ppz_pA<6{K8`K+gNA`b3UPA?3x@^X!&l9D9{3FW#6B*vsCI3+N3K z-Cr!SF@bh5f)?MVWGw73-)~JtSgO|NO_S~WF0OJSb1T9N8b;I6F@spIAXUZHE4h>$cq z=DJJ=y3mCmY5~9j)Y)I|_H)MkPCKmsEHYQMQ;R;|(!k}WFZu~7M`c?nJJL(XPnAer z31ic`x*p5o+IT!X>ynr@I^;dZrrwbTP-QV70Aq;U9gW<*?AWG6?t4Jx12}`-81~N3 z#l>6uP66PWA&ZNh5t$q`av@z}K1ai?KrSvW&5!R{>FFb&&xlc%Nb_M;x?)4T;zyelsU4>>AJ=h>c>lz0=w_4t9Y^L+AnHc{7WDm7+}zqK4}_co z&*P=U#6&Y!pJqRu3Vq8zi{t6syU#%FP&my(Y9|M!D^z{kK-gh`MBZe+A7gY|JujrOo^b`7+`>eSmr1FDq25WrQu%UL*J<+73C5VePv~D$ea*+-@h9=m z@$&qR*RBWDa%~c6Lb{)ai#q_aFuAk74!$tqdwcbF$}*U$8Xbq3vo{gSo2Y z+W4<|lZ0l@!59i0N1p6J8B_E{p(Sx333xIfL-M)Xju-7;T{WVnq0x#;gCv9jH>(Wi z=jVqH0B}pF2U9by#J5TdB-fv(r&aNmhqyTQ2Bu5BuD5pW*hKA4-!|CKOCua_-I|a$ zD3Ga46J4q-&#jCoIXnOXFq`pj|BWdC7=;%6*#zG@3j`v#f7lsGx<55&u%!c#Mjm~H zw=`FWvl>Ua5tJz683e4A7rd&C&`fc6XlVR1L>;*$F~w ze|w@fi3vmB>Xd)}r{y)ZdGjuz(coF-=SyB;Pu!};{0z_bBbSEbpgD@&CHGJ}wGpQ*_oT z*7-H(MCu$-Jx``;6nq#wEVTEdI=y8Tmy-C}DTI#v4hOgaZZMekqilxs_o=V76Q_3k zPStdY?4wMk>zUQ_)XP&7I0I9tKc6PgnsKu^{=Gxolz~q#(v}qf6j>VIJUl{=YpnL# zdp@#>*BlaxWczfRJ#;tL#7{h1d-wk9?F4ue?oK8c?j6z;cI9$)132U>)&mEjGM*xW zFr-sTgFU1Vx;Ryj&FkG5Rfzv>)sWTZGa{WmQ1r3Q-|w><{jlB`EV5YG;Tw0EpQQy~ zR&@jyix0gcUwzMyD2)>S=QYqaY$MRm62YHy4zI`T)Xfy zy*=IrkX!HnIfbo+Xz>ClcjOl`qg7aMJn4^xzBT?ZZ^=;#lwC)Yoqa9>*BX*iM;px_ z+ZiY@01g8vW1)248HT!F9j_6Z)PNVia}vyYW|Qqur!UU2CqZx8#HPPlBdtg@FDNC`o~rb4m1_2OLAs%{L9#_HYuY2z#|;}>e;;F5*;R=Cguk+1 z5eSzPwZgQ?LbK}vL5-g@%bxKaQsaI_+2F6nZ)Wy=f&1{E9>zT`JX|R}dNLbtoT$P- zkRKhtsy6;)DB~H|iT=*jH&yxuZfwu3&$BoHZjct`Ker)#t$;uJmA3F}RsP5pOl#iH zoT>BLC8sEbSGTN@cJ;4K#^>oWO|P;3HToTn@;^V6vaS=-_a|fJ73bUJSRG=2AqwW? zT`yWJpqGK2`h%!!gCrYa|Mw1^23uuP<9}B7*fUpr^V*iK=Ys3B?^r)lvll-#5H}4m zJuEx(%N(C_GwTcd)5XZ$$RRr)iVzMH=_Mw=c2Q(z#+Nv}SoQe$pe+*Rjg32qZU<{! zdjY}6==u+)PMNjfKXV2*c-L&|oS)A0t3ZpMR5$6T=3K9lJzXk#rwXU~rS*9f4E=%^ zRW8{K5%znDH>X1X&YbJ1ZY6Q~b|9g9pKxrwzazi>tyNKPeHaD*Mfmb2tJc?L&+8IJ zr44@QViHJsAd}x>y?blk?2jXzvFgl%`eXZHq*tpInV)5h2P;n}G=)tj0KGU!&<>PE1{$3Q9-KGzh`0?dzO?r#8c}sLvY76$^W|OFtB3Mh zQHKch$S`2#Bj&hhmoN+O5J-cy9&jAp!Cq0;7Ab;hrcYrHBwZAG3t#jx*(!_f2@rdL z+)FFLQKFQ~?ZPBn&7XotD#&oJs7vNdBF?u2s2{+L>K?GUNl8iVe|{=J;F1!pvQ+=u z&5y2+x98aNdhOmd_aPA#zE_91!3FtVf#syNRuxcYy{{93%_dTz@fpF}n(ZFzg$&?n zONy6{llMR~>X%~J;}%|}aib(gnd*^Ozfv_}z&ZwU`7Hn|MJ$PS9}80Jk4cmP))(&r zORAoUduGxj3xu=esN_n6LH5gy71-`QJw4c%n3Ts$4M_mzrl7B{9|e5|Nf{OvbOQu~ zp4(SF6NRB-(5xz}8w*e`cg=DF_(&TTPJcS)IlCAn9f$1C1d4v??2^w?h_vag_q#oI z6IT9eNKgMt*l8RlcEy-+2F;6*N(&CRcivbP#yl~`KYr@9N+><-i#|a&^ku#)N_TJn z&`?>}&Dj~F8feX9-U$8I+w1W85h;%_pLe&)W#g0IHUp`RkDGoE8{v;&D=AJ)uM1Hr zmcO--__{XWa2&9V?ZCFPe>quT*K&PM*#~nR1TTS!kEMYjDZxa-Kh?m$n0V6W%_&h{ z?-{!>fW)q9U5;6%#0YX=1NHUw&GsO`!2yddPVMJ1maqK({E#gGiuKV@IVf)j8AlW~ zKKy2)awJ`a z&6Qt?pQksV!TN4iF5c~+&{PSLr3zR)lRk6}?E_`#mRfG+=TUfUQRg@s ztb7(qALO^1OFW@FOtgAgUG5*Ug!t;xIW$SFaMb% zTm9StRAW!ZxVTk_j6oq>gdS+&ra+k4g+2P7An)GsdNjU`%?Zpr`YM2Ts7wqI-8mJg z=IGcyNPO0WhFWOza@w7YjbvPBLC*=iFL4L*#)VTGD3&jcs7}d^lx(LJT5Tce4}%2* z-+LU)P_%C|wI5Dv&rAzMVkd7__TlZU>~~DsIJ908XJs12 zd}_|#$gFEr71a-O4M(sVK5@6~Qa}m4@S`6nc$IAh|`I?h}uXj3nG&9Vz69 z1b}Okz;F(QsC`_pbMWc4{1H5zKde?ydi`Buu=yG{F8M}sX;=rZ{EjgN0`48MbDVd5r$B=;e9XAAq4 zelqUAAWHRU@o%AAXi!LF``P4V^0eL;ftExj=s64w)Xv#v-{^(c7;BT9oE(r7b9SqL zpS7s7tobq0rhKs7F+S3t)q32EXNU3`uB?TVxz0d_*(b~*V`nTCg$7Z;?=1y)Dcba3XBMWX!0z>UTBJgqXIYeorL!Es71SYL> zAPD&}$KvRK%-RD_=fp%){oIfR{uW3B+r%R_cFE1Y3$IunwjM<+{~%A8)T_+4 zRHjgLsz}23{i1gBNGDaz1ZI`4!0JsCu%_>xD10WnCW*rb-ygGZ9}%e^%#Yv9IX=K% z7Qe94Q87?G!De2V^L+yww=B>E0xV=YuF~cOAH-ZJeY=1EQZ70w(b8WjE*G|!H&N>x ztBNQ-UjOGLIpF>X)&t?Z*6OXD@HdbJ1KwpfxQlZd>@e*sx+vuI<@Q8Z&-TZM-l=9P z?`%cJ7mQIkyhT27S__mD-rY6SLdCusQ_s&oKc{DvtuWBxp~?88HMUH$4_fWxa+$fH zVt#LgW>Z&GN;BQl%`Izb;j$j5sP*q2+7dk?Nq7mYdmCf2s)9U6Y!fki~ImO>NNil9V65TleTEe4llU{q ztXfdkqu>tCqL6j2bS2Kp5S7rx?;jAPYyB-FQeHK8& zaV?F0DD)cq*b_c+i;0CRO@qno^OHJlgFn8|{DyA8MCZ?O$?%U zHWvQ*vxWs6;-a{3S5jUXV2XiilhLNiuLj}wr-phQ*PaUzSEmlwcCi)j%O0k*ZPvY_ z70J(HZ!vr;hxw(@?HEPMvSvpY2U}j3lhw6aOT5L`OznZX2i4;D{!Ug`NHiig=;OTzRWZx@KTm z5$fGCE5y!tz|t0RcyE2Lpxq(kdc!|5G8;6qixpq;w2#`MgU)gejyf~bQLs9?b^OdDX zyv$vsVnC;9mq8$YOX9rAKD3k-FZ->(QIk-CHt%LZi+z0E6p7lgtouhmn5nifW;kJ&`c=*Stm#$Q6}y=( z&G+5DkD}}%b_{Zd1^G;~vBeHiN7ZW}>yc($cCN#BMmgb*brVnpnFM;XEvEK+omALP z+4%zDMB+QtM5hG_gJzg-IU?sjh|^{OeF5}F@{UCeID?T(=w-s!-65gdZ9Zew|w2WTc&B`C9$uH7hUt z>~YMtt5sY(zXU^Zs*m)c6U!I1{^E=aM-hD_d;I&f;-dsDs<+~N>98$;n#D#s_ylb$*;<>jatVIbVxgY89F7b(zriylv#e* zDw?1^fw?d~kU1(3;c8DE4teE+Jn2u4vJ&5+OkbL4$WG|(G<_Dj;$)s1Ej{E4$#17| z&l#llI<%Z&jPF{0Eb}6sd#bHlqIb%geODyd{V;}0Kpq{D8qFO@{VM|>>}4J=MCVz9 zI`*P_adAiKr%?ySOH(UV%8k<%Z^lA?sR&U=SV9||t6`vN`cS;xol#vNPQg1x5agt^ zU`HFs`CCXt_S#FDztuWxtso7P#35&1-gE6V`}Whxqac60O7KtQkml+3k1v`D1E+Z5 z9`7A?!l=vMMBTEDw{?$-o)F-e4fqYHMv>pw|G18if6s)#r<^oqlj2pFwx+KIA`s1* z#qA=aUS=Z?ww6u}QscWVe1L_#;hNPy|MfHP1?DlN0B<=&W-f@bxOsL!u$vO#x&_0oTTK+l}&wz zp=ODsKJ!U6CDXJfD{>ZrA=&owy61`eAD!&)5k)ioFhdtJ(RygpZK#JXD-&MsBNc6R zXGZys;jq#=sTsU7RuiM$ULAC6pOdT`cU0Rxw7=e=I?q1O$`sktDQP9%q+EJpw(9Hl zXSQ{_l|MeB+c;BCP>Vl^bLxjl^!jE1COrRn;zDh#6*4X1Ss!t0X@Nr%A(#eqLA5-x zSbGSoy@9i&@pX-y>jo1?9|R+?Mc$RIPH!T(A-^k=>^}d;dH5%Ls!oG_xk0?4s^dsl7DGRFR9yxg zo+FbpnFpbT7@zs;L=5CXGc~~k6s*($f|0hOQvvcKA>1!o!>Xv%`IfgqRIdC?BW5?M zkkz6GtYGi$i}W(Lwhd^h>gx3^^`YqSPqrm>(37`w2W}NCNGsv=?6mzCU^0!(a^r30 zHq|)}=szmyY%!s^?^xv)IQR*BwG?c10j}A5G7C(*DE#V1D2uO~PPAw7EIwTu@Uh;R`M)feq^3J3Y>i+IhjLA%zC+4`3w9cR$m8=nsL0WBzc;k@*XISKo`0}77E>kk6T8VUZuiAuh-k!1(f>^W9bE-r4 zT)&R2hUgNRZbONGj73`@{4n+AEpg_HYmj@aIl7oc^YCL6%48j0&Ym#;)Z&gR2UU0D z_x*gJ)Y8)Vp^Cb-#_uxZB0z57!#(;6#2g0dkG&g4HnOT3ZEZD4JGYBy>gy%SSZc2a z@Gi~0akH`ZNxJ=#4&yK>@>c2fpPd58+XIJ0 zmf{SBjn!W75Jy7W2am_70Q%6z2&8 zl+VxMdR|!7))k#r%hou&M~3-rH+Z8g&j(-A2k_x~_VvH%>9TpEr?Oie!74uxA+at5U{;^YePZ&8;2`MR7hfJB z=bB(uB*KR*bvyie>#fmiaDU*>2fvn&8DpNS%Jm)C?ZSB7<{n@!%%~$(2)S75N|;ViJ-pH^*W*&#sTVSo8`I?Dm>@I$K_sl| zW1#f$$g)I>)r7zGz^y4b!6nj!sGO(woh;r<*asH zKcWx?y%&~nbl8eY5;^tZU@Nl7?vt4~&ByX~f5|?U`(aV6PrI;A7m9&P9{3a9-PN^y zDq+U1?{P%Om)bJDKhtZ_poh+b0{Jr-XwyjlDx|JXNeDFBwaFU)#;O8&qHy(>w!h+8AgG zx}zJfblL>i-C0i`*Jd^sgHqDy)`(eMP0wOaba;KZ?PaFb-zY$_<;^~n7AePQT_ zXY+7zB6}X@!TFWwBa;oiuYK-`5KlSfJDvG?iXHgovL;vkt^R^o>; zUq{`CmFcCHU#T5U>YycHJ>|VN^FXk#pZ2hPI38wFRT;uv^@GP1-0`AOaw?vNz1@xvlg_`)mT0K)?3k$wc$g`dLbbgGOkKQ2&NPi3bR zDrLxb1wJhhX`#-1g22%CT|9+Z)VpmW89a9M5azjsl~t`IurN>)q?%L;5MFD&&&@m| zvM!dLy50hOf}Jo75mgLgbq_*Lvv7bZrvQ&mIy_me0U;W;{4UJ!4ggp~TZD$q&f*Yy zpU>t8f@IJmK%t~%VNnc_WzG%2#KWTl#3a>^r$H}CfTE#RvJ|s=^ai}BVeEe{ZF%?9 z_3|Jp;Jg8E z{qDjtT1+qxSbF~1>S1^F0>}>JPS-jLf?l3$U3cX@;^}}=Z-KPGfKXX9+yc6fWClRx zXjt{@KTCc@uc@5ta!F^D+Vn zmQbhf&I|z{jhT(}I<5>))_yPX$GNA92{;Uc_9wHLT?4i(E40eAe>T|Z1Y{CbsT^^> z>xI1oxWX|VUA*=Ss(Q9O7^A@Ye}Qp_ugv^w0OIPm-B5x6rWZR&Dx*IO6bb;|($8FR z7@yOQn@_1@BO_`r)Eke#i*mHJi+Ux(bt8g#TwiOOiQ&Lv zp6i|hS_3ZqRDOIyQNx_0xr(IqpckVk-}Z7U`0BGOfuLu9ygEU@YkT7yZE9LtDZN!d zUgPPr5rQzokJl-pCjM@{GvF|=%qYiO?P#r|t#zJDGYptaWjI(^-(bnsWOzJJR$eu& z`IaeueO(fn0)>Gi6#SVq)Pv7yt$YhQYFA9ikwm-&(2u>=1Dby9FOdLt zVyCr;)Sp4s2v_;mOaP$r4D|I$J_U^?zk)C$hZE@(6p=+GS5{V%3x=ToZ&UZvw;?OgOiY1u(##i0Ia^fJThV`}_OXq*Bvjx`P+g zMDBKQqCS0k?fc~~f%6V^TZ58O^;dLy_Z$fgnuDQsg+ARx245O5ukiHX>BQH3_Q`hj zCAtM%>^I~e0me&80V5-$+zU}K9r-uni1coKwfDw3bFyuL=g<*HrvSZ{r53f<4x-IT zfg5kl0w%RCDq<@z7&>p<4^(%QW~vpTq$IZoV=V!mwan2}2A@jD2ytr&8q8GG)!^`% z6KwqUX6UCWz=M=d)gy?&c4(JpEbtA_NK0V!av+=YU;ABy)fT&|+et#DSS)tGU(?ha z6B0e6#XNlBG}nAQetvqGwbmzu@Aq?ee=V2_nCnOFeQF>$&ym8S)_~GwsH2l>bFx&mj`3QL8NB2Yi96>&5!&8$=e`;CnK-b z0{I&Vp$wlzSCtkA*Sun2erp#s)NHf&!~N<0csdP0Q5NEsbKsY07C}qeea%c+-r!x* z_k_dl-7J#8st9rUgvHVy7827;0`(rBo>FrCt{1HbrlzLe3+UdcG7=7ioexHv6%@aN z6A%4epy~_FC(7EFrf1toLSylapUnvh`fi9p&N56rvlSZ|0K<$WAJqK;ql~rI|NP4k8n$xKb~1BPB6CI&IE2FUbHlKFRNxhe}xjK*e-NuzywG*Wo+#+6Nu zdHB&?Nl~_X`a-)1WWEx97(*r0hdv{#1ySK*CYeQUCaZs#r@0o80mN<43H)mdG$M5n ziJJ@55&71GsvP02KF2aT$1XbkwXh6vu5X;M45{c4nV-`8+{ia9Qixq*v7(PLtuD8yi{Aj9(6+AN0inw{WLOxT)x5vob4B5>+F9s$zf8ZU`Fe>4 zL&rw*apSV4`bT)%!5-v+k{FC7LX zLko^zP7+u#JpzlMzKaz8a0l ztw*tq`qA3YNqxJS|{Sj2t9Gx98iIz;u`H8bq-wTJF}H_ha5TOGNp2O|E0qcb;F4KC?bbs*lY;1Xyucn+tBAfc^loh*!g}9{}#5mMJH4EOnp#HF!~GY$F!W5`lxA#VVM? zoy3e>Zzf(+jC=0t{QO7ByoZ?p>QR~EOPzxD)lck71m=CFn zgggINJJEX-F&Uv;PgVqy*1tc3pp(>!q8D@jlT03XpgIy&Ar=>XkD>KBLg*BTI@^eit;UAmlI&W@51=bPMe|hmXlfqFTye z>XcQz02C|V_r6Oxb2%A8nz&Es@(GY8*K1(f+aI`|-Q3Ktd)JdJ05a{_WJ&J~9;t`5 z`FR~cr%^acY#I^SJNCbw4Cs}i?B>c7T0M^BpYE@;GLcvC3LOuCw+; z#&^LP+JNF<2UwT~>;BIG0q4>T3-!g??Tx2z9Ud}4grL3;Qr~_6y1rt|Gntr(E)qV+ z@)fNvSkylef1o4_quzNE@}Q>YxWi z)TO>p5cVaY!&E)0F@*ZB>m8#uzf#pV1=zH%XB*;A`_39GE<`_$>#dD+PdZg-JL4e~boD|4oX`-T`6_6Flkxi*1N}wC$u-AqYk?wge)O zf~XyydB^$vfNXqr0zJQ|sO(ti{^0w?Y1d1wIZ(}*PjPM$0+IcF{6+)}0jwb|78ch1 zR6;?a<+pvnWkn%1eR-Euqq`4GOe|3btQDNeE zR6tzr}<#D z2H+#iRsK3oZBP9sM^<6K>lqbw<^THFwf=YXe+o&!J^w9U|L-frfB1ix5~XhdZD68F z&{GPqH^SeY9spfEc(qLjkU_s`@jj>itL6Nw%m2&AM5OYR1}Y2p-#?`tA!#@;{+7Mr zNYbzywU%QLi%$l0NW(A~LX=s8Ua8H^{8vU67Wvpg5fuQ>{jd#C+q<~BCIT~Zl(lJv z`d{5$%`b>T1lWN=!S@>c3Q&gP0}^&5RMcdM0iHB(qtie&1EM*=-KJ_3DMvLmHNAFP zGh7R}F}fn#D_E_57X~b+C}(~K2vu*Dm9^Jn|4R&a#Ae*CTdGsV2J8_4_J$BdslpdR zAuMTNvj9sV@4la6Gi;^=>I1tdHd8=SPj_1_!m$fIIXwIs!c}i?Z~rv+1o*XNI6zkk z*&3rC9u^jsaT72;%RhI37SNg&^z`_cYp!=M|Teo1k9iSfBzY4=bMO+A4wX3 z3F0XNp(tWX*h3jMR}T}l1}7yZCVx=D39fz?A0~=!1f)tNNMb4~fS|$5EH5xUIT;u4 z^dl^=wa4G_6wH&2Cs!|0CWBPSuyAm1A;nIH4o)z@*se1COdYC+Qz}vGY~{D5Vu4Dk&uhp&1x18p^rO`$J~SE6J!d zm+e8kS1@(9vrJl}aQMO&Ag9&VSvgSXX5Ys$E-uVaeWEXAI#ob9qmdu@bU*r2w@jPW z2H?kedwW-J|1gFfMR@mVfLS;6?}jGYCB(1M z0mhIRon2Oc6Fl!fhpf|A7nFZCIZ->HeN=!TPFn}M8p}Wh0C{{>P;C-o$*9Hdj=b`T zmM1La6JQewbv!xcsYD%_mbXJK#$eQcw>8OUs@`<|G;?R2VaxgUHyBd_br|4K0Ralo z4z+EP=0UbT=|4H>xTrP;RbItfeZ)*00vyaPu=Ry2c!86*5t%PjfxifX`Xbe!U_Q({ zN0u3buJ7h^vLxil|9AV6!~yNf2secN&;M*+0(`e!h3;^Gg4hfy#!rDRzZ8^~MgNS* ziSQNi^)7nh-`gI30+zs#y0V!ccS@co4__esOhWa7kX?8TJ6$K>yZmX+%9|_yv~jN; zV6a7XRzO+r0*c_n7iNFuI&%o!3d2rfJV5#HJ{o3PdDy>FHXcm6juZU_6aXAuBj`ro z=S!C4ZFS*4JC}rO%HUH(s)k~uiaK*_h2B4W*c2o}kc0faogTn+ARCud_bvmKrRJ1p zP|ypL&wnlr5y8W*8^$Lco{obJOGH%(5WI!{pUU0>s;ch&7Cw|x3L+^|(p^$YiGYN3 z9=f{`kZutH>FyMyLE_NeNOwsi-6?R_(ck~O|NDLS8+Y9Ej-fA}!#;bjz4r4wYpyxx z!yQN>3W_6nNHt($dEK6=g_Ht!8Tfynk)q-vi{-9S!x^#Nb(s$p(pz5vdf0zda3I3O zekN%xm)dINb`FoMciC99J97mbV1O_pZ0R9l1KSdb_6PRs`}-_lO&*(U+XN-`ID7+& zb#JQIuj@OUMmt+BEs@qiMtNUXVzEPLZ0V zl12lVo|s;NLUk?8eLoVe@CM+a!H=O30@gmTvZaOlhrkPgV}KJ#0Vj+*_doYxJc|(^ zUgsa^eq2U5Iyl(>Yokl8vW&sE+2RV`^4tO{GmurctAKi-= zBC18|nbnm5OmRSK0i~5DS{1c)Tu*N_t?~WcEeC*nq7e@@x{J_SfSrcYr^h4=`uh5C z-X;tfgBSzQ>e?8d6v;deeXk#>Z-fioMF3-mzCa9u@ry^#UPhEQT}$mDEtP85PfCz0 z{(XW9TH12}yH#q-HRUtUH48DPKj!2hCe8<%#8fdl$cZmDCsUHm;3v=cxVHUyusoLr z6=N9lEvG3%AwiKt-X#53cm@YHFp4G!2~klmz=Je}(bR^E?~^OAp{DCOVfMO=uuTz_ zoQ(pTlY=8P&KCt#+_3HYvgE+Dh0dj)g9u|$*ySdJw&?va`&Ihgk z=2L=Mr1dfG|FJ2_oX;w2f}4~m7He=(SM)JJut@py&mT$~m?P_%hZEt8yq*1LUo%E_ z0|$h@&Xp~5s#78`ec@U75Z!QlKF8s9YG$061Aj1cMmZ*A)D8}A3|9VZ0OfJhLERSl z>kxU!#wsd{o+Ek-xURx!A@xNdD1QN#LC5V_LJ|Nv>|=r;At5opfMAeuensg~yt*>xdMAF7gta$I>HLQ?||XWpFzzC9^KV$9 z33nhaeq0T+n9I!tWdMT-oRSm~A@xqg;?wwEp(A5zv(fc(T(Y}L66RcH+|ldQ4%xq7 z62_z!6m2{$Mns4}w-UtvSRaa7npl$4b8Npai#562-6_Dt~5l1|AjbqcfDcv<0>qWZmC%!as6Pf<+qLQ7k$6SzO4g4 z5(YteM=T}C2B+mDllgdlq~ekpD6gNInwn;lJ<$CF%z+9$cH!PBz_ozb8p&i1NYV;w ze83v3H{JWrJZ2QAhCi=EHwm%>7Tm|qV{5g-*S#!YMDA@f=AbC|^-*uMJK@CVf!eboTc4=0K2h>5-J8AjlGe zZweCNl-s?hxu$T%cktJ*aRUSIjgQ(*rys`oPK+rU?w29j0T{Nz^Ts)rChRE+`mVY#BcK<3+uZu2(P&$9-ZH^NDGa!9ch1e)ZU2%d+ zHkqT2y`oY(|3!a{!^KsWFCQZMjOPIklgswV3A}wIroq< z46itrYcU-xs*uUGst6@IE-A2a**(f28j6q?tKSZv2ZC}cCY-1HK*i6-{TED;Ih=!C z{cda~ZI{0-hzmYy_z%u}-7+-3KvMlXzE#U3Z{s&3S{JA*1o3yn%Dyzn{%Fb(?vn!Q zLwJG1?p-_vvk$UDg#01*e|BhvwyE{|%8+K7K>2Ux)EN zERw~^msp=JVCPSg-RYvfjsfaj2l?Yi6j~C9@Q=dlt2cbl92J6VOdrDX3x4&r11*#V z@jZ_*8T`Y4RrBBkc2gx^%h4U3uW~dy*is5ozqLkUre}^$l>$fzA(fRZ+|q<|e7Um& zT?(=$@OE=3ot4bK&hS!_HM459UUFP zqb|8US48O%H@cbL<4G28gJezTBEIqOrf26w5zzX+x;~nsyh%lr=0;FGZ4ssV`?oW@R zw!mF~0D_-ua&ZkHr6lz0 zhut^XRK+Zuw!Vdh+oa~-@KOU@mlQAr=>P~2Nq3f5$f;lP;oVU(e2K5(Pska!?5<2t z|A$!DbsewDo9SfMvQ!fILY>Y{*Vv|iS7|Wn#c^uL_dq;Ce}YP`b0l!?3;PO^D;>}Z z|D6dP=N;O0SvB*Wxyl1k>_*aMvp+Ki-|VU@a-on1Oh>%79xJouL zthP1**9X4x1#z9oy40}yt1*sGSx=^DN_>3$2*;A=Me6KbmGGdR`mc(L_i8WL=7qel zXuh?)ta_%7U z^wE%j8~izVRS@wWi=(Ki6SLM<|@n z^))m+9$1nJHyYG_e-uvOZJ2m^`T^t))qP!cB~ZY*&(zu*23Li_Ed$WXpMAdZH%o5V z5e=+yVi!=_J|C>1(J|2DFYp8FD6N*V7@4G(y<3&0>7J7k5S!T_y<6^|`D%^&86gx! zpq8=yfk_iIj7&b?GfgvJZ1Me3-{#Pp)!BTiKjk~5t%H! zZ_naK9G^-)UdQvv(`o@ZlLO~}`j`-PjF}^{QB#X`-Y{!c7il%4*}E9qBT&+3mtkB+ zz9WqUF*RNTvU16ep<(`p|HY(`$0ZwFMt5sR#UKfsFlL^pppO6XS9dpGV^P5vejYlH zpH+P|be+Ac2Y|6}a6BBE9npbJNSM#0D{)L$3W4v6N|IyCfohinSVg^%B$wE&1to7R zF;PDz5XQq|A4Lm4z$7H+vYb?w#OqlMlurU~e%Ch|R5Uc-ovNs?caaP#YN@bm)1RCK z)rz-MMdakqCQ--fN^ljWiD_Cl{aKj}hgHz~0anz|^93AT$)N$0hboG)UEjXj zdsW;!Q_l|c!p-2UON;fi-~3G{|5lC~K3f>Sk57fQaUgxZKGyGsdVwf?!gTN3ff^@& zMBhWLTf)^+{L2K-Ibb3%QGHW%Wcm&a9lCJkA<)+2(?7}P@_6@mNvSUN3-OQ1$eXi_ zJFBnp3iIin)%ohh|mSai@@UTNHDfXwvbAzE{a-it^2naO-`cc zO+2R~Sf0OPbO=DHmIL)!fyE{+d~>uC{W)tBEB&XL zPrtPD9HEfoynK}Q3yCblS^Kjn$i4MGc z9h4n)I_BgGlt2@&=x~bgE+@YHF zn!M^%Hq(4($kGRD+27Kh0bNPWr3&8IfdLfCz$8sYk}+RFfGjPQBCjyPFaO0aEl=ajNzjBoi2d42Bb!UQ)lrgN;P z{t@0RX^}@lG$FK??ERAM2YupdT{W`EwNs}0Ew$&I=w{i6>{98|ugfO0u$~|#MOa)R zE+y5&j)qB6G$ODKRN>Y#`>eJ11{(~2$j0PLYTEjl;lh0V>1TGTx_u~0K8YBpEk`KIHRWoHiu`^eC``i`KMlRI%O!oAxogyH@qPRPQpD#1{gO zCj%O#ilB&EMyuN4JFNWbryP||M0w_}e&+A&ir_`-3JQki)neiri|kx@@KkSyqH%7X zsYyR5VXn^<`msw4rTv$-K;;Z2tMUX;ntG#W)^zzfkyoLBpWD|VOo#G1F4<&9!m-By zc;(Y+OCM~Gcl|_*3zL&uBFSqe%igfIp+*xbw?vq(w$|jjas;+%aAf?6TD`Niq%>m! z`gedlAHz|q{e^nK9*_eV4Gkbm4SR<(C472BECq6QCvZ(oNlje`46$f{3oAh4kZNVC zFj~9Om0-n!gt;}_P6_J;6~a~Ytv^1A#@G^&MHw%CQ+clM3M?O3S;J>@U69C~hZT)w z>{61bG4`s;-8*gr><3nVc_@4#j;4+>U_k#$&>bXLxuMD4kvGX&L;`f%bRV6~IEnCF zSlc-?8Z`qp%^skk3uB=DM%S=WA+C&awShy=krO)q_;pgU!v8DC*YD*w1F?5;OJu>YWdcYAt{AE8=6ny#yAW z;_Uv*_8WzKLCFv1Cp6AqZpeJnY#p~1_I63zERM6}GjW0S@2aDp3Vkg;_>`@>z`EEJ ziR|au9w>)Ov5w*=S7==S>zTcmCgRWScE>uFS6kS@Zn5GJuv1Xz{|H#Vdbe)}HM8ox zbe?LJ;x!+oI=crOdy)XY32h1o_GLRHd=4FJ|J_(e9$m_gU&!Md6%-mu{u2uUW_M5V zyJHlemMY5Z#cBb<&+RUGg-Ri&yyBC}l#y41XFs3DQ_~J-r0bH^ykibuBXoD&5xs8) zCeDLe<3cPaj-Lr7MLv5v(jEIPMk^;-V6(k4bFy5Ht%yg*iPiXvUxGGxdiu8r;AvX^Fr_1qw-%eXqn7X*X)i zkE2BG#c6OMv1@tVj}UE>L{v!Gb|)vUK+hW6>BqO2rd z*~->kW@&!PiM!^MgLYa%ik$gBQR#N-_@($Fna>`LEJW)Iyo}WY=}R2pvwHI@r)@gR zlw1^YW}hzMd^1iq5B8;cslg22r8;1+dKZQT?aW70NfPwwJY0IKFbcdf8ZX}>%D65P zx&)<7b*D3(eEH$pJkXnt@BncJUl`XiP=h)4GjdG>Upofa*eGJ!4*NRm6?&A`u}hU_ zvSrxEPV@%qqqYqkQ%)%)6@q_1zPKR~ft>FzXp(xKDy-LWxzTC#pjh?GR=nfBNgvU4 ze}Oal-H7a$i}%aQ3~@4(ED5H}!=s~VTu%jsJ?4>v51lI$Kg=&8G8B2024~Hxp6Lfy z#OY0pU&e@Rxwsyb+FsmR5>aBFu5~I~BJ2H628H!@$jC z(O*?fo~YnZg$Vb7*gzsaa;O(QzYMliA1@!-7^^=A{b$VqZvQjHsdn4@>%u*egcfF7 z487KIj!MQTCv63AnO4?mjCea>Z`rfEXzwp&0+}B4J=KQPi?gMlvYOwW(Lrh#~8_!D6q2J1d8L|Y_ z-^xS@e<2LAwLctec1YPVp@oHo-%)xv*m9AG(q_YIIC2`3kzy#`6u*&q{-<$2A3!aN z25^W(T(zxo{WB30+UJP#tI9y~Oyrv??)#<1L?20&1#_X=7g_mF6ew8~MyL$!)X1M2 z+9~5wY+<9YhrYV@%{P1g(mz{NUKv@`9%+mzE1&#DK2ya@O&;>WCZ1%U-HOsLhxgk8 zHF63Q_T8Vq{}&hF15cx}ikj2C*N`JwZhhVMB=C5;NxR>!Z`nGLe!3Kxb5x(m?kWV^ zoj~l!39z&JAQXmI*Dm%-l5NZX^M?cmY)zH>Nl^eui=bU6l3fS9Ia zr7PFFgMp(>u*E^)7uAlu)n7mE@|VVi};>;$bNgp=)4OUI}&z zVIsrd5iY@d3aE7v^>+7%N_n`V80?+YSGD}M#lsX&2!|f5NXZ_Zp{v}pjR@GM50r~Y zJ&&bfc~dO;R!Prm6#X$m0&T_l#2`I1YU`D4 zLBPsT!-Sm8QhX5e2aGojiB%Ss(^AKMhk`;M9#Ym zn!}5JoYl#oUR3{N?Drh|>ABpwp!u+d3aZ_uOyg36Vr;a5$DQfkUqd#2w6SH?!HY{2 z_~dfXoymP>2lo4|(&^nSQZzo|!h#E`N> zfJ-vfTh%<Cn*@>yS*{Jw0C@9UJR5x0%vw;Cga?VLO*CN%bBmKZmG zdc2}`l07Th#rX7jAC2JnTNUP&a>;Ygz-Z5CKgfG~g#1p<$!KY!(#1NeNQB;gMm~(h zlBpuz3)V^TjEQ$+3!A^2ds|wHCiXpW382pr_BLUDwQ9EXS`NMj!m$Y%&C&IWsaoes zSvl$wwE|I`-;CIQbD6tl-k-PAF9k+NK5LE-7Q;smEczf=Za5xI^ zH4%OV;zeMS_rr88jZ~Or->0u|-ZOubxPFw{HCsVgcamYnK}8!ZV?Ta$Zjd9RMXE!I zs}v3qh2Rqle88nz$hhgq$H7A(*(T3yF^5|Hpd@@=yUZXjA;92Hw9!un#B_!dg zTCpKs)E7ITRW(6+W#`6Ar`uh;KtrW%ck+m@_*k5k*I^~hpvQxlkL1e?lVpex^hqN` z;l;38%N^r}iC zAtWFo%1;V9MF1n0ASSk1cIj~$jf&nqw+VWYTZ?=H~r*2Pa5tZ|+r zt=|iK+e^B=g@a*45ypgbH(*-%GzvB5d;Z6g1KZ*#7O}mSi1dupDPhZ1Fg-9|KL6Cm zdu4FFQ%#-cnJi*jGT>U$l$xeBq=Kv$h2D~Sb6)?-^lT}#`uz5H)rTE+FLPgQI{pe| zdUpM_2B&@7J9e|L3k#H-T5^ods~aV&=Jhdt`L92R2P+2NWM#mzuAB`wPxECyMKMJ+ z)-}5Pri#OQ(uK18nb<1i z^CzPGfG?^7|Co1E^0EP%)8mMwe7Q2LeAZCu4<{vLdtoCp%Nb?|eKD3V6<)7JRp@sw z9>O;9X32fkDPPP`reTzc*4paQFd806_6KL589vo$_KII+QKM`9#M@E0@%11kKHxD6 zIj+e1rmm#O<1hY`KJISFMwdM@Z<9YeTvJh<}NDBSkx@dDL%&q%0l zQGLTwyKWG7Qd48vwS;ZB<3nPYk0*>2_KBzbQ=EGY*M6f}u0D}!;~Q@*4*^;}gTN;~ zxx5m-RkqHxL%B82_$R$T8ME9X^dsP6z$nimCOj0gk0lBdw&&^5UT_F1w_Zw_NEp{N zmr~Lagv*;o#F3Fooy$)}i8{X@X`G`q6ssKwE%K{)e7%$1LDE^=`>cTNQ87y2yqapE z2)9v{GPn2A03M6STUCwNsLRb^*Pm}QW?inK4CBo^JXiIH9%J*;F=Dco`70@n^{z*5 zvzM`IAA}Z@ly}w%J!g(LtTSa}d!il>fD&|yZ$V~YaJ<5gFvE3? zIJN(byg%VU<#+h~HWyc(K1yzIQ~Cjvd8(==uOIzo26EV<^p_RL{qrYkuKKc}CPj~( zs3cXFOI# z6oJGcAmj(i4rbsn2|15EAb8K3Tk0%+kt^f$dnvNffU?*#+?&5Wmbqp2VY&DTJ4f6& z#*0q(I4;Z2MJbDYYtfi7BWaidMR>M5oUx8%4y}ytn!!*98G7;ZWzFamvv^@OYdPqR z(OLAFoT@PNPKT_D*GgMCWo}3^Za3rPC=<15P29ZLeirkp$eCJ_e*S?JR_885gXGi; z1?t?ip5MB6%4U0v*0|nVmho}U4FZT|sQxcMZsQObm5Ql{RN$L4&qks+gny7g?Yj=D z!ou;L53YDs;FP?v_i4|)f7j*g*28nK*r>1i>6f=k^v|H=Mrd>et@6ZrdaK zCCKG;eWLw-oU*#n<;d0ih^Ik;%_6ps7-7z~944LoeD6vIum6p^_s%@YHUiy6G;Xt2 za{-|ima$$pi5oT@O-T`DVZ#2~1@B&L-DuRc>+@W1BWfmVxwbe|%Vg5JUYuPPhx#16 z?8Ns2>afni1#w$B2b6`XOa)1nz=!m4YLXgXs3#o7iC=YowG3sY%UCSbDScJZ>(gPL zouUy|F?#Q^WUgOh#b0mKz++Qz^E@z+D&(7ts{8>S)1d2T2vZyR!mN2f2uz^`wq5in z?Woal={qWG?gNMv0rWMlquQcHGrezjeKVe#vIZ7x{>b?YtBm*y_aAX49%fW-U;k{t zmf6Fw!cJe&KPY(_>7@7w{evJ*DZ`t*o3pzVE7!sJkEkleC^$pcp>jwy&djFrS_$miF?a7*(F~3AE8dr#N^uVuZdOBL3KtBD1SD|;aAFrh1B9cl zfbhyF3Qq}P9h3xWWzR|A;F6u1ABKl@o*4I%sK%8dJP>PH9+4gq8vzv}&oqw3uMqsW zVA1Jq>xCepF407=GnDbFm6kSN!nMKT)ppWHwL(F;VEtem@9m*I=Hf`PS;uVAN4hMM zL~Z4C^UM^#S1IxQ(~BQ>mU7pF3c4y|5 z5i*SSDIVj+;Gefd^V`xlt9O?sJKML7#OH0uvAPO4MhXVZu@t4E1WQwzEPGMEcxb;* zMh^5?dwX_|>}yTPJxBNqL59$AN6wVo8fbkIW6>e2r+Pw3V8=kozO#_?1uwaVrU_bE z5pd=A>&vZ_ashtl%9Y#4iqOuJI{L~g-sFh&Waq%0kBeur;^oW+I1P86Qm?xz*+LU) zSUiNNIlS=UU*N;>Y2H@q!4cN7oMFt~cf^&Z_RuK7m<)M*`J#DkzEp>pP;A!tOeR~w z4e9;OTeOlfT1IOlg<~)K{E^G6(23=X1I18v<<3s+IHeb2_K}_CU%mL;!)|U0b)Uy_ zFtd0zWZ}5r#C8P!8!9|sbgv7PL=~1iDmwi)>#t6|7%nQTR)2DE>C90^JsB@_TE{A9 zrYfn>7o?F1td}l?*sV2ucCyv#ByjW9jEWNNb31>8Z$!-(Io=(Dv$V?yne;_a6+JkDajqBzuC zYlQWEVcwhcOd?>#(j>(9UFbH7zZ8fSU7dS+cRL29{)(p3RS_Po+~us_nWL4zIM_(@ ziKsI;qx&+$>};Ji^u5G4He_-{Y)BuQ8}^Rxu3_jG#bZ&CPE&ffewBs_m1vZSi5o-N zHa1G(VyY)3dt1zWV8){BtLGSy}P;R8)gQEzMZ`k0QhM+B+PL)^Z8!6?2GkwIY`9-zHM!Wy#S8ik5#fBNMH)KJZ`XNfCK(Ukb<1d6cn4{_FV;qQZLlFknI_fK@ zG&(xpx5WiEV2P#9_E=JQCc@|~`&YqeWt5VTSTAe?%NLBkKuEqgI*qxQGhe9ry7)4we#XzbFmJV`A=sG|zMB z4G@N%;QEv{9DjN0r0a1MIG83d_w1#a9)Xsf@7{ttoy{s>gI583a260mtyVgMokzq7 zpa8hS26JaW;-=cQv|xYvc+O*cu>iBri8bu8X-Awh+03ZXa^2oCzRP!7HT50U96kE5 zNsrFuFw(AIhaf1WhU3 zK9tEUN;6i4h~L_?AmoQI_b&mKy|dYHwRI)fs96-eyEMEw01nT!&B@$*@=Ps2SXV3( zhz@T6mGhhm;`8yvld;p=-Zu;NoA0J~Cp6oei5vAA89(n9V^ti+xV%`M8&_DBz)y4; z#eylTg!0DDZ{Vm3&b$k3I$_LwQSRb6MXoCILLPthW43(^@dE8j^Ad3m!}Ykb&N?P4 zdV0(Gn!^w$akoB<7SP=UmOhxm$GPp~{b!YI4{XW1+^5IInS4uekQzS#f)!h^zy70= z;ROUCgFj21euDVq><@m?f{ppp_#mWx6+&1}Dq$avL;OuzBZG8Qx)T#eLDpRUZp@#O z_RSIu)1~j++WR?VP9=wdEv2sZ%JUtPIz7cZAio&3cdc7P3htHx=?2keB7Yz8?o-}Y&1kR zEFi1gTzq}u3xaAzK#_-_ja0eHmsAGU#HP+SPPmOBYq40KOw~BWRH=0KJ@LWUC1ArBhS0I* z|0=R5>TN@LXEJ>Hw)m$G8k$g;w*B>D9^#m)RrS((jLOm8jFEXXFOzkQy~n$Y;N|kE z5%29j4xS|{=lfF)x7vDi#No%(z8`={XS;tb7C9<57SC%CusbCY5gFDT$Q_Y-eAbVd{zKWXLXzyjfpL~=5NaA>b@Tk4G|;?Q1Ja)JQ73`Y1JJBeO4JBpJv^_7X>3VF zQUuGJZIJpi6|u$CRF-a>XIxd?dtLuYvLQQ1nKM3>?~-j=)Je)rZlh5$B~ED^*-l}& ztoflfVZrF;7Z}#+*G5Hl>%og8HRGN6O@bEXjhC*f$LKAmr>FdeM@c-k`(6haZ`2A^ z2cdV$sBT9qog=RU29r~N6>7mMQUUSB87QWeP@jR58pyxe$>vZ%Sn2E{xoNYxR4188 zClqGnMJ9(pAXJ=hO^fZtW@E7xZ`RpM9;}9?j%icaR54i%duDODxkqt%v5r-(*RxuG z7Z|?LjBm(377IU1U+!Du7qF|API1k`TyUKpnQQqP=){V4*Y|E&xahI?!e28`0tO9*$00==mRl|=;OG#NMt6n<*sX- zDKj0QY1HR7&6sgXG|_CrxV?MV1wSA{4|(p(hgeD0>Sl3Q)iXi&=I1MkCVR3hms=k) zXWZ{?ChtirOYdyBGb?9`!jYCQ+Z8LxTsTXN!^m6`ixZz{Z7SSjYTtnApkq9FGGwyE zZ(D7od|EG1b(edXVapW9%R44q;Pi2r!RjZ%8AxmIF zl8I9^y*3+m9#&RW4&p!JxjENuZNEFgH}Tv@WfEacQ~4N~znWV)xLC_i_1uR0W=*G( zH61g!Qw_1a_E&!dVWLH~tE)qZSXlqi4N_~Ri@OEt+(PnTQ$K2#>-3n3C-GV%(Pw_0 zTPHJ4J59T=yi+#KSCdvI_j;5gTv(C$kNml@3|}V|ClCe@bVMTwC0pMJUg}gR%N`IX zf!0Fl0=-u4h?OKesQMBwpV?{?fN_lLeKYDWgB5>v;vW=7`U>hfK+{Buqdk=P$aQ>o zHLtb(WN&9sr|^jzud2XlhR3=`Wlaf2aQ?Lk5*ZuuUHI^lGgtCaCiI-g#M0zbQ%_P` zh!`49seO3~2984(#1kfVyS zOH&A5#p|N1G8C%mY%)+V75={AL7BSir$wYV-MeZ1qs~W7Wfh;eH%CNyWppNCMf@fcq+Sc(cjqd_pM`=H$)xaJ`MyEagmq8kHK88k;(w>Q8t;QC-FJKDU(k zgmJE^=VVj#r?<2O+M(t)d+KEBbjGcu_ZoWIlQ4^?M{TSaJmDX#>+V>lG0j&wGFy-ri6>Y1AF%jhp=5`Jb6Y7bVsHm)?A*Cp*oAND46A#OFnm}LnesmO z(etRXvDin%ovO_=4GTqyu0z@J#YE$9Hgml8RNb9aN7h5f8XX@tO1Oa@%BPI5QVqK$ z%j^;HlXEVmnCvsQQjeie8aelPh2?k>D)eVdbyUm8U! z%cMj68IKj;Y5!W*&CYx|wq@YfrBwTQ%Kfg~ptFs{O8`6d?4@~RV^&MqX5~woAo6)4XK1(gBO(i z<=Mhwspa`bY^&$VkdlGj!TM}I%)K;$xJqP+cFrG}sZ-CQJluop?uq_>hMp{)7PU|~ats+`1-C)c+-!!q%y6FE&{A88 zyIXN6g-!7e@xX$B<`bWFamd|j&ZS^S)n%jGo5QjZ|3B?rzQ3N`HT#y0w`+wY&6`-7 zCR%F~Y2>&dW6WQ>whmGMG^&ce9AC0{6Eht1am>G%Zj*8+=1%9}+d~ls)~q`Ux;L3t zM!{kN9}Hd13^N|J{b3!z_afmRJ}c7}q_}(!ojCQ05Aj&d`lWR$KZ&I4r!mQsn(cyg z<2Z4{r+;H$MtSrxf}cX+MPyXGadl2mQBFk}gXFuAHJ^KQ{P$><%xOu6I5@$w)5Bcj zwdPEMjjXk5$8|wpFG=2Fc*QS0C^253#ObT^a$w&{W9U(&l^#oD=2IOl`t{6`pQf3( zVQA|9DeCJ59swIvQP=Km_UZfuGE}Z+g=i<|nOZ$kX>!J3DXhHKaAaaKXr{4iTrRf| zhNJ%DF#B*Jlw?)c7e5{thofr;b&6G9yO)2nA5D-(-gGIZI;C#lTEaW1w|27Y;mmsU zy#WCyv_f`ud;jNzX* zzH#H})}SFL@3&G4+Mt?~3zsT$@5PSDj1?!27 zhJfvCQp4JHfy3j_AO$zMw>5O3BHDF#$cYsAyxDCzMKF=m5`SN+fO2Lm>W zH@-7vCq;jmi0PEYQisaLb}~ft6Zc6)gFz}G=Kicru(#DC?C_UwbRmJ+KBwUPl zDV|7U$p$mHiv6fIlf@I?{e3{)_fnU-?FSLV_pPWZW%eeVj*0=Z?Bf~lhwQD_P1Ho3 zfyfe{Eh}>)2#UjB>3Zre=+2s1IzCZfB@0@g|A3BMjNB$Nuvm0zT(e(Wiu4d&9uvW_rf8~Jo5u}nOR zyhS=@BA#9>lRo)=A^u&GBg-Nm=d{)DnUa&=$H|noX+L_$FGlmkmbJdPPd-<<^lSTw zyOI+YHb3C-){>Ml=Zy|-v6B6w4>=^-Dgu&$j8$4(sOY`A!fhcW`neOqcYPv649Z0X zRzcA{k)3jqFLCU?m@5zDGWp|(?tn(ol`B+uzbSH>)vRKq`03M>(y0;X8SNE1m2;*w zUo!nDE0G!aXdy`V-l%s=&x%U$RQsg~PD6zQV~IKiB2H-Ml}%vzD;IuR>_>Gr=#3E+ zZ<0BP9#b(G(M9+Q8%QVf20sdxLSuvNrkXAn3disbwOyhPwS_haV0Il2>+pMs3CWj=;BW$I*cQ5biWGT}J3qIOG zts4DsN~F@Ft2Ff=<22RX8`@bNxC#6Nj70k@i(aryI@pnGtzFrb$4w!#oQK~%QxC(T zKR19S4!3KsKqu{??NnK(+QxkGtnZ>aN4G7~eqy%y z#bA*$W`x`~vrZ%TCeio9I#QSt>U53Fow+_drESBT`~*i;Aj13s6$aFJtBn0AOinn= zIP5qNarhjXrK#vP24F%5SOI<_p+*W(^&=_-J@(#p+lYMoa%$SYDq1SGzGI}2sXx

9Rns{ApI4Xg(X^q5+>vyoYG?Wr2P0Qc~CLNx+L`((VY}(6N(biNkT@- zJ-Z10Q;5dUenxiLC$$fg75_B#VoJ``x>tnU6?odYWU4E?th10bj=17wQXRF_3_U@PT> zb;WM@Fa~!K0>L)6GQ$#oPHmzQ?UVifsTyOw~Zi zHv<}p?^e&*R03i1R54i^seoJUV8<6cMyu=7-!|>!+3kRbHUL3HWFzfK8UxDa!{)PL zLGTrOfXn~$0|{oR&?2L z)%$ApwdYmQ(mNCP-}h&n#=dW^@O@^PdiJK8Jl*R7p(yo6j`&N%e22W3I*{`xGahrS z2QvA~@gD_f+qI(DJVF$PbR_@=b!{>mCnx9jro)6;aM^JC+7Kzz!+qvWOuVy zqX}r_k8c)$fYTZn0%Rp~#%npCO$rG^X#62DA#y_XV8ZVK%PWJ!1j=Q;7d&MvkTd!C zb-Dc}&{=I%3jk;>&U} z0_J3x&&VN$GWyyrKtWyxScOo)Sc4HIQo8XFkr_W zTE$X4Nu+F=Oz&%lcl#ZT1jImC6d7n}xkOa!(DpO+wYF9IW6%kAXLILI0sjEd-CF|r z+lSVB;P>F7x(M5 z2J2Xp762HeUT}{!?GGbjB|Wx4<+le!GkU-J#@@b4-~3#&Pp|p|_**%55t-IHiQ24y z>9ryTa0GbJBL5Gz0RMlVzj(v{@&@EDVgRrO`1`_tLpX@x@E`s~#Q)Q;{P!>UzdRO( zjEPAeiPN|O=*wGUUj>Ii`urgtz~!MB^hZ{OIT&kJnmkf_{`Xvrulo1qVPj~`Vj=i5 zK!a!vTG%OGy1*j|2#%tSUI3mx578CHk^~x^B9JupJ*jBYT{nmdp_Me85C0ycR{}nU zo@W#L_su|#Sbx}tu?J#pAifX0SF=iy`UoH!83PS-HG$5@R#`!?g+mU05fntR0NVrU zXkq^TV5xaYR_OMFw45C44@kp)-A)mZL@AVl1n~IpxMBPBex7gYe(o4*JzYlehcg%k zfLlBbNSZ?*{bY^p5(v{*Ytetl8$70zfPiRku)mcZ{+O)qf#7n$Q_#o9T6VfOmADtQ zME-jZd?4?|*7l24i<6vwk9KbSOeJ=rdwdASpbA8OXdpVC6^P2q&6ac3d-^QDKoonq z-FSZ(B=qmjBP3Y$#JYpn&nK;G1Mk`#Pgvo4V)FW^<0%}_tpPSKv*34(fI#M4Uy{6n z@cj2!H?VZn7B4IM1U$L;{%i0=L9RMs{=@IItxS7tGL*I#up&mFy(XG=mj^5!gJONn zmzo--Nfn3^fF8UBtqZ8b(-M)u_@TBOw*mVYTv;mkEe4PVyYs=~-U{mGV6rK2a{U4H zUW-uFcVW*ue}VTQh-FL_rbDEKnl&Y!S;t^CF<&PI_r>K%nbU&PW9!o2AK)2IwKZO2qXp_7~bqq2&gF?qM1o z1>`UPGf^bly26OHd*gt%r{24eu?HSokRCq9Y!=VeK1~7w_01c>3PQLH+4XK81j2uh zCn6gZo@$=D0Pg~$v$19{EuWpef}(+MPdd1n2b5Q5pwp%J``9BS3_RzxYk|9`6atys zrRnxr;av+1wvlA1<^8Lnr>CdP@GD;z$eqD|Lj$rNN49!1pc)UU0#7$91iJoAH;BvD zFvZf)o4>IEkqymk;(KiWiguHS>-bQ}3Syd&cT=i;7tv(3^&FxQ#y_O8MR5&0Sh9ao zJT6aVuh#JvDK-5=mluEk*iRBa5h z?aiG?OLhEaU>I1(!3NmT4ngm1bSJQ_Kq4P^r_1JzO5`-HTm4>GQUStU-F^JT->8L< z(8GEhqPymr&z;dt;0JH1T&$QYHJPtKNqfi-81DTi0=RM?bB6kE0Zs`=SK)vDZ|4-e zoc;fgh2S1$c!+r0{tcSs5DY2-frTo+dC;)j|KZH<^SN3Lz^u?!mB}z0YXml%>qa%X7M_11!08jZMW7S+wWbj zhSz|Z%zpScbI?5k=9cE&BrYkB2-(R0R03DTIW*c7`3#JYvp>vb4}Tws>9G6)yDrdN zsaPg>wPOoR6W*AT&{u;h`;^W$a>(psl)_RZ2{&>y?g3%vN<%Q z2KkxHGj#jDWW8q<(D|#t=2%?oL->6Xu0R*=M7=wXZ~g)9_-p{$Q!C&y$nCHuap3}- zWCqkAvWXm>x9|5Cfxm+&320|;aQJVKp7jJWhG^wrd<04PXWJ%9Mv*s;Lu6JlcsdpS zZ7AIUc?4>+31|??vM7f}1&5O%K2$*EiSG;yA7_A(q7^V$m;|wrE3S7rg%-G-3~rTP9Hn*U`A%YTSjPOit5UWMFCBp2R-Lkd+)W^de^(w`}_G>P7(u^1Qh~-V0@JNpa_A$`amEstH_Ap6RxqvP4I)y zL0rv2$=b-lS>MhO@=4#p#=_dc!u0D)Cqp}XQ)?>@X7HQwrHO-sjXggLi{<}3fZ5v4 zn58$aHW^$5#YRfq9s=He-&~|1Wb^J+&u<>)c zp*5{L>JQrVbYxi6x_1cTzh}BW+frq|M8$*`$HO~C`Z4(GGi_r9DxS%JiK*$Hj_G-m zw?F(JJpS=q%i|Hpt%k%+;+?&|I{R)<<={+OWGa7bQRKpm8V4BYKd3(3ML|A8KkVq2 zg3v-g(l>kq!2{p;m$BnOP@#vb5u-o?pa&O)!uvqK!B&xgeFyypnc+1|I`kX=m|y=t zUuIUV0YaTKb5QSgMPE`Rxi7jVGr z(ZTli+y9Q_Pv|+({M+bv(9!*02dq$#(v;Xgtu({M1CTal$6QI z$&62i%=E(I3cdaPuc)YCAl}~IA+eIslbBWr#ms65Vo>oA8J_Y~&t5n~(Vrv73(mhv)O4chTnzX_KzF6i&?2cfm+EUt| z!RHOY9+c@5YO9|3fP3RR5wVp$`>^+@Ji`C}hE3$I2b3|#KG&v@W{ z#$kccI?q%Z%je1_C~n`!FI1UM%(i$oiVu9A>SfeZFnz$I=)4LQG;`-?uX6k}vC$1V zb!dXxu>yX5UES*X`q#a$%5>m5^Z{hW;iX~4-a>HYQ;TkUh%4w2gQyCrkzb(?qR6&1 z8{J_BGbP%LYGsfZ=>X}RSN!~m+KoM@MHjH#=7|x-=pp&n5S}4*cB_l=AQ1 zLBhksIjt7s5zq*J=WEHtGG<7Gk?damgN+cm92FD1npA2_Y4mBm+a~?)=VxnU^OBbK z2TSY2_~qj32*HlczUWUkd9n%L!Ohs&aeSJZ1d~%z=4vcSA?DLX8Lk)Gy!`y@TU+8Q zEuMXYgN$QW$^`!zNE+7PsQ6TwPgs(H)dgQx>&=FpZtMB5(_%XlZXM>QE~-A$1z=B0 zE8taB^M@oajHxJPC*+_JFs>fXRdSk7ht5?R!v!V>-mG|wKu3LdzV$&ug57rg0~r}v zJfHnG`OVq&wM6NRQlScyN~um*TpXdkzP{k&<;3m%J;&F-KfcCz-=3~DopzudF4jj2 zd;Wt&CMOSW4<*fk+Ox#*Vl>o?A}m%UcL|u!lVYyV5!kr^=|Sj z4kQ?rMY3?CP&3OpuQ)k>8>e~3j*fnwueFYd zj>i4<>(}Pa4u{1o>;7~x+PjPGp%6!mm|qSsA*d%aVsUk`u`(FWNED`;2jL6w_oUM> z!qgnT0oa+na%sY!q@<*L3H~x`H$?vW)xI?lchYc@DIQ|7P{Xvmyj)jTSN5$B=c|E% zjB>a_mc-eDb?dLBBs3z8TMG9>w#ohHK)Qs4gk%x#)U%DAq;AB9y1LWj#uK}zri}7* z^-3cbH@6D&8D^)GYt(TM6I)f@5_7tra z>l88%@@2CTJ}aBl-|-U!kt~mnTv_-u52eHnnXaE;wiVP}+A$dX7n+^$4iaCl!BX^g@oL%v&BOQHn+F!*8ie(bacdXTPB*O0aL^w zAn1-|(!5;{VR6|A<3Yy4qIvl;{lknBG4R&(RpfcNKV*j5XNFSOj?4%fQpyodWj#pv zo4-qFv#}SWQ5E?~=g=$i6y?m#&1Fn1krWbAI+6P+NxZZ#-vqVc}xg{Uk%BaBsO;fYSSct-ikAVQ;*vs#rQFQzniX{5zm_#Ve`7 z@u0%#NJGc#ZVN|ONnG_zx47dEah$Wc?g(yB<3oS(!B%K=N??&7Ibo?W&hG0ySbyyG z6|n6jU0is_#>Rk+oPwvkm@`g0>p){+bv^$!oXpoLaMIK{z|v~5@AY^ioSK@-X)zlK z%a)10 zg-Oo;H;j}=_Pypvs!#&IBfXQ8lf%*c)a5K#bd!}9q2b|Sh<{K}rRTj9us&fA4-e?V zu(ADGU0ub|l`(v201*#}O^iYE35q__uARvL!g(ES3w*pS512)g&}Tcr!zrnxEhYZn{|ORbNj0<7qjld9Jv<|>{o7_46^#Q$a#`?}*^ z4e79C_%4M8MR2yNITUa%r>pI-eq!>;yzg7R9*KlKTr%##)7Wkg5>Gs4zA3|-rlVdU zg3K@3FX*Y`sv%R+C(q8RC32c7?p^@zl_{6PzoqsH#t0eG+}w<|_`K?eWipx$16G~Z zfigz=%gc;x>;Sef7>6cjG`+|)273HA**kVZujBTauMM>Y0XDe#oF#z)rrv30NBoZC zfN>RsJg6OhGS53+FE<(`&Iyso{dX9JkME9GCl#~<}4i4b5GZv#1geI#cenmw^A|5NP zj0I?%K54lRzdD$?*oY9xoH^KAtiKTA2p>riAar(io+x%Y>ag$l`6r9l0P?;Y28xZv z^`{}Hz-bz;w)r|+4r8F8=nuxTRhdl%QwX`8g7w}wI?~n~+ZIS*Ge87uo4b%B6E~>t zpa8RXiE7Fh2pL^ETQ-2K)ljc}BZIDk0&S%uOwZrHWtI!vUeAv=UyqE<&1HaZ{TUqG zaNu-(eLcG{5YKELm73KRpWWMx3{IZ@5IIrtCi%Z-S3{tu-QM1^f~o&{lsB=*>-E6< z^z^h%ADsUxbg6aNiR92C_*&6Yu@f7TDnIyAvaqpd8j9f^*<~R4GY5B1_b0>xPK?~# z2&DKup~Rh`#2m6W#v`diz%fGokYqTSKCt<}fB&-Tcfi}@i7QieeS|UC+}Q@(kLk`W zAm2ZG}lN-2A0hJt?+t$;hu{I#8(mT>}CG0pOPU__5qUAy_;|u^g3=Ae4@27`55CK-m^6J%gN=ImyA8N>KZuAN6wLc$m z4}^dVAynbiQoAjnS{7hgu0N`!6luVX`1XJcbqywPz=)~t@vL}sj%JA2+Sz65cLqKH zpOI^MGKtV+F~`0?S>OjEIzTOk%T2B>E-vw@lsr~sVu9#%Hp6sExuXEcPIxx!j4amM zqaY)RlU`vol<2M#p;MX%0wJSLQ(fDJWCVqHu?j9Ou0cb|LZc6hcEjHvFJ7OX zp0-U)L;w6 zq>_@7B-|Fg0PcB@RA?r``($>|n-bcjN1)Y^;P3I>X?^Tt4#`BJ`tUv&)-@rvKH)Ct z7$6`bwy*Hd4;NTamh{Nl_<*j_`V7Woh?o=Tm*i%;JBYe)sTCps; z!>YQTT_6-dy?mBrgb@JL&P(#eDjas3QUE%sub!oO{rd^v3fSjM&xcu4W_v5GA|L@g zTy9Q+#?STj4j&k}-hqKEu=QPBT@!}Er^m22Fd&~ZMAchyJ75BCs4LC;sc&y0Prb>7 zZK_a}<@!0j=_6rTewkuerB4VO3VhqJ#HaKKhP;h&Uh+7(Vlz2I1>k?`#FG$CG)+D& zJU5~`4I2q8*4b`AktXD%^;sBPk`D=!Os~xc=6TMk{W}6QdVzbujpi%71{h+t$<_YX zNL*6V0ND2L}B(%z!;>fU`k143J^n zMopf4TCPD)I06L+qOCYSKEAk$3c=&QtIn>jE(gsP55Ap|wAP&`5Yb-o^3G18)&aDK zgM$NN!!3Dj#E%~@>FH5bRaGbI1%-tA`uf;XN`YnOek^KqI?8lDSdU1V?m<}A8Yyx|L{m!uM{v=(4(~q$+`SFLq6FjN^0=B(4X|3s{X`0aA0fazHum<7 z8{9)lJbA#`Gy$&%;tVPwA)(v#VP6oXS1*82sIq!&Ivca)22cmS)Zn-=rK($e3X=}a z6$;-l_!1Et!}h#2{*{{54E6c?5iddhlyD?UkFrrq$uJUefKFU@GlHPECS=ih1JWKsU5{Vj z+Hip?BLJ&kOvsBQd~YUT(uf3m>iTE_4gL>+(%c6#r8EE`N7Kkx=yxK5021<#rHTjz zAi(Sy2I^rrHrxboiB5n(!_V)HrN|97R z+rTn?2XN?J-b4cIyK0S3AYV}^P|iK`*6R)9HRwjys4{sEJ{vRPEYhg{)4NrJ7o+$Q zHwXM$J3f{(Gc(KhRF`=!Juo)@b(;Y4Y6rcoz2>&{bDD-zB>69tL9cu|1JV72dVf)5 z^O)%9PGEr0C<1Oj-c?`&B1!jeIwkrgJKL=-tJ1XdP)n$fkm^43#;n=LLGXUb0F9E^ z0Z{HnD)-H3mlndNQ!f7dH~690qRJX0!uJ-wm#nobP~a>>SUMi1-j*pU-N$@)E0Xn= z3mr!9n+N|LzYsUcUGr;yY(q=1l>nDBY|)b>>VAi>MI8w`JHJTA>VT-wX}a>)vFtv$t41 zHE-&;Mzi^-e3Q)9XR{Xf9pyklw^m)~pr%hYMc1Q)d$;icTOCIZS)Z9C3=wd5I5_BO z1%O8YbR}Axw6a5RW@Jo^I3U|7C@69?e7nfrK&o(v>+cR*BfmAYzOML+ z&TdnSc5W}8^Bp``iSef5QjQ5)2pZMjB`75k|NR|RaDQiK=jFfhHz<(ezp3^!WBYg$ zMYBsgCDC!EJ;S+Q!(r>V5X&5xeB_+C;a&Lb*WBKM=(amOxoxReW&|@Y=*;*k0?bpu5F)yc`gM&p4b{RBJ>Ri zi`K~I~*&-U({)uHlGw;iVuZ_%$oZj|UqAxJV$8jS`L)EYDORV(q^T%aVsJaMk2W|9#MQ|Z=aqR z&BWi_QEyJ1BMht#Sz+!YM6IhUZ`)>FnuH$z(!#?W_V3YB8-AEAF|RX?X65FzVu5lL zwg%WGbz$&6UlxZs0ts4Fs)bND+c*$?kg}{J6Sd0~iLw*v5C)GDZ)HSHz~gk}Pr|GM zYzTHbg4O%?@12*7f$xJyKv-K{g|az-6H_t`p+eP9-dor)YBN@z8Ay0XN$B7f&^q!~ zBhw^+eFkbBvHxM%S=nUJ^uS&M;FV+P`fyHZw+2vep=5kffT6L!+*JrfC+>)(663X9 z_vZ_KWfh$@RnD`|Z)5(jauoW0ZMZj>3v;vzJ(*asjc6$qHTTu92LS;8{n6^M??7?{ z$Y;QTT^C2=!q)s2#gzo?z_ruu1740W?g^uHH~ z8-1NqKfcQ=<$XUE#(0tA!)CU6^c}30o1Ac*^|z#>I&g~*hTmc#ryy=j<}3L9yE@B*m$5}|y%8J?4)D*#L{n%;IV(tKc)4rz<&+Oi{ZDeY$jh1WPUCm<&q7)o&CiJurk#Qjt~$5C86#PFpf|N2;xh&X026r zUfzoB{q3!bhbNkoQwY39b+!be&Mo8$M9 z&X3?-B$S?}@>eK;Yx9LeV)wYUfx7GGr$?}WxO8-M4}i4XrcLVu(L(CeC$1%cV!usq zsB#&X8ro1(le&{~rI6w+Q(L2BIxDB!`s5m}CJ*u;Vp|m>zhVMh1yxZ>SUuM6+S+>n zVt#;hZ{xzt%S)?Kh4p5!+I;5p;-c}u_UP!SytcOWfP0<5z^j$ncgnVkK`_BCLSi}p z3pR1u@D{21oVD12oIhf2B4RRkg z*YnMB0`WzM*BlYA%L6}>-=IP;7KpmPS(Uzo(UW$X3x&C~smKa!gwr!QgVv&ozJNIg z$N-upknmUyLQ|dd^RHm)UEE1y$wR`zsF|6Et2_bBP_MV6hVtwnoP!i4(D7h;4E%)N zt?Izym0MTjLtS9dhEVMZt_3nq=P=E$m^j_(uEsn~SI7`4AVg3yO8a@C#jWYWNdt&# zv4-Q!j+mI(^Tq7xS|>4}L`>zGQ1vbP4#+n>BbYEq{?&ahOneQD9G4*G!^+#|PbAtp zc2)d#7gs)anviyEh*gB_e+{Q7u?Rt{%f!*mDTNKuM;vWanLfspyDX>C7t|a`s!<8u zD@PRAKf(V}W`zzp0r;1}wRqC(t<8-+3(3NH3i0Jq=Q1j_#TTwanKC&E-OqgU%WSTW zro@dtBY*RvODB>ZZ^4-#48bJg8w~EuRF?CQIF7;Phr^`u&YJ)MekHyNOT1vxe zBjUb;Oq$`p_X_kMjYW5W76oOZAZ4gOTT=V({>oZR(l>C?dt60yDEr&`6y)NuZV$n@ z2pI5`z3~T5M!)zCq)0TB$(bBh(AJ*T3r(Xm2}bX44j#^g{g6gYCjG(x++$$uz2Uu? z#ZL-Ex;#jUGY&|4JH!K3u*&R6@=_mi4rb!=db{qwifY#_bzmdFG_c zWnN{sfN`j(q-q-=j#T-N5qyMgqyKupH}3dM!d18yURx-X;L4AwCCe>27Mvpp`_5;T zWE=yakPbHxIuLfRf=vf?(i9PW%&LQR!Z2idEhCy#_ABsJrEAzAjE&5CK5w7?>!q%s z^LD!TQq~t7~QZ3h_KuUT3B(*%4}htdu#y zE$z+<_>!9v1Emeso@caV3%@5bw>q#E@Mu0O)7v|0TH0sbTb}WB*4;E9@Fhc3Y7}ZO%$oLHNkV z1gBa9+_sf2PDzuo0JPE=`vx3cb0Uf}r$PR7jG0^Yc6)Ni=yUyrEG)n09Fi2>)^FJE zeBavtljdmorOmtp^*8jeC=iBn^4j9348;WRL9HZyiaLS$sHmJRlS7P3%I6iu0Xl@x zUnyaUfx>}p>J6aUBC3W9&Y=@munK!d<370+c}*IYND&rV`2DvhPnjukot+ts|M#Uf zaCQIcNJv=}zdch51Kk|&?4P~Gbhm_*9wMz{+8_s39xEr9xEZ2%b(XJs|AV(g)v%yf zHt=d;#`v?LS4dZRacQy{reTQ8%R+4&Gv}KAU<}h~DbvxV=?rn9?#uP}`5vn-@+`4LKpy9|EFECobj_y>In( z(cuUlhO%QMd7VGOzE^MsTLFdIcst>(VZ8ZWZ6jT&11sHJw|d*w48q~sH%U;eg1jo` zq`EwjWVQ!^QPrIk;5)L=mi7&qPS?u=PbfOxTSrl#O0G+kFiOQFtwt614SW7;yJGBp zu|6XCQ#x|%jrbO@YHHxrVcoh|eKP`s3=+~t;=l19df=$L-WfWj0*^jWihy0@{_2NH zp7Gi+EktL3A+lBXsB1Q|Vb*lgUsra!oci9?W6ujyf=070TU1Tuc8F3;i1hw+M`np= zbP`M4SL9WR-O7Wu?Bf;@D355={T9X32C=B#erLSJ(_Kqj`|RvYzc-R98B|3}?in>} z&;ifAy1lykc|KDO1HeuD(kF#@faXB`IV!Hy*jjn68aYQpkAPL}=0l{TWT_1uU(!Ca zQ|P`Lp@=h*kmZyWa;S5gm%-pIXv4(9OU5OQV^g4&lk^WigSN+VhpGuz{5bP zBzBIICqzIdyaqATA>`*zI!lG3?_i2%)H}y5ng?hf2U-i1>6H|B$$!oCZ<1-Gq+V)? z9b`)K4Ff=-0V%e4CDkG~l9^QOE$>_!k+oFZ_kl~0%+*=S-bwDDuNTv?Ordbr^Ozrt z1=HZr8Hv}4u1hqBAoBrG-bmJnKICvsvJpJRYs2GgN4G1RC6_4Y@AFh|k9rN=Mi#m* zxn39w+sgeIFQYqx;kI7ZT79Z895_8YTLbae0T2+QkIMA;02t*6HBa&3dHP)@do(2< znWztBEe*5l z?5O%@3JOiLceXdotPS?r>a@Yf9s(sopq=A%uBOsI_2VWe$=*Ho;s@3i4s9;`PBI3q z@r&XG&9&|+Dk;I7US2jGI1v*QPZn#&%~zXWjEZ5|o^O7%C(My%uW7roIP{aSe3}wL zonULjr4hhD*{e@x^ea&`KqXQ|O0vUh+jrq#v&f@j(Y59>Z~-YofB<^2H*VupPv7zJ zduK~|8ez9=Y5|?S_D)N)3>D(H2pBqbK|cq;P0Y+(@idV`kXucN{*4Q_U6iCX7Mr=3 z9rj^9Tx%IOa23h5=&bF)m0v!%&{&rU$Z7py+9uOQ>KO}M z|GP>FM;wbTvqKsv=Z%k#qb?SWU9;;vX0c+{kTf8Y;K*6C_+^jgetFmL3XANcQT%Gx zh#|e25v6u5tx&5j^(QDC$ontWU!BP9yYX>Ye~_tZUi8Z-HqTUP2OT#=mvk}*a1P$v>gK^bs9{0~=4W`J&B9aZ6t z5e9_jQzD?{?n{awybptlh06kjXv#mb&7rk*=0o?c=Lv?f7RCh8o$Uc0VTbbj9}V z=ri#bIbK1)%=$&2>TYu2F0CNm*GrV*vndzsX7EiKFox znH(m&9D~8m8LBp1o}hDUx`U}%Y>0%G9M?Tk9JMB7?OK`ji-^sfgJ5{RKl&n>1(8zd zbgKZ$rS00qui`oO905O#Tez|_7qUl@`y@gyVQFR2sb}xtKTPbxVO7Z<$w!==jh(lx znY+p>A-bu@fBR9$O?692T<_dkR!BeHL^z!v2P(bE-ASyU6kXITfO{vd5HIM;Za!0D z*b`0;4-b!bPXtK7jh={&lM~%tZoqzm0waE%dQu7xT-&+SlLw8k6=qc(->S%^Y^HjI zWj~DCFkp#7ao_)OqbF+CSqmZGfe@`!3zr!EqZ%8Xi4l*e)xY>{g>GTg8*$zGqwq56 znMX;5d`mR*O+S8&((TakO3js^441Haj^Y?!8GoxVZU-zX3)(FSh|Tv&>&N3H~>0C z>e_z2mLw8#<78uFlZ|K1sOl=H7`Ly=_3ici?#ZNrX>eNKIk*A&bO6!JM<^?Y);zUF zdW*-G*puYD?XNWuOE9@Z4-`iZd$7*!4bFCJEZoXTZ@A9H74(+M3ojoX2w9%pLQNPF zzPjf?rZ&}i*cmYfmA)LI>MwIvYsb1-xm=5< zw$(ILLUC|}(R+aOV(h7QKzm8l4WlD9xapupB1Dp~(?B1^lvnbCI4vBIP#cYS-uV(A zIScoOc?=eCZ8=2dhdF*0340`fNO~%@pdq`DFJ&p8XGa%;-Q~zlmGYaBDZGYc;*`){ zsX+M>^E^k@fU+h< zK`tPU3b{DH@~GT_U4m^!`$Xc=$%*opoykX!2&wKYjW?tOh0IeZdL>-T$YRG$*}0r& z!4|(cH9jouv}6b&@veTO#o(gZnLR7E?PfW0H-11QPU)viUtm_*eLSjjnuh-jQHUIq zuFckvy1QTC-u>B(PIuwe%kT3yVmUS8A9ls{NuE_}Noq*Ak{1w-xnuk4mEVb^TYJ_i zGlh6F=aFbYoZGjX&Bz}7__RFp=T>OIk=n3@6Hw01lJjQyy)rQlWVvfhhUb<}aJs0+ z;!p54?m`!QAB%BWj~UNb%z2T&6M_n%++d6ine-)v+KpiLqLv+t3oCje z7IT;N-afep2PCwqTfi@A(f&)M^^MkM){yb-m{4F!>2=da&|opM-T(qjY$~#yFq>ab z>>&-CP~7Y$BZ1)byhTs=Y)i0lMI6cU*^JdPV;ku%9D;~z)T&KW_*R2&EZuK>g^av_ zeb{Esp4|dr35KfxP5GxgxH0dkHI1wulzovGH)dODW`8p2Sf5xpP`t?D<}1j1{=n`p zHsQOZ{k5b%?RV1|6PC?zvOA|MC@BY8~xcm58|y8+S7!1%QY{2!28pJZyL^Mu!I z--%~W?@Tc#^BYe7Fu$A-<*iwBrGg|Jx#rF0NtwBz=xYhzol-s| z+b>Ff>61c}6FrJ7=WrGB-u=F2o@cvH=op%gwf!pZ#T8_ke8>;n+gn)B+jXxbMi1BQ z7=m;Z>RgTxxiVG8I7I@(Fs&dwk8kA>8|JH7ct-AeVoUt^&KzXXtg+@P79&gz6iW;_xpM7?bAj+GRl7^Um}r~ zA<^6&aBQXJnl-!e{Iyem$v)C!*`{?!t?op-&i2K$FcJ!l{*@ZEpdS?mu$=8=ZA(W2a0zPT^@G;A*F@~Hx8>E zG=5KL42;ci5Z6110N}=X?U>V0Nba5$rB?MiSf0}I%l^hQ?mq@5M}=>6*Dk^>cphf4 zEu%(?LLyi#yrK5{)Hl!Y^>0d7f|D{d@@_Fnwm*DcM&j7{MuS> z8~&}KWiQtai+D42?HrE4?;7kzR-io1ewge=e1i~{Y5JUJV_RrcK0t4+fI|Gna9iIx zD>ony6O)lmaLoBFJO+KOUA`|OWUsU>u)t*4B3owgYlBIr{;uk(_N}v|!VuZw@6K|b zS!~;wPc-WvWk(FJ)&_uQB*voAMC82M@Fn2dRc>`Cu=&vSic3A#;jZjnNo~9n`+?7; zt#hU02R^)$cj(4-aru|My35uZRG|-AX54w}==nBoG3nIAaIUzcLBqNAueA4(TY zFv&}u41Z2w5cxX zoxqO9F~9cHD9-d0l7}XOj~xF_FaFAf9xEfU7z-#?R2A{N{2W^eoLGB2dRUp?@K0$C zm-9YBNzeQm4Jj*nlNxaHkF-J8(RI`WB8wWd9TERl*Tk(E^WDJ#>5m8@=bp~PP)=D< zQ|$$~(o9*@Iy<74V@&-tQsG-oVa$;ezd%nkD`NvB&*kqZni*~ey|O-EUh5xKMyA+} zOb}_l#_Cyod1Z94)cW{8JF3ssg7^g|nuQ@~&Jr0@OJ={MM#jD-%UbOvSZ(oPo+{cA zypB7hVde@#Tplh;p8W~>yf{m@_EBZ@ko&QL&95Vw;Nv-j@XK|IoL?fTXv0B!BJ?`|HkJO zE%3}+Xn$7pcF0iLU6y5Rldn>tAbrc=^uY`H5UD|H_8+&02zJzP(iR>`b#Nr2PLn`3 z-`ev`P}*CEZ{LFW0b525I@n{@$^~0ElfzG}cZwZpkXs|)wChoW7Weu+N9>x>Q?!SE zsxs#wsu2CnKd`MeFo_N%Z66zBXA2zuKAb&~V;O5X-=y}XUD)g2lilW0YKg!N3!l!8 zusX2uy5Y6x4%M6vu8iJ^ze9K-(iuk;IA`UourTpcqJ??)61DM|Rf&Jc=&O>?M`+J_ zKJipJ^OW{s-S6a~hAdUt1(HVZlp{_8N*661nGWriUtI<=*Y;doLI0*w?p(jpG-+ES z+=2*z+%})3DxJ(BKXy>Qa?b{N;f1BNRQkOn&C)=(44+k3MXWBXNtU;gn7au*t=fl0 zpkuoBr5n%gMLPpFzYvyuQNSLd{^rQ&G2JPxYqPuZP1Z!dbNM?R`nr~c)r?E<7Gbu& zBgaN<5#gEzvH5BFp77Vu5OIfn5Z6u{si*prG7^QQDyg%iCMcCweDy|;V4jojT|63m z*mx6^89gS$s%8qxhjJfx^ygmAo+EDVyz>(d)Lky7V0lnAh?s$xq}(FSFcUr?!~rgm z29(Dl&b)1(+oE*J?r}dm1j6)3cTna3(8jO9v{@l@*=IQ|!rD_^%L`hIAVk-e3E1`I zpt}s8curCLcj2oB=<9;LwcaxB!0HV0BThljN_?BKVcK)+8rbDT$k%!RPv3Hd!su!I zveSzF8}r*jf_Z5K{DA!ds8PCSy znQZo@fQ->E%IfEv%=nUDlABY={sC z0}z`rPE0uz3#K>^*yC#^rlYU5;O}AI+JD*dBTaCS*7~%h>t?^-%uM!gWoC0*`RUCH zsHy_ZKuFvtZmtnV4#C-tFZoi@`pWbs9Ehn{em)eDX&6bmL6nGM=i-%V!zx+1?ys$d zJ+cvyR(1z&sImGYrLDNiQxxYW~EF)Fm|XG_FOF3NixcK(xl=I@h!$J`}N$w~62R zSm8@_kJ#ZWM{dkMr+=|l?rCu0UwD!7yNmLLDva#hG1Jl`+GyJXfz zW*1&u;!rR3ef{s`PueUrUa7Mvy0rq{>ZF=5-hcv?>Fc^z{Br4L;p7e9#!raEIF{5#$8M7)467h^$Do!eF zz%LA^gVA67W9rcim;GAkVL5a&Ep^3qvHNLum6Zw;Ab&_hx9-c} zxj#RebwW4S#wBzoU01Zf1!|%|PhyD~Ea&s5+=&lb(!cb|U_mLO%Ia@haM0?A>iZ;w ztA=)a{ZS{aUp>LQjm@a<3jMF%=!9_#wLBW#SfA*nJ#Wu9I-$1g!DXC~Hh6zW>bzL% zlG{6{bdqB|735&Z zj@PL8dL|!P#*Yq_p>}nUD*&HXfd3LO>&4LSJgTdHIu3dGpYlWcn^BK{-x@3QOkh9U z)e|l&PSjX&{SU@!V01m~gpat!SMP|<4quZ5-8HL9oQ2Y|=X*%$8W-VNWsZ!Jmm)K9 zOOdLu5z)ZS1}n0zMSNRM4Vy>qWfEL8X4`LXbluCaf27NW1liLjCSw=+8uBY2&L<>i zRd*2KBSck!NatGy5Vf7T1}p6}e4T+pl5dfj%t(du2#NWKb0YEUf$kV2^dT?9RK z0nM?IXne}TgIEQft*NCyvNWp9uqI^IROYeAQNaESF8i1gHroQG4sIW{A7* zJ)Ox3-*QCZswz?w6}_ZCWoY=WgvWc?oDp!iz7qI;=EfV=;K|3#F~l)HR~ylOz6Rx* zo@r;M+56%YRp9vd(-t#Fh)mRE{pYI&64*H>dE#SAEmU1cwoS~YK8Y;uAzAL+KYc?y zMTRJ+fZ%kN{U`V~n}R~F2BZajf!-x5Kk!&|aTVYG6jNEXg}45>)@;I|u$L ze{IcWp4mV-)f60Z*px5N#9C5u=?w@7PY8k$U`ZuI+5ke%0*ID8`WggXwxq{1B^ zgOPhMck%Iu>>|eAdY~4Z@O)hvkE>d|yrZISGWlLn@-OM9Cf8ruH+xv4T);H-D_3fEe4y*z{~xFnbNdsMR)Sn~r!K;jPaq>HJN3&GPa z3O7%j{vK~}yM41cjOrIRZ(;O4X6yJ;QU+oup%=jH`?poPr+5Cvd6ZTznA&u1o#rW~wnI0)CS>~E6QEmW?V1J(WIix6rxY+jSJv{G_EQ<`A3|6t?g zl2cLl+-0{d;Ja;@<7iq+K}u_!U0}^9%)mblAy;@~NYd!TBmx=$(vZKVLRhJUf_h?) zcRH?Q&D?m;0q~n-6g@>6ZAqp1FSp5v$uzIl7OkITlIWZ)*cIp&lXEqae-yoXXsK4d zou*%ug2w~p`5fLunbOOpja5nHj5B}ob0hAh7h38ZM(KwRF|>?6zrdFNfq_I+OuOX_66$v1l z*l2*qbE~@~W6~C$eGinG!0PSpB)EYnsm&bjd;gBx@z<5RHy~uo7n_A2x)wVZgvZ3E z4)o^S|CH`c2N9}O5LeW4WZiM;s5SC0Kv)KO3YF$=@()WV6oRSo3w}oRJ;*mCqCJFO zw4ctH3{G|e=ZdFb_0FkAl{-AH+{m?r9XNoUndY8@nnLt6`)Ew%63D5O z8@azHjKB&9Ckby|XIn%@7jj7TTjTBRN+EV%j2EgXLP=6OPsL{&7@k^0lO1VD8k4LT zUFFycYth6LvH375D<(4W6C8A4mxnce=&K zPKe*e`K%4Bw+GxLYbhEHKOuNGne=kyDvIq85<9l=xMy*gs4w{akfC#FoUe3uD|Khi zsnJ{D+qM=kZxAui!ydV$ZEZgc_&78^Zg&mZ8JFuz|3)hTNOyia{+Qex>)YB0SD1SI zL7QaFZj3*pdG9Cbe;n)=g>8F9Tk9Q_Nu<(0 zdyBf6?bD6vHq5#?#9=?+pE+ZH{20#JFETK5=U11hY@EAMntxG=!4Y!bYOFRqG``_e zVcnKin$WNtm9o#V-K~`T8J$jN*)1JqqY+?ZPqUiX63XM3LNt^<5foPKKd$j#t7^w# zIYC1Vpy|JEyowoJ8s~*6#HV3d}7YcIX>Nv}vAeJidQ=ShA`? z{}*>F>0n3&qxa(XfC$~|F;?FDOUl6eCnk(mWY47ELw7y~3#wygH?7lR#WNTb8p?-# z)P~2Gh@HH>gCEZExfmQCrD`wM>M1bFrtp}g9`6?&ua^fMd5b=MBDp7MDY0?Yu)k&B z!C^-}x9@sp=5R!_UpFK9xmRB|yKw3v*%>9BlcA@kdUqaXL2_I7Id9&((Klw1Q?!Ip ztk6Wt!)`@;Ca&bvZUUp&XO0Jb1GaFg(&4977E$*`>Vlct`yHp2A&jL4j1!K~)<5*^ zV#L9Gp7C|$A*NAvC_Lygl-qP9;f+pW2NRiE1DR8F@Z!%twe(?&@6!xcye#TdTebdD z@)RL>9~rHZ3(k&aeewNf?g;it``#_**AinpcPmp7=b)s$2F3|&#o8W|hlAK9<3e~J z@z2c9*=d2K-6#2$>Gux1*XKfU3iM3kr8^JqN63>Yl7&ufHP2+7mrud-+P@S0EB5e} zX=XGU-mK@sO(Bl0<-`Du%--YUPyI!6aibmBEBEEY`6FYsjQ78#oQ(K;Y8g8pH&ID; zG@WW}n&z=udE|cI?KF37?zFE^k{T^AP@*PcY#<6G<3m@b3E)O-~URIXGMQE};nM6j4sx zBD6nu)T;kA6js!9-fLzrDGZmZ#8YRPK&}hj%`~wBHK&J z%l9lTHOr1Dm>R^ITlT1R9YNLCH|Pfv6)CXg)SO3%^JIufso2GkHs}qd>bR|8FmV zATYMJ9swFpKcM6TFD5{xa{Shueas+S@LB;U#tG-ge+EEHYzp)L=~WT%cXxNO%-^vy zvAc8R16XN5vwlKfZ|_SG?`hKlip9^go84l73iK2xtTh{GGn2s(ZI9-;+RCbO^IgE$ zrKO~hLDTDN7M79mt`}dxdnhtxq0NLqCs7W>tq}Fnde}rDDFS`9og*U=KwzW^B$Q;$ zKqLW=h*)8>ChEhkYp;yA0y-A+HEWrH_8F>Pn4OzbZ;;9iE~qkx2??g-<4XV<4`>rD z1V}zUKA0WV(XmB(?KR@3c&p`wFoGqYO1ZD0N zAln$PwbljF5=L!V1%zJdmzm1osLyy^RqzU4Ucx}olZ%y4ljadsX*_Zc1i)jU=S7BK z%8a;m^5Wv6yqxV}d!fmd11bOmnxWV1>`|cU7KfaC2=uE$bq_$$lmid@<(-@yrbaOV zD5kcZYCtV}Xb8gxs!axhYj)3n4uP2DW__6&#RAPDuV245U2ft71K8+~Vet3&kBp3b zr>u+zT8|BZ0gPL+NPp6KpZV8lIQb*cjzI+^Y8Bs5z?06-&aQ537?3DGfgTsTt$uu< z*pZZ$MtzAZ+CKr5CGG!F=MAKtd9M^}@}#%%!3RK{lAbcT3;eY61@ zo-6bU0{EZ?0%kD~Xo#S%1i&UF43f_27#bS7d`bp2ZBV){(rrxz?*@Q9e`1seecT2e z{wR>#RV?UB9C(&p{6a&~!OIbbfUKt%NWJgQ2UzM|&R$g-4OJ-r691BktRSmVtO8y7 z-)(L0wt!gXvqU&q0jK4>GBKygXWygqiwk^lh2NmFh!%8>_XGWzsheEsOq_W_@et6~ z{eF79XP}Rf2J=;40hH08^=#^ACT%~cO~-iNU(@lY$c^m*1p=+KqGHr|tGBn|`DPzN z4Svi3c&|hZxTPW3E&V{lT~uW;rwEiT%~7eTR`cCztw25gWxmQZ3rG!TFO!=@2ByJ= zifQ*lVgN$y;L_643b!jWaRt=>gSWSg%JSR(es5Ax1f)a2LP|nFK~hmfT98IM1(Z%H z6_gN=1}UYxyOC~??vm~XsWY$Ne)fOw@jPdYGtL-ioZpN6Vhh~&wXU`1n)5s7{LE_M zSMu^9(AlgGjn&DAMoLOy2qeOw=f@KXJG)}hHnwzpun>)Q%fIRIX$4xKx4kXmzMcw{ z=pqSRs0ct>H49_%u5A19Ox8|L#y&6|wAh{%9n8_{ju-X4r|6uK3r_}k4b@^ZO4w9} zBl!lvLP+Q}mdX!95tG(Uhbhpc4UJXxO-)UE=QcJrf1pbU%t++t2^=}yF#pG*^H3>I z2_33TP!WJd>jurZqyz*3=mFGjz0j1F<5N;nA`hpvv8n0#G4$297j+EYWn+^WDKZU@ zXY@f%858tBE5JcYW^9{Kw}(c;iqn~TvU$40FIbM zdl+jdl(I4VSY^m;=tFUp1T;j22%jG%tX*MA7eL-!a^JG?NIpFr63GwEP)Fkdo$$~u z#qll)V>Kzvw$!Paz`!IC7IFoC9(-m3TZC|cJe9q4(j2NP6gw@$?z zn*Mlp3VQzvpp8(|X_@{r0i6sSV}oBZ^oHiuz+%N_b$wr7K_y#)M1?vH+$m2qzFbDL{x}(>#L$iMibnrIAi5w}n zW$`6r4cgGsAp`OWdVE3x(o5}lFk*zXnz(vX4f)#I*%>0`iO|ER<#t9|O8T<2qGE1g z;kk&&$2T=#Du~I+8L}h{)9 zq*HX>hBW>TT*+}0jDQHj6mpY@0H!gIFtC8r>Z!L5mnFL zYZUAF`SVq3qHEXcpdYZcvr{yoH$o`U%*?E3+2(YwPgdYySkDG}y1_Cay?}j|*;+LS zfC0=1x8TC;to+8%D^k)Te-csXOmyX#;K8SL+v^pBZgd15U<6J3HfzIyu&-v<)})}o ziq-K=JPxuifobr|G^gr0EbkE*3b)>-%VBD8Fbuj3d!f4r`VZ^i17%^WKeAmR0lYhP zToe{u9njkK3D(wfYx+qw;A8+*@yK!((;|ak7n}*CUk1<`&T=zCjNw*lVQE8;}>;!?`*LA*1r| zN`}DcRy|m~)|0-kKCi@}t_bOUNv`y5S_FR)IqA@o-3ZO=(1niMFFKOnzeX%~UteFJ z5juR7|5-M@YuB#%`1$!+!6WzSu_$G}G#Sdyat0_+va09vIOiSj9eBYk@bf(LQN#%5)V2W)!9dGFjv3HT zP(j!WExQZdaorxc#4jWz^>xlfg`|5;7kiL|?dE*MZE(?S!>8v*LFX zZJ!8)RAR$#W=1>nsYJrbK-%aRIwGIS%M(5R;EmZt@Bmm`oSdBQ>XJ{-_;bHa=a@wl z_5 z*m6L8^1uE_xAm5KOn&-p+3eHn{rE_M+|*9SYjT zMWGQK+TJhWv5Ga3r9d10l&(PunY>thI`YloleP8qUfp z!3H7-t>mQoXCp|MWuI}<(((dcuE}Ly{pg22o?(VyfthZ^zOs;G4l8C-{aE>;ZYC;qbDXNBFGGI*As2izKYYR=EM(HS!OQ6 zCmt^)1f*)!2t9oG5IV8)pmnd$R3st}{&4!8t5T#^DTVjIHY5|oUc3FA5H3XUE>bnC z%HKo*D**wR30<68i_^$8CHiM7zgek%T++U}+#-5#x@nM;UxccI&~aloX?5EqBsy zd_+oFYRg zN817?YX!+~A+~W?P6|H)Q;amEfn#2pHg61e9~|8XI2b<$Opx6O?pI;|yn;CF3dxn~ z*3xL50G{SQUHHbmzY3ugm!!J78j4xbE;Oo_ptAeu z?_ae)ROx(aw^!+HwYJ4+a6z_8$~Eky5)cqD9xY@7t9jw*3T64o{VxDGxXQDGu^^%b zba)Bj{Vt6Rws#ubT8(!un}JIJe+^+??Lu8D7c?IBX&Y2&noFGZ=4c6vh=>fASu+4q z0QIf##{9FD7ANruWoLOY5fT~n+RKc>!ie*V_z#nA7cPM6>I63i;qri+PtU_c4t|nE z66buX(~Kv1OKYnRL~{CuhVhJ-!N6j@>og=@xcxuD|IH0)I`>FHYNw1xU*p7jDC3c(fY2TkDY zReMCz-??vslbof*vV6JC9n5P`dCpOyzXzirwIq2hmDxmj=*8KlTYrvL90ad@U?Wg} z_m=Bfaw=6Y6nlskMN&*0)p?cJoj{lzn zpyT=*UF9=E?-Ov~00;jr2rdY52?6+kEkq%1AiUxT0EAhvY%f8{K5&5$ngvSV$S61_ z#;>4&3p}z}_=lZ3gS-E=1bC{+i)AbA9UTg=DKiBAE+w=9vO+4reyQgPCC|HPh^&Ib z!jh5W>I1hO5jAxNV_Q}pE3g<|-j#~b9^HhSWM0K-^}k+ETUa3~>>6BX5PrhnxQ>Q~ zmK=hCXdPhjpUaUz^N%CIeE>sq_4f0xH()VCB}C24?t!z5N6Fb>Qwfoq+LA;%+kX~7 zu2{k6R)SW$k5WeC;2>FTh_4A)Ke%WMfWp^jr=0!zCmcEmaQm_~_#ytpxqKO+nINVl z{YdG_e@=D?4KAu(72L^4UdvnHI6laFlBSdajHp@Yk^xd$AK=YkB}`|6)Y$*?@jA3b zsIUYGetW7f;FK=tBo}j>XRVmi>@0U(j0b0Q*J!#S7F8K!-vcf%Y;>?E!Q%0b>*6an2AIm}qo#bPF4s#D8@!Cy!@K z}#xJqvG@r{!F8OYX%nsPn4 z>JI!=kgb|OVqHN+@Y}N?+!j!`W+4=ois1|GO%Q`PJlm@3`ArYTubEi)JaYL!&;)07 z8~A5Pe>(~!vNXjEGFjm>ZopiP&>Zpu{smg~83YAsz^?@N4iJ~*JnzP9>+3NPlpkP# z5I!mNmM6O~NJTsbnh=X}_Py11ViB+R`FRL+IKDClc#;5i12&_vQwQ*>z$GFd-hiEp zNV;BLI6#T~pqX>&1~e%^E5i8pFt`~&<$%ks20dVLe!dsfOfD^Ncp?7)i7hVyqY}|* zKoCQqF*EDy(r^yJjbdPD&*?b>pBaS!A|Wcgw-sGgMq1_afv8Rnh78Nhmiun+O75MLyk*YYFidL+Cupd~@DZZ@3z z0US*_2-Lu=L_T~=1>Z(AXQ;2pR2jS~(0w6tW}BcrA^ zU55OCN8=0fT*7#Xw(f2QKECpv#npj~FMfU&KG4|ZjOVZA4(={n(l6HMgliqH%s3( zaexBn=f8NtaoTfmcvxcWhlR(E2vEPev`VzSJyLlS>0d`kiaN3)4|C%olP~nEahs4%P&@XOJ+ZCr zL3-}vR{&ImQ|I4eiYm-dzY5i$B2*MjeCsuj@L{WN7y^C>F5<-gW^aH0=SlLG5Od1Y zNsh-Lcp1Cs`yJ=&#A_Ij0jvN$*y3$S1wWo7nKX`^2;gD$+d`NOssmD^;qia989?#G zg`u)J6fUETjS`ZfKpSR^IoFg2 zQYUDK?h;8NN%GeqHv&DmOFcg^Ab$V}pj~iNgX7}dhFom;XrL_)XtO9V0tn;+thU7K zhY%zKj`W$f_6_(2U~GLkoP3|tv%aZh$Wf?P4V+rgGiYRGW#M*-cw}w(K@W)%0m}#y z5=fW{z+i)jIU*KNZHRvh=-gQl{~%lij@L`?oIK8N06tWCG`BW2`9uiIFop8&$7r1k z&pS3wSbpWY9j}Rh{f7LNdPYG@8O_@VqTfZ!A-3#_6_kWDMg&luv|HXdfW*xO0twLl zWFT?|SrY_?50P9(la_Sm=H>wFgtkjvutjjOTm!r=SZKrv1)quW-~rOS2uMsMdPERx zuU}sWt7|`g01=@*Ye6r8@M$e%D5L;I3)-+Ayio*e3rsyU4!E8mb9TJjEo^CTzX+;V zGN6W|1>cjwVgO`S6mCNV{X*sU8T=z1Q&aUd(+nx(W%)4q$lpL!Y7|htD;*vC78cyS zT+01@z^3HcHP2Lw|AP)au>SuA9eQui1`&{dd0s)tY^bYL+(;77e*7GsuF^Dez~rfz zA-J{X)X=zT(G^ zAEla8R}#VBVX@mWp@Q}kfO{;dOcm5xKcspRQzD1$!WP9u0k2x>t@o(DhVu7E)0a5E>Hr{TMcjcmm< zg{6Hb6!Q6phYZ}@d%`Dx(L@2BNQ&0&)DoQ976ko>(20RG2s}39$dHm-0FTFEF~mci zoMr&jg!kH?=|=rRKEYzDWo|+^m85CZgTKKU?OA^3r-+A-zW~u9OK#I4--ZId8U zv>$ISl?J+uBdFri0ilJSnLzgB<>N#0ZV*3Mbg%o$FT6)W0pJ0^(m^)3N~FZJKlK_& zQ@W4=K>$qvk*t=uWy`!{}>O7d{i1&$b^`#}hE3c)L!fiUDo|8$8U zEL94$GDKfMvecj#Wtd)dfBC~G?YL&63SBdyDxT%SXgTZU@Ef?&Hd(nkw2Ig+Z1b>0z& zkrEAh0fNurVL{6QnIb4Ch=R)y4|#`xSH-)|n_Jrup8g_<#5yJgiH_k%AVBeoX9PK% zz!{wT>w-=pkX7Fqx9-lfoO=#38v=EPlsr6If&HdtEyvX=h@2rkwv76M00L3uwJVC?Y3l2}}Yl#QgFH`#RU?YDfiJ%>~c1P6ce^}PZnHVI^@>-=_j z;JNn|n%vgX(t?I=G_QaFcEVH2I36M82#8v&tgWRFp$1h#-sUD|iQ&b8+1jVSv@Fi4 z3ZE_A-JZRs2ZI&!&L5XV#LF#1E&&^oo)xRR@w$w1NMNA{nXu<3Cd@FCK?i({wb7#X zaRU}@z(gv#K29c_Ps&Aj4rL#1qQ>pd`Swf|!bFKh6m&tWh1wLvm&1|h$1*cA5`#+~ z(ca+~ku46Q-Spz37^tkk7Q-s8v0MNCMwL=nxaOkc^25m*m*q&esQ;o$Bi}u9vT-#M zYP!As)I>`@5BL@a+^3t)lVsALZ~f{5uVt+x=+euaq2Q<}NqE5^jvK%ole`E#_or}# zzzm>Z?JPhqMSoQdafMG*6gB8XOncYC_ek#NYKkI^Kl+;GhVYwg8Ao*&Z3SXdmuCR4 zV!`XA!Q7roKL69v&Vf zVGOo@slWA`&@3c|65w?SY&Q@)Lz)gr@*=48H^1-n-RcA+b3sAGM2&^@b!`mx!Ryr> z)mOxA%>QU80p1Wt4&R3cb@$F44v4=&V1i=e6tGN)IfN^ez#X7x2}&7`V2>b+m;{Lt z=i~YCz5o( zt$_HgHtsX*g7~hpfkp0~xwl}mO$r|G#`JGlB*umlJ7M8#NlF0PW-zx((|L$BfQz=4qv8Va_d4Lk@;-Xho2&Em{AiA#uh@PC zT@%VQ;H}rSwt7R26hQ7P(KFm8(yrKnJH59y(r2UfeW5y*35TYZt(6 zn-GT=h!Qw>c!{t};YpD~BB+C~TQXK8N1#aJ7~%>*ZeIs4I01gW@w_IagoqW30ZcQ|Z>yt4D`u1+bvWA>twrpCNAFob zxsV4@43AF%Dm31z*Rbw{Os((WBKu=Z!3aL6JG@Ysgjkv2`?V@>C?aqhA@P(r~(Mr&#iQ< zCS`MTD=*XafLv(+;Qdf7aK5G7;F5sa2qo>L>@lcl`3`oS%%Ov#fm9K)JF2Rxh$#Wp ztM4tmTu-~X$qkUEZB_?6Nlqs^!NNch6f%HgFCr_874iww@O`j~tIjT_H_eZ9OizU& z5aWP?3H13GxbQ(d0ZHpVL@{92(qO|v+@uduf@kpyr8~$}Bhq2HkI21|R?Wan`ix%x z+qbY!0qV=>5;vJ?)ES;iMkjS?JTobxn%B~3Qp+lyo;fFd0obNJCl_yD`yA_k2B3fo z0+Nrac13(9_QKMV%545b=laE^xkU20i<`G^e}W~v57N`c+9Hrh;ln|a!h?%J4|WaW zb0QuM+-4asKBObVs-BUCN9E`pmiciY*!h0*&NIdM|3P4b zZ(~#*_x}vRCN%kP2=<{2AT{gY5V$L4R2f+e0NWh=@?ns_z`A1L)h$60S|q1|L}2#_ z9ChU0($?1gIR>6MCnS2X31~YK#e+dLp9MDnyvO90MJ97#&qgNX@c@+Sji%%dpQ`UC za`SJIDfMFmv4#&iUTs2m4JCT*E@B+z_BSS?KzqFpe+;s8$cQ39G1Ci80?qmbl!G4q z36^z$l0&3c^PKBE2mB{wjqYhxM}PZ9=n8`>WMFm%tR5OzF#||)g3L-C_l@G<=G_Wvz4yH>Cra_x<9##&lh zen8F-q{}dn0?0NwUtojG+edJuwreiV2tWb86<1FLT}FQB;9UN@%ZP_Zl04;C`_M9Fr3E{1 zlBELtR$m8{&>DYil6vwX)qzCx=OV+;hC2q^153qt#tTMabB2Ew`m6@YfB_+xvmdWi z6dxc-6we8zK{H^wAk{cMePd4J;w`KQaOIQaS;>vw*uR$!H8Q)+>aH|C+sOsxm z!^ls#F|}1yxVtlXrIa)qD{->7<=1928eJ1FoW z_+-geRp;{kd#DQ@j)?G+2fDp;Z*vRe3ZU=gIW#}(I%RuGGPV8ciYjp9A2|HgI9d7B z_369hPa_PtKRpQzch(BJ$zGILovcHFVUf*tI!Pp^d?S<3ud!8GUl8 zp%Suh{}0&rczY#M*KjUytsB@n!zK!q!iA0>*q8101&+^-*}k5fqwb5V;+=4Q1zJ!f z(V0&hE2~(0opHUD*usm89diWu3;H1d1VBGTPgg!IqyWHVC&-m_bh~bv-WNe^)6Dna zS2~1c(6?T9KSp;(3uN86>(zQ&)^3j+^>}L_hrKcfa$`1 zxO-bRWid&yS*4IG{a57+(N>BIxA);s4s+xdv6~ELvcpFndF0;Fa|+DN1i|x}0%_Aw zP?9okAbii27i(8t@dD7MCw_KXblsaK@UKhQ7PmA*1Yu@S2-QC}W`zSDdc0xnLWev0OL2_L) zV|M!l*^@8J4-CY2vNW+=Di&`AZZ88JVczdaUE`#i)C)nAQvRJ^-D1apRH?5SZ9beE zomGz|_8&O$!}yubUfjz?xuHy5XOqv&I=SF?G_E z{lBI%7xNyD0kN>EP5WT8#x{Mkal?9O#QvtYrN%~8NHAe&=<|d$4z0;S-Q8Z6Xo;3G zN7?2GI{&<-?T7GjroC2*SfMqniV=)HzoJ%Uz9kGGmpMU6nrix7QR;l%=psMy(wxX^ z6a0XClg%5}-bsAPnmHD0@|WY@3ATT_a@ccT^|rEnf$kw~z->W>IFG&8ce4b3g(!-N zccxR+6z)5DY7uD8CUgesFD~EHh<@)Q+d1=RfLnoiX=J#fquVGNC;vi(ldnqZI*~|3 zcfiS2y^*-h5%=o4>OTvsjtkB8r*=pAo{~z(;#agu^Jn6C?P8=GWD*vt+~!YN(ne!t zP7lnCVl^$jwtQRRz&@Fz8;rgNbI*<`(p1&Xg~D69S}@^P?l5uX)b4hgmP6Y)k08~1 zVpvGPZtGTiBY^ zvAUyss4|(K?ciaeq3I)<@aF~JHw;{5Zay0zr;Ka*89@yMo+i8OFX06=IcIj!z`R-r z9k>QR>zJOg#}^WUz<{9>PW6Hxs}}lsxwp>EyJ~{0?DGwdkMJvt7w86QD%$oQTv$AM zF^eYK>}F^VwJ2n%$qxTI?z~_w*naq)Jzg2lbZWua_LO~=8R)|R5L0<) zz?4nHQ{mQr3xd31<9-{QEqyV4^ph?IB(cG9MQ?S=McR40>R51l`!=hEec^mX6?tUU z3<;B}qo*smcLfWC)4)te22sEi9AvH&1cKoBywXNSe}T^C5gtwsnymmxP_HZOvT7ef zbt@hfHx49pkOU-n5Ut(a>=Oejc?3LS$gnM7u?UP6RF4Fhn$7J2NlW?USD-E7O)*^!lk z`t!mJjT=W?Ccw9$)>>l7$WCsRob+Fv#i7OJr^Cc4KP0L=kEK+M! zC&1)duYT@6Q?azZ&(Pbx6|Bo*cje!JQzRt~bxs#2H5YTBBFsUegqNRMi8=y$f}pTV zAF>an6%|~dEI~bS6X?2VP=|!95~RhT&ce&r7jeU2QY#X+L>*qvs-20@SNhzHzIEQS zFgz9_Eg311q^ow(1aS2h>Q$MolU|mFJ4VRlic=9zN4}~z>X+0XXizDn7=8O0np2$e zDz9r^->81=%lBTM;c(@lXBIGz0Rf`Q=RDS2qEWfar4I1k?Jhb7X;x#9Q4p&yNJZJy zD>#{lZ#3J7Ky_caJ!&%Vwtsk%81egZO@x$EEI#0-z7I0iw%#vX*yX{Gs zlz*^9%DHRPe`t3%@k!mhxFR!Y@Oz$yiB^A*3bh;0Ddh8uI;bb}B@(@v*qM_;+6C|2 zy$eBgJ(7!p@qsXz45ro;Sj|h&I{vwax^??DEfgQs!z^fp`u_a!$zcYd8&LtVP(-dCg^NfczRt6!lOZt>2?#Zx3&-McE(#E-<^E&hrYVEyDFA{v9*67wStW&Y zZ@8UWJkR&KWxS26n8`LZ`uq3G?kOoZN7i75C4_j8-xw;ChIyo*bLhYlp^#c9C}@fL zDC`dMDrAJ4Kr`QTi2XMS74zQl3A#~s5>VWmzkX=!K30|&q;f1+DC-g!PbM?RzifEI zA~?KnB5No#91`p2(m{6mK?iSk@wWPIW6L0Lr>#yUm=E2mn|nmn+YB$Zu88CP9q-YI zNf;oOpYj#fTIp&(d{902VA!Ppo>S#j+p6eN=i5<>t^#H&*d^RB8+WoxAK> z-O*Q5DE6g!p*!E#CG$^*fTjjbT>@~6*luC~1q<07p~U<|OV)?D+yl|;M}|`Tuh-t< z)I@Y-UQ8T|Njmb!MbrVl8krb^d+#E$ujw5XQht!66Med^-A+}?Kk>e59G3aWQsfd4 zP&G4@2Y0v;9_@dOoSFo37+^*mGme@$~xSXj(#`TFPrBxoDlJ>3@> zzvoXg?m16fKbmPh06G*UU?vVUUg*}I)*P>I8TfF1f0Cno1TFeii=O#^4QbPw`3H5H zSp+FZ%asB@4S%lA222GhGbxNHZufENO)9%rFzhQ1m~~eTEFjdy!el+B+%qWdl`@@z zO5rmjrQB^-oz=OKu`xsunKtY^_bP1z_b0DFZg+!l_YXWcR4yg(4;b`GP8e%6e*%P# zrYcQcfiUe|rrRYwXI%{`T(he#l?P*%fG)#4F54Nij&XD|-o16!c3Lv|q`LCq4IKB# z3w}|R5CfxHDu$drrsk2Fk}G?bKg)du%Z{D=o022Wj=t!<>se2TvH4yR)5*ZRaBnSr z18|;*DIFSl2GgKFFw_XYFe$bv!QDOH?=jf1aZ>BIN)crZ&|Rlq+XMq@mkcH+uT@px zRFNWZoAY%hMTW&;l#_btv#@I~Cn5*BJ+@3Pnub#qPi=Ro5RUHKl*{L(Er4d+ zh)bc|JAQ}XI9}T-Qy=x|URL(bms_&NXZ+f`76tVmjyqI zYU4R;UsqsOjI_nb5p;?SlspKA;m#6aVMcBO9Z{?PlBU{^_$=;6UensV4frLXds*i9 zG;-!iG|WgeRgvXuQzJKM@=m0dF&@KAu%%Q>6ja@}A2q0#+}uaMG1 zHa}Dq=|j~a)C$0S6j^6yfsv8VmMUsCwOa#@Zyc>g?q z$^hngkAQ6)8H5dlT#}8P;O(#H52Jx1K01)qG`d)k`*(!!bo{!PM2mJyeANy;i^Te7 zfj1Q4_(grX`boW?aof^){QA-SG9l2Xp93%?p&FNAPwH2deIaM#IreL)Ie_aF#BO3Y zH@CiZSg-qUxuCoOk++d{I7I)2Hr|?x^NM9h7$pr32_!io@514Xmt7y(cz4mQY5&@J3M|CrDf(<-mmcs{@_F=m#be{LSFom3!pQjB;cXf0wmc`-k z8Z0@Y?(Un^0xO4e?p!-ec;Ewo`Vg)F#2~r4Zc>3w?mn~Xwl@a3$EwV8*@b16yefiO zrA8Va^f}!}l4@TU%KLKK+gKW0UFefWm`(G?cps4zE?QR$ z+~pV13Q0^mFe1Wp7SFrwi9^51Z8%Oc2cLnAI6s7wov5#upmZN@2hBBNuV9T4nXg`@ zA-}eA4g=vA%3`ld&0(~Em&xhbn8*SoK>o_IOmbpJ81%{kzoicFJjh3ue4eD|>lz3# zyL)Qk^~&-M(Ego|URZxFW{bd|b$ZSQu5KNWI^1>2QVHnZ$!!$OWH5`$K}_!>TO5t0 z{j5R_go|My4MWPhNN0mZ*6ywLxR7I2R2daK~TVI^c}t% z#3G2}&rAwq*i=7+iZXwf2)*<&B#z!Kj)D2+CxHCVlf71W9<%a3&ryPB0q;#y9J}q@ z{)Z<9w5Mo=nd^1U0Tds18h}GS(V&{`O5L(P0+4`LbPj#MO3HqE|xaZ^< z=@!k6M za-e*Fak-zWu+=qvw{lc?DVx;^K#e@u4`!--^pwGFkH~R&uKI^Q*`E z-*k-omi!mYV_-;hhhr)w`@zFZ17Y)3Rgho4jo331EMWnOCtRe*J9r)$m*%27^T zoqqb4x)M?)rjf=X$zE{vY;I!oJR#^Hm7@gf`GLUVlO zcl^l$bq$7s%}IamRZmz4YT;|%I$4k!t|R?ptAmFM(2}{yDh4`V)vGnodXS+1SIlR+ zM=qaSRJT+zZo$ZRrM{Sps-94IdHR50g_ZWHS`1d%QeiPsEErFWXuB)e%u(-Tu0RCt z@$U0N=E23zRDatvjZSZIVVarRM*YvOW#OAmMJd&k>Nd{?3Xb&!VBXA@Z9$4TG1LUS zM27;1@J-XNpyn6wM9+exw`aEY^b4w+^N|)ZRa=sYizn_v^z}T<1$g#ahV{1)MCbh( z8_xvUjaH`c2v=cAYTJ+f=fYiuts=wS{AwqkcZQ`+q^%mnywPF~2CNct2|;C@+Mv~9 zxRFRlzQ80Tq@g$$-7VIup11oBxPy!DAEt7k-FVy`U{3^iz7oB$UWTI$x+R$7QF$tf z86`_)bs{*HfYx`y^E``fgd%^xIeTkilo%Pqu%camsa_3qOE+(S18G1pI$DjO$-EY? zACaj?%%N$0P!=PA*7;;z-M+!R6$jpt9guX%Xrh>zi?3;|&po!`WZ!?&((mfmcIwRK zdhsQW;B|ap&J}9SC8eKtUxk5wi>8emQySFPhLM*k?Bv-IRRE=M%zt_I^?(9;RKZUe z6Vlqas`^Z;`wkyd@D=aK*V3H}?=CDs9a~YXp`>tn^s2c%5KxHJVQi~Y5#m+o?aP-% z-yn{0Pka^JVwAtrv3CIv9RFe4sp{833uf54%Lk0!68X0<=%ur7Vik%9ls%~}%un58 zdLFp*&@l>>7`;x{$!~7W_}og1P%&qU?X^w{7{N8%o=s0k_UI2N%IO^Y6cy60($mHW z^^*+MR~YUxT>%%m+AZHDFL>)*UDt_CHix&NcbEibjli8+ciS*kU9KqFTQ=pw$Snbe zc$}!2pN@Bqsar9Cv$Gdj;+xnZkW66Qu`9^Zb(jud8EtPA$DE<*RNIz{zgF46C^3iU~O{!C*wsqWWs#`4_M zRe|jZG?3PZurVW>E|H1C?*WulrThe)oaicUGORbPnQE~21P0DdMrpy+1vsO=!gNXA zHPlg>D|XFqA+4b^yYmzrn%Q|XrL_<*%$HmJ48Y)ZN3&f975NB*x2G(qoY@`nZ|` z-ue70!)WN3qo1HDez8fh%(_nRX<7;3cX8Tw<7`gze->>9=wYd!U~}&p>3F{1#m>m1(@OSo1`Qs}qXr(X{7GSFyTGN#-4!CILNNQJ!tFN~SY}dHU#+ruKNk4~P$!R1;p_eV{Hq`q%F{T@bC8nF5H1lY!nWq2t=}+NrFYv?AV@igA?~vBKszPR^+nakA?WK>t8$P1DRg9_OIK($I~3<$#1y`@kZj{o zv{SqBh+wqRfOq#fF0IBX3%3(SnBS(S&cynZas*l~ZRY+h?<|+_T>5n?3BN2CiAWOU zYn}WpI<)mN$L%jP-p7_Y;=^Jh-yvLC^=I`yj8bcqXP=+Ta9P~$Yc+dy(ev(Y<^A;! z2NZ)9=j9u|JmX&&u^q*?8Z0 zs12iAc$k*Ws`=f7n)MdZ~HLnX{rSK{NiN&s9rh~)!JL+ zN*TW(ONfc5o==yOO|EmUr*VJ(!+~8|v#?!E9jyB`7#tb5D1gJx;)!bzfXPQ##eb<+WR1H4iG%*qLq|FwjsAV8i2@ zD`nk0Ho59lRdVIyjqFj&f<*M{raIbQvg>QT6iHMxWbgRjs3}+QDSMJ+U#5IL&soZ3 zU=ipmT*0KDJT^|kSxVtXcG#{>hvldGC4F+NYpccp^&{C#nY90gy5sK55Vf5GP^>6iptDnvRt*zg`J1MQFPXB z9<$7TZk}0eENp{4kfR{Ab*=h7UAh8xEU{pIr`EWHiau2ly{J z+#aPj`JFC z;5x_ZPox zx{D3_MzNRMgFFIk`|XlZy@j*~ONWOOJxf=IqaB3fMVvDaRQC6G?8WlnSUX{6Xm@|q^=`7s{Zg)l3H z#l^5&?$Hv@6UIz@_@0tDy@W}@cq zL6bXvag<3y^?4pwec|A7v+RDZ`bEzQer%0rO{Rbu6`rxUX0}yk^zV``+w80?k(B0s zMX{~bk*F=ZP`&!yv)C40a;{N&F_Lk`nr}s7m6Nx;oe$(5&vqbsS2Yh!j1wO**n$8Zn z30wQkx|#a#<*Q(-7|+9Fui7W!nI<>=P)?2csV?8MdFUbjM{U7e)T`nqYb%g2El#K5?5?NNCf85ZiH z`XWi{qs7Va?)?vO;d3a2(c~=Z?->NEr>}ow**B zH(_=(&Z~VrVa9UPWPSFnjg(sJy8A<+cVv#IX&L_0i?1Hx-=8gh$dE&-18h*(<(Uyg zeswd0t5*QcZAjg`>@D%Eze8$ih|HXFNaWn?Q1#x}`>yl=BMzLSKPh;X<=Yf+b^{KL z{r3C*K5{<7KzTp=cqnGu?3H?B2@hRUW%rV6cjcQtzEdkc@>j~`={$-(;ltvQWZpR5&LIoY>0Z8$0-W=0ADo>g61|I>l9I%Pj>{UT>sYYhfu!_! zc=Z=ouUNwpsi8! zC|~g!5r`ZtT-C=<&JjZQn{+=qLC-aFHqVe=T2KF`bL=tcP^f+bJdN}60|GNayH4f+ z#fjg7i(5t8XNNOOw8^ASCUdJl8@{LAH=djOyvs8X5n+SlX)yZU>2#k-l>_H7T&Qqn ztWrW*-yYnK=~bKeX?HYG`P;7gUb)$X0_E+Mxt2p<+tB`$4-Ey^iuZ#{?5c&Q)QzMR zyYo-Xgk5PaM^eOVdS5XQ!Z3$TE<`s*jKN|G{1UBpC9C*6$s#=(&}d3e=y{)73&Z}Q1(tLtSU0px>;A_-jFrTF}^ zhI5AESf`b*3GL(7PwXBlfY9x=PKCp^@L%tr=DhW>GEY~68yto^ab+JysDJ-3pWg8ft+O+;@p>xlp%HE$>*XFL@)_(_ zZm&;P!NG5C*DKGSb-F*hRR>m`VvL96BdX*0oB}Q|a|Kn?S8O_MZS{=VJwMGO*dLzl zyB3yA+tB#ej`33b46b3Y@?qu>TE3BgrJYs&0Coe%$q6?F=5(Y`-O*9ni;ArCm&er( zGj;eV_rv12U%v$pClA*SJE9`;H1SFk-eb+JH&YAK8Eh6;tDL_!XVfP$yV&KM9N#ml zQg7^9Aeoy!7I;Bl8&U1gwK+9`Sz^(=Ce~0}xm1(#EoE@H?0Hxt>cuntr$pYEn*nQ| zd#gVF^oBBpy-vzvb$uT=3^LG+FMX$4DmVC)NZEz*E2kF8VnWp%=}(6dYr;wJn=M?Xq$oOmlJ; zA3FG7rCunwnN9=`ab0o?=!B^Ih~Y+=m}ytptNA;SV|BJXoQ;N)-($mB%sGF~0r@Er z*EBNU^Y?9&19^2`tp1k_@4-$OAw>xeo|SPS;6 z%N{(RZP8H9+md%D$6V9vZf?OTx|_p`S@b*rjYdtkbvTxczeq6iz3Dxte14RrdqaLz zq%Eyhdhd+b-0~|ix>Gr7PbnX;$6ubIL$vlWWVd8ZgWmVe7QZf}SSf^@d7;7WM&OHF z$6dpMF{~%GPyp!%fX8|uNkY8?@B6_@CVqBy0w~A+0zGU{_yF8U_aLHGn=SfVR?j%o zFfTSo7#k>41R@XCuU*fatEW#%z21Ggin5F8_#n^L7?dY?e{MzwKhHm%72Z1!bs(SP z{LK)BB`Srcwkfu0*13jpT#WjyF5<&Se^z;1US2wV>%n{Z0YsM_Q_=WO1y9B`x>y>m z#hJk2zs1>b3GO<*?KJmTKm5ki=5lnD&^Z%E#wtbWPF$fWvb*0(+T*P)IkXcFiftCN zatu1G{O#;q_M^g_^P;+r8ZdbPNqA@$*XnmVf&Nbqm}#yJRmYH~`v7&0kh+)C)EqEJ z&^EjP3Io)JClov)>F5X{7pJ*6tZQ<_iQmMxk4s}67{>|b)i8*ZXtQl6D~N|K-`8C> zhZxEuj8-BuZjeCs8TQD}rh|dWZer8q1J5?;4+*NXOkGxQ&ywkn;nX`At%{>&e>?Be zt*(5V$@$%IzP{DFMEmVU!>iPsa|=8^mx;RDC8^ivYGj_s$YJqaa?l+JF?J|dF-j{+ zBPeX{_`;7)$RL&d_HpnHoMa1Lp}YM$YHHMTMMrGL^Jxub<3!E|bx-&XY-AMe%HE;k6{(!_%@ zcaNVThAsh-kX9)P6&0yL5D)~VQyQc}l#tMo4k;xB6oFUiR7yfR1QC#C5D9}0Q9$xO z=e_S*_x|o5cdZ-#=hB%ubI#uT`R-@W_wyadp+hXdk%Iz9i%s7KW@PN_>&$AqD-D_^ zIQ>>N^gPz^yp~jqMQT_xN+H&Q3u#=@kwR6InxyaDUt6t_@B7KuJ*(V8mPKH;wLkEr zcZ}vlrS(sW`o(8et1tY{u207dAb8dw>6ygpkF>`R@(GWqWQV|ecQZ7Wl;+rO6A7kzH`aOL);RQcu$-$e!G8IQ>6)o+246cYM$4{+b+zU_+V z-(rXL5EUF8orMeSrQb6yZqKfB7Nvpm!ZT&{X8IH?c3VDHPqh)bK8_KI^i z`akZ#=H*|Gvym)vWMJEzH_%&97a_PC4k{l!) z$K19Fl~2UU8%N*q7)qRA6S@#mUobDeQ{fizKrb!HX0qY%+~O%vt_Nj{)CZQP`&O?0 z7tLH-IecO)?5l7fV(H+X@A(Un=@=ZBDC*QI9^w`&VF1VxzhVl5I^~74fS4h8MHg6V3=e?wx3Sa9G~M_Hp==jWPzc zItV3p-KC&-yL;xml9EP5^6kmm-M~6f|2SUE+@;p&n zQ(R!KtNl$vqJZZn-`>ul78yHDi}T;_7ggn$=>J$ze<7%4zs&0OMb-_7l(zawdD~?& zd6=us?T2fVqF_sxU_ifAWA}GYoz9nrmx@`SeH3E+SI0{?+UeQntRNbz#X8w#75$yf zPB}TO{)k}VI`YHG-+PgQDe((or*qS$|4;znstEoW$A(l9xC^gUkz%pD7cPt}c|F$* z19ZoLM8!R@b7&bF+Si!Ab55~M2oLAD`pv_2fUKeeCe%~8T*W7sY#p2wYb)AegN7i5 zm)t41_7fgnIh1xuP5)Zd!M9d-JMde!E3QM|@Od9gx~RuX)6N!Ru9YUu+1#~~laWOo zn=|=w(~DR8=NJmnVz&6`&Y{NKNaa}l19Sge;%4J}+*Q>?hokq}Cx;x)MPVDke*%s= zE8wza2VA*w1?Gdo;lVxz0TPIcf&vCW8X6sNx=Mx(!T_|wD{UmbwRT-#77`;*BvEEOiTE%WIl# zQCCxQUzv~^=w%T##Tgs3`3D3ru(3sg8DkoVp^AWDr9XN!6r8J6K+wvLZwA{F3Kx}d z89xV30}dc5pSAnY2&>?NEYZ{O@Z6doI~7+_l*1Yh4LH`;x3oS>h-S}=NDtG;^T=(x z`pSzyyFmFjwem!Ox167y6Z9DhHN%@~O|ElSIw2E@!zrQdlUOguka#VH(Pv&XZq7T5 zTrn${=Vs6ez~x*BA8B_fGQ&@D<8Fx`i_II)k>oUaTO=x4Id;c>?VLDDdIVFJ)6xqF z8rLs2rBI+R1x5gBuoDmvXav7*ne*70yDJl8cb&n@2q?^lfPKC!lxPKJAe7xKBfHoT zb0X&<4{sJ>-~S95X!T#KeV-=vGVNBBZSH zTq9C^%f=P6*ozplprVM^Q8RT(sSn;r>FYMSDF_dLMh&|$28Q@2mIy!m2ahvXIa?g)}!`h9C10 zYA?ko1TbD~FrW@dX+YXWKDceIkzJz3$`Ipc7IFQO8FTqQMI(c&5~cyJRN)HvoCd?} zF!`zZQ)XucE+zfEJk`!R)$XwFF;IOo&U0&5?Hev_5?4#siaU0MSYV>i{1z|oDeG?M z7R25m5V7w@QZCmSKB?rW_P;^xm*R(Cn*CnYee+=@F@7`XAuSy-W(#xV>awS3PXT36 z_9CIOVqs@QV_p#3vXI$#He=4d2$Bk9&Vmztu+ zz4HMfJ`XN@NzLqFiWDM_Td$FWYr;?H3~4SNVCT9%#8S+OR{r!nCX!zBMpr$W8-7Yu zLDu@19e=56!PsE3^mSsoUP(xl_cBjKndkYrd{JMQ(*$E&NkIT1qrfP;d6u@}dP8ba zhG_cM0S7fUqpoo~y}O}hSBy^JBgWMZSzrfHlQ8+(qQA)~6`73j@XfHjC@cCx>foxd zt8azrKe5BRcFP!-i{d|>y?>Z~gh=Ma%4)rPxa0O4+0 ziBG;sd%C#irvxIY`NoRB8Y|9C`KE4vyUdHxZNgtSX*|Vb-+y$?!JuM!nod>fV;q}; z3GG*N#MPGQUdoK85$6=4Y5TC?&2~fgkwfd_=zV)?_Am<46<(C+~r*K=T)ggiul@e`bd-WFW)>ku@UE8we?WxWN7qJm$pWu zeNSOAghX-ng^r8)pyRG|;VMhT4n0XmR&|oN`TjlTNQI$O>iXY}MWj>rckj=Z)kLOd=J4m(A=+O^ zNCNg3`MepgFY1TN9TsbBy|DilX7PJO#d^B$bYj$L8Eq+U$@HY;u2z@4iS0LaE6ZIk zevhX%$PaANY`|&The_dAIb|mbDz~htB%YNo@Q2Eo(2mlRl*wD#a@SRJ3Dn!(f23p_ zi|{b)CZ&>wI5ss2&wV`Yi6y?FWk1RGU?geRe_f8ocJoS4gI#rUt!~K0f!Rs3Q?p(! zr$79jo_zg%QD^MucSh|){ll(O?`3z z$IP66JB=yq$$JaG$@lACHkT>bpe{U0T@b*qX>a@IhrK1*aP^H(qJ3Bu=2SuFGD}uB zPi$(*iCn7^{Lu1n;&&yT{w!HhR98)o1T}V@cv=%v#%}=mpbZFederlGp&TQnM}Q=eGnixYWgcKF)$l-?k9h@|MGmAZoq=Jn64HG8(4 zTpHhXx76hc%J)zsu{PE^lqut5w-OOgw$@Q2zfJ>FuM*_eva;_)>}>%EZiXthNDFe zFM4tYJ&C!tcUheGHFl$-nz-*zrG{LdO|D!hYJfp`i+F)@o94K#u9@Mk;IFQviyBv3 zx(YZq1AQY2lSS#{V$c$tN3IUdOZ)Yv;xvMktd0DXUf4~xo&U-4 z)-_2q*7MB+qZl*JMZ3e-A~(}dbPI`yDB0WR3eFnpJfXpB&$d2>y^K|64}n0ivVCuJ zCQPKezuWrrl6lgr?mJ&=jA~?tdk$=+eD4*e?RUSvdoQV&{YK*L!iXSTA-{w~KTr36 z|ADU-?SxG!TAOV_Uol9Ap59P>;)1z*`*stcu%>|OaN}S80TpLi?GCR`qcTuw@FF#S zYYu$6xLU8}sfC5er%#V@T)In+#3d((0gQ@QMur0rdgL@TZR%q6!61^PN1i$_YpyaN zogY550+|+I8)U$lkpaXxILyneUEU`Fog@r?_0K0DKn{JbvB3 z`E$o>8l=QivcOa)27DumzMcXeF%AG)(A0hsGj z?~3=K3%;?rLyoO&Z3?{c7GSR5UatC*(Ql7Zv5rw={S2Nv1B@R6S&o?duU{#ux@Bi) z1xRT$|7COKa}>16W{avO0}BcYqMg(>A3uBcsI^rILJ8>M<^}2(TmcT(pku}SQ*g>y z1Hlp{!rb4PKLrOK)zudPz$88VjN|w&G8qJSSxH638Vvgg64ZnT7c?*&8G-0haC;B1 zjuJp3gX`@4rr|}Y?1-(ByL% zI0?L@Pvvgl$+;oGWLWQ8u`i@d`wiX@s81>$9%ryLY`TjQ9kE<0aKnI43&!b7qt&5< zx}~J0@#olRV5`?7_Yy)lP)s3wapP4Tslv4BUa5&?S#2#XOoWov`SI?dA!hA7rroX8 zDwV|d58=K!e|d+ZjFsUx&wKm(42+CAiw;&EoQa>qSIV`6jf>g=q7Hkr_E*|@n$-B{ zyBps%;AVjL_vtbnIXMmhk3}6~rq%QS*{afGe*bZ0lXHHggbQq$YhakkEH7sQ!+y!T z9dPN(LR5ikj`5SfIw98J>QxH4?I~iQB{RXTKnLR*Ja%3wsju(1rR|f zZD6Sq9O_MgPXQ4A_LswhFxVd|Zxt$3Lo_=A@n&_eog?`iUW^u5cuMYZ?Qbu{Znhf&LnsqZH(7tEEg9Z2Wbf01K>C40@l*ftIS4p_1)zWy0AZj=wRUJ&FmQ6Z{z!dtIw2up z3cP^XFJO$}AuR;Bz`W5b6%~wKM$H#;E?**_w9Lx9)zIY6su z_~P-xAxD>+8mP)i1K17z(sNoAVupss0CYY@6iTBac=7;^M+b%`CKhzUrL80Wf)w)mzZfSze_n^Yuc=qb zW|!5}BF6+Q5g==x1gu*qun;X8@ffsd$8gEVpzGDz7(`Yu80o)xM&`b~HVtd_=(_;F zXaf3$Q3(R*F`y%Mz_h&$0~;`VB-druNdWib>gDJ&-5i2;z`DA-(WSHz)^sRj&A``j z{sRrw@NkiABP`Cz7YHBd@;FprK&TZ$?`rfXk?R-}H3tVlfNsWYZ~JuGoPlfvPOxg8 zg|i^r)%?E|6q^aMctc-56eJ9~Y72;osldH}Xp&gSbb|&PAKXpHbN}?Q21L*n96ShV z>wolT&q+iS+Sed)fb|#%$WEXDMZlSko@ZpQ-0p|MM}VwG(VZx&>7}+Hq}tg=<*2~du#td|IC<(6pM(Sh869UUxKSa3 zfdR-dm7mZ?Z5i;yohPapV4PJ0{cH>$1LG2)sc0w@dh9jnzoAhFQ6q*mck||-!UBxe zxr4nw;g24b&)-4y;p<>KY4WfCq8m`@hyFicXreSF1VL%;u;zkHzyRQ}e=3w657`S?r1Rs)Q0=_Gr)?Qf`{1v|7079M$8wl>iD_A zs*Unmx(qA+BEv5}l%nFC2ZBT_5{R;`P=pgsd zg^`E0akci(rOEwWP;}-0SAAY|@jv4WOdxTfi~AV_g?BEXTUIs)fc?a&@U|{vq(uxh8a>2-`2tFW6ahaO1CTti2&$7| z69OzrECNy$5-7+mEiIv5D}n^RzdcQsCVPQ5s}{YUoO3{u2hP4V0D9195LEI*5>m_3 zu_FB_$VHd|i7*PejgSdtPk9fpf7<|~#2~#SHyi_UKyifPm3BNiH8s+E@*Www`a@nNHI^9R78a(0=UR~z07ond zNl7yh`zJvt>9_BDbL%>lJR@uw(OZ-s0-1pz^I@}v28hCf00g&K#Oz3{w6y>pe2BwXd-`;H;e5e<!{QDV6k2Yihz=&VbrO+IFM6S`N`MW?b zojLC2Hd1{2t4B-_AMcOWe-2fA;F|x_nM=wco#F@j7dGB Date: Thu, 2 Sep 2021 14:26:23 +0300 Subject: [PATCH 0742/2080] Updates on files Added changeset on workflow --- charts/Chart.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/Chart.yaml b/charts/Chart.yaml index 05a38ccedd..86331b3d44 100644 --- a/charts/Chart.yaml +++ b/charts/Chart.yaml @@ -4,12 +4,12 @@ appVersion: "1.0.1" created: "2021-09-01T06:23:41.21262323Z" name: backend-android-patterns description: | - Java Design Patterns documentation + Android Design Patterns documentation home: https://alexander-rogalsky.gitbook.io/android-patterns icon: https://d1j8pt39hxlh3d.cloudfront.net/emoji/emojione/5.0/png/unicode/32/1f4d2.png type: application keywords: - - java + - android - design patterns - documentation maintainers: From 6f47343fdf0adf9deff336c6b1a30ecc63f2c0bb Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 3 Sep 2021 00:36:56 +0000 Subject: [PATCH 0743/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..8fb0643046 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 30 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 59f5a1ec73e7abb46c6ff63268d448ea754804cb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 3 Sep 2021 01:47:57 +0000 Subject: [PATCH 0744/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5e93d331c8..59e6d18136 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Help with Android Emulators](https://www.reddit.com/r/androiddev/comments/pg4q0p/help_with_android_emulators/) -- [Starting with Compose. Things I'm not comfortable with so far.](https://www.reddit.com/r/androiddev/comments/pg2lux/starting_with_compose_things_im_not_comfortable/) -- [A Bit of Gradle Housekeeping - zsmb.co](https://www.reddit.com/r/androiddev/comments/pg2itm/a_bit_of_gradle_housekeeping_zsmbco/) -- [37 days since Jetpack compose was released, what is your learning state?](https://www.reddit.com/r/androiddev/comments/pg1hlm/37_days_since_jetpack_compose_was_released_what/) -- [Android Studio - Arctic Fox | 2020.3.1 Patch 2 now available](https://www.reddit.com/r/androiddev/comments/pg0j11/android_studio_arctic_fox_202031_patch_2_now/) -- [The Shift Left in Mobile Engineering](https://www.reddit.com/r/androiddev/comments/pg06g3/the_shift_left_in_mobile_engineering/) -- [Is there away to use Play Store subscription as reward?](https://www.reddit.com/r/androiddev/comments/pfxsaa/is_there_away_to_use_play_store_subscription_as/) -- [Is ban of Google dev account after 3 app suspensions Truth or Myth?](https://www.reddit.com/r/androiddev/comments/pfx28b/is_ban_of_google_dev_account_after_3_app/) -- [Nested RecyclerView Vs. Two different view types performance question.](https://www.reddit.com/r/androiddev/comments/pfwo4r/nested_recyclerview_vs_two_different_view_types/) -- [Can't download Android Studio installer from official site.](https://www.reddit.com/r/androiddev/comments/pfv3rb/cant_download_android_studio_installer_from/) +- [Should I pursue this freelancing opportunity?](https://www.reddit.com/r/androiddev/comments/pgv36a/should_i_pursue_this_freelancing_opportunity/) +- [Any custom roms for Galaxy Note 20 Ultra U.S?](https://www.reddit.com/r/androiddev/comments/pgu8yd/any_custom_roms_for_galaxy_note_20_ultra_us/) +- [New android dev setting up a Google Play Console account – What do I use for "proof of organization"?](https://www.reddit.com/r/androiddev/comments/pgrru3/new_android_dev_setting_up_a_google_play_console/) +- [Camera SDK Recommendations](https://www.reddit.com/r/androiddev/comments/pgp39z/camera_sdk_recommendations/) +- [Pulling my hair out with WebView problem.](https://www.reddit.com/r/androiddev/comments/pgoivz/pulling_my_hair_out_with_webview_problem/) +- [Appwrite introduces Realtime API to its Open Source Firebase Alternative](https://www.reddit.com/r/androiddev/comments/pglcb9/appwrite_introduces_realtime_api_to_its_open/) +- [How closely to tie ViewModel state to the view?](https://www.reddit.com/r/androiddev/comments/pgjqdg/how_closely_to_tie_viewmodel_state_to_the_view/) +- [What is the "minimum viable" set of tools to get from point A (develop the app) to point B (publish the app in Google Play)?](https://www.reddit.com/r/androiddev/comments/pgjm6q/what_is_the_minimum_viable_set_of_tools_to_get/) +- [Delaying camera footage - best approach?](https://www.reddit.com/r/androiddev/comments/pgib6l/delaying_camera_footage_best_approach/) +- [Do you use buildSrc, Version Catalogs, or just the "conventional" method to manage dependencies?](https://www.reddit.com/r/androiddev/comments/pgi630/do_you_use_buildsrc_version_catalogs_or_just_the/) ### *InfoWorld posts* From 779afe6cab7b40ecfd9da579a8c2667e4ca5925b Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 4 Sep 2021 00:37:14 +0000 Subject: [PATCH 0745/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8fb0643046..28290ae797 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 51 + + 63 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 27 Performance From b7eca9745b92a34d4cc4bf1747daa0642288dc3a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 4 Sep 2021 01:48:32 +0000 Subject: [PATCH 0746/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 59e6d18136..53257ccdb7 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Should I pursue this freelancing opportunity?](https://www.reddit.com/r/androiddev/comments/pgv36a/should_i_pursue_this_freelancing_opportunity/) -- [Any custom roms for Galaxy Note 20 Ultra U.S?](https://www.reddit.com/r/androiddev/comments/pgu8yd/any_custom_roms_for_galaxy_note_20_ultra_us/) -- [New android dev setting up a Google Play Console account – What do I use for "proof of organization"?](https://www.reddit.com/r/androiddev/comments/pgrru3/new_android_dev_setting_up_a_google_play_console/) -- [Camera SDK Recommendations](https://www.reddit.com/r/androiddev/comments/pgp39z/camera_sdk_recommendations/) -- [Pulling my hair out with WebView problem.](https://www.reddit.com/r/androiddev/comments/pgoivz/pulling_my_hair_out_with_webview_problem/) -- [Appwrite introduces Realtime API to its Open Source Firebase Alternative](https://www.reddit.com/r/androiddev/comments/pglcb9/appwrite_introduces_realtime_api_to_its_open/) -- [How closely to tie ViewModel state to the view?](https://www.reddit.com/r/androiddev/comments/pgjqdg/how_closely_to_tie_viewmodel_state_to_the_view/) -- [What is the "minimum viable" set of tools to get from point A (develop the app) to point B (publish the app in Google Play)?](https://www.reddit.com/r/androiddev/comments/pgjm6q/what_is_the_minimum_viable_set_of_tools_to_get/) -- [Delaying camera footage - best approach?](https://www.reddit.com/r/androiddev/comments/pgib6l/delaying_camera_footage_best_approach/) -- [Do you use buildSrc, Version Catalogs, or just the "conventional" method to manage dependencies?](https://www.reddit.com/r/androiddev/comments/pgi630/do_you_use_buildsrc_version_catalogs_or_just_the/) +- [What specs should I have to make Android apps?](https://www.reddit.com/r/androiddev/comments/phhblj/what_specs_should_i_have_to_make_android_apps/) +- [System bit upgrade](https://www.reddit.com/r/androiddev/comments/phgl78/system_bit_upgrade/) +- [Is it legal to use other apps and website tools in my app?](https://www.reddit.com/r/androiddev/comments/phg5pj/is_it_legal_to_use_other_apps_and_website_tools/) +- [Open library of Composables like pub.dev is for Flutter](https://www.reddit.com/r/androiddev/comments/phdegh/open_library_of_composables_like_pubdev_is_for/) +- [LiveData vs Kotlin Flows](https://www.reddit.com/r/androiddev/comments/ph9iqs/livedata_vs_kotlin_flows/) +- [Android Studio Bumblebee Canary 11 available](https://www.reddit.com/r/androiddev/comments/ph977b/android_studio_bumblebee_canary_11_available/) +- [Why did adding this weird line of code make my code for widgets start working as expected? What does it do?](https://www.reddit.com/r/androiddev/comments/ph92hr/why_did_adding_this_weird_line_of_code_make_my/) +- [Android - Starting custom gradle task after build with Gradle 7](https://www.reddit.com/r/androiddev/comments/ph5x8j/android_starting_custom_gradle_task_after_build/) +- [Suspended App in Play Store](https://www.reddit.com/r/androiddev/comments/ph20vz/suspended_app_in_play_store/) +- [QR scanner library](https://www.reddit.com/r/androiddev/comments/pgyb21/qr_scanner_library/) ### *InfoWorld posts* From e4fc3535f98052310145be847828deccfbd99c68 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 5 Sep 2021 00:40:22 +0000 Subject: [PATCH 0747/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 28290ae797..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 29 Performance From 4572805b05c0d80bbe6e29dd5acbb29601c814c7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 5 Sep 2021 01:50:37 +0000 Subject: [PATCH 0748/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 53257ccdb7..af77621dc2 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What specs should I have to make Android apps?](https://www.reddit.com/r/androiddev/comments/phhblj/what_specs_should_i_have_to_make_android_apps/) -- [System bit upgrade](https://www.reddit.com/r/androiddev/comments/phgl78/system_bit_upgrade/) -- [Is it legal to use other apps and website tools in my app?](https://www.reddit.com/r/androiddev/comments/phg5pj/is_it_legal_to_use_other_apps_and_website_tools/) -- [Open library of Composables like pub.dev is for Flutter](https://www.reddit.com/r/androiddev/comments/phdegh/open_library_of_composables_like_pubdev_is_for/) -- [LiveData vs Kotlin Flows](https://www.reddit.com/r/androiddev/comments/ph9iqs/livedata_vs_kotlin_flows/) -- [Android Studio Bumblebee Canary 11 available](https://www.reddit.com/r/androiddev/comments/ph977b/android_studio_bumblebee_canary_11_available/) -- [Why did adding this weird line of code make my code for widgets start working as expected? What does it do?](https://www.reddit.com/r/androiddev/comments/ph92hr/why_did_adding_this_weird_line_of_code_make_my/) -- [Android - Starting custom gradle task after build with Gradle 7](https://www.reddit.com/r/androiddev/comments/ph5x8j/android_starting_custom_gradle_task_after_build/) -- [Suspended App in Play Store](https://www.reddit.com/r/androiddev/comments/ph20vz/suspended_app_in_play_store/) -- [QR scanner library](https://www.reddit.com/r/androiddev/comments/pgyb21/qr_scanner_library/) +- [I need resources....](https://www.reddit.com/r/androiddev/comments/phyjd5/i_need_resources/) +- [Annoying that the icons of Studio and the emulator are difficult to discern.](https://www.reddit.com/r/androiddev/comments/phx16t/annoying_that_the_icons_of_studio_and_the/) +- [Where to go from here](https://www.reddit.com/r/androiddev/comments/phu9x4/where_to_go_from_here/) +- [App Feedback Thread - September 04, 2021](https://www.reddit.com/r/androiddev/comments/phr4g1/app_feedback_thread_september_04_2021/) +- [Is the Input NDK API the worst API ever conceived?](https://www.reddit.com/r/androiddev/comments/phpyum/is_the_input_ndk_api_the_worst_api_ever_conceived/) +- [I want to build an app which uses Firebase. I have previously built an app for a school project in Java and found it very convoluted and needlessly complicated, so I am thinking about learning Flutter - is this a good idea (if I already know basic android SDK)?](https://www.reddit.com/r/androiddev/comments/phpk6q/i_want_to_build_an_app_which_uses_firebase_i_have/) +- [What are the core differences between Jetpack Compose and Flutter in terms of UI rendering?](https://www.reddit.com/r/androiddev/comments/pho82v/what_are_the_core_differences_between_jetpack/) +- [Google Play team rejected the application due to SMS/Call permission](https://www.reddit.com/r/androiddev/comments/phnlwe/google_play_team_rejected_the_application_due_to/) +- [Mocking API for efficient development with mockoon](https://www.reddit.com/r/androiddev/comments/phk5kg/mocking_api_for_efficient_development_with_mockoon/) +- [Android equivalent to iOS's SceneKit for PBR?](https://www.reddit.com/r/androiddev/comments/phjmzb/android_equivalent_to_ioss_scenekit_for_pbr/) ### *InfoWorld posts* From c3e13ba623c679f9f95d89c943645f49fd1b920e Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 5 Sep 2021 23:58:28 +0000 Subject: [PATCH 0749/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 35949 -> 46796 bytes traffic/views.csv | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 8bf6620f93..f0a16ecace 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -70,4 +70,11 @@ _date,total_clones,unique_clones 2021-08-26,226,34 2021-08-27,175,25 2021-08-28,86,23 -2021-08-29,87,23 +2021-08-29,94,25 +2021-08-30,292,43 +2021-08-31,554,42 +2021-09-01,240,32 +2021-09-02,367,39 +2021-09-03,126,28 +2021-09-04,216,27 +2021-09-05,131,31 diff --git a/traffic/plots.png b/traffic/plots.png index 7849201fb36153c46899b1fd7e41b686bd071554..db5b84267d026ec99f58ee5a923bad486d5491a2 100644 GIT binary patch literal 46796 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 Date: Mon, 6 Sep 2021 00:41:30 +0000 Subject: [PATCH 0750/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..28290ae797 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 63 Performance From eab87c444abd4a74438c947d1f07b41213f11319 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 6 Sep 2021 01:53:40 +0000 Subject: [PATCH 0751/2080] Updated with the latest blog posts --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index af77621dc2..b149bd1076 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I need resources....](https://www.reddit.com/r/androiddev/comments/phyjd5/i_need_resources/) +- [When using compose what do you prefer to setup navigation? Compose navigation or traditional navigation component ?](https://www.reddit.com/r/androiddev/comments/pimdb0/when_using_compose_what_do_you_prefer_to_setup/) +- [How many of you guys look or develop apps for wear os platform ?](https://www.reddit.com/r/androiddev/comments/pilmt1/how_many_of_you_guys_look_or_develop_apps_for/) +- [How to have a simple queue/list/pipeline design to execute nested list of background tasks/works in Kotlin/coroutines?](https://www.reddit.com/r/androiddev/comments/pik5w5/how_to_have_a_simple_queuelistpipeline_design_to/) +- [How does a launcher decide if it is required to start an activity or resuming the previous task?](https://www.reddit.com/r/androiddev/comments/pihd3p/how_does_a_launcher_decide_if_it_is_required_to/) +- [How To Prevent Screen Timeout Programmatically?](https://www.reddit.com/r/androiddev/comments/picg07/how_to_prevent_screen_timeout_programmatically/) +- [Streamlining android development with Charles](https://www.reddit.com/r/androiddev/comments/pia2nx/streamlining_android_development_with_charles/) +- [Why are review not showing on my app?](https://www.reddit.com/r/androiddev/comments/pi9tko/why_are_review_not_showing_on_my_app/) - [Annoying that the icons of Studio and the emulator are difficult to discern.](https://www.reddit.com/r/androiddev/comments/phx16t/annoying_that_the_icons_of_studio_and_the/) - [Where to go from here](https://www.reddit.com/r/androiddev/comments/phu9x4/where_to_go_from_here/) - [App Feedback Thread - September 04, 2021](https://www.reddit.com/r/androiddev/comments/phr4g1/app_feedback_thread_september_04_2021/) -- [Is the Input NDK API the worst API ever conceived?](https://www.reddit.com/r/androiddev/comments/phpyum/is_the_input_ndk_api_the_worst_api_ever_conceived/) -- [I want to build an app which uses Firebase. I have previously built an app for a school project in Java and found it very convoluted and needlessly complicated, so I am thinking about learning Flutter - is this a good idea (if I already know basic android SDK)?](https://www.reddit.com/r/androiddev/comments/phpk6q/i_want_to_build_an_app_which_uses_firebase_i_have/) -- [What are the core differences between Jetpack Compose and Flutter in terms of UI rendering?](https://www.reddit.com/r/androiddev/comments/pho82v/what_are_the_core_differences_between_jetpack/) -- [Google Play team rejected the application due to SMS/Call permission](https://www.reddit.com/r/androiddev/comments/phnlwe/google_play_team_rejected_the_application_due_to/) -- [Mocking API for efficient development with mockoon](https://www.reddit.com/r/androiddev/comments/phk5kg/mocking_api_for_efficient_development_with_mockoon/) -- [Android equivalent to iOS's SceneKit for PBR?](https://www.reddit.com/r/androiddev/comments/phjmzb/android_equivalent_to_ioss_scenekit_for_pbr/) ### *InfoWorld posts* From dbc9cc6f92f92ed3b0bcde3ded1202e710bac7b8 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 7 Sep 2021 00:35:52 +0000 Subject: [PATCH 0752/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 28290ae797..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 63 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 30 Performance From d5484db9f1c567ce611dcc2e9431fdb8b2abc817 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 7 Sep 2021 01:45:09 +0000 Subject: [PATCH 0753/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b149bd1076..1ca9d2a191 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [When using compose what do you prefer to setup navigation? Compose navigation or traditional navigation component ?](https://www.reddit.com/r/androiddev/comments/pimdb0/when_using_compose_what_do_you_prefer_to_setup/) -- [How many of you guys look or develop apps for wear os platform ?](https://www.reddit.com/r/androiddev/comments/pilmt1/how_many_of_you_guys_look_or_develop_apps_for/) -- [How to have a simple queue/list/pipeline design to execute nested list of background tasks/works in Kotlin/coroutines?](https://www.reddit.com/r/androiddev/comments/pik5w5/how_to_have_a_simple_queuelistpipeline_design_to/) -- [How does a launcher decide if it is required to start an activity or resuming the previous task?](https://www.reddit.com/r/androiddev/comments/pihd3p/how_does_a_launcher_decide_if_it_is_required_to/) -- [How To Prevent Screen Timeout Programmatically?](https://www.reddit.com/r/androiddev/comments/picg07/how_to_prevent_screen_timeout_programmatically/) -- [Streamlining android development with Charles](https://www.reddit.com/r/androiddev/comments/pia2nx/streamlining_android_development_with_charles/) -- [Why are review not showing on my app?](https://www.reddit.com/r/androiddev/comments/pi9tko/why_are_review_not_showing_on_my_app/) -- [Annoying that the icons of Studio and the emulator are difficult to discern.](https://www.reddit.com/r/androiddev/comments/phx16t/annoying_that_the_icons_of_studio_and_the/) -- [Where to go from here](https://www.reddit.com/r/androiddev/comments/phu9x4/where_to_go_from_here/) -- [App Feedback Thread - September 04, 2021](https://www.reddit.com/r/androiddev/comments/phr4g1/app_feedback_thread_september_04_2021/) +- [European Android devs: What about your region should I know as an Android developer from the USA?](https://www.reddit.com/r/androiddev/comments/pjcurs/european_android_devs_what_about_your_region/) +- [Historically iOS only, but wondering if Android is better for this 'Dad's Carputer' idea.](https://www.reddit.com/r/androiddev/comments/pjcg8j/historically_ios_only_but_wondering_if_android_is/) +- [Verifying ID with Google Play](https://www.reddit.com/r/androiddev/comments/pjc161/verifying_id_with_google_play/) +- [Is it possible to input a number and change it to 2 different numbers in 2 different textboxes upon clicking a single button?](https://www.reddit.com/r/androiddev/comments/pjavcl/is_it_possible_to_input_a_number_and_change_it_to/) +- [Free math application to simplify fractions and find prime factors](https://www.reddit.com/r/androiddev/comments/pj8pzt/free_math_application_to_simplify_fractions_and/) +- [Going back to the market after 2 year hiatus](https://www.reddit.com/r/androiddev/comments/pj7un5/going_back_to_the_market_after_2_year_hiatus/) +- [Analog Watch Face for Wear OS](https://www.reddit.com/r/androiddev/comments/pj6bgq/analog_watch_face_for_wear_os/) +- [update fragment through list in viewmodel](https://www.reddit.com/r/androiddev/comments/pj6b0k/update_fragment_through_list_in_viewmodel/) +- [libraries to use with API (parsing JSON)(NEW TO DEV)](https://www.reddit.com/r/androiddev/comments/pj60qq/libraries_to_use_with_api_parsing_jsonnew_to_dev/) +- [App that would speak when button is pressed](https://www.reddit.com/r/androiddev/comments/pj60hr/app_that_would_speak_when_button_is_pressed/) ### *InfoWorld posts* From 6d1c49e8f45e085f83686be0dd16243dc46cdbb6 Mon Sep 17 00:00:00 2001 From: Alexander Rogalskiy Date: Tue, 7 Sep 2021 13:34:28 +0300 Subject: [PATCH 0754/2080] Updates on files Added changeset on workflow --- .github/workflows/helm.yml | 6 +- .markdownlintignore | 1 + .prettierignore | 4 + .stignore | 3 + .yaml-lint.yml | 26 +++++- Makefile | 28 +++++- README.md | 1 + charts/templates/deployment.yaml | 3 + charts/templates/secret.yaml | 8 ++ charts/values.yaml | 5 ++ docs/requirements.txt | 1 + k8s/backend/deployment.yaml | 1 - mkdocs.yml | 11 ++- okteto-pipeline.yml | 10 +++ okteto.yml | 33 +++++++ okteto/deployment.yaml | 148 +++++++++++++++++++++++++++++++ package.json | 2 +- scripts/docker-build.sh | 7 +- 18 files changed, 284 insertions(+), 14 deletions(-) create mode 100644 .stignore create mode 100644 okteto-pipeline.yml create mode 100644 okteto.yml create mode 100644 okteto/deployment.yaml diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml index ed3f27e507..d83e602594 100644 --- a/.github/workflows/helm.yml +++ b/.github/workflows/helm.yml @@ -13,7 +13,7 @@ jobs: id: prep run: | VERSION=$(grep 'version' package.json | awk '{ print $4 }' | tr -d '"') - CHANGELOG="https://github.com/AlexRogalskiy/java-patterns/blob/main/CHANGELOG.md#$(echo $VERSION | tr -d '.')" + CHANGELOG="https://github.com/AlexRogalskiy/android-patterns/blob/main/CHANGELOG.md#$(echo $VERSION | tr -d '.')" echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ') echo ::set-output name=VERSION::${VERSION} echo ::set-output name=CHANGELOG::${CHANGELOG} @@ -43,7 +43,7 @@ jobs: build-args: | REVISON=${{ github.sha }} tags: | - ghcr.io/AlexRogalskiy/java-patterns:${{ steps.prep.outputs.VERSION }} + ghcr.io/AlexRogalskiy/android-patterns:${{ steps.prep.outputs.VERSION }} labels: | org.opencontainers.image.title=${{ github.event.repository.name }} org.opencontainers.image.description=${{ github.event.repository.description }} @@ -54,7 +54,7 @@ jobs: org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }} - name: Check images run: | - docker buildx imagetools inspect ghcr.io/AlexRogalskiy/java-patterns:${{ steps.prep.outputs.VERSION }} + docker buildx imagetools inspect ghcr.io/AlexRogalskiy/android-patterns:${{ steps.prep.outputs.VERSION }} - name: Publish Helm charts uses: stefanprodan/helm-gh-pages@v1.3.0 with: diff --git a/.markdownlintignore b/.markdownlintignore index 3c3629e647..bb72b0179b 100644 --- a/.markdownlintignore +++ b/.markdownlintignore @@ -1 +1,2 @@ node_modules +tilt_modules diff --git a/.prettierignore b/.prettierignore index 4148ffbedd..8bfe3309a5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -14,3 +14,7 @@ coverage dist helm tilt_modules +okteto +charts +k8s +release diff --git a/.stignore b/.stignore new file mode 100644 index 0000000000..da23ba5edd --- /dev/null +++ b/.stignore @@ -0,0 +1,3 @@ +/.git +/node_modules +/tilt_modules diff --git a/.yaml-lint.yml b/.yaml-lint.yml index bd6b74765f..7de4621afe 100644 --- a/.yaml-lint.yml +++ b/.yaml-lint.yml @@ -4,13 +4,17 @@ extends: default +locale: en_US.UTF-8 + rules: # 150 chars should be enough, but don't fail if a line is longer line-length: max: 150 + allow-non-breakable-inline-mappings: true level: warning comments: min-spaces-from-content: 1 + level: warning braces: min-spaces-inside: 0 max-spaces-inside: 0 @@ -19,6 +23,24 @@ rules: max-spaces-inside: 0 indentation: indent-sequences: consistent - document-start: disable + level: warning + document-end: disable + document-start: + level: warning indentation: disable - truthy: false + colons: enable + commas: enable + comments-indentation: + level: warning + empty-lines: enable + empty-values: disable + hyphens: enable + key-duplicates: enable + key-ordering: disable + new-line-at-end-of-file: enable + new-lines: enable + octal-values: disable + quoted-strings: disable + trailing-spaces: enable + truthy: + level: warning diff --git a/Makefile b/Makefile index 1163e76648..f477edd5aa 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,8 @@ else endif IMAGE ?= styled-android-patterns +OKTETO_IMAGE ?= okteto/styled-android-patterns +DOCKER_IMAGE ?= alexanderr/styled-android-patterns TAG ?= latest # UNAME_OS stores the value of uname -s. @@ -107,12 +109,12 @@ helm-lint: # Run helm start command. .PHONY: helm-start helm-start: - helm upgrade --install backend-java-patterns -f charts/values.yaml --create-namespace --namespace webapp charts + helm upgrade --install backend-android-patterns -f charts/values.yaml --create-namespace --namespace webapp charts # Run helm stop command. .PHONY: helm-stop helm-stop: - helm uninstall backend-java-patterns --namespace webapp + helm uninstall backend-android-patterns --namespace webapp # Run helm package command. .PHONY: helm-package @@ -123,3 +125,25 @@ helm-package: # Run helm dev command. .PHONY: helm-dev helm-dev: clean helm-lint helm-package + +# Run okteto build command. +.PHONY: okteto +okteto: + okteto build -t $(DOCKER_IMAGE) . + okteto build -t $(OKTETO_IMAGE) . + +# Run local build command. +.PHONY: local-build +local-build: + python3 -m pip install -r ./docs/requirements.txt + python3 -m mkdocs build --clean --config-file mkdocs.yml + +# Run local run command. +.PHONY: local-run +local-run: + python3 -m mkdocs serve --verbose --dirtyreload + +# Run github pages deploy command. +.PHONY: gh-pages +gh-pages: + python3 -m mkdocs --verbose gh-deploy --force --remote-branch gh-pages diff --git a/README.md b/README.md index 1ca9d2a191..91deaf8643 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,7 @@ python -m pip install markdown-include 4\) Start the server at ***localhost*** by running the following command: ```shell script +python -m mkdocs build --clean --config-file mkdocs.yml python -m mkdocs serve --verbose --dirtyreload ``` diff --git a/charts/templates/deployment.yaml b/charts/templates/deployment.yaml index 42511ea779..46e71cd5e5 100644 --- a/charts/templates/deployment.yaml +++ b/charts/templates/deployment.yaml @@ -5,6 +5,9 @@ metadata: name: {{ $fullName }} labels: {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.deployment.additionalLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} spec: {{- if not .Values.hpa.enabled }} replicas: {{ .Values.general.replicaCount }} diff --git a/charts/templates/secret.yaml b/charts/templates/secret.yaml index bc8a4ad059..905f297c6a 100644 --- a/charts/templates/secret.yaml +++ b/charts/templates/secret.yaml @@ -5,6 +5,14 @@ metadata: name: {{ include "backend-android-patterns.fullname" . }} labels: {{- include "backend-android-patterns.labels" . | nindent 4 }} + {{- with .Values.secrets.additionalLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} data: BASE_URL: {{ default "" .Values.secrets.data.baseUrl | b64enc | quote }} + {{- if .Values.secrets.data.baseToken }} + BASE_TOKEN: {{ .Values.secrets.data.baseToken | b64enc | quote }} + {{- else }} + BASE_TOKEN: {{ randAlphaNum 10 | b64enc | quote }} + {{- end }} {{- end }} diff --git a/charts/values.yaml b/charts/values.yaml index 8ac94b1167..c9e384a36e 100644 --- a/charts/values.yaml +++ b/charts/values.yaml @@ -31,6 +31,11 @@ configMaps: secrets: create: false + additionalLabels: + app.kubernetes.io/component: vault + data: + baseUrl: "" + baseToken: "" ui: color: "#34577c" diff --git a/docs/requirements.txt b/docs/requirements.txt index 1b9099aa3c..47aa6e56bd 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -7,6 +7,7 @@ markdown-checklist>=0.4.1 fontawesome-markdown>=0.2.6 markdown-include>=0.6.0 pymdown-extensions>=8.2 +python-markdown-math>=0.6 mkdocs-material-extensions>=1.0 mkdocs-git-revision-date-localized-plugin>=0.9.2 mkdocs-awesome-pages-plugin>=2.5.0 diff --git a/k8s/backend/deployment.yaml b/k8s/backend/deployment.yaml index ea3f872dcf..f519d2f00d 100644 --- a/k8s/backend/deployment.yaml +++ b/k8s/backend/deployment.yaml @@ -122,7 +122,6 @@ spec: memory: "3G" ephemeral-storage: "3G" securityContext: - allowPrivilegeEscalation: false allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: false diff --git a/mkdocs.yml b/mkdocs.yml index c0e94843e0..e4c98eb0b7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -106,15 +106,20 @@ markdown_extensions: - pymdownx.mark: {} - pymdownx.critic: {} - pymdownx.inlinehilite: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#inlinehilite - - pymdownx.superfences: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#superfences + - pymdownx.superfences: # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#superfences + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_div_format - pymdownx.tabbed: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#tabbed - pymdownx.details: {} # https://squidfunk.github.io/mkdocs-material/extensions/pymdown/#details - pymdownx.emoji: # https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#configuration - emoji_index: "!!python/name:materialx.emoji.twemoji" - emoji_generator: "!!python/name:materialx.emoji.to_svg" + emoji_index: !!python/name:materialx.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg - smarty: {} # https://python-markdown.github.io/extensions/smarty/ - nl2br: {} # https://python-markdown.github.io/extensions/smarty/ - mdx_truly_sane_lists: {} # https://github.com/radude/mdx_truly_sane_lists -> proper indentation of md list items + - markdown.extensions.attr_list: {} # Other Settings strict: false # halt processing when a warning is raised diff --git a/okteto-pipeline.yml b/okteto-pipeline.yml new file mode 100644 index 0000000000..de81edba5e --- /dev/null +++ b/okteto-pipeline.yml @@ -0,0 +1,10 @@ +icon: https://okteto.com/icons/icon-384x384.png +deploy: + - okteto build -t okteto.dev/styled-android-patterns . +# - kubectl create clusterrolebinding kube-system-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default +# - kubectl create role access-secrets --verb=get,list,watch,update,create --resource=secrets +# - kubectl create rolebinding --role=access-secrets default-to-secrets --serviceaccount=kube-system:default +# - helm upgrade --install backend-android-patterns -f charts/values.yaml --create-namespace --namespace webapp charts --set tag=${OKTETO_GIT_COMMIT} + - kubectl apply -f okteto/deployment.yaml +devs: + - okteto.yml diff --git a/okteto.yml b/okteto.yml new file mode 100644 index 0000000000..1d60227670 --- /dev/null +++ b/okteto.yml @@ -0,0 +1,33 @@ +name: backend-android-patterns-v1 +image: okteto/styled-android-patterns +labels: + app.kubernetes.io/part-of: devops + app.kubernetes.io/component: documentation +environment: + - ENVIRONMENT=Development +# command: [ "/usr/bin/python3.8", "-m", "mkdocs", "serve", "--verbose", "--dirtyreload", "--dev-addr=0.0.0.0:8000" ] +sync: + - .:/docs +workdir: . +remote: 2222 +resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "128Mi" + cpu: "500m" +forward: + - 8000:8000 +persistentVolume: + enabled: false +lifecycle: + postStart: false + postStop: true +securityContext: + runAsUser: 1000 + runAsGroup: 2000 + fsGroup: 3000 + capabilities: + add: + - SYS_PTRACE diff --git a/okteto/deployment.yaml b/okteto/deployment.yaml new file mode 100644 index 0000000000..0ddf5a8ba5 --- /dev/null +++ b/okteto/deployment.yaml @@ -0,0 +1,148 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: backend-android-patterns-configmap + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: serverless + app.kubernetes.io/managed-by: okteto +data: + SERVER_PORT: '8000' + APP_NAME: styled-android-patterns +--- +apiVersion: v1 +kind: Service +metadata: + name: backend-android-patterns + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: serverless + app.kubernetes.io/managed-by: okteto +spec: + type: ClusterIP + clusterIP: None + sessionAffinity: None + ports: + - name: http + protocol: TCP + port: 8000 + targetPort: http + selector: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: backend-android-patterns-ingress + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: serverless + app.kubernetes.io/managed-by: okteto + annotations: + dev.okteto.com/generate-host: "true" +spec: + rules: + - http: + paths: + - path: /android-patterns + pathType: Prefix + backend: + service: + name: backend-android-patterns + port: + number: 8000 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend-android-patterns-v1 + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/instance: styled-android-patterns + app.kubernetes.io/version: v1 + app.kubernetes.io/component: function + app.kubernetes.io/part-of: documentation + app.kubernetes.io/managed-by: okteto +spec: + replicas: 1 + minReadySeconds: 60 + revisionHistoryLimit: 5 + progressDeadlineSeconds: 120 + strategy: + rollingUpdate: + maxSurge: 10% + maxUnavailable: 0 + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 + template: + metadata: + labels: + app.kubernetes.io/name: backend-android-patterns + app.kubernetes.io/version: v1 + annotations: + scheduler.alpha.kubernetes.io/critical-pod: '' + spec: + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + terminationGracePeriodSeconds: 30 + containers: + - name: backend-android-patterns + image: okteto.dev/styled-android-patterns + imagePullPolicy: IfNotPresent + terminationMessagePath: /etc/logs/termination.log + terminationMessagePolicy: File + ports: + - name: http + containerPort: 8000 + protocol: TCP + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: USER_AGENT + value: "k8s-agent $(WATCH_NAMESPACE)/$(POD_NAME)" + - name: LOG_DIR + value: "/tmp/logs" + volumeMounts: + - name: data + mountPath: "/data" + - name: data-tmp + mountPath: "/tmp" + resources: + requests: + cpu: 1 + memory: "2G" + ephemeral-storage: "2G" + limits: + cpu: 1 + memory: "3G" + ephemeral-storage: "3G" + securityContext: + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: false + volumes: + - name: data + emptyDir: {} + - name: data-tmp + emptyDir: {} diff --git a/package.json b/package.json index eb6eb35ed3..f183d54e4c 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "format:doc": "alex", "lint:text": "textlint docs", "lint:md": "remark-preset-davidtheclark", - "lint:yaml": "yamllint --strict -c .yaml-lint.yml *.{yml,yaml}", + "lint:yaml": "yamllint --strict -c .yaml-lint.yml --ignore=okteto/deployment.yaml **/*.{yaml,yml}", "lint:markdown": "markdownlint --config .markdownlint.yml docs/*.md", "lint:json": "jsonlint ./package.json --quiet", "lint:style": "stylelint --color --disable-default-ignores --allow-empty-input verbose **/*.{css,scss,sass}", diff --git a/scripts/docker-build.sh b/scripts/docker-build.sh index 98e210a477..006fd94c89 100644 --- a/scripts/docker-build.sh +++ b/scripts/docker-build.sh @@ -4,6 +4,9 @@ set -e cd "$(dirname "$0")" || exit 1 -# Build docker images +# Docker image params GIT_SHA=$(git rev-parse HEAD) -docker build -f Dockerfile -t styled-android-patterns -t styled-android-patterns:$GIT_SHA --build-arg VERCEL_TOKEN=$1 . +IMAGE_TAG="styled-android-patterns" + +# Build docker image +docker build -f Dockerfile -t "${IMAGE_TAG}" -t "${IMAGE_TAG}:${GIT_SHA}" . From 900cbd513f1c94de0054edb277ac479c249c817e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Sep 2021 10:50:42 +0000 Subject: [PATCH 0755/2080] Optimised images with calibre/image-actions --- traffic/plots.png | Bin 46796 -> 35618 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/traffic/plots.png b/traffic/plots.png index db5b84267d026ec99f58ee5a923bad486d5491a2..d98fc8a87a842419979d7f283d7aa75884ad2363 100644 GIT binary patch literal 35618 zcmbrmby!th8zz3}l14(h1qnfs?gk0zZbU%38w3Od>5^2sOS(H1q`OPHyJj8U_nY}< z{+VCk<#phkz4ux1tS9bu-z!8>UJ@Pk87c$iQ-VNXeIXE-C1gbK4#)7^8hAmm zmC|&8KrjuV|6%e3bIll{r`zMQpntOP8xcSNXx( zwh+dQCj>0#dKC%1@lBi}49V;>u-VM9(;~9k-?NKGV3{k|?=Cz>aHA{Dli#e;-Fc^N z@>xYEd)N%tt$Hk;gue*D5<#X6h<#pSK=AmRA_NEe1{SK&}08~Oj@=KtF>>ivs~m_i~V64usCxE(g05dZU&tj_u2*$3heB&b5X z-~CH!S5V*l`;%_*hYQcw*;i&FwKEs--#2Y+W@-_>io$$Aa>V07@p){1BdLo8@xMJo z6>`S;w@U~VN00;--RNxIaG9}k6=y{7KB^G-*BafLQP!c9zo%sW(ukV3LyqE1NK5M( zvGxzG_wVTxo`GRufP|d*o*nEN630S3^E%k;62EoH+p!U_=tO$mocE>idrVEC&WDrn z7YwRHhYx{*;Z1U8_=}@l?Xhw^=P#iM7e7RUXc!q~22*(@cks3S_HM6E>{mKbej?KZ zC_t?f5TXkoARDcv$or^Q_nQd-=sZ(U@VmN#FkSNcE%Qp|Ty%heEi?atGIcugHRAK~BZ5ulH0x9mKrz z+jd&{_WH!pc1HY~@Q7}oJL!!T<3ZC!n)1YWm8E+AyG+Cg(tr9cEjJX|({TNwt;XIZ z!yR)tf81eV)+@mHcXBO<)Am?Yy3hUe`l4Mm)Fx=JkPU-lAn;c98F{eD4+Zr~5a!!~^v6iYtIEnfF zZf1l)^hB|Cvc71m(c;BEM=Gw=ir3xQ{Wyf-t_ z=;k0TC8fA`xZELwTxBsX6OtK-M$m6nGoJ&W&~zYlONnU&EZStY+6sr1lzB8qPI>1W zzejZk?BQ6xvW#bmUenC&LSGDh@xsrizEfmktH9{S&yNV&twyq>w@;Qkf@HyCe+>v; zt;KA+e0|0t)3i`&9uv!`DnolDp|oLHQYV3kNmkUk2h27uv9t0OSk;f6c&QQZMO@9p zKDp_KB%e2=w_Wo&b)60dnezR&;Mr94Sr(@1(K=EdN5zR(ve+m`%GDn=e~OosDYur@ zwjFQeLEtqo@Ws)KKDjJ<)wq#=L|F326nOsX{jV}D$)PmGeASpYu1xu*hI)(X>T)^ky{-!kUgFh{9yjYPklH(I1 zcCnJ?Ym0o9a87Cik-{8c)&PYLAUpIz#H>yObFb z4En^h&r$o25riAO9$C?L#;-KyP-~3fEi*X?2bUgQI*gS z1B>PTW?@Xa)9LhVwopvBhPDA!r@9Ybxt>r19mQrP4fZ~udP|EbIlF}tv_L8Z%QsIl z#3Vad=qD09MaBf9TG8{11&`8#h&oI4HclTd^Gs34(1?g!$SKUs=GYZ!qrH#c0GP%B zDyqaoI(gS!u)05B!35WT!*Y=fCn;}uYhdvGZ5p4Zcqye;srTKrg$&^*7C|hIgoIK` zgzqk+7T3+U)jZbV;6Jeh*4W{q*CuK_SdK8r873WC+&e~ZqRA?s|oXWCsj;G)Z*GSUEuQK>1T1npz&k!h?!p) zYjTZK6i!d0hi3=0EmX>eki($s37Q2R@r0)cly=Vf?1OQ?et`@ z-D-E=%|Q$6q^?UU-{~LG3fCi}lL`>2sWtDsF6MLNdoB<$NIs}GA+s<;)06Qx?_f~& zS)N^rUu=y^GOCvpd8VYhuAqG5b+PtqL0W78zG)3)B<1ep*6h%j(_j7FCt)4WR!1kr z^SF=RLU15~wG?N!r!(=^gqn(K%;jA*ZVI29Qj;}^N>?}h9_O(H`kwFZe746Ju5M3; z)~jc&m2biYZY~ym7$7J=Ko&(aNO`%0Lc69%S~mFOpy`cm>a`xox12Ky;VFs=2?pJB zxDBS6!ysZ^KZstv&tta|ygQAFW!6>;`3_vYt!xFUO@vjOd~z8;6*e&D>}IT`_eOA>{Isb-vLuD|%F+0h$xDp)}P4 zX8mS91(?fev-JGd*Rlo-Adt0l9)QG3T{VKqe4^-^mXGjv85}0Z^75Rd$r(m2i?KXD zge73PaZ^7XLwpbY5pZGLmpU*7RoXEqunr;w?-k?Qn>;QUVM6Y7>qbmMd@kl))^|!< zSgwJ+Jr4BM57`Eew6d-r2S2P|HecMN*g8`o82G{34yJIcrDvYf^uODng&1Cm6fnwu z#vt8}gos%=6rFq~wl1>(*S; z50>JOdm{TDBu--w3jAlWIIWlHSaHdmHflS9F8e9hb3;Q4A(E%m0aOCHAlkx4!bWm^ zJtEGGi@Y)XY;5iuzsILVGeBv#M7K|?+zO1O~Y)Q;(}ST38g|43=59tCxd}Qf()wWhqNKW-XMpS<%}!@l(!!8WEvCz%^5R!s zw{TL;PY4tRPlP)^PL&BG2vJxN2$O+^2@4A|BAc}O!t`ssG3pG~5vD-i_2ue#%^trs zk{z0)R{aE4Sg5PGW}%?y0}=*_qH4rvO!5*v0(`M`qi6UlJ0LR#;W5V=q&9|b>v8HT zf?|@Ag^On(g_H60Y`o(AOZ@if&KJ2u<^bDHk4w2EkP#OOVQXNqrRuhL-+AVi{AaCW z48K=P#IehqAh*42IQtBrcTlnr(;Lpz28*>Rn8QZd8d;A3J1~Lt2O9>N?rq|Csvtw@ z&apzPXM~X9AQ=f)a;INDm&-_?6bvQK3CB)>d8kKy$|wcaI}HWJ_dhM@_a0N68hiG- zwN~B)IHJbfVi)b#m#uJ^QYRa~i%TLBkE@>e!W_aiZX{Wb#g-v57-Ff0En*f@#{1;~ zSM-lT2HMaiZC?*g;p`l`_@rPLH1pc);_+6%qY1e{%0Ik-{F6a2K%}vSxjBQm;GMYo z7cDc#TztMg?G9g)OM#7i%t=5wqwQ*Z=uW%xMuN=cvVkXPNn4b&jM@zsEK;Z|+LW2j zAQt#fI6(NWaH4adD$}_arr>Q8gBtxBDc+9}*{$z!TJ*>U+CsU?5u{N1B#*yoC0fkvb$)A%D*z~zV3 zPM)A==Jow?a3;xzf3DO)e1g6&#VY~)*k8Qrp0sGBSyp8jT!~dzi+W86z7y)j5wZI<1t_ti{V6){DGX%cK zyVrqU9*vskqyFD(ooDK?2!jx06}rH6HW!;>>n!KlP7F9&^VJB47TF zD}rqIEKfP&Mt1KbHZmIsF)$xoDNZX*nV9w~`KG-BuYD|kNq6jKvaFx?%pDpP=g!}f zTJXcE@2<8&??ufW)B{jM(thTN$cmQ|bPOnFD+0+dw2%e4%I;rMt2B|BP(+P+Oq1nu zjmu9F7Eg@M87R*IJgbplF4@*b7!u4|DEAHkF!-UuFD?q*Y5hqpO$shG$MoPmHkt!E1AjtA;YcjpNr%4|Ng}p%U4Y#-5&zkQ1 zNy!+w;fjkIZN|P$mS;xfRW>VGzq>-^B7mZd6=heZ$bE-CZSei(KZ)%RfKV;AsriC0G5)Y zE&1^DD?U2~=vrZ7&kGHOyQuQpDOxzFHc4=AnZHf_JT>I<*+%i^r}II%QR&X;u%ETd z7;OO7iuT`Vo7(hSzE@+LRdVGB1|ZIj4{B8d_+sNG6~J+Mrv0%D)F9&4GHF+b!Tyo{ zdu*dia8Th+E;1lxx~#WtR-lAqpLZG6mx?cu=X7>7+X3ebMkUJDtdBDt+jqP`H6|bc z-htQqwswA<(`JE5UEizf^k7lnH0oe1{}E!KqM~{ZNj*Hx7-%V;PX2HW59hELdwzPH?tPu#crwVVcEJB|dvXk% zjWPruSN9%W~HpJ2%f*T@@A3vI_AX{g@ZgP8hB>&X660#9tdR0Su zlzXCss9Y-X94)tFmvSbhD`C}toX5=S>w23IGG&&cYr$GFC_D~#e-1%w*yG!xJmuE3 zT^gI#>f2=gFhzW82l+FMH9AN9`Gmy&^Cea=2TFu|s>i?S5ez_L5zDHt_ZgiyesdEU zHebJ`dE6uM&3i1VqcY})_n6eNfunV(g12TrM<-AQ(g)|{0mO_KKrh>T6#%&fAd1P| z^%)K>Zl+S>Sh2Rcb;I5pX&H8>_p9Asi;Mg;K=3Mw@`FR_Uug1(vmqaC#Ur0RwmE+( zqRGWPk@BsY_Vsz}Xl@(;d@otjn4qIjX4vtW5w_NGYs7wt{~~V^2}375BVRc;{I%80 z*fuZnvwWrOFV`6M$n4mTM`h~wzsb^A&^X^LeII>QoSS2oNbSc@)UE)Q<)v#q7#HN$ z=s(gDJ$hH19thPX*cuCbV4Y z_ykEB(6X6)f;z0PIK$$g7laz|p2X|R(Kb+MwJYa47`#IhO)mICgINICaow$zq~M}^ zG0}ci=LOdKK1}7Ghic&EfVt<>#NYpxmQ&x<5Y8oddLIWvXIICt%~k3Q8j2_J;<3*f zOsLw>?`K52u$5HaIJ;CHjA$OgA4Vb0bnBuHz{+^3^>2sXO+mk0Op_~d-s$*v?CVW+ zDq#zvqK3Uj(#92R5o9)#|Kq~i&R6CeR`2VU7(Pm0VprW`N?1epD>{Q|7oi1XXjta@ z;_mW(g>6&_gM|l2eW`8V^#yI>1m>cY1T3zIR9|=A|9Rz%&C$bksZ-xItBFY;v>eqY z1Oep8+5rC2GlfmI`7s0#Ne;A3cg&kEs~t$I%oc(aVxamRXHP+$^CFub3<_md0IZK- zX1r%6)ZZQ}fBjE0&_q^$Hxrg*jGyjV5NDz%{f)sA3ASW&|EF72@5Vs?g`Q%hT zGH6*9j#uun%yyTJM_CZJ3}S4mf_)Vk3JKPKhLz@v78urjFs)sh4ObzD@>e)mmu`L(ekI|tQ-kgaJ!#BdBL=nl_YS-oF!OV&`10DUxrn6pTh0s5>V>V$ zx=P^nu%UflV*Y1PNpot!@cUU%?LSAm*!rN{io)nz8?FC7ux@Sy>?3t@xhg-lQYeVQ z8dx%gc?EBO`yFc!`{s7cNxBmqc_g`604i8Mi<@SwjQ^}3tU*SwGF)NztL52xodfHL=&COH20E1_3mT6m{D(3{ z6%1er3tB=HC^>LvLdF~u&Yw~xlkYX^SiRWRkO^^vl{nr(kCGM%E@ij0EIQSyPp)bX zA+llmr!jwU!ymtB9JuzhQiSikMfT|TZ?0rn=ItuQNXYAVv9(rFv`vPFqc!Q1FImh+ zSQ^??w*J!lFfSG^P}36FF#j`?A5wIo4FNOh1IOgBzZ6lIlj85MzJGDGN-ZP^W44G_ z6k^;_+jS^Mzgkpi3CU8 zcpmJ1ILoGgowZf8D(xD>N*5GpCL#amj45<%Ii@wiDWxK|b&HAQOoCbgk)PA;#hu zZbj@2j#(Rk3(p}ZZD7}Cce%g9_E65j%%r3mzi~U`J5gpCfOQ;D$z>lB{!A$!ALaet zAYL2g2Q?#$zfo|_r&BVn_}n#`=pg;0$|cd`w?nEMtG6HpRB88Ixp8#>5gp4H;M2;V ztU(fjLq^5|g{f4EG~NxS@h6u;nAA&BXlQ5>wE^O7$lEtsn*pp;M-v~T*;V6!J`;9+ z#3saSWbB;mL(4BS77Vu^F?ySEBqS4954tGF+r9(wIJYf)RDSU|E2^!NJLM^@EZPqf zW2a9{Nj`EwMq#x8EMVVA zTXD_Wt+sNDrr&f{4zex6ODaQkLaj0zp%ggBZRZ21o?NY>ow2QirU+x4y%G1*Oq4!tQo z2dg4lTl}bqiZ2GGgv5<-$6^)5Iekv=ByLSogk7*i?NCZfWMB9xjOUNFb0| znd-9EMWFx7rLMJA=o_C~ML=L+-}Tu}_9M8;C9u#;#L3UE>lAFQQJsY>qz;X8h5hZ6 zrf?IX0i*jOoASE}O;-AFTda;oR+7qalMtG8NqB@W%xZTb_VHt^47Wz}ayGzC- zNdT$nOSHC4kJ5OMV0-o(so)$1M%xI`L$oVDP(rb7_1^Wau26#YHYD;`fbUQ1=2%Xa z)WJ&1e1bSSL5)9yDFxqHRIQGcc_8aI8~5m-w%7g?A+AA1-o$UR!Xm1LKj(BQQFOS~ zi8hgk9HezD{kdLrAuh*Cg34rL5F};+E>8TvVUuN$J} z=bua+#MBW3+M=x5GFYleJ=;uLGQluh@wk5wLY>~>3aQyre@s)t0(|3J2A&3{ltIB!l3~XbyJ2`r!DM?! zi`In!TUPIb$}3X{mSlm&i9o79PAiF@wkHg+7Y|&WBq-!`eUhI2A2bt7ivY3 z{z#bp=XjyKIrEyUFxgv(|s&aK38qKP(%@P7FUm9g?6# zZB-;ez+PNWN<#*#EK?b?yprVTb>3a*YFP*D=5MLaG%mA2*VYmH?w&~*Xe#(?fE5!x zsyT_rXf7-t+xN;`XyGQ{+u9+eH#xqZ=1F%qM$c zN+ml$grWc9F=3=}{I91fb94U%gEOF86LuI_qp5OTQ`}NCLpZ34|JEe^#9;*)*qT7Qs{^HJb)*dG>02G*gf)RoGUtgM=Z z8M(+bQmy{@K@Qr&0Xa3VrpyD&3gf*w5q`dFoJYk2%EN}y?HRDi$Xp{LdF8;?ZIGjy!D`z zSSpr_5Q{V0{B88c9ZN+?X^+-Ml0Y=yAyE~pcF)~X>`9hbb=-}~Ogk;k>w9(S?F&bi z<*1iSZYT#AIVM`cZKCsq(uXO2_V*vZ#KNDxMOLcqJwDIzCOpf~4nI+ONWj-oo5Pc5#p!keFNLG;){oU>()9EScy(il`4w8vfFzs+b&RHM<2!U1-Y@M7E8u zjZJX(TYQ?lshJ(xQ_niKq0bcWZnVEbtTdS`jB#(mjBCxl-YPK#Ui|se%m)3B%?2^rA{mGtkSJq7xb`|xF zeHYz;5Db{?=8fPw9*Ttwb!-hl*OHeeB#obi{kKuQ^#lRcrd-B{fhC1;k6ENf%ZnWh zV2_CjUewK#mBr1|oNN5DMS==5tj9xW2^UCe?O~s&^HG)YttTclPVfp@CdZ5ls)m#f zg_T7%)RBr#dTn11<~zgq2&q@ND`ZShVmrCp!AuShbxHerZJeT<{1){5{dSda=?SMM z4DF!}YQt@-KOy`{`$y~tbyLgX$yXjaX5K6~Z$#I0?lGS;^wHCPaL42x*)u%3Fnqf3 z=C5eTli4MQ`On`mQ!n;bu7z_J`6{ZVW9yPLm#I3^`mwh;LyHbJ%e24pM_Qo$Wa8ON zuI_3jO2Pj9%a+J+=BM5XJ2ir$zq)PPuioyE z2-MO~PLeV{I4`I4u8^}VzU^)?JdWu*p^K%fIIS5NXxDPBFnAZOugQf>a(6Z5>tBG} zAWwv293^PmRT2Qp98w~-iS1yz##9s<9NFbOV}fRQcPhYq8F^)t7Nz<6q4;~g?pR`% zV`;qC5ZfQTcfFk?g}ug9-@;Ic@%USN7ru%F1n)`J22q>2-eS zt7w=+Q`?yzEvyc>R!~a6fjzM=+DgA|+CS!aDl)CyI?}XsGvFm~l)9Tdj7=|~tgD1M zV70kd*546=mJJHtsRBmy{E24L>?usQ141q@DX=R{1+VOY` zouzheV1iFW8ot%;hLjGvJ;dmy7v(Q1g=hNT_o#_&2Q^_y-FR1{+zhr$tEc}Gow*yh}vR9Hp>t=CRzVO)9SO+=ao2yVoSe;&-8JE)0&)X0kGoy`7} zB9IojDLzzEg*wq$yejU#U_FDM7KT~k;_1`VqM3L1yOe1zH&YHp<%X%@W8a+TQZ2VW zNi>Q-*nJxJ5d3xct1pa^qU2bZ&-1#mj)gUC^R&q#u`e?MnRlFaDB1=? zsZ`i4^^>TWQ661@IAs57h%z*(-p0hV&yP%@-~e9!qvhFJjLjA2+ZVsDkB`O8wk7F& zIx->?y4cxj{#L5v%ZC;q{Y;mSpi8g0Mn4Nm?r#>pgpiJn*e%OPJi!+G*8CwupzNn_ z>v*3r+f(oDU4({#tt~_3HIbdr-PJXN3;MS`eOc$-d_>DNIk{YzCAjHG%@KCm;%d(L zMApQ09x+>O7NaktaMPqULjM|wp-^jS91zUOiQKd>H^ALB(tUj*Q_&WeWqzZVP+Dw` zn2Z{*B>FOf>|vO-!E+8NPbVuDtvt6e z@UM4fVz=cAp)f5_B93kzd$ zBOJLCA8o#IdAUDG)r#buDwDU6dgsVDz$}8|6~Lf$XPZx4GWoNn%gwYZ&5bq-8l5@O zgr2J2WOTf%QoBA9si$$|Sl^muw<&XH9XhtbawA66J7;)y9nfn?ua4MDZ$UH_ALy^C zhg7f@H%!)sk;py~RbyqJ;V$GH*~r-ZF8aqjq|& zrwGiZYt&XU@Lo3;bW?v=tLYY?#C{vl3$m3Ef#WfZpaS>(HuV9UK9`X zAb;{4na6Dk#Zx|XuzpR~>j~-rE4ad9H#;4 z{p-Xp`@dB0(eVTO&{_0VY+u=rqa%snZt*c4%%cs22jhXV!{L&uKn%(OOB&6 zv6#!GI@$^2o+m{SQ%JE!jC!29?70nX2orBM4ZSH~n4mk_hp-9!Wv_bqyj*DBrynWw zPs_0^UN**!(L_Z`Ph*OvCl)QoXV|oMP|13~QJuDnDorT#n?g&Ok`EEQYoI`_d2-Wk zyS~v(NWc{8c$Ve1=q`yw&HN-g)CqA> zhAe178C&(c#0A+?aLQBT4llC9ishg-QuWnaynH%;w~+lJUNGCg(OjXJ)YIOfe0q$FvB6 zFkPe)g=^gGOo=ou*PQOEy$LRtR9dWRl9LX!qIQvd&_BPL*I%0=OOLSl{AZT5QU@W} zgeY&0WN_S$l(@jF?sdMOi!;lo%pA@}Po3YFMXh3sEV#Esn%ixpDAy;9!a+f+Cj@+! zb}!7Kp0w#lj4fO*2lMuvj{WoXESvM@G(at%LrNEH9grE@R;j zZLr8{ETqC=pYu%={1^~Y6LttvFf(=Mp!j!>xk+qN|bO-y%1La?N9qx#t4cB zX1YY9hFz`!jBY(?Fx|c{ryAqF^ExM1otsm^P+7v-z30MIEMg+M&akYvn-ZZq`{9O)o_!K%1ybaqc%#?T>c-cy8w)1b;(g1jaSWH<>!=^9qV@*w-@Af z)lU=WmBQ4{i^~kQZ99K*du#vZ9l>e<(Gmvc*<%{h*RQKYJOv#D&gUv=2qIjCEl zXR5q+@q8t=XtFAM={df<8eU)i!xH8_zmD{+V=6w%*um|U&U8)tCkj;Rb91(V(zw@( z@))M;9|wNd{oFetU*#pW(3S}Q&6}JlP5`E?GG@sI$%le>eJ;fsL5E$YeFM|h;@fjG z2ZK@1>ARtXXzmA((chJk%+8*;<0Mz%FJ`_G{iZSbAUe%+sT?%B;L{w*gyd7x^!W@h zg1*gLSrJ`-V?0_8N8v=1Q)OO8Az3& zA6~!yKfM0l{(dD=__$xWhzD*3Kf2=YhPv5IAAZ`sJ+c1tddfSVc-zjS7(#PuNwMn_ z&d?Kkr@)m1gbDQch7S&JQEt+0-vR=L0#p0_W+KkH;Bq41kwiqMrLpKXIIH?Rem?yW zU@Y_hROt{IEi55{$m@qi5AeWtc?$4VYvN$ftM0>Dwrs)_CD~GM6t&XN_j2Zo&HTI_ zNJ1DDotQ<#(T89?jac^l?n;bU1w3!~>-3YAE9@iNlgkLGZ2; z$2Z;cI7CcBqG0F)f+HpvTYEr+8i2#(qtLGYXc*+mU6xe?;GHzL4Im`y3)2(sLZZ?Yx`lo}^Xpm|vv%QvxLln_8k50C9kq zE~0Sr#$rsWX`$Jx;r6J9oc+Te3e75uxUB5#@|ecIDeZNmH8%R+xE*rfk&p&{4ha-8 zz1tj0-$Wny+IV+9s|09eXFeZ3XZEK4qsp+W1la<8EZa6YD0`C z=qPQzmeF%vMwqU5dcix;Met@oC;||P2jbNA7;Kuaa-e{)oTh52p00JvowNCH1_G-s zA|mWOdn?4)RMV%@VRNt_$*S!W!Y&hMnzF~mzUpYp-y1Nv3Icbh%1}nn+JeVH93V~& z`-DMTS13S=>KKEBasb)ei<0AyF^V~nQb2|VAlg=g{S=shjKDAu(8;+YF zM=ADXa7Y-jpaF^3&Ux_*6gUH;a=oHeJ z(!I{VsT8WoEx2ux7Ou0udNr=kH6w7`OWn_C`a(r&7#R~&y`5N1K;!)7y!G@Zq&Wf5 zpSG!TSsk&qE*CHbZw;!Lj`#?1QnRqRncVBVUz(bz0unlbKj&UfaE4$WOEHu{D-w!u^f)3b`c}8Yt-1m-{ z()a8AarX00lYL8V{to=Q%QWpFK}%SkE`X}t&l-tGdU?X};g1lC?IoRXUlXD>sM7`A74StdPdj5!sE`tmio{XEz%7tHRiWP&2xG4d~$N@$_QJS|hm%kB!1`13>bk+LrxL-+J@tls_1;tamg?c}|4 zhMy2w1(fSM@9K+x0@h*NNVaTp&&=`XKwmNqPFqpY`gA~aFQX29jt}wdG?<4&BVbX% zEJnubRe->z$R3ja^rWDJuBi}(3bP@yGn4TaAD_aDWtGq|>X%j8Us^0nv>$2<)X1fJKjponPJk~0~CbQ+nLGB9ry%bYU?A9yZSgOGkq_y%>M%-y&OF%X1 zOIf`3rzHll5$bemyFKV_akpSpl>~kgb6Tq$m`|c0ht$?`ITr=_`jAt(Sly+$frS=L zB_P*!i~hhzW78cInKn{}M{(%`Q1)$~6cyL{YtV&X=^dC@3ctf%I?WRraPJ+MxgB+M z?VnBRt50Z}RQISL4yd}}zin7_9F=1vRRG&!P|8Iel{lOC3_U)k3Kj`2-P@Nw0`8|D z+_v*`2@SW~*;=_xiCS}tWy?sGg`Z5m=8IiU5vhE6L=wE)b%x!(zn-A~M*9LfQqfet zjp~QSZu@ncG)zoyQR;ihJl=|kh!n;9J7IU&ejO=PXLV9u1FV1sRoG+ zLw5Je(-*OeubA8}7muIyL029g>|0DK*1494drNOjAkbeoAu7$;##7f7f3!XXmqgsp?>CO2P0Mh_jP>~ zrxS@iV}~XY&%K)rEVTY1qo@{$CfMuXmVwOxNLuEQgkOt;>Vp=ap3aVs0!0tb%K z!TrsF`slUm5`rx+U^+)VQ@`ZjvCjm2Oby>HEM(MJbkTjrEK@(_N*0$aR@dwHkg&_c zSF2r-#zG{-3Szx*8jMQ`A^osmxEroK4qy3Sw#tQ1poGKp`S7usMs&^@+}~a?3cnHv zav~T#anf?Rmq2uuN#ncS5EBzw-A;%rrvt=X*^A@7Cy0D){FdGQh#1138KE zyLa(0B({m-GgztE^T#V(CcRisc`$$S7AugztxUNZX~`_ME@fdLIilP5x5;#k7?Qv# z)gF27RZad{{YH@2nQ@YXgDPYs3U-}Tc;IJWBLy#Y;U1h`pE;(MKC@$+#F2Z6$^)9*l?9k7tmdo z6Tg=bpizdzyB_19#4FT7)2x1P>mB9ynlFH0}mI<*o^{HWC1&#|~fr3F6 zKChe2pcSH7W*}TL#N>~nSc4=aPIz2u!<>AY!qxDf$`efO2&jUxwO_^(60x(7o{?Xh?w`f;V~XMljDZl|O{C7-69 zZOPT1j~g*yRT}I+p=Qi9-<@l(cZOx<1ivTdu!tRJcTM`_z_i_+Ari1&Nwxips)Z!Q z>S!KFo}3wbd{_I9)(Ek}=|OtV?&>ZgUkJpj`IF>cr%{YHCR@m%ri!S2>})y3Hbf(# zSm7|s|FfM~Dqn;yZ-z4^Pi{%_F_vD3lE{SNuR|Zz<7>-@g7BTdzcc&gSL(4QpfY15 zu6NGrQjT7i4iHO(>OIE`)sxeUkfE3U+w>-QF+Oxs9u@8(kdf+LNw>x>WJ%+??G)G0 z@bk|%7Mb4DkkVl;qBXYoJb0gdGtGJmwMXtW61esw8nAl>|Kos^*I7lHmHCeH@R@=- zmmSlv!n;cnjGtDs)v8sj%UlC7UyOyg{^tz{;brj~hd`xwBK<>w#Y8}on}p9?GedB( z+A0|;cMP1%{1mWf54EZPH9Nl3Kh0!8u9IysUeF%|n{(PI|LhQ`{RRM+G5fxz*f8YK zJw*|kodVTYBlVO#mDEww~gXI(-S=E#AQ@h z(xa#(qi6WvJ13U>2f772#CHsH|HU(N;B%;^xdbRE|gppmVxp65A|>@wUbb6LdiB zfH$GfsCMhx!>;JH8o?g33&nx@07K|WCQZW;eNqQ`K9-7}pK>0_)<0#cc zKula%QOK%WADh|>{W_?X11DtD&Tb*IDJ>G7wedSyo7n}F0&ahQ1gV^kLFoWcm1-l< z3r8m=_R2r5pnuK2#y>X?rh0(uXSb`hA**H_&F>)RON zL2l45H$ve3{9li2Mz)}7_rnh?8vwjrpSv>x-oXF;h8+ypmES0VV)wj!;?t<1eCi zpr$gPt1X|i?LfB&G?e~UKR5@JR-m))eKo{K4cZ#VyI(6RaI^agTAf}q(a}kS2o6jD z%RbXoQ;R?SN6p1FspnD52Nn~%%f5~?4-mltNP9CF7>_4TbA zk0f5ea2dA4ADx`U0CIzjqGIG&iLUm7`wsIN(RTh|x}ZKv%iYa|tcb`b8hZM|Ay6&S zM(`a6U*6ml9>}L~y@QgXcP2~CdT@c?N1^P*&C1D<0e;;S$cr{EVfGkb7S-BNt zLdu^o7mC0HiFeetv#xi&jAPR6zmAjL_o|TzwA@ZE5F>jE##Ie1O!f7~Vii zD!Agw0&40f?4;D+{Q_X^Vq38Y8 zW`$t~;&g*cX^}>`h!-mp)2|Z96ATQs1H*bwM#lbvuCA`~6BHmM1<(!3%Rscyly$sA zz>kd$R6rBbc%WEg5}yUyt77;iumr|;aOvd}6Qrf3-`#s7L%FWdnPbCZ)~bvI4xtY~ z5j0d(BF|ob_@3id1$iqYqvZX`=k_QFbxotuwOl1%sY?bzCg7=2(s(TM?X`Kdmfj7b z^X}9;P0XWvKC9LLZM!T zNk|+7p5Ogc(cFXr-sxGQYywLkDC8bJ^N7X|5rlm8(lmH@__Ec1dI&w%;=hio2wtUV zpM3K))b!_92q1q$`*LItP6V*eHZ1>mnewmA0^sWZc521{|6?;0A?_%enwmJ|ize!ulQhfw_vO^jA=A>}BPr=0fPbpgRM4YC~~SG?`pT9UNIeMp_3%$QS4CplBZBc)`RJ)`Q0e4^-iCQywmz5+@!H#Pz~WHP3fn@&-R5 zpf(fT8GyES4770#x4cl^b@MMkxsRK=F`I`u@$kAm&%5wWB^|`bfS$h5p3DK2$Rd1a zwFCQ-Zr|_NY0r(q(>YpN7`AKOOW&8O{@Rjy1XMXKS0Tcm9TqEub)Xo5#Y7PUz#!v! z4;qzcs;yoS5fNQ^BW(dT)dq3CPF;nL$6l3Ew#-u^9>)(+2nJAJ3AFlTo`=F!blUqy>ow7)ZU- z4jo|Cv4iBN?zsPjDaheAOt&YBUjS7{$u+vh29U6Is?KlPWTeCx#60SczD{ zTU!&@$z?*}M6V?7Fbm1y^XbDGjNV2M>Bb^CIz<#Vy=kO7rEAkAC8dah(hVZgB`HXEcXyw)z3<=if5tiEf5!9T z$P2)++51}8wbq<-%{9NDS&gn_Y=i9^?b7Jm*TjZ$7M=OUB)6rox1& zBgBHsz)Ph7)$79^CIA&Mw}Z3K88$E=dHT|(rRIp04EJ^ux)*rVgL z2fzv$A`Rc7kNVU#usz5zD<^~qiiCt|sWWx}OhfZ* zY$AVx*nPsb+hX90ZB0NfQ&EqR4W-Jn>=wwYy8#Qx6quJ^;xE+jk5V6ct~=QSwO96@ zlTu6UvWSW@LgWC1<1Qiu)<9S@Ssz{b^e`fwr!K|0$I9;iq?yexuby7_ODvbL;9`twCVJu$LBg&Qrx!hu($C=;Yv zr`xrcZ*=L?YCQWAr5O2@L2*!WoHTSki1p8*+8LBxTbmPG4xuu~upeb6IA2{!vXc=| zniKu|dbA;~4I+EOute;WOd#_-gs!dN`Gg_BNkqVoE`r%FQ=nj-JVuT12^B<2e+j4=Oc4*oE zYB%P57|(~iD)68oOqkQT*7U)@j={RcB*Fu}LWrr@)-dQE-D*Z&b{*+gq&{a@e?}pa z_}@Ma_ge5lCDd$YvTyF|&pFovZa0>H?*`(2?VC6~8ou9MFM9eaesrN`m_*`mvdMM( z#oznwQE{sJf}DIT2Ao8A_lb$TjEU(aDKlN!m1dr`I?>i&*7F6*!e2K+W(#=PVgsrO z)g=)24qi$4Oas+jn9oNxh^MmW16%VD_JvVfg@Z5l;uLiXMHZu)AU_T1{bE1&(@Ksj zGHI#J9vI$fL{?7Z79?od!o$Ng=bm?50|Ti`YF6^%W8gJNTj8;)fBx$g6Oh5d3DyQ> z+M$P*AM$3@E#3nL28Ndf znp~a>A>_T;7Ut%3ak1juU@;_tO*tYUpR%i0nXIu_`}_P+Uw(bbObPa*Bi@LkmSX+- z_uN(!V-A4+KX=)Be$v_YilIq~C*KdWj+ez7i;c8*%m;lnh@&0b*f>YagO7!%*j zq$Fma%VYJicI%P`O?_&x@6=tNs{#@A-`aPO<9-KJ55It2W&*PCF6XO_jg3Pf`u>K# z&S&PD}y=l@*v6&WnMm<|vrYSO1i&SLbA9g*bM_$COYG zHxS%PTWxZ&F+!O~L@Gc^_=0&7afHB}4?J61-rx9tEEm-Bci-MznE`%|6QEy-a6-KQ zzl}`~FvCgt!KFH2=N{0w0a#O3qbQGA5F41Q1CSAakD9)7dXT>R^UBUubO!84E`Pke zIIQzs0#Qy$b*!0z?}b@G*a0|T$luxpY=J+w#d>uw!?oZN{#$}#o&3Dk6=pqTlp=1N zAWL*GmEpiV`JFR@?esezUq$a|TWRg^_H@ES2=L~Njn{{fmvb*6Et@GR&aQx8WVS!w zym^OE+DBF~gX;WEZ{TM@eCweI+^{RxT3V>Bh&se=^H2Bn1jyBlcmq@iFu=a26BfUi z+Y`V+mM{~dX6<5!TwzkTz6I4b*A`itP6KNbSTAID(Zvfw{`d>*+e@ zP4p#&VcOcJoPQxWU9Q!>PrxNBAP*{i@i$^0evI`V99HxyLV(76aMKws zq})yR8X^S+=YUOClqmIYkl=4j3yFt|Qr)U;YVF8SzWC}hK)5VS=AEO@5aG2oTvXY6 zYL|!VnzH%gXw9rUf%(_jUcboRE8pM?Z4`D$^z$iCk$2FoQdr*bD5d*hhRzyL@hK=y z%D6cx5c${U8+RfIPtL7d93?+q-o$R8X{jI$Bg?}hQ9q~(t43sJV)Jk%cKyC8#>*kW*d>G4MgC9cXf37m7=NwIxo!Zh-1|g@r z#`C|W68HV_z50PXifC%mbA62t4@8yX%snkHw+<%3aCfI(q>;fhm0d;MF6c9^N+!h z;05`Yl`XV@quu(wRmFSv=r4C`m+($}L4m?Da6rIm$fpN>T>|OFZ|FvPW1AxdtVl>m zA(#58lkKjA%}nyBLHYU^B|lK;J8*`}_m_HjaFuUiOWp|60SE8#$7Qh_$0_>rF0h^rNc+K_(i%&``z=tJ*S&084;}DO zCbanIa|}Yz-E!L~DDl_o1E55+yHH^>8Cz<@dO4Xo;buVEoaFk3i- z5jcCOSQBVYNziE$L4y9y+q-(~A#?xeuJeo|DXqJX?a~4FttviW8S{bi`*L$*@4G?~ z2}D?h1SL7WFKW`i5S$qC0&-}s;-P$jr<p-R8JmOEJSsZ+sJeYI5nFLU8Iwa0+)f($ws}+R3lIue z-5||f_X&P;`)G|RkJ_MYt8=dhPRwcY)RG6Xoqh04Rq>q{Ox$93SK$I+E={M!Bqc++44dlpVsE^KqJ=|?vO+Vy9t z6M55=$%e`&Eh?B>HcwdC#$MSEHWRP1S-9V-A|6?ZsaI*YdW~E5h^F=e0~#d`NGi>$ zWt(~bIr(vNykj@RP4swceHt)X+70GX{qLEJchn}<_4G;-EE=pvys-cT)&w;qqqATB zuA8QmjlU<~#pJP~1p$Gy`@Nnir5okp#-3;N5iX@2AR=$qQ8P7;041VKEEaa*RrPv? zjSY51QV96edeVA6J4QprMxE07de^-D-wQENXj?FKZVF~q{QOZEy?V}OXq2(!UWLY9 z%y|Cj@bMhig(~Zwil9k9?)vt+3F1-)o{{nce3h^|+WB6OGi47fF4*+%)ztj9uj^(U zHMWAwp{|=`rjXZNb^(R9xrvMsGBM#Ge8pnfggqC~3pvYB)&zT6a7EkxT8rj@`GxyL;0kN_OxZ=@m}=A3p;) zdjZPz`F%+>L-84t&-c|-+}G=IJ5$X|WQ!wn5a#KVg)^Rce|#~A87=zxSJ#3!2GoT_Kk_`fdCTY9B@SX1#|yoGJG-qG zKwQWxO{4U5%*B)!+Jth05CJ-j{2IB@UEokDVDo4U<9A^UVvdNn>)dxzH5FO z(nyvJ#@}Ul?ex&|!#6nt`j^^TTyI3|<;rTp*%mj2q&$uSmi~@}I0IwgROhoQinJ+d zNY*MWu4wxONTSmdyq)wbu3Z_+PysUXKfXZ3%{wpF@BR-*Do^2vk7aRP5TbdEpxma=+Ns+a7ET@on8i8wSgs%bPFk z#umC;F2C;`qZh{gy^g(bURE0a2G)|6!#AqDU2(6kJU;^nOwhr~Im|U$_LBS4N9VyD z?y}DmL4Ly5$NSpAqG$Nt1?>rsHrTAGm(Up^3_%#QtY;YmJ8ynbjBpbcr}OvbJ||2| zyhN>d;>bEcX?Hj8ZSc60^o_At(Zd`nzfRPoLH_kQIez+APJ|DY1+u6Ogm#&SE0)?CoEYK{YjhIiHUe_+M zNe1zo(&%QjQ}97c<+#aJK-)rOfqYUBC=97_a65#2ZZOb1zlC+Xn~d1~y=i&pY^;O! zgAqOkWsM?>Y8=*jL4?#RIn=lqfI^g(ml6F;MfIx>c_dM)AqB=)ojU^YsCm4R@2W9!Fc6a^^?NxaR@6%ULmj$ z_3(N4D_SOj#$LXa!B)eUyZ|wsf4kXW6RWi={`YU9FnMJ}8pJFcdawhmvm+!CH(D^Q zVuSJ>qmoo^T14-myF^cxc*%P!DkhhuHESs79M;l=Z8`U!FN z`}>A|Iq6?hn^*IfxaVk}w1svtx!Rw4B8`IrK~Jzd{0z>yUxHI3PoT0lofEU}{8L%^ z1d)SAq(YopaRs{mNrsGSB!TMMLl6@707OvU=n)`KD#^-*P6=b)A_4MIYTnD=2D>$* z`@Z*p3^^^^&f!D-lIc)0JqO|@I}&{?%j0~%!_P;u8+ zCca=L*KV2XqvV|dxaN*$xCo>Wk+v*~S{vN1#g}p8bNyg5z2Rdps~1sVT%OJj{@;r~ zs1~kVIXHS29yvM347(k<=SL7RM^6ahUsa_=^cYo3r$01pZd&?QDYV9InoqB+#08AX zyfOMuj}a1wmoF10ClEE4!hlK$5|qrK$nz;r1xRgFDTA|DFWhGLk=I(<+Ng5TRLmf2 zlnCl61*;MXuwqzMmV3P`k5=BGoxesT?LhRa)q*wLNFaE51TKP#dydHJXfufFx9TqP zZ#`j(W!@kF)M_^!-;{SYsMqj>i=6-5m`AS!tWh&3m~uFwRIUBSkol+S^U^(z`K;n- z;o{OPDeCoytg#k!=>T|^cG7NP67)`xlMtB~P}+BFq@{zsa0}=Rvc+s|zlS9`{3jEk z1a^*vGO{j}mj;%WmRVB@YHC_EIl6D(f($B(q=2JF9|Kh_NFKio0-1Es6v6ogit!WzqOw03ObT({c1?cKT!?) zzk?l~Gz$1!y0C*%v|=-BaBc*Omh&zfJ&#ro0lZkp$9H#H=;V_TO>ZPfv3(n`O*dm* z_{uJL)z+M7l9Zt*;iXffa_U{{K*A!le0ihr@>6|xIEmjv_Tn2r(BsqPCKipuwo*{# z#dwRae?k&-;`Kb)+Yn8Rt1Aaz3)4dADY5ZI+>MdyOOs`CuHF-h_zXaS>y5dw6z{`1 z>2e*^|L~pIm-X$0{BO9j@}s%OnanwkoW`p!wjzL@txznCqA;0Q3lgMaMJWAY3`64l z^7Xe@3ffD0T#%y*NXvWl#&|8R`|y)tfLD7Y6R{hzqIQMV!U$)_R+IhgBi{aQYCX1Y zfp$Wy&EHMlpp2vW>sIJGH4u|OOXI3GqO=sT5Bnu4KkaQIOXedD+dRrsy{jrmIJ~}m zwJ7v2j*d19EE|?~>gPx;Pvr&%nk@qpta z5c$jXDrTkbzFt2sSJcXjX6ANDcdilw1YIK8d#^!DWkzT58#~N96R^M_&RI;h2_gO% zks|ur)Z~mX*C+9Kf&0?mDBuh}l1<0qdFzS9I6%Uxn{oOCRn9_xdAfYzOzPP9ez-NJ zkju+W{5ebJ>#U8sUk|B>lU=1E?p=qSkWg}Z$(R9X*bi~1#3bDTuY0{ig4j&$qe!T^ z9!)bnl%y3On1#8g-}GzMJ!ABHfRQs+um*3!FOPjK_x2Q*3-X(gzz9_LrA4@kT_lE)d-^stfDo4ph%30n!n zX3`&`sWptdRVYk7^Wxip5x^@J&t(@WF7HnJ@9F*8oIcA5d_{<=kWWN|=Lbfa@0Ei+$>kfi!{C_z-C@>6 zQS8(H+3lYer@h-3cUf!RFtr*)4m<|R)I4YJvLu|=D`T@zXQ~{TE zPL5JXv&m^&y;93g)ay_r;z+CmjuKVvbauyxTk-)^xV%BFySAWLfxLPH`;Tl#p&{ew zDUvO1zSip%r9>6o23;CfERzg@ERt&bL3eN8_heaDVg}zu4fme2o|lG@eUx$W#m-=@ zgxJjeYypz3hRHhzMZp zUKN)4S-aCXt)BK|UvMTW-F;%7dQJ2ZJ~(>sOEEV2oY{*9m9T-2OB1J!#dO6E1qRue zs@gFL_x+f2@Do{X!U$q5xfx3fUGA8;ro}1KuT%}vE6dt~IfV*Vdxl?Qh$vQGSnyg9 zPU%s|zdd#y^uC*X37Z+*R~AEJFuORQXQ_nrauWsxP5Lijt|~LEKYaZSdU3c?1gdvb znPkgBRlPNk5OAQV;5Gr^{&y(0BzfrKL((AB)t=)9JJ=^dSH{7EX1(u+&3xPxPI&Gezn}J0fjH!V*HFV z9?fvIKBGH)=BRx+{BsN{C&f*5l5cwNHrbPKoWMOT9(2cTd(vhZZoZ{0_90fRO_>~& z*gcJ2p^$*OfwMc2%Yk2y8Dw;une!pX0&h4K+hN~)-J8kQI?ih_%9fU>h(8}oN+wG3 z)+Z+IOhqOMlYO2+t)zDxhE*NT^)>&(5?Hx?@Gvos+?o$Bq^QQ%TD*`Cm4={9>WWj< zuoJf+gfCP^^?E~DR2)mZvpjn+hxWPPXdK$Ty9lAvJo}S;qMHk1hZ?xh>aD24Zu#7sm`aE}g zrmaxcDH3PyeG-G_Pd|0YDOe_$C56{{nq<4#M1z{q9=V~ z%96;u3Mll;nh((k!}d1>%res{eDWfc{XICD&=hRss~fm|U`2*Bzwzw*XDMP__jetQ zDNQg1Sf?&7Y(1|7ToV{Gp^Wad&#ZJ$eYWhx+87?$zY|;V@N+M44iu34RU*$c#;!>eUKk!VsPcsXnjN;SQI!l~<7QUo>>0mZ+ zckK{ZKqW})4Byr~Nuq`3hOa+g57@)5>r)7RdJ)VB^z@{!GsN9A*5zGEZ5U-d`)uS(LW7(!j^RD0(+=N{ImP8Eu^c zhY9VYw%#Cr521;8rkg5 zV)Dt5j!me{iEz2O=!I1iT#5C!kdZ%?5%EbQwzDd}$01?NL0HgMs2)Zj850SY`pBd( zEnpf@@O<2^jnN`grt5)m)|I8%xXVCWsP+81d-$U?n0_toRWXuz<)>(4RPequlC&h!HlITW=7p9zxq3i2K4Y-(?( z1dk)pQ3<}d$j2Ssd$~^5ZL?#+Gz6WgmSiaXVX2CZlEMWxn{V15cZZ8@u?A+~6?4dR zm3?EpFX%@mYC<=v_VVtZT?tKgoDMjTpgd6O= zUzrXkk7j|&`>cvTstQLbGn`da)wE;`oteqMq|YEYiy;TbLG+P&d;P! z2m*fcbC`5*a@8|Im?1J!XN@Lv^`dzdsk7LyEl2O;T3E_@OALY*^XJMye3=s@a9R~!f8(Mz$pbL z+QWUhUA-2VVcZNP0-3BI{Xun1+m157UFFA0b<;l}$`uK9Vy&NnS)j{n5fIZMGsr5fWhoUc3# zo7ysVDyC&IehRrf#VLo$gM_q@`?6@pC(k zGox^_E7-5SugF{Nn}m0!wkxEdHZt9^$S;szyn{F_mD7xx5e8gLwEL@veH#&9HUG8U zuAgRQ#!yOIC0J2Y%`*~5S3riGCbi}3XKVPLRsGEGWR1E`&DqxqeUabXaHmVzs=VM6 zu5rTA(E>WtR-ANVW*3uhU*}6^=e}V9^IHP)4r8Wdg3Wo8kVH=bHU=a%BsOW<7k2Yn zgr9}RX#(hP65=MPZBq%*Rh95Ns~8eW16NHKq@Kt|Sh#6GHQQ`P7Xxi47_lSQUWvpt zPVh{RaeT@ym4H{7r7|UVnbNrZhPwOpG(S`QxfAYvn?CZoST4IKZaD{1geh#A8K#x_%bFqt zgsM|-A6p{%HrZzevw7Slf5<`HD18tQY|l_kQL8{?-;ov)OMr`UWPVGC> z=WEq{^x4`OntBYj50Kb`<#kHq7P6kdg{2uqRwPhyY*?euitZ~}JdNnQ&8;hYJB5@I z73f->8@M%Pe*%Zq3+K>U_~IM$PZ*)5i0Kj}5S&gP9~)2by+k}0ECxlAKe%l)?9z_# zro36hWQ9M3^>Uu9iWe^iskOMJQYSOtIWkg)Is{7-??_F8DGPGmY>=(zk$7146`k%1 zSONq?{6zjBhZ;;k(YtvB`b7>V0pI~T3(UzvF)jnpgTHo z)6i)&^3!sLZR)3`)O8u~c#d zO^i|BYyQ4^H1F;+!SiH2*mr7rOlnSa+NM2q(3w~&XtsBLa$B32sBS9oRPdr9-14kS zqgk}=>Ds)(hayisIJDWrVNs;&ITLiB;)v`Ap-x*3b}*$BHt@9#RAYJGBZCjC?dWyT_2{TleMvKxy2MfDgm%kdFN~N)_UIVmFH~VPE7RII zrSh-?g2?VLH=}mt`cf~^0`Vxk%pTTuj!MD2R`0+gs1W~?^`FN4w+C_acSRF(cNT+L z6IDk?uLHO4be2B&$cYndqN}B=Y>^(LUWzgLXz7%Cv`}%OBvX@lDj!d~-(6bd4_tGt zJ98RP=A|y*cnlV}(YsJ^P?$7&FsvI+v%){xyP;t(Ce-e?ya=d@zKU?<%=3;f+ij>0 zAdU0h9T#Z!=@Sh*|JX;l)M z4U4=+i1G3hUbA9Kxb|%(JGzVqHzM^TE^cf4n`%Ll(_uIy)s3f({1kAxD!gKL+YXd4 zw!FKcEN67Io7C>uIXS-$#@LW7-@Z1uO!l1jHjI9hbnKPK$L6-y78EV2#Q+7k3|316 zy%dsq*b40yF1F|;rCm2eUtn1kn-A;Qt*1I~^JDH(hcDv4W7oyuTDE#7C+{YKZa9fqsI#cybxDc;K>^EM(o-2GhF zRXu-(MriknMOXUwq(XpFLN`{yh=gC-t zk&QxEoMt~rG)4O{5_CVmb*CS?h;Co_k~8;coVc~EZOKo3r`um-(Y@I-`epzo8Ni&; zO-48%(Raafp9%uePiO@y3O7U(8i zpyuoQMGa4UnAIEo422k5lbeN}#j_Zl%xRa7tf1IlQ?<9^lDUbCH77x%?t2Ud<8VkvfQqa z&{8OFIr6fjW;2|XQwxrc(i-zwGJU?-m@wWj<(_T#d}`jH)w`O(2#YA3oo@Ol38w`J z9lA00!Si$m!Ls|jW#tmEl|H6ejFyC7o+j~f7>_m{3w}@X!6bMd?n__lP*nzNE{_#x z<1*huO@6~^4_(X*Ie*`@8GRDE1^U*_`$A8Q9Pk;Uv;}1~+6HTCO9;l`a=U7~GQm%Z z6lb28-d<$%6mv&r$`oEPh$48mr>WK!bmH&$Un%S2^-bUJK^MHY2z z9VN<1Pq^k01jT_}FI<*2nX3D*#Gzs@+4?SxJEuO@U_o=3Zwk-^?4J7hKpB-JH`2L9ACAaxYg%9=8=t?144r5B4sF>1Da$=N)K5_6Pq(7Gn+FcGn%Qv zWQ*qQkczgHcx93)<-urK+Hw&`pm&L(&Iv6XB+P}b5sYJKw4o&n7wQ!*JMu7mAW*^h zoU!<_jEy0<>;=8CgCXO)GBG|OvqB6#!`g)AoWTk*B#3kQRP({&8WnnfUBLhK9Bm!sx0axxaV0 z?agL7ME}zi8;Jt7^xSoO`~W?upkIzPfuGG(waVX+7sR&A z+7P#`(Y^-OtpI{3l28Cq0>Vd7=G*Pzu`~*bx0Sv?IHRxy3s4;<%FQOQqyTf^?<-It28&pK`tfIV;_3Qo6nYrDbQO&vW0L zHSR|0zQ(RkW0`kHB&Tq{p2SsoUjNZiu@I7rgL85R+NRkV`kW+*0vu5>PA@n&TwG*r zyxc7Kba|C?;Titc?(4CxtKDX!u)qmnrtVwgi9dGC@{ksPq0P(KmQ_qb=}meCYaQ}dq^G;-4EW^PnhI-gG#T!V2XBBg1Ea+YI1$i-3M#69@{dL7Dx}iVT^<$Ih$D^`Ldo zPN(>7S>#5S&KXgceqcv{KH$>sptRLWsi0gy~0PRnrWN`Ufu12F6k z=s{ONn6+m`8N0db+5587mv_1a}CC>XW{Tqjj}e%r}cxU5VN6HKy3(9tjSPIi0*D7{E4vVaaR z6AUSh&vSh8Gfh7AJ2%2kk-d_}>l*LqCY zK^S-^W945(zQy~<7aZ|Bc1u7(mNWzfmSNX5t=AL}6qN!tIVA=S-%oaDba7J`k>hTi zfl^#ImR6LnAx2UcY5FUASsT!pl>_|Ps`YlW(=*Up>#1JE;g;duq-Vl1GO$;U$Vzl} z`uN-#K=duFW#HyeVT{|WvnrXJ1qo(Rd7qJlA~o@$P*YOfNyz82lGu+a)@Y#zzl{jc zsQS(DBmXQX>)Mr}(|XWnpzr|+_`Y*5k0LT5k^iGmKHfif)M9UI3)VU!qWE}!q7knc z)nbN^Q9d#b=D0ZcqoMY7;bkzWX|Ep_!$UKr+gjVYR;LYZz5=3Dhuut2m@imxxIIxZ z;=wKj1m*h5`76${l!sI3B<4M zMdvbByr8Cn^}3w4a9Z?vC{7tiacv9fMFWsfZUg0zX6xr6NQTPY{Qjt@u?*-7YL{Z* z^_5!Afw<<)u&hBa$s%ZP;ZpXo_t7itrkkyHx^t<)ccBbV{3k0o8H3{>AZ-9F+JB`s z{{9AXJ&6AVDXss_=&>P8AOq7sUMCpk1LC*;{XPC?fBgUAJ^sCbh!oHi7YgJIg@~S` zUz8~ezzm#mo3cFxu&Zy5|9p}<5rWjV0|Z!=Z-&220Br<<-Zu(hRDj@>K_&Okh?%1S zK5txTEyDzeo4QV(;)@=~y)M!j0SC>dHPcR!T)Neq*Kcd=X0}1Uuri=}nE|#Qq4%xO zEYg_(-f^VqpF1i41n?V-NI5hs0mWnpP-n7stbLEt=f?HjXUss|Q6-R~O$@7v+otF_ zh5Ou`j2R&zumbg<&ATlCJn$nt#$p6VAvnIbg8h?aVq!GujHyB#c>~8=1O{;m1Y+aB zd(1ckTUU+E^JAaW(E|vJr-1owMcxO^>MDS6BrF@Ws~gyvb{?pTio$tX`p-iniU)5t zvD}?l1lWb60EWZ54&+PbVDv6hc-V%^%_f;5?s(Wu07+qX`E0t;vo1O0-@n8#zC}pg zcp8oqMhdluhlYm-gim*8I1t%ZFg@T2EkF{pxOiQPWsExw@EI{BC*1SE_yyCYgYq)H z|J)#HP$jlj?j;vRv9NdxMAep`D2 zl0{T{JEH`dF1)O#*2$np@!W31nZbXJ2{%Cm02GZ8hz>+C#IF<{dt9m~r9ipVA44m; zY2ds*$l$$Q)>$YUO{MwW<&75aWvt)zC)=6tPdOokaM1q7se~bI`KxR*W3I( zEudJ`+FkipP+Sf~bY_=P;34R2jTY@7tO3y2PXLhJ$BvZ0YgYQ1C4hTO&AEdpL$zzh z_iD$kz6Qv`gAIp^^+mMS?7>5-w*1X#4WK7afyKGLj$?Sf4Fve^x<72kOPfjKxIwEU zTnb+LYpMvDqxS&o(L=>=10Lc(qn0)r$P%?{oK1Ud@x5`PF-2+s2#7En&4H`ieF}tS zJqOOE6y@piZr6t?jqea=Kfo49=OBDz+YIoHGjq_J^D97ENizsbDg_EqAz!@u!0TQ2 z#>D@;n9&*Zu&xKRnr)ym#uDduT9yZ4aIbbr15nTv0p~U0i+6<#nq^$n zG^W?6^q-eGE(55G>NO&)0B+EI^hgZTbbGvPp_7d`@hN67r*WHMo@(adwd#L9x-A~e zSzWN&^)XYTqN4U40fBSh+5y+(0LY2nbKDyS>&V^1;p*k{Qow~u6AOx3luzc?-;4pF zUOxZ|EZxSAy!gka<_NYo3$2-Yzn~sm!j{wm{1U`$1?I&Cd0-e6aM_3ld9?ia$+2bq zKeMv`153?BJsJ55xE!!ZiTvyMfKREh9RX~VKOTro_P=Hv@q;{D%zYta1iImM{)=Yc z<4<(jK;+#|-Lu(4HkGm~JCvXeChY^pZ(xcGk4z1=!MveX7Kz;<~L zcLmV8P7e6pI#WM3kD}85=fe+j0R~JnPnG6sF_Omy$S&Q$u0;oQ!{)5|Wz zH*bWnngEocuG4`_juynS)zo&ilF>YW-6C9?)V~eGz^R*g6j0UDfzc{5XqW_1%<^mv z=p1<;bsjW=o-wKQ9v&WkOap@A*Gt%c-76#Qd`mkc`3CZAqhDjiz9$m=1fPMNeNr}x zB3=Q~pZ2)(rU9&}eQOZtFE8H6(}TW-f1e#ah@&llbEyKTok_3^5qrS?zAe;w0Q}X< zfPo3E$JklxxKs!X3>XcV&_#$C8nAKByy&RUL2pjsEr!??ik3napN?BtwYrjS@Vaj`^5Fp!Sc^YLLw8ltU&wFNdr;?^KQ zt$3nYpxFn)IrGOB{jXa886hHa_-_FOJn(s_{pd^1c)3v=*gumI&a?)Eg%(Lh;mdw<{WoIlQW z{yuwOUZTSDtTk)a%sn&r{r-@X5q*hFfDC~^UW$u-Qh-2Uy&({oWyI&;Z`elW*THXG zj>2k=iZ;fMF8cOH5NUl!TT2^9OEZHv&PMhQW;WI=^x%KmH>Qq`whkW{7_9#18|ZE9 zO&I>f)g*z3AlZtkJ3t_4`p{o6x%@e15J)wb_$NUn*QEUg7p;kltJagLrv1=2lJJ7U zZ9ZR?b+`!4$7riwtIrPipH7X&ewC!5A)IBDuBaTBa3JTDo7a4%)Y+!+xv&1}>~77z zBr+oe1($y7#&y2ut)|g%C+U6{WK~!TtN?L?lEGk@P!y zM(of3&%P*Qb%N`aESRvrIWbbbE(d3kToBG8Un zG4v(mVyqeb<0}X<^k*%Vx<=V&p1pzJgaVV9a@e%2JOXB~H##+SsLo+)*t{y+Iw)6AOI!Qo@-o(=P-vX-6(q>q>?*z> zsWu5lz(-`|e!?=rRpqhzdR9Un>(#4QrKP2Nsx1-blQJFv~lizf}~y*MJ|){+w9umO-$) z(7?gabgqzXONORd86|X5qhK6tp?*?0cA$%*}Y8w9> z$GClD1jEI}1?o=n!Q$Y|{9r?4NnE;M>Z`oWFGBq`q?_JBuxbdnooQEAR{B%?nl8=wC@p9Gz3kPTMN3Go&A|hhz;9!{XKmwE3A z#Y(&1c!BCs?DttTo@0nC{{yS-9o6zt^Ih2TvYw@t6%sP?YC%aeGtcGlM>Hm*UaXEG zu$@=bF+sVxlmc;`b8T%tbeh$WQu7IFjVg1$~ACaKA{ww&v$hB2P(IZjKK2W+-t>ZVjc%Iy$m~N3AEjEW$YMSo*)f zZwF>qFaL}rFE20kixEasQxh!QY0iO%hX*(+tLdG21R9g`~++M)FVPlJVNyuL6`EWazQeip6yy(71*L;5}Ia_Vjm;N!} z7o$EbDk^FSK8wFjll#d*%@RQv8X8)T^+Nr3KR*mCtj^}Ica)TrX%d)K$OryFs)847ub!0M+PeT}!f1&tSz znl-!#t?li;GZiL;o~Ve3dRK=F_m^`vMyQaz@w|@Zwr}dq9(AM;ttxYDr@hH6*;Kw7 z-Yu{RLK1BQE+rd*(6``1rxC7v*)Qv{)-+(?=1ycW8DzAc=X^~>^s?q^@k==P zGi12jNOFFD9uW=Aq$iB1(rPaD%TZGtaCiZZx6=(SHV};(Yv~rx2h)jsY&8CR#$X(} z)!8bG4R<22@b_fi?dv!=?>#+#e`9cZZC&(f<Wsp9W?NqTgCl}X9n&7v& zluZ6?;J!Rp^A7%Z=b1Je`W6;_ff!_J)t2~WWo4`ulOfIrvkRAM3=9k)HunH;!)G&B z`Y|+9pvr(lrvZ&9;H3D>s}fRpznq@*kVM7BiPl&zyy(eSqOJ#L4Ze2WE2=S_E+s8c zEis<0G~4i$29{TN;9v1mmy{ZUZ=IWo^*=;?Pdqi=_al%+HS1jxW%trj>YqPitE;QF zj*jbfTPbT5LwsvDTd5|!(Nsx%UlVGUJQK~vvhlNZpT2}8CKCGi_|U4Ce-9<(05)nJ z&61p{vC;Jt>4&;f)74_%4@?Tz)gKgxuKW8l6>ckjxVCn7`on30>l+(oUQeFI+6~5t zv(Q^Go~Kw=U7h{q>d^l#TQ*e&oT8oWaFf?tGP0R^CmOitFIvaOqQKe|6ci9qQR%NN zFob@QsKZf8QIn~v3M|e{?uPX&Oe01r?^wNJ>p9;UD=RHc1Kt9h9Au`}+l#%K1{a1R z%^Ks;-{K*J9AO-bu9=+SWznzGJ@G4xQ)1=nuYF7rS1Q)WlzJ4@Yn(#G|)1Cp?M5st6Q{fYw zt+TW7-Q~dxeCF@j(ut?tgf@&ei#*TKh_%w8?!-Wy<-hs-&!0c7U0r_X=Z;Cq$7`n);(R0zd-nwuusw&s;jT!ZLx`M{k3&WQ$YuI-O4PHt`oV1|yNEb&|F{wTg* z4%H23Sf#|~b^Mi% zfTQbLbRi`dkp=i9fQyFspZY=0Kjh4hi-{5L@P9dCUR7x^6^6!l?F}x*{7K!}>FEn` zWkC*Edh_N{YgiasEGi@lsov4iNDx?m)#HN|k%9*{8V?YRj*jASJ6rzffnGWi z&ugD5i>cGIA^yw>^PSnMJ?)C~p?DSqTwL6afvKsfU(&eb3X>QD-eW)hMTpq?H3?jK5Vo+*GIITy zCF+o#rTxgEznY0D^Z+qaeoEex1VGckQ^r}u<#7JTz?>Y4j{&H3V{QbY{)RnaD{E_p zh1r1wziAa)FDGNK>t^8od=P*_eb|s!5c4Vxs8e@`;D5_9IuYy|$rNRA*p%uRI%+&a zO=P!P1()|Vk81=)imUJ0)({K02!^b}FGH=H^<^}Z3_}jKtVyl%1N1F53}WTslk-TPFCFZLPO1pNs&rl5|_h& z@Zn^UW`+4genT@cC?h}_bA7v461?EGJxn@o&IX_wM`LkfjyHo=Z7W$gk8eQ%jkUEk z&v7eUXBR-Ir%511L`P#m6ciQZ3nq9jrw#qjmcAVE*1H^`ZpZF~5U?QwaJ9d`kND!n zI&jxUi#b1ZwqWS}>y3ny8=CBe^>Ud((%Qj-Kdq2xIqDcdf!hLqa~!*V;+NGy8$<1B6Yo2rvP&uESsw7c@)QG~f6GXvpZatCZrpiqziG zapan!QDnUS=O?XhbK~?wUo2gwW{owg<@9l^12Qr)9;fXa85x=V>9TLy4bCe7tAOPB zXJ{w~WcAvH2EyVd;MxZKaNh$02w|t8&?BmHzi4xrNK zb24ukBSeT`4aT~Z1pA11{JG_>-4*7i8SM2|1oC{dJFmF5*)~&I4(EL}k+9cDtq3F@ zty`&HgNsdH@Bzf7>lsYtPZj+3oXN2J1tfvpN&9z`gx|q@hG0fv?!NvdQ zIRG^ns;a8(?d^DsdJx_(m+xq4Ljs810|6#Xao?qa=AVp=4Ac2qCIDIdr(Tng$j((; z?F^^Gr4brogOrF5gGH`5N!04D@Jc3HSWGN%WeK2Z5W%C8l04=NWs^S$Zw)2~FXW)D zO3<*g$Aaqbux^X^A8hwtGS+spKfWPl38XULZ{J>KdV`AQ9R{ zz>v?LV)&km|M{8RuMj>2J#{#N2btyV&wt_7%nJ9N$n3J~ovHFBb~TyNvA};`9|~4m zbg5&Ii&QiZHx~{P)Ya>k`T(ky2e{IpC#E`K1lU!r*@LU3>5`x?j==;V3*Z+^m(zuX zw6irfL*+(&)^7bBA31~;0VLIN-+6CfV8H2i`fj1Yg@T$o2v`+B5Rm{>qSBhFhZZzq zo?jroRd_zQv)e36fw%nPabpH)mQERZE51Q*1@NK4YNI>0#-A@fU>2ze7R4sFisUHZ zI}ucu1FV77$CB{#XB&W=y$>F3ZEXNO;xyO{rSR5hon4=-bschhT$hp#TP`+ofoKk@ zq$Q{Nns*>#a{_mGj)3}FZz5mW<7|NAJ@H(zHn-=)g(?p(ubs1V^8r(lMpXs~VT}NS z1Cu@%6%~adr>Dm&ey|A@OSs@iwlGjN0p}df6h+f<+rS24kdcKMo>nTGCs6=GP|vMr zl}=8f+mThd7c;^t|MC1_E-p(luH3K(HH?V6`xld8X(^?)MEV>Qs!f;b!-2iOCnxu3 zXt_U)z3>7xgVEFD1N1Kc`h~aXd3Rs{lMbLbw3yx<&$~Y#lLc|h{~H3@X&0{U@t7=s zOg<5akkCkMx7M9LVp{w3cqhr@Jf15*UZfd^KH;;ykI>MK&L5cf4_8Ydo5WqV$RWyq1kDsF5faFU zI3`GCx!l;Fj~pM~bNg7-#Iu-;0vA1Oy3+ASCF(8J?*Ny_t}eAiGLD{BqcZU3Y-_CE z$%5T#*0FCh*ar^bbTiS08Qkv=&ii7ZpaemV-nqZwsJSoErui>4ETf_t13xR&tO@h> z_ExAd0-JfwW&a&O6+;sf)m6L8%S+3pW+HxmevuG7L0enKweC4RNZ`UgJ~6Z?PRL{JF28RQOzm|`<< ztpc(OBIx4qWabItQRLW?Xbxvq06u41r+^+|gf6*qb)A$Re*1=({PHVLi2Fbw2x^ zi=6(_i0ww8$r~o+<#WgC@Cqqe{di!F5cGLi(IAAOc=xs zmIY!m=)l=IITgvlL4Lz&IE4HWW~ zA!>`vwj35JSdbLZEAvdpv5-X4=#|V;0MM@kxB{owW8*(%0!S~7O-<6E14-Sr`!Oz1 zqQ7%yGLq`+K*6>*Fo3z}e#|O=kCwh;Zi^X#10jb9r0m!*k7v1c);uu%wASB%A~!#eV(=HqK`jt2QxGLtZ% zamyHHF>^yZjf2wK2bZ94VdP1+@CuTUPKG=Br=R9`SQB>9Zo@F|FkCGYwHlGq?-%m} z=XDTJ0D~^Cp?WD@Z2!EFZ(}mvWHo5oDpCPsf1ERP+a0&4PkLzY_XmwGjy&kqh+$wk!e960P#&!On-n@D{{$hcbThe}%Z78xZVp!M{&YjS2br z{JHhJZ+xiw)h*^&BBxA%1I{L=0l; z?3`NXtK!p5j5_X6#WJtEknMAkwMXZ5xfDM70Ob;Zh(h}UpPqu?Y&o6Sl^3^=s+Ga0G&K+D}Txiv}1QH>8IVDoNqOv zIZDChw%vc=a&yrBHD=)HXq-nywcOdMw{f<$OcqNoq8{i2iHV6Z&O0B@tFM*;5EJs6 zD-t9JI{;|?UlMkM01X;4wM+>L1q)h_MJ8jbdpI9B>^pjej3`k|%x|j#v58=wneNiP zUjg+-bShVz2h9(8SOIX8fLp(;sdtjpVde6A^mzV~pp&MgQ3wQJ&_bm@n5|mtV`yO& zQ8Z`!dc#43f}IREAIxiPVzvG$Tc|z<{Fs6<-o(yG^(!_d7Vys234>@!G{_iRUrcY%0yi-JLpOZ<10U>2 z+z+mGFqyl;^~8YPa=LX&*J}XW;q8%3g!uTH)G$dYsm{K>g6Xe1Iy&#j$rn#PIBfQ} zb#-;wo?ToNnT`#F@r|5$O+D@GOu_8-wZ{kXA*6+7%~H-xXde`vIF`e_5pjk^A^lGI ztqa3Wi+wH9=6#+mgwyp{kJ$5CUr0y@ioExxN+{^)LYF-62JjA8esMXFgAC+9=ZAtD za(mCVFtD-Y9vxAWE6lrPE{`*)Mx|#>{_mM6TT$Mqyvoe+0TC<yB9C*Y;0^I zBO`+r;-aI!*VJ4QrA~EsKQ}SiGT^Z50MF7GZ+Mt=s?t!V>uoo}qe40#u#Wy7g#oQm zvlIy>nqxY*Ve~);(_}EIt*2+JIy}JNzZ?n+uB;Xtyt{j0 zTq}$h>z%v-3NL0^;g_0wuF zL%Dv(b5Nj(Dk))sOJD#n4=8G~GNkh+9yK3}-c6*_CXphfS#>!;cJb|DB%ouV3@mfW zzu@JZkVb%E08;*~USZ60`iBev(h8FyVjdnxA2AOP9wa0r|Fs6^gI>^6R zw@nmp)jiTV8@+OMy+SQ5stAEUK31H#C~5?-0)k;z*Eg3Xy?A~4AB z_K%DJD%7s6>Fev)%wGYF4#nxJ=c5^7;u}j6qhzJ@Wq;Kz!|U3YRccc6OQd4TkUB@Y zBX5hHp>F4>fRhY6A96Vlnh*V=Ry5$u^589>OHek!Gr*1ID|puUnsUsLEZ}6n_UPTsc$$R?enH ziIYbHxD^`t6xyniU=_+wLvEqVHLp&TYz{3Fe!nE~7Dn%-O2VnldnP0G+Vc!n#zE)q zJ~%`@3nQPF1~>?lxB|u}Fj$hYqW^b+rK8bcfmF~1lB0VI3}qy@mP5be)6ZG0fA^=C zMF+J2us_{!gl=x4eQ^k+G``028HNy|-A5~i|2`)c`kdbO9S-kY16{kPRT1MgK>+5>fiU~mV@_-E64d26u$O$pNut!-Q9JDl@#YB z{hr%Y4f3{XVKj({&%D{>+@OAx4|ckVs>cf&VBgWJ5=9CaO`5FFORAw^^S|HJxi}kn z`En1UtcWAiGV_}mu9fip$~)XNbfIw(h0_CoHVS=up^krRww_Ok68BS+OFYeHa$GVF zMGhKAJ{^#O9gD)Y667`l$5V(gS{b#Oh1XJl!R-^pGGcB-0kX_Exx#6YBY2cPwE}pQ zvN}$2IfoB~)zPJORsjt6Vo|23y|gnyI@%Qk-kky#CnXHs0d-%yk&-#eEMJj}3hT>`N&2x2F6jq|`sp6a)pwl8ka& z4t5_UYe=px0wr|XD9_y=6=`Dxbs&Qfa8P+$8f-=@`3A^%pZ{HN4?|Xk2v`c#PJw0r zETy+yc>=4{^VzYbgmc!BCAb&*AHcRez_tWKl)<)Qv~h~%GT+mbm?BSCpPoWs$6cyA z7H54uLSxTVD`+k>Cb~eHZoHrSNiDuj_dV~vo+0IGDtX<0)(MP}l`#MFFwzk9e;-C) zVfsL#^hh93r6HWAPn33J^9&^G9h>yS8ASn+F|{r_wk@B>ZgaSagw?pPH@x{9$FL zJzTf_FW0;XGhS@G7e09ReyLX$98UW$=;6#5t(=dwTu$PssVhB}=u~J_qS}h~V`sc# zDXUg8G)g!4;)wi_Z>f!jCOqO-ipB0Gl0H_z+So94nu4HCdTdF@;P76i)qU;W>l?rF z@l5u}NSh4`U_=u4u2!)DeN;3#Tnzj`xgL^5@o^l|uelIjTO@PZwYd z)YdFaPPsX6m z2bF!iuP^NL7kC2Bm&v$`V4Mz0JH6Uuey`>XX(r7WdFa8aBdT1{@lm!VB2+7liyvaYFd5oXY(Q4#^y1=Lso?Dj2*VoqZu3yFGhWb)Re zquOGJLfk*hEL&QLi&&GID3+V)4An^#YsS#$Xm6E})z7P9eqpcQu#1uCYQolr?)plzr!Co zu5E=wvt8{(GUVv8R8j$Zz#DDDb0gAImW3(!2kXXfu^z7maw1nDYZKIAjJ8&Ft`*Xb z^Wg8wPSZ5GHQQiRuNM6tgdYmDZQ+zE3xXghbZh!Bj?X-{gwu>7P0 zjlb0SK*RI##-vh%4s!NI{Rn}9IWpRKAH^G}>o z#wpGhg}@}lpU5m@e_8w6OY?4c?B}91Z=YjvO)wn^?|6cj&c0wtHZhhd7GQUbfC%D& zjbkxsK`uN{`P67_D5@Sy>u9AF$4}w1RUtYjw=@yf8KPxe_@Q@r$OWC44r$EdE!B-N zj|d7RM=HL3$?IvL+G@@eG-BchtIEqWtmdi#%#3yI?~i8@mzCw12c#dl5%MX-7;Wf% z0|2%3d1(;4PwPOQUcUvCt7m#FiE}p$W4b8W_y(BUoH}pj=*^#pVOR*X7cdxkl^Y54-T%G zO)Cd+s}mhUP)4iek0b&~#CiWMOm={jqUD%gbm}!23rZP?&=bqB^9)z(_@$P7(bInP zZ01ho8BK7fuhx!2Lp;RPj1?*4RZ*vtQMHiQOKtBLkDaCn%ddhzhz?j+1dH2ShwZGnBYI?`2K#7 z`>51xjC?SKx3BFRf*Tm_g3baD@SPG)+V;bEEcozB zSblzUPIeg-XI8JaA6qwa{vb$kQ$7OTcBCSYrzU zCdGac9p1#u(DslGFj++tAtqlYnyk}V9CTSB_>kS3y1BEBwF5PlI>O}pg%?>H?q09E z4XEf;51<#Hr5Ee?z#7aXz&dbny20&!$?pZGU`hO5DUFRhuP`yy0Z9S4Dl|#SC_|BQ z8K}+-FcE+0LULvA@5K<7Bxc{!mq_4NikL)+BX;R^!}sv zc{4ZtP*Vg&dlbA@CQ%-LLl{Ou;PMcafu2hpC?+=j)rhY~olj%KcXgS5i(`GOF&D#ccfqV`eVt-K?1 z(Wgxv5x2pyva)lYEBtSTr><#feD~TnHY@(Eu(-b_$iu&FmHdp1N8r|5BStB{yLj7M zrJ7Zf&TdaB_MX!am$+Biqk&(hWBD@MI#T>~OSBB=a)8do{rvt)Cjlp}^|(c@_ZM$Z zX>0@S3Ql*XX~^(l#_j_;&~sT6&F9sWIvejPbPfMBDaU{YWrEutyRXs)Vp;~J zN9iNh(g9CEj9*Z4$z@kx-Rea#%VWadXMNK3Bw@H7=On@#Z{F!Q z1~FB|mr(!k*?o9XIxUN!%xbPYvOQL^WH(+7=ja)$(j+o}(U-|p=XR?a;|Zg}`%+@# zH5P|~~5`{nW zb{Wq6f#581ZFJVp^EYCw!giqP=k~1olB#V0q;!5`3HfYg$>q%|%EHj4lat_b%h7H# zTe#XYnJk(%)!1^|zPD?2I?>$LBbOC50E>+9)1Ux^BHNeo4?TdC7fKIMW`?b^y;E}UD2u96SB!3q5e#COBC0S*KAoHr~NpT zSV+f~kg@!eNP4Y6pS795UsUEqN$p2i+dDID(|96ru|rQplAar)3b7ZSK@p^wWe&E~ zD?bKA%PzdWG>^c0Ef&4mUX*BYR?#8N%W+wWBWUAR;b-cm2^;XSiLltvNZ$&T__My0 z`&s7w=i|lt7kp}7K`GL_cq7Fya0y?;BOEY6rQr4s()jJr$B8D^L%qO{S68r;b{NMy zm|?2ECA4E{Xqe{-Zv>&kbhh})N|sLbre@rs-liuGZP)XVllXZfLeG=;#n{Tc^L0Jp zi>K$XM^qDvmoLtjk1~;V+*F(`!4`q?N6QtrENC`znJyr*rN-t^LA$9=n|X zO_NAW62J40;nt|yZ57_U$AoX?9cY^NVE&PMm9$mICv98UsxesWbat#_#;H#v6pX;n zuHw+w1#6o(MW7P$+pt&T1K$nI^e-<)1FQt0z@?Y+dyX~diN^R!ILk{feGk8-k-9dp zwi4DlvIn6M@?{x~Y7m$+3?FxLYjK}Y1?=&Qt&uXUsJHCz)R@Bx%fFz~`{1V8nxE>3 zcAg3^eXDwVK?KtSgZ#-8C2{GuojGTyY*+iYCBcqjZ1+RZdwAqaXeB{luxI28Eghr! zo-EV$w>z?}s1YC78U(}M)d@Vj%YPwVmE`smn7R{Pjw4>tVq#m6n57@|rdc+8Hrf-GxR+nJB0J1-YZSG1$E zY3FA<;%Xyf0>XpoI)aF{3F29c9Rl=^vUjsIVp;daea63svDtroEnq5o2#disKZSuBjy5&hcX8N|( zbo56I(>{Le19O`JOl^YG9*2c#_9hO7b1R{5ADlmLVxP`E2J=+gqVe+0b~j4ra3vZL zQx*0~=$;m7V!8l-MgryLi`$>ozohl_Gf_H;)sda+F_^+(#vrE2b;*(@vJ3X^@x3h@ zTdk=>dm@jg%&j#nQnPs|oHm;ySlu>$VVI8mq8>2(FUCU&7TXqj+s&$wgPpfi)^@C6 zc;*_IAcQjSUb(z)n6~iEmxalk>MuB*f+6Ni?OoqM7%{~bsVo|@_~t8Dpd50PPMCb- zxy6OdwjoJpcX~8rr=(3Gb0ArugGN{}vyr3naf+(m>*x`gwVbB**WT3fALQ!`r0ZOa zLOi5^xV8(W1rx!&o|Uo<#x+`=>KC&i&+fRxWw`5VM>bA4PTU{fA$)9E{;e!os6_DL zvn44AZb|MfGy&|7-?N8#B2$jS$3h>g@=O9InllvAwNt0yjg$v+*my8ei$r}h{H%^T zA`#xK+54q_0Bx1A=d6ZzG+(cs3~-6}wxQz;K!ZK&YAHKU#vME^aV~QlavQZb7i~HO z&830YuW3Pm^?Byq{hR8$*HS?0VL;)h+_@Lz_XUYTO*?TMX~HI9)6ShjS+;f$MT%}& zAkjL);#|@be3cgr-(hs-t&NQ!9PGvMADjq9ovq&$L2226=}}oYF&M|g6kLJtF&+5PdA8N;UCKz zE{GH=dI<`m)?N#3i8F56{31r_Xz@==*VDfIUX2qQTS>^7uvv2S)_8hp-=#SKw##?f z7qfEV0apA7p~7T_`*U`VN_%kO2ZW$(uT;nRoI5F}d;~fYR_$+=Nsf}H{$Jr#P|<5X zUK#PbXUeDO6se5V{p2R$!)tHmxIOFoQ+;l>>Eox-m43~-sO69pc4V^>pLI9m`gX+9 z0bAm4O+Mgmm;Kfrmfo{`LX=B8h+?!ObggMTSixCv4Bphtx|g1fSru&4?rWh!-oGQp zx$vXOX&WIFDe?2P@fD_;`~|<1L-_vu0QM&S_>NPJ8&FkjzFa4R-W-hr&*BVPPR7mx zlo4Kf+6u2w;k2Y89Rn*;0@_@XW>feN4?1AdGCVmH1D`pIEg5eJkl(hP7X-(eUvab1 zK$QJHkRng3Ee0f~keTzKigG`hq3uVale$Bf3U+xcv9QsDO5JG$J}aHdMRu(k^|lJG z^Q3f5-;+@$ynBAcZTb2uGb;G%9l-#z0n*7Jf$%XnZ}h?l`l6>UR))uIOdO2dX5!b3Exb(w-&`gI&rb&X2z zD-nok!dForVZ~O}^3%Emqeiry@qG^wFA{N3#7OfH-RMh+?ibm74VCq0@0^qvIFZEP z=lfDMK2%~_RZDX7-20ce{PeU+$Ehe$k53HmJ7P9>&uVk=0zZ^Hy)(^YBZTYx3hTIs zjc?u(S6#a)E-N?Rj_0kn?>>xMDDI5K5?|aSB_HEgmn6L{@6t?Cy<5$#mx)`~J$a;x z{z!thv3}?!SIK5LPDxhdJqD;iDkN=GWFl8Hvz~={iB2CE$m^Yal2a!h8ckq4ywJ3G z4bLUrKFlyTi;_*YOn-aHaIqYp5_;@dz5)QHq;smtw6FGgBJN<^Q@8C&f}Mm*0u-Eo zcm+}UBuHQA1@B1&UuPy)LL@bdT0~sGmq%TdU|~fLgN}EFQa9z4Y2!ls2oN{i_`C*@uDa#JE+2g|tBFeGs452* z#m_>+?KU4!_n*!zPS5gP#9KN}%qWq0Z0^Dj!!8XS3Fq@MB?S2I(AUwF^QQ2aN&lla=U`@-3L^?jlW3ioCk+Be6B z=X=+CkAEDKGc*Hrn9+!C-@bF+3hfD2U9ek)r7w(SbW^TUBEK?0nd$g9*BgkQn6ZWEm}Fz>)%lA{La%feC-x*Yrs}WfI!0GpGxxmfq#24L!EnP zGK2RVuF?K^idq(7vOTj*7p|dP-o*EF&xnYrYWv3#uOE&Lsajn@4q6)C7PA- zksy5%^2@`_YSSo@VLPwr!Zot`YE-+cs8lA|JK@8gx9)Yin6f2k_O%$1w+(gZ?{U|& z3Dc4Inm7x5C5!X3&qX2g^7A3t7QvN$$eMfeiUet1Of-`Ll_lg1etH z6Xj8Z53zcpB}o-jtd5@gR8u*x4Qrkpe#;@C6=M)wu{rBj8ys!P+CGlMC~{Q%g4-%# z8nI7448S1^%IeCC)!N-txIRzGyJL3zTz7c%seMGEr7|=0J(|n$M%)kW=^Jxh9sKDK z5n@zmko#y9tS#Hyx^r99Vh9{f`_~xDGCLN9zg~V!Uk^&m)Ubf@rh{-S3*aedzVl5DU zRR049vy}q@qAxT+8imB2++HHgb&#^7e#$zPN%YmOx@vtt#?l!l)H1;wmr;P_CaQq6>ZRKw!Z@XlIKCR1fp$a!~a!l&D|60pf zq^xBjpi_gjTSZwQXS~Jq+Cn$Xb2>b8P9@$WIZdP>0*_=s?t*xM=ys`SSH=paNq6kv z+&Mo-^X;)Vf1s9{5#jIMhFPXMSwx}<_(SkedA-ivK=}OwwUOKNYKc@3w_nn5`BcQ$eF6Kjjc?G= zLcyMk8G%qTWqTC8HKMpRn#|iL1@!mhHx`*(9DdY<6Te8ek(2-)3lx ztJY{&M!Ai*!;;yCxkZe{FwA}Z?yFQ$PrzS|mXde0sH*-7(RK10n%jO=-E;ID>(~tL z>yr1@pFI#yB8!I1l@hZgDYCqyYWK>*3g*Ui0Ka8G)Yp>jnno(MAj%^N8`*je=12 z-D&?Q9OsGDBeSPD)NK=t9aC;Ca^mcgpl;XGiATTqAUfTeX}z*eU{Y zJXl_`Ey2-+_5S8Xy=vTISMj-`XI9nGnCSK|Peo>VP27d(BQF~FUqTYBh3?3aVQ{65 zr3`uO7jD%qhO`n)Z|e@#U_}|S;TZE&4R@y#t+9^h4ot)c26Kv1X^M^TLi=gP%eVHG zE0GsrU$UJ06(I58=z^td9La9zN}Vo1`?wHF~D0arL!uek$Kyqllia zH^y`Uv3%;_Oiv|`h6()vZGAr4vu6}F;e4zqClR&L0zPc^9Sd&^<{r*6Zbh`a#48AV z5WJ|?t(;noTTEs8@~FQ1x)nuNGZJyhK8N%MnxOJ1|d>uY6wMNj6&5O3{;fvn#-cHWMVP+!Cq_9NRnU3|NuV|J1>59O?4 z@GK$8(~04iSZkH7cXFHv)h1eq);ew)&XujBwjC!=Xcr2z*7hHG^kZeAvJzZHbLS_mzOQK9@y424n%nZ< z1hb2@@pB3UQWmS$lHPzZh8>B`xSjJl2I%rgPA9j3qPrd38yRW9XK8F_JJ z=42j7!_>$?5iFtQl9@}FJGQ3|J9nOYT$P`c4QYSMp$S$Ynr_$;xw)@bnY&VU!gX*( z$ZNpK94u+9B!9}XvlhrWe`G3v zMDRafNQG)+6zSIg`YHdlZx*Vx7K)DL%gzfrzz0I>{{C^J+^dTVHaki14~V286f7*5 zxN*I7337%mFcwuB^t#O#(ttE=yJw0uT-i}wUKP}ylSMwE>B?|nr+)p=u5CH)K5JTw5VE&(97-y80 z4v$Ntw-;_ph9T>R0hTLvBoHULyMK^l>ni9f0vnaekx7Q?@uU{8^q+xY#Jl(JVd^8} zGIq6_J)q;U;v*W_d@P%ez-DN-nMh${&I$`y-o zzuwVe6L@(A(Ch(WqA*YwuJbAj7i-lCiHRWwWuW8WKoy5l3-9D%PE+c+ks!i(^Y{K# zw6sti@W0IHo+w$qzulpPCs$WJy}iAibVWq8baZ*TEqp*dn5~#2163Gd)2J*T97uzQ z0)~FiKh$L`7u&Nhy2>yZY3l)slZ@wwR1EGf`&_VnK+7KWh zdHumL5Xd8mK@!raG!+E&Eudy+bzyl1qSq!r*e&3S4$0F1#Qp0gL=+zU0T zg22cu1`yg$frO|65Eq+oHVHASHKNynOeGu4qhAoP27)PCGEhw^QDcKoLGZsC2fkKX zR;CZ=lUm?o6(X*pnFbO$!cW$E;P8C;z0=a(=y*Lim6w;R)!D!2f4XM@r?3V@>Z|j0 z4*e;-b4t=UE^m(V>=nM(h5}l|#$Sq5r36;945(J17x3<4fM|~rs#J5<($`PVpbR=a zY&fD86cp?Q4>NR?Dwt3)OB@&gE))X@mekZS5@r+mF@X4|A}nuxpGp&y@kvyarorV% zg_R&QW5g6oSUwsEUa8>_P?fT!;uZGQ^xc8G$V1;*s8y#B&u*143i$q6U`i)pY@EG< z_cfJHqf*RlsyO)+NO1^>qpp;?k~r;z>HupL3jqP4tFKQ|z0N)>gR*N$(ag-O_wrya z25hC{3pE9WXgs67FSFye+y)SslAATu^18{!q(1Xrtp)?qf@kpXR9=raIV;W5iR@I) z&d$9QsU8NkvQIF16Xr2Mn?wVo0gBM?1oS_V8$dkFZ(P{?43y%%K-*CAkBuToKSqO} zQlO%wl*7upe!3etzv8f%l#1uHGnimkixw-Gpr)dtk^nNjXb{#WZM~$VLVymxSStC0 z^54Nh6|4;r66&Cg7bJXI(2q^9KVB9z0))d}LYqeU4J!@`K*&`%Y8y? zc(kbfx35p}zi)E^f5zwYa4kZ`%g1z+RZfC#5Abe^06yFRdd058C!l=7QdONYxY}#c zegJ_dC?FtUb!#g}O+$k^)$7qMrg~-`X!R+9nkXoPvKQR3Y)8QVRc~}H%b;|5oU8|m zLFkF}0wGKO@8k?eFe=5a(kKEUK~5g43%#E~yIu+CgW1okGUl(pRk@uRX8}P%P(wq5 zfss*GEDy@L8XHyM2Ow}3Ra!4-00l@`2IYI`9G(&oFBR$?cNF$f z${4{>DT7o7_L9Pr2Lv@DH`|%vK?|uVDaAm(B?k4B3`!2)mfBiQBOrPRlE_kkO0YHn z1z35}*uijNuyd!2^8px8r7D0K*mQE zq~Jl#Nlq@J-s0KB>;_mhGc)RLK(!S;Kd+_8raJH6m_seX?lW!x9N|5^@5R|!CP*Go z;W{oZ!Zvd*2$E;}6+`9Vb0O><9DpzyqW5@z1Erh-LAB@g3IY)F=kFSgo4V}6@&2na z1hI+}1Pza;hbw`T@7bbZuUCLeZh_A?0E_4MIQ>fz8JUw%R#TIsTB5T*R}&5x0GSGT zFOlYQcB<(9y>As8a+IqB(j{X`~kur zY^lu>9|Xi1J{(%LRv>)Z2Ehuu2|3*be7elz!k+kaU{eT$rHGeHfgoWJ(kdbi(jB6JbVws5f^-N7NGgKTC?QBUNF&`L zUD6;a-QD@jxv%?v*1g|Y>v`9DuYdNn6i?1LjyYz&GxHfoKrt-B<-xGc!@0&K&<(}- z)=*px3=QuSXx+;^-RpmvvUW*K@o*_E4qF(!D`@F--0hLbFD#t(#1qnk_GH*`k?}R5NJ&9MKi27Aa@IA01F;Ef*y|e+j zxw#oSO4<9ca*$Rlgw!!v?aB*X#QDT{PV&S)tq%wX4x(GOY+(+25*Bs zqJy(WZGU4@ceNC84WT`#4H|$$;qaaVU_cu*m}Mg-rd#MFiw#O_pa8xxuR-nYuP_~r z6Fs;IDWC=9H$&NZD00le;Q@B6RDbPj`a9@pX#0qHI~05`L-1{+q@;Y=OnM(s^YD}o zYvx0LDIJv7OMxR022I=4_wGG*f}T7aS031*jjgScPH^zz2Z&Q`WU$eiQQ9r_ij{#? z$zOOTBclvXRVtW9!(X3omYBQTR-xhMRwL$pliXY7>|h98&~4xZg#qY<9$+5IT$W?T zJeELy*^XsHhx+OF(79+hRr|gTI`8#LH{gWyO-V^9fCby&3Z8qrGEP;u*Ey!+}zyMw6xDg%4}bU6={#@xVTgzr=DR?qL}x| z{rmSr;SeM3l|KcvgA`zJ!r-i14?llV@X7~ieM4@2JC;7pcfalnl|(4C`5@MIJNCy_ z*et2gbH@by29QB)dbKF%5ERG6!&8GLG%IL$89Hq;E>by4k4S^XlN57ws(v8n zAhg!&=g&afx0HZWN1m8+hP)N;43+YxZR##><7e?_We4Uc!1ymy$j%afr>N-I*(x!7M$ zIe7QIQ<=7VvDKuGM%B9_#ODI5%%G~ODwV04jSp?5$k%Qg$W#l1<^+0(lce6gD>u>g zApVj!;(rQ1Yh0xHc6GS!o30z!LPqe!4d6Hd^Y!Zyddfv{f5HBOTl z@TC8`Uz||JOWXYz;~0pDit-arDl@B>Rpjf%n4gn7JA#87eF|tr(BT0cC1`ff&-fkI z5!TMVC*BcRYxAPVwUwc%!r;xeCj|*1RtI|_Tel__KG=;LH}t-~jiQ1MuV_IuZi)aJJBRUTi*sKKASbpYiXzaF9q!Nqz01q51+(=CIriu>%AH=7*Q|!EEk; zaeV}>=D-7y0lPpf;FyQ0WkvCy7sd;n_0Z{!9rpzVH~4q9HALWK_2(&|UIdP2Lu$tv zK7Q`~g8GfU$etVoO}|jZn+J~C%buQd}|~)Z$lT^yHKjqzn#fedlmg9>c?@ z6rMSO3n)?&e+CbhsF)-U7WCH5n|0vH;hZtH$srHE$A0TB8{5~k*mu6r$^X-4MjWb! zueQuTHBhA6R!b9C#Geb-J+H49ZTK_>)B#ag1>k=s0;0*=0Ng84h;|Rb+CyJ^!NXK^ zK`2)L1`x&EC_fX$Z-Spofvjj0`QdJVO?qoKPo`hP19=kA03(MO60d0x`?Ag z%e(ZZTI3J6nS9!8h^ZK$8yoTA09Rm0tG_#GcMn><)u8(_?BZ+#S}YdZW;slHpAz#} z#}`1At|468Hz+8m0NyISI}T?I?3yp<9D+-icJ7~P*h1rmtf8SH9k@Me$bL427G5dn zBM;53IWHe(b#iiQOO_15mzS3}TLb1>i#Z^UTgXi{CosVlPGo_Dorh&T)@RbI95m~iLk5+uK&38 z4Eb^Sz7TkWy>UiO_zi*6-oOE%g|k))J|jNRAyOcuZUZtw0kfN$_;3NL&EH5X0M?^DSt9rvodA zETV^U(T?pl(_R01=YO7{*V1pUL z(FP!yFzC^P5LoL$Cd8A-{|6_x4Jb@jCojNbR|I;%&=2!!jo^P>lm;&9<95w;e|1C( z;6!1txEc()1rMTo!EiS)(^tWXMu$9son2ufZF$0B#`82)?W9isf9-&Z)`!7TiQVpY zfcYWew)77RBLJTYg}@2m7({ju#BewZ0JFIQEJj#(tP<)8vPq7(}u;~Y45DnNh2IRLbY0+b`OF(wYUH)xhxC-fGYJU0Z(412cPNAPsB zK`MsN9v={WDd4xY0l?_TseS*e|GBTyN+U0O5ZHlxKL`6r1*~Bh7(O~^WK{w@47ODc z=w=LHBh)5bc4R?8cv+EvoVI}A1L;u=iJ}pHKnjpQ+I$HZ{vR$+4)63XKfe}WF8sG4 zjHG|v9m_d32_jkpZic@<_8h>lo`XvsdU)svu1r?N;y~s%Ht>KOoK6lla_a}9F#a(t zChz{a?dPFS2T`gXz@vlH*Pom}+`|L)M5zPLCWLGPkyLA|55QWYL5tgJp$f7-KXn4Z z1{?;6f7s#NZ`dianw)r=n>_!or7k9^?0Y|xiy;x-KY%Dv(1iea71IQIpH*G zm)rRO?Buz+`ZL%HK}K%Ka=O!Z^H z6lg_ATM3}qAo%_ce;iSoGB5of!w~z=2gkpKA{has8R9*G^U01Kwy>~(XqD690~G)I zY^Y#P5AnpHB!~4epQNOuzp|Xp`{p_>TVmic$c|KMKK|EbxqkvBw8Kj%VICgA39QaY zr4u^~f+qdO2L%0s-?+R^c= zr{@c3FyQ+(z&$~neB~|+3m*85;F*aU8>jyr1NjmlHVx3{z;H5$dGD9D#`khG_#6Xp zia&9469NI8YiwbDUL1_LFS)~1EgJOiG(s#?`gV;(Gn>!@w()mvE4R^wz<>a1SYEIy z(uU8#Qvnd-U`sCaleS5qL+^5F!0M{`Ra~-`+V__<0PaUYL4o+b)>9(eJ3G<>5CdKJ z_-~+1(8%zxvT2mpjl@DoA&B<#fiB+E*5(Tu4RF*@$gl3{>DgT#xb6XNB*ay1pD5iv z=jO7+N1<0o!dZwS323s`g)<(O@I4`+iOm=ANaM%~OSgw$g_zrtEVptS3*I6$&mkIc zlIr9z5$wHB@Q-y}wyuE2G7XTLN&qT0#v*wH2xHIBPpkm{`2j*1=(D>$vICbD) zfx?vx$F>WwK|5mjONMRxb9LjuB<%b#%l$hy*9fXJ3Ryfz)D8L_F8FSUI1R4~h<6JA zwJwm~gzP3_U>?DLKc*WZ?=2z)J`OytbY)|6b5ywxv}m#c0_Wo+Y4AuuO$$3Lt*H?X z4==!zgBDQWx&CL{wctaK>i6n!LGW)!(tT4b3NVqz=>H9SPKTByAlm{g=7!2MWbMM= zIRE|jq|n`g9WsYe<#dU@{llElI6Kp0%mH~0;OHe@{Rwdw{15)o9CVAemm6TB%z0v4 z`o=HGjNMlxfDe*L2t*U;BLdJKlKr~+UpV8jEY1$^8BA~Yjn9(Mr5hfMQuwSXLwV}- z?%hi(D;D=su`(b#%gN!kwzi@U4-X?s#S$5z>XqZv8S0X@u{ej-+l+I{!2EsIluGJ> zWW+y=UWtBSF1|&9$)8zTqU)>UeEPRP6K=*=XM`kx@pt&QFoXghd@it1kDu z7Sr6Ta1IWzcTsjLC;~B7$s(B^5x5VuU{kiD6rdZWuvJBrif&2+?$LEZVG_Swm?Aq=6D+O z2fJLcok+*=J-9F=? z2y_E222Vh6jo`8%0e@$8qACh#e!baR+z3()g|IZh=Q~`8a|i6{-%+cY6x|v($XCtG z&o=?N%y_hz329;@BqSsga=F96kjYlVrLSW-apugf#c-Vuqx3dKOnu-Y!(}J_s6?kk zEX0(frv5MZ;$By>|A{Xy7uJCgln)Gr3kV^wtUi4BPzsg#{5xDu*e3R71L4rBb1g_t-&qFh_B*a0%kw_;_n+5_ekR!fdH18YHzBFmDzwl7 z2lEAVEC((ytLJ%uayj$&@B5@ADj?fG5E80>VbRjwo&;}J+`<-Q|NI>YHn6FOKs^%u zkI#U}ik1Mqn}Oa?luQ&?0382)HSX?+m)CHXxc|q6-bXZBG`Qq;fB>15Q|0S;ORAO$ z+l<-o#;PL9LdfZYDmNJp*}&!)DU#Lyep{5Ll(k#UOdv zBM_RXQCTT$Z>|sDOo}_-1O6O<#wp(0Ye4%x5T_6V6>_Ym+nk=A`S|-k0M8Ll^-Wj~ zHjo)ZLO76X)GOXHA&&`qEPGbU$p)`xb~xM&_-fstg8Kvp&UbQ8zJhGPoM{MbNo0{C z)dt`WA|N>swKgH^1mwZq!XpH;BX4X>3z>KWxE!4101v8zXuIqD?4-=?j1SVh_kfm& z0Q}5`m|>YnSX*0{=_I8e6~{{5*G)?CNuzqNBS%e<|p zw6(bzA0O`lvA|D<4IRkwcY=g-2fQXg^NIT`Aj`Oez5CJ2U)LyHcNO^@);mBW^$WNf zK7gR%U^{dGpiT^ULm(2T>sL*<59I1z@F5pGm)}e=1A?2Q zlM}3tI=BomG}t14@kN3{A96K~T-BfdH0GU@%&kdW>>}JLsVj;;kq-=KRmJ+A5HbZ71EMSGc^o<&#Ge(vx_20v~;W)2&9 zs@RAu^v_Cpg@y3)A0p1qTmcik*BCmJo8^9Cx>|XWAwW+=Nh^NNDYK0lAnOnz9D>gj zQMT9I&UKbKlw?feC{dW~$;$nolhA1OUA4D`V)@c!LP^G%GtF_p-IMOLuOYg|yTzD& z{~2}h$lz}e-R!JcI`q6|vdPU{?YEDAOwNzRf%WC}bA}ABdVJ)*pbBdEIB~q@NgL1E z_2UBTa+9e|V@V7Hx&Qi0Wy|;8*=b)%jr_M zK=TD5$7tE;Gl?;DVi)Xi9+nRGroJ~Ti%l|{DNk3ien=e!y(s~sfagP=!88mK<6nb= zJ^cKV3vbNJ$DKMUNL%$U7XW&zY*?$OX^6lhh7HS@iyj{Zsk%>K_7T`+gDYt5GO+^0 z;2MEPjD*A>N7KKBbdUf@kc|@)6d+I{ph&Fih7MnDByIz@d}d91zequ}pTo(Ego{Y_ zBHaF9!yPzMmO)?a9?d6?p&^LqLrC%i$%yXl1sLih*n~*=2W0o5MkMkkmG~WsA!80~ zay}$e2iYbhDT#RfaQ>(s=|X@rxOs4}0BCWBx4NMBL~xoB#%mRxk2_4VLRJ7ISxh)y zpb?#e%(;SY3erC_5Tk$?0?X(%6i0xhNkUOGj=u^~@Kf-GaFBc_=x0x0;e+#s$PQ3j z6LxGL1K}hPXo(;|fuSJ?Jqx7tvbB6rA1gQOuR|2{(#%X64t1cGPcr4&z-fkr#Lmvn zaCgKs^U^39!{hNdQO$nkE~UuOwD-n-W4_qj^S z$nsvS99Q8^=JSMw|FTmZwT7X=yuP;dY=b z<~NYj5oRgi7M=lC)_H#w4Z+YOLjjQLzw4YY#xm8^KeNgfNu!anb02dP?I9Er=UbeY(f;5}=s`VC9 z1tb^EQwLuXY3B!`f6Yo6B<>SI!x|nQ-h_1H8;F2o-Hw-Ty%sm>h^T`<=>l!+7bHAP z!1;q(o60#(;O(w-Kxq*8ZU!bMtsvi7IGRI1?oT23ok-W^3#70R9Bu)SM<(1aTv2Wp zXATIxxf;9=$m6SnzW{n1{mzBoqZs?+KQ#nkd(6gb323yW5fa|2QaS5)8kwvYDN_#t zQvk{4rO6uie7rXJ?ErWefg&%Q15hCUE-W-d1{Bnd>rfSx3JU>@EO8*n`gb8s%m{@B z@z8)z;K&QCYKE5gcrwb}`xnffMV>vemf#`+jqa8Q9>Bz5`9*_E!v=^6tw4ac2myNe zC4{*s4vRmbklP0=o5J$S+}zw2qHaU|is+LkXvY2NHzAKSi@18Ak2?ssgJ@e?TAKH= z5i2Vz3wy0J2J`@gOpM?-p_l?q9mH@*rp|*XvH&^?E7=M7(4;wM5C^kDSrJmMQB;I{ zS!8+$)Q~m(osJw zar0hK*n|JZ*@2o76ZI{Xhlgisbyeogn{A6AL6|QAS_$*pIHAuB*~7!?FmR@HA=cR% z#)piBGioSJbF6nFiw>j!?7GPqg?EApuZqIlX3Bika#oE8^2K_G?N?nFF*J zk!;K`Qsmt30y7z8FU{=YvCfK7P6%#M$XE&R2w2_%fW1>YZnCQ@XUw7^B#hXR@J-~tXG@TtGiD-finOrG)Qd2tgGM8mPF zQFwD!@063x_PTXJ*rez8EEy^f;Q!v`<&6YcSKq|MCnW_jsV*=(1yXd7^AU4%J7+p7 zLQ+2a`&Vm6M^D1F>yG30n#a2SC-o#e_4>Va@swWKhVRp=-sEKv;Xv)x9k;HQmML(| z=iEmAn@cQTV^o%G_QA4WE*HcY*y}fdo&h3|?>Ici#vgA$(n6lsM*6NZKcYne@e{mC z;&miN2QC|j)x>Ge!U{-ifgqnx_D+C+8n3!?&H;IB8_0TWL2&_s!GPV!3nyMi?md|# zg(O3Ro?R<3hl`1hp-u{S2WPjal@&k8 zEkFut4mR55DVXd4ju>gGGVC`es7?aavZ=4{wg*&-%&e}uG~=<5l13@Hh7gKIl)yoS zm>Z6%lGs9#}`M!HYeBA%pRafb7=|AmAV%6bKY> z%)(=$qa%b|`JhBqEOP*<;(*SEks>o9q(IXCEp;TDAr_*Z1qtrofz1StsTVk|zd`%| z&S|E)s*cnWxbABp$1K!Y!KpC=iP!re8p5xIL#hT6abs{wA@MWJ^+{08L=@BJAj$>E z85nF$HyU%0fUoHf=O0pE2?reT(ewI;ZlvCHVh%Ioy;91n-bYu<(^vBjy0~tXoCxs0 z%y|?q*6PWXc+AjuEgr&ZghBMy*4nxjDzG3dhJ1N_sm%-$wn7?Z2DC{5c;OIlLF$MI zg`lfo@j5|`7jh@0+?KNe+!K1+v#qzLFz>CK!buAvq#xY!H>hGk$_ya?^J0Br1xzj! z6TXC60OSY;Z*~g?Uf}Z^K{-q1(R>tAcntL;Un3)1;VAYaM{;xjz?MN>MldZL#y8*q zrn-A~D#yaw!C?U+8)^myKNtekQ|;;uA-M9i@(M_vEl|(Y0>#9V5b=Bt2rz_{Vq*c@ zSSLKj5tz}DLX+E2MwJX%EMyLhH>!JJAPgA;17SIYuLz;t{cMj2RM3=a??(al-b=bH zj7iwTLdG+XSO3E|Uw!fA+uf(xq5m7noW9LjH82iz7(~P|RW2)C z7I90Hkxx=t+&w4EF%liEb-5pHvYy44k{q*L*?r~cO{eWRThu$FSP0IT+ zjemw9K-xqjPY(@7`p|AggI8GqHDSIwnuxN;J>tw9mN{}%I;?T?&+uVVkzBDV_$3V! zrOL(4$(tW57%|f`k_kcgR4xEtn?Snc&41&aA5mS94ar{M8n1hWeMxiQdq>h+r`*Z0 zd0whKadz^6_vov4O9Z_DI<09q_`7-eh4H{50)X9TQ#0fcCFdVB?mhtV<&o?0?x@g1 zY4wl!#zk0g&9!s#TQ4ieYc2+;etVWhCHjEJlpt=lYwyi1-PU3_CVwJXqa&g%K^nWJ z4MArj57b0`0luC8iHUHyDM5wKir=@NSv@xs>A`y=DWJHfr~&vmaVaATx#Dm;vlmXf z+ggJTfFJfPj7AT9A(Q0#WM-XX5G2S*cQUH8a%RC^ph-Z`a6b|~M+|zruZtw8>d(2g zCehl_m*UA>yL6<@mc1ud;l5$A?p0(scji>0khwVclt|B8LQO{{IP8RF+e(>jkkB-X zssAap(Hr{5KRk$GU_#NaMl;@1r&;l^PrCa$B1vI*D}Q9-UV;({v)69Ui(XVb2owDg ztD2ejSomzTU^^Aw>Q&WszFNPbH;xM%At)Kr-=Woy%Wv*-eqvE++cTwtJEV3SCjKOz z`8z?M{N>l5rJ-+Q)>!FwO&<0s6@>vQJSQi|`%fMK$GzX^!*sVq+S%DznCIr7nQ7*A z%hqq3*X~{bV6@0A7&Bi5ln7ByeYtLuynsLT(yB6EH&Z1df0XWT9hcUJHV$FDZ>6!T(Lf~RQ8vabZ;1(z#|0^gTWO8XB!FaXz$dvK8(DcRr8H0-hPr3i*Ofj%a#gVdnE$ zLFiLOj~`#|w@1|uwtcvl?V_H)fo_JY4Y=@Yuo7&`u8_Em+2eY=e#Z$iXwR=cAGveO z)d1f4wE~;`pVRq))r}NCfkgmJ3Y0npv6b&UMEmLSx4*HM2EQZMV&JTb zQW@XPjdkO;7VE9UH!iHK+`a~GDSY&)o{Q6}@{zpa^2jU;MY`mLmhw5@VAMav^r64y zJvB5H9KY)32j^mgh-5EakcP>;d}kR}ED!IcaVbRjz+~R1%6@=lWkWIajS);k1i7Mp zk4*Pd%-_XEJD~0yPI}&Rcp-gfc1;FEy(5xr{n_WCz)CVQ-6&HAXhFjtrOt?)^AbVv z8seu(Du=T4$SV(kO1OKdtYwJY=Y_iZ?F%3B>o(LKni&dR9H!U_O_E%yT|LnXrDte_ z8#kF6`1FdT^gbekO%jH=I;Xo{5{NdJ5?J5razkYeld?oThE%{+=<1am8z3`h9N5KV zla*5gjOW3_xlF9DYU%pNZB)Pzyjrw5|DJ1a-R+jO`^vj?B>N=OM)3x=_%Yf`>KF?GjuLAzj{;j^Y`hvM7rNPvVzu?oosPG-WZVUjc|SF zn7s7_fOPA)gO%Ksh8cY=K>tp%^&mx=8L~es1G>03Az{Edj_F^EXNekLqqsd8Ly)DR zNJZ;g&v#oMfZhOnsR)%bee0Id#f$GAU{&9Z+C1M3@3&`kN?m^I4c{e~*A7$c%Sh%n ze7TMX$-3MwRNsepx{}=AQSmROzP|{N`ufi`Fa3J(+J=jo)a*K^tEa3M;yi`lwW7hl z^0sNh6@L@7nQ!j=z$n+ZSY}N(9Jw_7n8`J-SOEYijTs+1wmB*WL*N&jmNEo_NV|aI z1~Mky051R}mhh*%Rp09#v>L(Og7kG&LW{ALo9aZbwHR)fTzyBVa(6`0H{~g%l|U!( zCmnf5ADx_s&y~jlkLk=8T{rS7GnChKK0Dq+eap86%|D-xuf2=m zl~~WWJw@$PnK2UbGmg!`2nL7fuj97+^upqcZ6R)lde@lu=kRnWX{E5L_BRcWDpYV` z?|qs3vh@l?w~qFV4$Q|G#ha;eJx0Ns#&r2qA8!l{Y+$g!R(&R-jq#3~b8R)=!%o4TW1J5*Gi3_FH)P zx-PeKAJ;q=GQ9&|L07}H&*$kmk0WLg*1QnehnOO-p4`m1s}pbeA`7E?sS^nSQ|x#$ zqr_`{P6A#-)7zcg&7Bc-%}oX85p1Z{7?1=G9iSwx)&7$-{r+{&{72NpIEAej&{EE= z_E=#=s`=9sZ_BVZokkOKmrr<}$1AG4Gv+JhAiaiJf2%Qv0?q@B)hOj@w2}nU+(?{8 zmtHYTCs@E7gfcjH04+;B+&rRyQNp)8@stP^E7daPrHgAr%@8LdFOj-$rI|5AJ}6#t zq?r0%S{^vTj9k1SOle;gGVCUE{8QjtX_NeCi{WB%YK8;uUudASro*KA$JdG^9Htfi zOXUUDgr)?5p}YzmP4Z_GtLI#M3K@DYZyx&j`lv@NY`I9p+Ek8x z1d~|h?f7>oc#E{`B_4*(U6(dxk=Lot;`VxhsPB|)t-Bx0MP ziU;Oz1t%vbzidW|WWMCz-b{Yu z=e6OjYWt%=VTPxBpN)n^%B}a{=z&{Kppq_Cr*V>akeK9_)uK9@L7e;NKVnM;H zdBV-%`f&ur-NZ7Yn{{p@t1ypx1l3T`2!>$)kvUQ@4h!a2LV4h*b;tilxjfuPM+FlO z1Puz}?lax>SBne$8s!TDfT%buA5jEIE)eI$T?p#h&IWADpM&j3786k1hSgQikFgN@ z@~HS!lqvVj4O^^-I)7uN-;?4!#p%vVc?61pJ4i@Y9o%&3`dikWprmA@q3UfNWRMWR zrjgMrd0yXOwI?k~H(2n*s+&C4kaN2y&oa^c#jpHv(pnFljCw)b$`L2cHDx-2F@~70 zUq8UqK~SuAp%xyRIAAg`GMfueaQ6lZrUpaX2-0&3S@U|(F&aSJXoteWt?k~km+nyI zgVZI%r-m`Su0tzE&<;L5Eeajfps_&0jus1$o%t^}uAK9|i;Pa}$}do0jrZcF;y>;w z%IA+P^O8ARdvqbbv^*KOI@>&Yz?lmZ!%AYMUP3%+Q;`2^sG}N~4=Szp-P)}P|G1xi zc*|55=ppb&UN`2KcCuMr3V2BzFwBZ&R>a6ZO~)Oz5|?!x(X>7KFk^1ky8FJ)|3FVR zbMGJ8UtD>!&B?KCJ+*hQZZ&cw=t@vY5`^f$&SBnHb>S|*#4_23A11~9XRoECB2z_t z%gV2QTOi z?68yB8YY4gc7_PfJ|y$SY?(5kIQ7g@xLz6DNP*57Z0Y1dGOl$F>-XaAp>r4`#Lico z&8`y)5BPwW{|Yck)_KKur#n<)bt;2aD}QM9s_GD6p^7w_klEJb<@QO2?cpfsuS7b@ zAg;|fsH&`lHY*M?TieYv_ZJt#Yao99*MQE0L2d|wpT<_T_3PsGEqO9^9Irfpyy>v| z58|F;p&G&4ZG$FN5x;-lTo2?biOyBcg!t~RU)=J?%qjw~^R^pA{38?=$3<2cGr9TP z%mhF~l^pb3Wbgz|e|0aHCmdItmN;HztsP8yb;au85=}!bVx5Wa`b-IcKY8bfgz4;q zK-mT}6+5^rhbKqtl_w(CAtHe(OS50B9Cm=Cgye7)Gczaf#7NJ?3(Y(-&&FT>`jx#a znb06d6B2F^O?{apyI#76!l*st75Ih!5RUMyFx8hBng!2%O~r>j;gz5xP?JfaR>^N1rE|XbNPFIV&T~&OTDG+bW;!(U z9TynA;XZfD$1o^Ao_VReztnrxepLhZMl=6O0_|q&yfK^#R$rA_;l&I)Dsi*%<-bm% zuMzSnO8K)G^%x570ACglnDGfM2VanKXUz(;h8^C!#eHNqSwcgGTeTHEZN-h2pL>6$ zB4X=A5vs^$HZ0{qADhmZ-yAFO#J-?Ul3Pkm`G;q8V=4J4263@GkHhy52R$ku0#HyQf6($k9Qa|dycZ&mKW zLIcJVXw9#r2cR`27dEsfX?Ee|a2d@w(|p5=6?4&5hweUP7iREK#odB-Vn+g{_t6*G#x> z1fDXn4_m>n-4{BVHlHzSCOY$_mw5iDZyyKiamlWU9l~UQ4EMYHVil~E+NGbigx6@e zG=6Y?EpuD9ZGUH=?3B7wlhgX|fu#1)VZx1NK22LL>L^y>Rm178XD^;* z3z-$SQ!(WJ&g;@ts!<+u&0a}Rs;e$Fn>!y@_-FRk^n&14y7Fc#RW@<|_WmW6ci>}c z2qjzx(T2=lex`NfK(+nyg5kuKQz)>>cR6}9n4>KX6>QiC6)?O0b=rye0n*_OOb=uh z1~dmj`a%E&6*3;oI8gFrkq+<_O4r?+K0ZE3{}@!^#X^=dUU}{JMrdTd3%9{L&NQd0 zws9ug={I~KZbG#XD8egua!{A1SW-ChvkhUlT{^F^0QXRXlP(nZ+%n9qli$guhvI(M zi#e}q*$A%qk#YIMpq8I%N0Z*PxJ_wjQ!igP&I$z(lP~LHI2U9IpC z&x}{C185n1kmn(cVmCPZK*@EqY19WHHp@M~qNlpWXqNDiyEL{R)%0&;0KO6Dd znL9_7m`rLV?K98B`Of8lWxhN^&0Hz@U0qWDV@te>m$}<*wMH`QeaRgQ?ghNxyGxo- zn>83(TgDPKN^#EcKIC19T4DSUc(!@FOI;2zU$WY?YYlNx(j+P;P$xyq|CTXc`tsR! zJIfAK0YL+IGm?vdWL8J6rO}UlVK$A0F!b2{ z7Dz!ted{J|*U!)c+yWMpWhQi-Ka7h>6MT2%+iw5JT;h_D(N(DF1-8p}U5aZ%;P;1~ zgma+2Yak&40_?jjFTo|hrjZ(12V&Bueoujy#sTMRb6#;ndFoe>mMfkq{oFCpn2d~T zwy&OPiZvxisS>5awBCb<+Av>3zW8Yp?Ty}AuUzq>q{rkZSb|nBk=Q&0u?pJxYAw}t zk;!hEPHCvV!1MRaJUB5wk=zHPOM&1e%`qq1Q#eQB%ma-&|4P&PT0TB7fQ6K=s~3qC zl{PoKvlF|61T>jqlKLR+vZiJV8;G7+MM;T{S@W@mjJU_#o%UbHONO#M81H8TI-TLM z$Qb3fwrKZ69*FBvh|u<%B^Zvcyy8$r4Vz4p8jAU#C*O?c=YHvSJLDEl-UiLpo$(8D zDH!Dia~V$A@~>NR&i?#6nf?HLA4;fm*zZ{Vn#_8=phR#=A;#Dci?PB}fx_oW<18S|-P1 zi9J8u8SAa6H?#6Oy2c;VF-&;?)^T~E9O{~idUJ^#sG}r^*1_utBHWAC5UQ3g<3d+0 zqNxdb1;tYjcdt$DB^YX5XIVGjF7V9a4_8>e7@geL)@$03Ky!q#E;`K3Z_+M&CEH%j zCO(4$^d|T}1zRyzQGs&E`?5z}17NG=x7i-QC6HN*+@GiJnkY?|2V`nE0rN6%%?@ic z>A5cxmI{pi$YpSia_XgN2?2$8;O&_Ncy;CYT@Ge6X4DcnP@j%The=m+?2nb4! zUfqK62hDx0-s9{i`Zk|xvXR)&j{!G<_EC;A$_g8Y>(948!?TPOx`m%+I|RPJ<1H{h z&2EQEI7YAK8z}Ty0@H}IA<1weg0*$h+19k6!n(!@7}osv*PMT%V)ZLXzs<~FSP=0u zydwzM-ZNiTG)SeNYO2>fD@m#p#Sz}{c?~}Flku+LtIU;rw4W_ymsK_SA-qysRjI}l zZs;0j@IG;dbOC^NF?Zi2izKDQE8Npf8aS(14A)J^ztBihP&kZ>yK5b*5RgS^#sr09t@$v#aY?x>x=oZR=5mPwYK2XAX*PZk*iPNN7gwBce8hQKpo8??xTgug^HMmT`Ere%=6(dm)(QzR;YV1>%7T|o1oN@ z;~Y=8gNmwsfv#5+(40FJ*4e6{vOKk66y!!e_Qjf+$SLIq--=hEZBy`F)?KgTvci#` ztWh~_iPhuVn{Nsl{ir@{p0C@Ms?y>zF3$e_Oq5tbTE)A$J8(a1JkFauEjOuXesvxG zVlKq_p1|)@)6$&TZ+|;2Ugz)l^Sn;3pSWt9R8G8hoI%EFUcI0CYUbCRs7yt!XPr@6 z_`aGr+C!I9jLT?;%dKvATu8?afF4G%W~j3A{lpOdLD?0vw=~vQq&V+~uRZn> z|AfPSHQt@(K&!^bawa8PG5}xZjtII%!A|U@z#XwK`aM4 zd7q3pipQ!pSNNRyrYn{%?Yd4A!y6exzk3(=$ZbFB_HnfdYKrz}eS8kZ9gy{6X#L#ucaeWr{v$|v% zZJ(f-zRlKiKLxeryJ4sxylcOrTPz>#&pLH_VeSD;w713KU;HLWgG)&Q>S(qOyMbi%+d%DlvyJ7Ip?&PSc z*)+>kOiac#lLdc^ZoHS2e^lQv3Q~p)QFxCHk~Hi3WZB-g-krwzm34BPfP`Fpe8v-x zqO4><{yWR$jVF3WidXoYcwV0EqHQV;v!b}Xc(00xMAI8Jt}73#OR{pbTzBOw9WP3v zQd^a3#BgS*9qA(J7W#cf9(z@f@O}DsIU14sCXUOAqbka&bt|LiO+h|tXrC`pPDJ9H z7J$#GN$$quMzC?=hFeDcQg)}dYu(Yp?%D?znTr^n*w~G1Q)g%6YSD850zd%Ke;lMa&uhP4QI%6Vdv3C^Me;GKRlGt3!e|Km@UzKI{91F zb1%D>#d2U{Ve5QjVQQVWVZ-Jis`1*HFv}d(yt{kiizKmEdE7#70v*XT83P=ecJvNN6J(8X_pd1#Wy>K9M#-dn;0ZMK`Rql zlGMSdW5u5JK({PzXw}T}&6_n`pfmt=_xCs&L+Z!Gv|MzCw{Z<=CoG~j zejRaqlVA6GAET9HwRp68%l~)^#i5BtDN{vcAUawyTpYFX+e<*^Wcp5j7@vTnJb%`^ zir;hZsx7060e&(1|YbtmXxeKJkeX>jMyTA|yj-&`YjtIk$TbDyt5%}a2xVIs!6IEly#F{eCn&#_R8lRY?Afg2`; zb&qJ+ur}-QB#-YNyI(@j*Hc!A2?;S+I*K@X^0hj%?e-;pSbC2;bE<}xF3X(HKDxz1 zq-PvVBowq{ph`pK;keB;lR5L-_= z?(V`_DYqbCL!Iy0-`@^1{fJRM&2Ss{R=KKrAY$*t-H2UQ?Rm-_vH$Z{$X12F`CSo? z8|2Ow6uOJrk+}L~qMrY&w38I$1=E#LdA~~n=GiHZrV0`QJ0h=tey1v6<%{vK3esuP z8hx&i(^LQ0$m^TLm6`l=v}_W5J3h2Y^7h&Sayr_K^pDEuVA84J_RPY_tIL%>b>r#O z!+ujp=&5Ux`ml7d_)+6YMX@FkrhN)-=6-ZT^OnhP%;~3-8xWXHO)3IBwu*&q9d*SlSv(Zl%Af_C?swPrS0 zB`xfF!$keh7H@zJ=HYNRj`GvfxdmpSAE_?T9-KwlyDm-taJ~*V$ zv#S@BttJt%ebLI&Fs<9ACqIxvb@pOyD=uH~5l6ZqhF)})j(;iT*WHlTpqe2fKZyh5 z-q~hkdoHCtZ(&xglcKM)#j|V5O3=2d;5yRO=S@_7Ad)dy?9(1`_KyB`xBCH+9r|YX zXAwr?zJ|r3u%9&-*Q4Z(Ue;Gtt8ZCbC7qi~?~lCqb2J#$KuzOoOm^SVBRo?^yIWC; z9wI#Kc_~-u7i##7PQqo^7J}eIPbx~Bu-Q`!@mpiYJxE?+xz3YZ zL8C)L{EG0Bz<24i+nbG)OO6XA_{zq1psqD#;(6)4p{ya~y`g4Yc&OLy|%>rXiQAvN7?)bFG!c32((>q4?-#e|p9-tHpR_2^q*Y^EHB^tezj>k-Vl0ux!Y02nc zHmGacN4gkuiDKSzVrZXM5u->OP|xO{W&HRx%Kv;*MFrz@AB&$cW;nC;8zu)wLCLo` zbl5gU#;;v%ZCFe2S)H7YDMIzT!rAH`dFx9t&B*nVbJg1}}t5l3ryx zeFpZ!hhqBRF5(FsIN_`%F5T?i35}>=mDK%7OuXt<@^Gv#%jlP`yx}z16I#YT5hLnG zIQ<=uDPt^&BTAwxy#f4j3*3z23ulF>@24jx!t9SO7Wz;gkx$B}ycXwmw=?M`M#Fpu zoLS*dc}V=hKT&*r*)H|ho;Kwp|E*&Jc+i}b8NvwnR@j)pfSmLZ2#Jy zN+klFi#;oIUb?|oM?9nYt-}6j;1trXBg zfZ3w<<0f|{X)NVn(TL%rVwQ_%&562QDAYXehPOucDKR~VCOBzCM^c=F0)*a*B^n0O z4%}C3AL^kV*s8&~zdfn61xxkD55D;t&V<)hLVE6o_+daBZ~wE-<=3~>Vv%ZgW@nLfU;*|5cc93%;iS`vs*+a9qkr&91JDO?KY4lFu@U4U+Gy zyS)l}DHTZN>Akvf zZtuQwMb1H%R zoRCkYAs~5e@A*^}T~$w`v}I@k_-E%1i?=3@mrum(u|4_; zsdboZ{e&Mbog9tJ!aaW%&usYaYNB3sAON;-jNH)C;DtQ=!#r!-f@*PlIQP%lizWQH zy+}e5$}Z6yY&GYwkF+qT)M?V!?KG56mtpWlJ(!B^W_~<|C&}X~YaV;x@UuDW^ncZM z=FwEP?;hV9k)bjVktjuEEJI2mLzyxwGEcD$O$rq|L&=aN$xx`sJZ21;<5fZ^WQYb0 zrb1RZ9mU`?)$#3>%RB({d`X@RK0S1nOqOub9p*r5ETV) zGt6m%G-#@KZ{y_f{`S=)NGP?Un!Pfet96@^aJfckwXyt3UDL2b&(w6x83i}8QWaZ< zUg)F*4aog7o3hpKHKWYN)458%Z8`s!@Y&$E6ir`yM|KR@r|t9D435dF$P_>Dv;LjG z%j?c=R#KIJ+wAYgnkc!m_Kqll_YRyT=giws%|!(jYR?zj#%foTa|H?6bxFI<^uB4o zrb9K0ejU-3HkoE>wyD6B<#gp1@wYd#uUYsM*qU?w=oz?FAT1e3di4Ia_e0C0?pA-# zjMkHx5}z_UCc4_UI#B3+)I@;AkGR}ByJyB1cCt*oz1kmR9Tjk)yCu2GGVI;s z^t*>r`G0Td|Dm<45NaSg`VJe#Xy{cpZF2W?t4v2hJ^IFpSv#TE`o$3SX{>C?v!Sk2 z@nK<^T&I6H*{W3SF3tPN4z^BMWRYqp{jYviSG8a~aDPnSebs?nuc{9Z<(+tGM~Bp{7;m`HZh6^kHS3cq z!Xeg16TX9TGfTH=LnwuzZpZ4GiLJxu&d~0uqAg4QN)2oMlBt6`t1HzI`bKwrlFsmS zI-~au-qn|kY1O)zuI(aq)KVLG3>Rpb9%p|rn^!oKx4iAMNj%xvPc@zCxYxQ?fhgNc zk4y*GQJsHM99~ut`5=$0d4Rm~WJ)|s|DxS~(_B(mn zzqfe1YQpA#;SAQ(s=qa7Z&uYzQJ7Y$(h8MDlq*VKyRy@%S~H1#qZad<&6`C_^p5eo z9@V#*FX|mS%O?}t{gK+eJymA^`KeK|QdPtVKFAX!+%lE7y&_rBy1Y zO&+iqvKUGpj3~%zZ<6*K-Zi^d(X4vgsrAFyRE+l5d@|2@Z#cCjAgi6({lbZy$FCIE zA3j6dnVq;YUv#}UM2(-JQLU>l>%F(j=bo97lJs?ZgM_AI{>t7fT%)5lX6EyWa{QL>C&;fJkn+yR-Lk@jJ(YM6jFX+ zXgMvf#P4_X>LA_>cg1m+J3D_pDn82fQXZi90Jp zkip5oA;)-4>$IKXV8zjb7Z10JTUF6lMgod>VKER2GfU zS4zmW_-5PZyC(47%9FqPR;qeNUhq>HrNZPRD{&p6XGB!%eY4`_PNt~OW~HE zd#VaduY7(uC*w5rsn>UBr={_RkV#I(&|L*p^#%wNJeJ~36AvBM+)JzXEDau$JQSp- z=f1`_w5R9O&r1=sGf&gpzIvHIiau5EJbQo1ymYKrez<(S1u4y3@qUto|N2b2;uAZ4 zpYC)ilXWBg0?MTjUo1O0I}7jJ$q7cT7Q}do-)-nsi;pQXNb38Uz0j%~+NEQ_+Eg;{ zpEjGZL?7(5f7<9u>F#m?vA!m9S&q(9W_uQI5>>XJdC7H*WK^D%FoNl4zdV z6V==Lac6mcR?f12EM;wuI}3l#iH9b)$}}%OO_VK(YBSgcQ7sj?^<3*m+aQWgf)v3?NdtU7Yeui{d-xxZo1_7c!oT4 zW^eCl<#qs$W3D^+vg^d@tcuHanW`9b*pZwaN~G>J$96Pcy(wiK4!K~DRfiBX+Ztzs zKj}F}&Q@+^q(XEFB&|Bsdbi*8_xI1t&dM&_S;fo^z?#9zFX-$hh8`(`oMBa(OWaw@ z>G75|Vw~aT%Y67_xdaxp(Y-2hT?a@81F7@lY2s&>j%2qP6=+!tOY`{1yu7@tNv*A| z$6{=aA;vrb*_Dg;1Nk!74rj{8$s&)85p!Md=gIAT-Gh$(dXFVfjoeAUkylZ{3$kOy z$#*&tdae%J9+%&}y9rpIx@XVwG|OJ{#>$hQG&c)_vJ2go8iv0RuM~^ZK?gzJ!RdH& z>!1763?H`ci;s&li|D9)aeZ*dhvL%jKMpIr@Xkpu|JSu|R(e0b{uez7Z615HM#ydy z8=l(mHk#4Kb^9VgsUXD6t$+Qc4)K1`sSh3gwEH8sC@A!K{D*h=Z+E{XE^o{1eBW2! zZAz$-+>P+Qe2%||^%U4npXwhNZ~)rcXK@uswlN=Pc`vv|{yax1k^fUiopv4YSVI(8 zY(sqXbuNpT=#Y;yK&F}&xbk}e{L#4rK(_6FEzHh*{~m(o3BozTduo5xxyg~o8$pcM z0w+^A=0G7-vi_fwRnBocwnSc3Pon}tv-o2&0{wX7JU8_mAUdA_)CjDBQ4m@o?-Z7o zFYQoXS$z4p6D00egM*EbssgI#ITL>H^!!f%LA!D+q?eBkKv0eW+`r8DdbPxUqgkq8$7JFoA zX~_|M*wxI;jiApM85*W;Y%?)6rGr-hftbTG&DgHYm!Pq!9-Nx*94WMQpfk~+IqN(a zrx_Bw32~TKQ2GOaN)BdNr%=%WOdVvr;eZ6CVv1==2`A730l3|^RsafTqEof6z&0AP zM=}YtY*qn*NYEu5>!{?dco;kSNW;RVmQhVjP0DHp;&DJIuwP!c@sdt@kjAF09oL_9 zbgVVb;$&DSxKlHxEppBgx3SEIL4{a#nkuC<^S2nz|3a3KZzgISVxr0V@3Rdl+S&TY+y z#!m}0BWQC;0CZP>@75KQkO(%;YGRhICgqt&0REbk+2bSy0luN7WjMyf9uW6eP${=W zZ;XbLUPxHDzNdLJ2PVcXm2(P&CK`RZB^?y78804{x_nd$tcKl%=+JF-lH-WG5jhE^ z^|khQg{7s(kv#%3SEC-MkiI7Lo#y~V)4cf2#iI1(Em~t@?EP^OeJ4_)I)SyU6 zL$00*!S^i)tHs5|^$d07LLnj_M_;&-|93G$OpSpV#os9S6lF&3=uaOVPzF;BO2A%z z&$!#S*FYagB4#O=bLhrlpin4)Fw{MH!T`9L95G@rNU9qcSdZD_a})aPk_hUm#9gPh z0+?&@1xr34AYjhMLX6W;jFa$PAf7rVBJ3j=Ap)0Ib8CC$B*%wNW*Sui&eLCB$pVSV zL@)|^+zDXX=N_8Ay=&RzL(GiM9@rWSHl_e*9$nHe{*L2_UY~M5zj;H3J<*q;M?9d^ zqb(@1C_>joYin#87R6k~FTxmuhL%>}R9sF$ja3E=GUDoBt!iSJlD-S7v8EblMH;Hh zX)E7e3q>UI1#EhuYLhY1NFgc0D^x`-%l@xv(o&)Ij~{EU?`N3mkTxbarq> zXi3C`1PK5kujx(W<=N@L6@H*N)zE6JfApl>rS5LyqZP;1{v<0Uzpo*eJIxL*sfNKIGG-A!w#zHD#V90%(Mn* z)kU#LId0yJbVIVFq57BKy2ZP!46sUNCp7Q%9UTVfP~;-m>{T?eU3`lxBq2N>16DdU za5ocWVA4_#A0RwpHn2ED-~?cL;NU@7&-%7wcg}x3C@dpmh-HDO@_?` zv^pq@Sq)G9{WL&;4Tz0KHa1rgU} zfEt@Y6-K}>EGyFj4SN02eK7V+NJuy~QmaB5#cI8#lRhzA^C(6~4@bF3Wtof^)Qf;Z zi~)#Nj|6=DWA_%1*A;Bj)!zu*Wdu;RxFb8TB#F!fB`CTl1MT2`q7?9}B49U45h7L@ z8?zHL0oX)AFx~7|_HB0jdyZf%wZZuzFq4~McZM1T#Vmp5unG9-d_aWVW2ANi@_iGy z4cC&An2`lo1o!X`4-YR+!lGpr$5y>MU>C2Y{F8$Ea%JC$mgotr(!)(@6@e7uF-!PCVN-Je_eFGqEzPf*c!0pJ9PE8+w*kQ6y*v&zE5nLz9R zB)zOajHs*YXWK(MIt`Ejy_ud~2g(#AF^)j=`;?tnUi8_6x^x1t!~4eDT%O@pq!rtjuACvPi9J2_X*b3_+awlii$k2ya7P54x!x$ zr59vbL>xx7L_>lyM@UJD7o|xHVTIu(iW>qRsu`f|&ow{5P)P+Y0}L={N&she!+Ii2 zxtkgpv5~N|SVKMh=mGAUk1xwsR7`9&<|?*a$L|eh4bvxZORv(#(_hp5pUM&r64;5W z67=YKc;b~m`=2|vSwfQEn%2$0)X0Kq0J? zD5!RbbolqnY`}pw#1*fA7a>Y*6ia=6pcxAQeTr}v9dN|mT^#l{NKI+BXWl>MgIyq< ztgNgrv`taw0afw}WDYhqqYYp)AATI5LYRaAy?x>F-cWS{I3~u)L@-#wA|is5k_g3t zEIj=1U?#Llc$wowXBun~wBQjIzz_C6a(2&3E{Iw*BpqGd7}%TOXLXbsA|g!{8wVPW zujj=l&fdQ%hWBVKYWF>}O&p}AE2#);5g;-X1p~GZKyF3VGWr5BbGX>)V2vjoJ^dyX zm71;;pKr=NU;jP1Ed5_|kD1@-MFtsw+f8_a!!mni@qR;TkOg4Da&mJgR*7k7l!yK+ zSH)-=i^nZ|*tf!n9S}%JZ=e**Der(AR20bMbaCfoG2>iG-2}^cSL1g1=8R3^#sZr=_*zfeSStb#lXoz>k>dK;aYu6^RHq4j(0- zK5&hFv7LyyaU+C?ekv-~8^2ykW@ zR7Jw^0ZeGT^7pe`zQbefo6u^qN4KAwCYETd03Xs=(3^CL&%-2nyIhG|s$f z{Jh;Fr?&#O4OR=Wti%o(i&K7vr5Qi_IcXGoE1Sbuu$n8DuKEcxxl9H=P#D)iX z%*UprwA8a#j)P5}3kml~G60mI;?ZkI3u*$#M*>ijgjv^!Pq2=JlBpgbsX~u_Ihcvk zvL;a}v29Ky>|b(hk#cAN(1MZ2M7gGhlNY96>saf%lfGc_gkX~h1a3G=%X$zFK`r-v6UswuNAU;(UzITDfX zjhG$QCW^Q}QS$F%?rb`a5L(}TrT2z6Y=+b(wwSg;##>=iI&pDvnBm?tb116n1`@|d o!&>Et1w<5se*((Cio$Oz8+&Xz Date: Wed, 8 Sep 2021 00:36:24 +0000 Subject: [PATCH 0756/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..8fb0643046 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 51 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..9971c205c1 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 24 Performance From 6ef1bbd0a97749f0b919a3a75f9ebeff698b2648 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 8 Sep 2021 01:47:36 +0000 Subject: [PATCH 0757/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 91deaf8643..8cdbd06c87 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [European Android devs: What about your region should I know as an Android developer from the USA?](https://www.reddit.com/r/androiddev/comments/pjcurs/european_android_devs_what_about_your_region/) -- [Historically iOS only, but wondering if Android is better for this 'Dad's Carputer' idea.](https://www.reddit.com/r/androiddev/comments/pjcg8j/historically_ios_only_but_wondering_if_android_is/) -- [Verifying ID with Google Play](https://www.reddit.com/r/androiddev/comments/pjc161/verifying_id_with_google_play/) -- [Is it possible to input a number and change it to 2 different numbers in 2 different textboxes upon clicking a single button?](https://www.reddit.com/r/androiddev/comments/pjavcl/is_it_possible_to_input_a_number_and_change_it_to/) -- [Free math application to simplify fractions and find prime factors](https://www.reddit.com/r/androiddev/comments/pj8pzt/free_math_application_to_simplify_fractions_and/) -- [Going back to the market after 2 year hiatus](https://www.reddit.com/r/androiddev/comments/pj7un5/going_back_to_the_market_after_2_year_hiatus/) -- [Analog Watch Face for Wear OS](https://www.reddit.com/r/androiddev/comments/pj6bgq/analog_watch_face_for_wear_os/) -- [update fragment through list in viewmodel](https://www.reddit.com/r/androiddev/comments/pj6b0k/update_fragment_through_list_in_viewmodel/) -- [libraries to use with API (parsing JSON)(NEW TO DEV)](https://www.reddit.com/r/androiddev/comments/pj60qq/libraries_to_use_with_api_parsing_jsonnew_to_dev/) -- [App that would speak when button is pressed](https://www.reddit.com/r/androiddev/comments/pj60hr/app_that_would_speak_when_button_is_pressed/) +- [How do I force Facebook app to use user's default browser?](https://www.reddit.com/r/androiddev/comments/pk0rkw/how_do_i_force_facebook_app_to_use_users_default/) +- [Do I need a bank account yet](https://www.reddit.com/r/androiddev/comments/pjwr38/do_i_need_a_bank_account_yet/) +- [Android Developers Blog: Accelerated Kotlin build times with Kotlin Symbol Processing 1.0](https://www.reddit.com/r/androiddev/comments/pjwh75/android_developers_blog_accelerated_kotlin_build/) +- [Accelerated Kotlin build times with Kotlin Symbol Processing 1.0](https://www.reddit.com/r/androiddev/comments/pjvx2o/accelerated_kotlin_build_times_with_kotlin_symbol/) +- [Android Navigation - Handling Logout](https://www.reddit.com/r/androiddev/comments/pjvkff/android_navigation_handling_logout/) +- [Suggestion for library to connect to a remote database for an android app?](https://www.reddit.com/r/androiddev/comments/pjuntx/suggestion_for_library_to_connect_to_a_remote/) +- [suspendCancellableCoroutine in a different Dispatcher](https://www.reddit.com/r/androiddev/comments/pjqv5s/suspendcancellablecoroutine_in_a_different/) +- [An animated number stepper. https://github.com/kojofosu/Quantitizer](https://www.reddit.com/r/androiddev/comments/pjqm1t/an_animated_number_stepper/) +- [Correct implementation of in app review](https://www.reddit.com/r/androiddev/comments/pjpcw2/correct_implementation_of_in_app_review/) +- [what technical questions/side questions would you ask or like to discuss during an interview?](https://www.reddit.com/r/androiddev/comments/pjp250/what_technical_questionsside_questions_would_you/) ### *InfoWorld posts* From f6547f2b31f10037da61937c889606e567423c96 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 9 Sep 2021 00:39:52 +0000 Subject: [PATCH 0758/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 8fb0643046..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 51 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9971c205c1..29092e4bf2 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 24 + + 23 Performance From ec73c5a04a4014a0198d76086d297714187801ef Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 9 Sep 2021 01:51:35 +0000 Subject: [PATCH 0759/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8cdbd06c87..422034e4ae 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do I force Facebook app to use user's default browser?](https://www.reddit.com/r/androiddev/comments/pk0rkw/how_do_i_force_facebook_app_to_use_users_default/) -- [Do I need a bank account yet](https://www.reddit.com/r/androiddev/comments/pjwr38/do_i_need_a_bank_account_yet/) -- [Android Developers Blog: Accelerated Kotlin build times with Kotlin Symbol Processing 1.0](https://www.reddit.com/r/androiddev/comments/pjwh75/android_developers_blog_accelerated_kotlin_build/) -- [Accelerated Kotlin build times with Kotlin Symbol Processing 1.0](https://www.reddit.com/r/androiddev/comments/pjvx2o/accelerated_kotlin_build_times_with_kotlin_symbol/) -- [Android Navigation - Handling Logout](https://www.reddit.com/r/androiddev/comments/pjvkff/android_navigation_handling_logout/) -- [Suggestion for library to connect to a remote database for an android app?](https://www.reddit.com/r/androiddev/comments/pjuntx/suggestion_for_library_to_connect_to_a_remote/) -- [suspendCancellableCoroutine in a different Dispatcher](https://www.reddit.com/r/androiddev/comments/pjqv5s/suspendcancellablecoroutine_in_a_different/) -- [An animated number stepper. https://github.com/kojofosu/Quantitizer](https://www.reddit.com/r/androiddev/comments/pjqm1t/an_animated_number_stepper/) -- [Correct implementation of in app review](https://www.reddit.com/r/androiddev/comments/pjpcw2/correct_implementation_of_in_app_review/) -- [what technical questions/side questions would you ask or like to discuss during an interview?](https://www.reddit.com/r/androiddev/comments/pjp250/what_technical_questionsside_questions_would_you/) +- [Should I reset the app Version Counter after rebranding?](https://www.reddit.com/r/androiddev/comments/pkj52s/should_i_reset_the_app_version_counter_after/) +- [Kotlin 2021 Premier Online Event](https://www.reddit.com/r/androiddev/comments/pkgcy3/kotlin_2021_premier_online_event/) +- [RBusarow/Tangle - Android components injection using Anvil instead of Hilt.](https://www.reddit.com/r/androiddev/comments/pkfp0i/rbusarowtangle_android_components_injection_using/) +- [How long does the approval process take nowadays?](https://www.reddit.com/r/androiddev/comments/pkeoh1/how_long_does_the_approval_process_take_nowadays/) +- [JetpackCompose.app | What is “donut-hole skipping” in Jetpack Compose?](https://www.reddit.com/r/androiddev/comments/pkdjef/jetpackcomposeapp_what_is_donuthole_skipping_in/) +- [Error upload AAB](https://www.reddit.com/r/androiddev/comments/pkd6s8/error_upload_aab/) +- [Rudroid - Writing the World's worst Android Emulator in Rust 🦀](https://www.reddit.com/r/androiddev/comments/pkcald/rudroid_writing_the_worlds_worst_android_emulator/) +- [an app to test receiving different types of notifications?](https://www.reddit.com/r/androiddev/comments/pkbo7k/an_app_to_test_receiving_different_types_of/) +- [Wear OS watch face app + empty activity phone app](https://www.reddit.com/r/androiddev/comments/pkblyz/wear_os_watch_face_app_empty_activity_phone_app/) +- [The best route to developing a custom phone to distribute.](https://www.reddit.com/r/androiddev/comments/pkag9x/the_best_route_to_developing_a_custom_phone_to/) ### *InfoWorld posts* From e239d66c2b4c75090cbfa1930aab0851c4012704 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 10 Sep 2021 00:42:41 +0000 Subject: [PATCH 0760/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 29092e4bf2..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 23 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 258bd9a9b06577cce151252226937ea00d8af9ec Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 10 Sep 2021 01:51:22 +0000 Subject: [PATCH 0761/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 422034e4ae..351de1524e 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Should I reset the app Version Counter after rebranding?](https://www.reddit.com/r/androiddev/comments/pkj52s/should_i_reset_the_app_version_counter_after/) -- [Kotlin 2021 Premier Online Event](https://www.reddit.com/r/androiddev/comments/pkgcy3/kotlin_2021_premier_online_event/) -- [RBusarow/Tangle - Android components injection using Anvil instead of Hilt.](https://www.reddit.com/r/androiddev/comments/pkfp0i/rbusarowtangle_android_components_injection_using/) -- [How long does the approval process take nowadays?](https://www.reddit.com/r/androiddev/comments/pkeoh1/how_long_does_the_approval_process_take_nowadays/) -- [JetpackCompose.app | What is “donut-hole skipping” in Jetpack Compose?](https://www.reddit.com/r/androiddev/comments/pkdjef/jetpackcomposeapp_what_is_donuthole_skipping_in/) -- [Error upload AAB](https://www.reddit.com/r/androiddev/comments/pkd6s8/error_upload_aab/) -- [Rudroid - Writing the World's worst Android Emulator in Rust 🦀](https://www.reddit.com/r/androiddev/comments/pkcald/rudroid_writing_the_worlds_worst_android_emulator/) -- [an app to test receiving different types of notifications?](https://www.reddit.com/r/androiddev/comments/pkbo7k/an_app_to_test_receiving_different_types_of/) -- [Wear OS watch face app + empty activity phone app](https://www.reddit.com/r/androiddev/comments/pkblyz/wear_os_watch_face_app_empty_activity_phone_app/) -- [The best route to developing a custom phone to distribute.](https://www.reddit.com/r/androiddev/comments/pkag9x/the_best_route_to_developing_a_custom_phone_to/) +- [Does anybody knows what's the issue with my instagram reels?](https://www.reddit.com/r/androiddev/comments/plb92i/does_anybody_knows_whats_the_issue_with_my/) +- [Can i get the source code of any app available on app store???](https://www.reddit.com/r/androiddev/comments/pl7ngs/can_i_get_the_source_code_of_any_app_available_on/) +- [Detect a bank check in camera preview](https://www.reddit.com/r/androiddev/comments/pl6f1w/detect_a_bank_check_in_camera_preview/) +- [Best practices for reporting a bug?](https://www.reddit.com/r/androiddev/comments/pl61o0/best_practices_for_reporting_a_bug/) +- [[Corrupted Android OS] Can anyone help me with this BQ Aquaris X2 phone. This is everything the phone has and i cant flash it using my pc as it wont connect. Any help would be appreciated!](https://www.reddit.com/r/androiddev/comments/pl4dxx/corrupted_android_os_can_anyone_help_me_with_this/) +- [How do expense tracking apps connect to your bank account?](https://www.reddit.com/r/androiddev/comments/pl449g/how_do_expense_tracking_apps_connect_to_your_bank/) +- [Since this method is the cause of some deprecations, can someone tell me some usecases where you would use tags for Contexts (or in general, need to distinguish those)?](https://www.reddit.com/r/androiddev/comments/pl3xz0/since_this_method_is_the_cause_of_some/) +- [App on the store for past 6 months removed for noncompliant active URIs?](https://www.reddit.com/r/androiddev/comments/pl3hdz/app_on_the_store_for_past_6_months_removed_for/) +- [adb backup - why compulsory password?](https://www.reddit.com/r/androiddev/comments/pl2jk2/adb_backup_why_compulsory_password/) +- [Features you want in a flashcard based language learning app](https://www.reddit.com/r/androiddev/comments/pl2axc/features_you_want_in_a_flashcard_based_language/) ### *InfoWorld posts* From 9aeb428b5fd3d6cf0cf1402d3895f72289ea6567 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 11 Sep 2021 00:37:33 +0000 Subject: [PATCH 0762/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 233 insertions(+), 28 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..f2b9c189a2 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 55 + + 48 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..29092e4bf2 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 23 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 30ea2ebf597c2a318ff81753fbfbb7980ea20ce7 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 11 Sep 2021 01:46:28 +0000 Subject: [PATCH 0763/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 351de1524e..1e9d0ccb2b 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Does anybody knows what's the issue with my instagram reels?](https://www.reddit.com/r/androiddev/comments/plb92i/does_anybody_knows_whats_the_issue_with_my/) -- [Can i get the source code of any app available on app store???](https://www.reddit.com/r/androiddev/comments/pl7ngs/can_i_get_the_source_code_of_any_app_available_on/) -- [Detect a bank check in camera preview](https://www.reddit.com/r/androiddev/comments/pl6f1w/detect_a_bank_check_in_camera_preview/) -- [Best practices for reporting a bug?](https://www.reddit.com/r/androiddev/comments/pl61o0/best_practices_for_reporting_a_bug/) -- [[Corrupted Android OS] Can anyone help me with this BQ Aquaris X2 phone. This is everything the phone has and i cant flash it using my pc as it wont connect. Any help would be appreciated!](https://www.reddit.com/r/androiddev/comments/pl4dxx/corrupted_android_os_can_anyone_help_me_with_this/) -- [How do expense tracking apps connect to your bank account?](https://www.reddit.com/r/androiddev/comments/pl449g/how_do_expense_tracking_apps_connect_to_your_bank/) -- [Since this method is the cause of some deprecations, can someone tell me some usecases where you would use tags for Contexts (or in general, need to distinguish those)?](https://www.reddit.com/r/androiddev/comments/pl3xz0/since_this_method_is_the_cause_of_some/) -- [App on the store for past 6 months removed for noncompliant active URIs?](https://www.reddit.com/r/androiddev/comments/pl3hdz/app_on_the_store_for_past_6_months_removed_for/) -- [adb backup - why compulsory password?](https://www.reddit.com/r/androiddev/comments/pl2jk2/adb_backup_why_compulsory_password/) -- [Features you want in a flashcard based language learning app](https://www.reddit.com/r/androiddev/comments/pl2axc/features_you_want_in_a_flashcard_based_language/) +- [Help with aab file and Google Play](https://www.reddit.com/r/androiddev/comments/plw4mj/help_with_aab_file_and_google_play/) +- [How do I create a MapFragment and pass in the MapProperties? TomTom Api + Android](https://www.reddit.com/r/androiddev/comments/plvkjv/how_do_i_create_a_mapfragment_and_pass_in_the/) +- [How to split money within a team for an indie app?](https://www.reddit.com/r/androiddev/comments/plv5v8/how_to_split_money_within_a_team_for_an_indie_app/) +- [Pixel 3 and EDL.](https://www.reddit.com/r/androiddev/comments/pluv34/pixel_3_and_edl/) +- [Problems when trying to display delayed camera feed.](https://www.reddit.com/r/androiddev/comments/plth02/problems_when_trying_to_display_delayed_camera/) +- [Question about Facebook SDK](https://www.reddit.com/r/androiddev/comments/plrlze/question_about_facebook_sdk/) +- [Figma for UI](https://www.reddit.com/r/androiddev/comments/plr5am/figma_for_ui/) +- [A question regarding "Wireless debugging" in developer options of android 11](https://www.reddit.com/r/androiddev/comments/plqm82/a_question_regarding_wireless_debugging_in/) +- [How to get t device mac address without enabling WiFi](https://www.reddit.com/r/androiddev/comments/plqfvn/how_to_get_t_device_mac_address_without_enabling/) +- [I don't know if Google has ever undeprecated a method, but they need to bring back the old onActivityResult.](https://www.reddit.com/r/androiddev/comments/plp8xj/i_dont_know_if_google_has_ever_undeprecated_a/) ### *InfoWorld posts* From 6b23bc4501d1d13b2ee88035da97180cf9869be2 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 11 Sep 2021 01:46:30 +0000 Subject: [PATCH 0764/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e9d0ccb2b..883d43f867 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* +- [Google Flutter 2.5 UI kit is now stable](https://www.infoworld.com/article/3632887/google-flutter-25-ui-kit-is-now-stable.html#tk.rss_android) - [Jetpack Compose for Android turns GA](https://www.infoworld.com/article/3627298/jetpack-compose-for-android-turns-ga.html#tk.rss_android) - [Microsoft sunsets Xamarin toolkit](https://www.infoworld.com/article/3626453/microsoft-sunsets-xamarin-toolkit.html#tk.rss_android) - [Gradle 7.0 improves incremental builds, backs Java 16](https://www.infoworld.com/article/3614703/gradle-70-improves-incremental-builds-backs-java-16.html#tk.rss_android) @@ -293,7 +294,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) - [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) -- [Google introduces API for faster Kotlin builds](https://www.infoworld.com/article/3608434/google-introduces-api-for-faster-kotlin-builds.html#tk.rss_android) ### *RedHat posts* From 0e22449606e4c2848e252562f35c3ad3dbfff368 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 12 Sep 2021 00:40:34 +0000 Subject: [PATCH 0765/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 28 insertions(+), 233 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f2b9c189a2..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 48 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 29092e4bf2..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 23 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 8f983c4f2879c01087ec8fd5a54a923cfce5cbae Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 12 Sep 2021 02:02:27 +0000 Subject: [PATCH 0766/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 883d43f867..5f029403b5 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Help with aab file and Google Play](https://www.reddit.com/r/androiddev/comments/plw4mj/help_with_aab_file_and_google_play/) -- [How do I create a MapFragment and pass in the MapProperties? TomTom Api + Android](https://www.reddit.com/r/androiddev/comments/plvkjv/how_do_i_create_a_mapfragment_and_pass_in_the/) -- [How to split money within a team for an indie app?](https://www.reddit.com/r/androiddev/comments/plv5v8/how_to_split_money_within_a_team_for_an_indie_app/) -- [Pixel 3 and EDL.](https://www.reddit.com/r/androiddev/comments/pluv34/pixel_3_and_edl/) -- [Problems when trying to display delayed camera feed.](https://www.reddit.com/r/androiddev/comments/plth02/problems_when_trying_to_display_delayed_camera/) -- [Question about Facebook SDK](https://www.reddit.com/r/androiddev/comments/plrlze/question_about_facebook_sdk/) -- [Figma for UI](https://www.reddit.com/r/androiddev/comments/plr5am/figma_for_ui/) -- [A question regarding "Wireless debugging" in developer options of android 11](https://www.reddit.com/r/androiddev/comments/plqm82/a_question_regarding_wireless_debugging_in/) -- [How to get t device mac address without enabling WiFi](https://www.reddit.com/r/androiddev/comments/plqfvn/how_to_get_t_device_mac_address_without_enabling/) -- [I don't know if Google has ever undeprecated a method, but they need to bring back the old onActivityResult.](https://www.reddit.com/r/androiddev/comments/plp8xj/i_dont_know_if_google_has_ever_undeprecated_a/) +- [Facebook disabled my dating app because I use an age filter](https://www.reddit.com/r/androiddev/comments/pmj70p/facebook_disabled_my_dating_app_because_i_use_an/) +- [Implementing Google Maps on Android Apps — Codeible.com](https://www.reddit.com/r/androiddev/comments/pmiyvk/implementing_google_maps_on_android_apps/) +- [Recover data (contacts) from P9 Lite with broken touchscreen](https://www.reddit.com/r/androiddev/comments/pmiqoh/recover_data_contacts_from_p9_lite_with_broken/) +- [Dpi does it matter side loading?](https://www.reddit.com/r/androiddev/comments/pmiopw/dpi_does_it_matter_side_loading/) +- [Android application Icon](https://www.reddit.com/r/androiddev/comments/pme2mg/android_application_icon/) +- [will be something like that available in android 12? personally this would be extremely useful for me](https://www.reddit.com/r/androiddev/comments/pmdlfu/will_be_something_like_that_available_in_android/) +- [Scoped Storage is confusing](https://www.reddit.com/r/androiddev/comments/pm4j4d/scoped_storage_is_confusing/) +- [My Mopub account has been suspended without any reason](https://www.reddit.com/r/androiddev/comments/pm42dw/my_mopub_account_has_been_suspended_without_any/) +- [SSCustomEditTextOutlineBorder is a small kotlin library for android to support outlined (stroked) text in EditText widgets same as Material Design Outlined Box but without Floating Label.](https://www.reddit.com/r/androiddev/comments/pm0twz/sscustomedittextoutlineborder_is_a_small_kotlin/) +- [Apple lost the Epic battle](https://www.reddit.com/r/androiddev/comments/pm0lo9/apple_lost_the_epic_battle/) ### *InfoWorld posts* From 96fe521ff30b4128f7af61bef7d0966a104e62bd Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 12 Sep 2021 23:58:21 +0000 Subject: [PATCH 0767/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 35618 -> 47155 bytes 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index f0a16ecace..661a29f4bc 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -77,4 +77,11 @@ _date,total_clones,unique_clones 2021-09-02,367,39 2021-09-03,126,28 2021-09-04,216,27 -2021-09-05,131,31 +2021-09-05,135,32 +2021-09-06,221,28 +2021-09-07,361,41 +2021-09-08,251,30 +2021-09-09,347,32 +2021-09-10,362,26 +2021-09-11,252,23 +2021-09-12,277,19 diff --git a/traffic/plots.png b/traffic/plots.png index d98fc8a87a842419979d7f283d7aa75884ad2363..fdc3d2fa9dbb87b2d6dd40b77eac120be1cb294b 100644 GIT binary patch literal 47155 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 QP7;0&?mwbmpl2WaUlAz|e*gdg literal 35618 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 Date: Mon, 13 Sep 2021 00:41:05 +0000 Subject: [PATCH 0768/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..77dd795017 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 50 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..29092e4bf2 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 23 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 30ab914f4f0adda93d9f66426e361163ca5bfe77 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 13 Sep 2021 01:50:57 +0000 Subject: [PATCH 0769/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5f029403b5..2d8d7808dd 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Facebook disabled my dating app because I use an age filter](https://www.reddit.com/r/androiddev/comments/pmj70p/facebook_disabled_my_dating_app_because_i_use_an/) -- [Implementing Google Maps on Android Apps — Codeible.com](https://www.reddit.com/r/androiddev/comments/pmiyvk/implementing_google_maps_on_android_apps/) -- [Recover data (contacts) from P9 Lite with broken touchscreen](https://www.reddit.com/r/androiddev/comments/pmiqoh/recover_data_contacts_from_p9_lite_with_broken/) -- [Dpi does it matter side loading?](https://www.reddit.com/r/androiddev/comments/pmiopw/dpi_does_it_matter_side_loading/) -- [Android application Icon](https://www.reddit.com/r/androiddev/comments/pme2mg/android_application_icon/) -- [will be something like that available in android 12? personally this would be extremely useful for me](https://www.reddit.com/r/androiddev/comments/pmdlfu/will_be_something_like_that_available_in_android/) -- [Scoped Storage is confusing](https://www.reddit.com/r/androiddev/comments/pm4j4d/scoped_storage_is_confusing/) -- [My Mopub account has been suspended without any reason](https://www.reddit.com/r/androiddev/comments/pm42dw/my_mopub_account_has_been_suspended_without_any/) -- [SSCustomEditTextOutlineBorder is a small kotlin library for android to support outlined (stroked) text in EditText widgets same as Material Design Outlined Box but without Floating Label.](https://www.reddit.com/r/androiddev/comments/pm0twz/sscustomedittextoutlineborder_is_a_small_kotlin/) -- [Apple lost the Epic battle](https://www.reddit.com/r/androiddev/comments/pm0lo9/apple_lost_the_epic_battle/) +- [Question about Approving an app, not working on the Work playstore.](https://www.reddit.com/r/androiddev/comments/pn4c5r/question_about_approving_an_app_not_working_on/) +- [Does anyone know of a FREE api that provides live transcription?](https://www.reddit.com/r/androiddev/comments/pn1d5l/does_anyone_know_of_a_free_api_that_provides_live/) +- [I installed Android x86 on an older laptop, and when I try to play certain games it gives me this error. Don't know if this is the right sub to ask, but does anyone know how to solve this?](https://www.reddit.com/r/androiddev/comments/pmzxxb/i_installed_android_x86_on_an_older_laptop_and/) +- [Intend to learn node js with 3 years of android experience](https://www.reddit.com/r/androiddev/comments/pmx2lm/intend_to_learn_node_js_with_3_years_of_android/) +- [Using Activity Result API for multiple files (chosen seperately)](https://www.reddit.com/r/androiddev/comments/pmwmtc/using_activity_result_api_for_multiple_files/) +- [Preventing Extraneous Flavor Tasks in Gradle](https://www.reddit.com/r/androiddev/comments/pmwcxv/preventing_extraneous_flavor_tasks_in_gradle/) +- [Another app using my screenshots](https://www.reddit.com/r/androiddev/comments/pmv1a7/another_app_using_my_screenshots/) +- [What is warning 703 and warning 701 in MediaPlayer](https://www.reddit.com/r/androiddev/comments/pmsavd/what_is_warning_703_and_warning_701_in_mediaplayer/) +- [I just released my first (open source) app, BootyCrate](https://www.reddit.com/r/androiddev/comments/pms7rk/i_just_released_my_first_open_source_app/) +- [My emulator is throwing me an error "missing system image". Could anyone help me? Thanks in advance.](https://www.reddit.com/r/androiddev/comments/pms23j/my_emulator_is_throwing_me_an_error_missing/) ### *InfoWorld posts* From 4facd049fcfde6e5577ee352401767c508d7cd83 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 14 Sep 2021 00:40:15 +0000 Subject: [PATCH 0770/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 77dd795017..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 50 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 29092e4bf2..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 23 + + 26 Performance From 56c8a13d28d2dd50e517c285720e55312010fde0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 14 Sep 2021 01:50:34 +0000 Subject: [PATCH 0771/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2d8d7808dd..097e396dfc 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Question about Approving an app, not working on the Work playstore.](https://www.reddit.com/r/androiddev/comments/pn4c5r/question_about_approving_an_app_not_working_on/) -- [Does anyone know of a FREE api that provides live transcription?](https://www.reddit.com/r/androiddev/comments/pn1d5l/does_anyone_know_of_a_free_api_that_provides_live/) -- [I installed Android x86 on an older laptop, and when I try to play certain games it gives me this error. Don't know if this is the right sub to ask, but does anyone know how to solve this?](https://www.reddit.com/r/androiddev/comments/pmzxxb/i_installed_android_x86_on_an_older_laptop_and/) -- [Intend to learn node js with 3 years of android experience](https://www.reddit.com/r/androiddev/comments/pmx2lm/intend_to_learn_node_js_with_3_years_of_android/) -- [Using Activity Result API for multiple files (chosen seperately)](https://www.reddit.com/r/androiddev/comments/pmwmtc/using_activity_result_api_for_multiple_files/) -- [Preventing Extraneous Flavor Tasks in Gradle](https://www.reddit.com/r/androiddev/comments/pmwcxv/preventing_extraneous_flavor_tasks_in_gradle/) -- [Another app using my screenshots](https://www.reddit.com/r/androiddev/comments/pmv1a7/another_app_using_my_screenshots/) -- [What is warning 703 and warning 701 in MediaPlayer](https://www.reddit.com/r/androiddev/comments/pmsavd/what_is_warning_703_and_warning_701_in_mediaplayer/) -- [I just released my first (open source) app, BootyCrate](https://www.reddit.com/r/androiddev/comments/pms7rk/i_just_released_my_first_open_source_app/) -- [My emulator is throwing me an error "missing system image". Could anyone help me? Thanks in advance.](https://www.reddit.com/r/androiddev/comments/pms23j/my_emulator_is_throwing_me_an_error_missing/) +- [Problem with APK upload link for Play Protect appeal.](https://www.reddit.com/r/androiddev/comments/pnrbt6/problem_with_apk_upload_link_for_play_protect/) +- [Hello, the following post might be unrelated to this subreddit but I'm hoping to find some answers here. Hope the mods and other members here take this post into conisderation. Also, feel free to tell me whatever action is necessary regarding on this post.](https://www.reddit.com/r/androiddev/comments/pnr5ht/hello_the_following_post_might_be_unrelated_to/) +- [Pop up on home screen like on Google assistant.](https://www.reddit.com/r/androiddev/comments/pnq9ej/pop_up_on_home_screen_like_on_google_assistant/) +- [Is it possible to get near real time location updates while the phone is Idle using persistent notification with foreground service or accessibility service?](https://www.reddit.com/r/androiddev/comments/pnpr70/is_it_possible_to_get_near_real_time_location/) +- [How was your experience with non-git version control systems like IBM RTC?](https://www.reddit.com/r/androiddev/comments/pno05s/how_was_your_experience_with_nongit_version/) +- [MMR system for a casual scoreboard android application](https://www.reddit.com/r/androiddev/comments/pnnrn6/mmr_system_for_a_casual_scoreboard_android/) +- [Bot Manager SDK: Akamai?](https://www.reddit.com/r/androiddev/comments/pnnqn9/bot_manager_sdk_akamai/) +- [Website that list all dependency packages for android](https://www.reddit.com/r/androiddev/comments/pnlzrb/website_that_list_all_dependency_packages_for/) +- [App not available for my device eventhough it's supported?](https://www.reddit.com/r/androiddev/comments/pnk34k/app_not_available_for_my_device_eventhough_its/) +- [Managing user's in-app interaction with another business: co-development, integration or... - which is better?](https://www.reddit.com/r/androiddev/comments/pnja9u/managing_users_inapp_interaction_with_another/) ### *InfoWorld posts* From 255e352f376d6d4357b7c8d3137c7ae0cb4b2932 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 15 Sep 2021 00:38:50 +0000 Subject: [PATCH 0772/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 27 Performance From 20b0e3092121c30d23a8a979e439c5f909e058d4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 15 Sep 2021 01:49:44 +0000 Subject: [PATCH 0773/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 097e396dfc..61ffb15715 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Problem with APK upload link for Play Protect appeal.](https://www.reddit.com/r/androiddev/comments/pnrbt6/problem_with_apk_upload_link_for_play_protect/) -- [Hello, the following post might be unrelated to this subreddit but I'm hoping to find some answers here. Hope the mods and other members here take this post into conisderation. Also, feel free to tell me whatever action is necessary regarding on this post.](https://www.reddit.com/r/androiddev/comments/pnr5ht/hello_the_following_post_might_be_unrelated_to/) -- [Pop up on home screen like on Google assistant.](https://www.reddit.com/r/androiddev/comments/pnq9ej/pop_up_on_home_screen_like_on_google_assistant/) -- [Is it possible to get near real time location updates while the phone is Idle using persistent notification with foreground service or accessibility service?](https://www.reddit.com/r/androiddev/comments/pnpr70/is_it_possible_to_get_near_real_time_location/) -- [How was your experience with non-git version control systems like IBM RTC?](https://www.reddit.com/r/androiddev/comments/pno05s/how_was_your_experience_with_nongit_version/) -- [MMR system for a casual scoreboard android application](https://www.reddit.com/r/androiddev/comments/pnnrn6/mmr_system_for_a_casual_scoreboard_android/) -- [Bot Manager SDK: Akamai?](https://www.reddit.com/r/androiddev/comments/pnnqn9/bot_manager_sdk_akamai/) -- [Website that list all dependency packages for android](https://www.reddit.com/r/androiddev/comments/pnlzrb/website_that_list_all_dependency_packages_for/) -- [App not available for my device eventhough it's supported?](https://www.reddit.com/r/androiddev/comments/pnk34k/app_not_available_for_my_device_eventhough_its/) -- [Managing user's in-app interaction with another business: co-development, integration or... - which is better?](https://www.reddit.com/r/androiddev/comments/pnja9u/managing_users_inapp_interaction_with_another/) +- [Mediarecorder and AudioRecord](https://www.reddit.com/r/androiddev/comments/poenqf/mediarecorder_and_audiorecord/) +- [Unable to scroll vertically when touch horizontal recyclerview within item in recyclerview](https://www.reddit.com/r/androiddev/comments/poel2a/unable_to_scroll_vertically_when_touch_horizontal/) +- [Released workflow v1.0.0](https://www.reddit.com/r/androiddev/comments/poek5t/released_workflow_v100/) +- [Taking screenshots on Android 12 emulator - is the status bar sizing correct?](https://www.reddit.com/r/androiddev/comments/poar8e/taking_screenshots_on_android_12_emulator_is_the/) +- [ML/Blockchain real life implementation](https://www.reddit.com/r/androiddev/comments/po7r9w/mlblockchain_real_life_implementation/) +- [Material you for developers.](https://www.reddit.com/r/androiddev/comments/po5hjn/material_you_for_developers/) +- [Understand Gradle In Half An Hour](https://www.reddit.com/r/androiddev/comments/po5bct/understand_gradle_in_half_an_hour/) +- [Java 17 / JDK 17: General Availability](https://www.reddit.com/r/androiddev/comments/po4es8/java_17_jdk_17_general_availability/) +- [Mejiboard - An image board client based on Gelbooru for android, made from Jetpack Compose](https://www.reddit.com/r/androiddev/comments/po44fp/mejiboard_an_image_board_client_based_on_gelbooru/) +- [Privacy friendly analytics/custom event logging](https://www.reddit.com/r/androiddev/comments/po3nf6/privacy_friendly_analyticscustom_event_logging/) ### *InfoWorld posts* From 865c5df4cba93517d90c1fefd8f7ae25a1f80901 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 16 Sep 2021 00:40:13 +0000 Subject: [PATCH 0774/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..2fb9b523cb 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 59 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 26 Performance From 59a413cd918ecff73a58943eee01dbae41ece3b4 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 16 Sep 2021 01:55:29 +0000 Subject: [PATCH 0775/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 61ffb15715..914c7aa031 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Mediarecorder and AudioRecord](https://www.reddit.com/r/androiddev/comments/poenqf/mediarecorder_and_audiorecord/) -- [Unable to scroll vertically when touch horizontal recyclerview within item in recyclerview](https://www.reddit.com/r/androiddev/comments/poel2a/unable_to_scroll_vertically_when_touch_horizontal/) -- [Released workflow v1.0.0](https://www.reddit.com/r/androiddev/comments/poek5t/released_workflow_v100/) -- [Taking screenshots on Android 12 emulator - is the status bar sizing correct?](https://www.reddit.com/r/androiddev/comments/poar8e/taking_screenshots_on_android_12_emulator_is_the/) -- [ML/Blockchain real life implementation](https://www.reddit.com/r/androiddev/comments/po7r9w/mlblockchain_real_life_implementation/) -- [Material you for developers.](https://www.reddit.com/r/androiddev/comments/po5hjn/material_you_for_developers/) -- [Understand Gradle In Half An Hour](https://www.reddit.com/r/androiddev/comments/po5bct/understand_gradle_in_half_an_hour/) -- [Java 17 / JDK 17: General Availability](https://www.reddit.com/r/androiddev/comments/po4es8/java_17_jdk_17_general_availability/) -- [Mejiboard - An image board client based on Gelbooru for android, made from Jetpack Compose](https://www.reddit.com/r/androiddev/comments/po44fp/mejiboard_an_image_board_client_based_on_gelbooru/) -- [Privacy friendly analytics/custom event logging](https://www.reddit.com/r/androiddev/comments/po3nf6/privacy_friendly_analyticscustom_event_logging/) +- [This app has downloaded a reasonable amount of data in my phone but i don't seem to find those files in my local storage. There is no directory by the name of the app in my device. How come the app manage to access those files but i can't? Or is there any way to get access to those files?](https://www.reddit.com/r/androiddev/comments/pp3mvs/this_app_has_downloaded_a_reasonable_amount_of/) +- [How to remove inner padding from vector drawable](https://www.reddit.com/r/androiddev/comments/pp1mgw/how_to_remove_inner_padding_from_vector_drawable/) +- [Trying to find the best dpi setting for some custom tablets](https://www.reddit.com/r/androiddev/comments/pp1dx8/trying_to_find_the_best_dpi_setting_for_some/) +- [Ad network and indeterminate ProgressBar](https://www.reddit.com/r/androiddev/comments/pow48t/ad_network_and_indeterminate_progressbar/) +- [What are those application that can install fonts style in galaxy phones?](https://www.reddit.com/r/androiddev/comments/pov2vt/what_are_those_application_that_can_install_fonts/) +- [Android TV apps with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pou5sw/android_tv_apps_with_jetpack_compose/) +- [Android Jetpack Compose Examples for beginners](https://www.reddit.com/r/androiddev/comments/potydt/android_jetpack_compose_examples_for_beginners/) +- [Will Google have to revert it's In App Purchases enforcement now?](https://www.reddit.com/r/androiddev/comments/potkal/will_google_have_to_revert_its_in_app_purchases/) +- [Currency Exchange App in Kotlin with Dagger2 and RxJava2](https://www.reddit.com/r/androiddev/comments/posdmd/currency_exchange_app_in_kotlin_with_dagger2_and/) +- [How to implement code completion for an android application ?](https://www.reddit.com/r/androiddev/comments/porqkf/how_to_implement_code_completion_for_an_android/) ### *InfoWorld posts* From 94c9350037e96aff6da3e19c688a2b75a3bb8a76 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 17 Sep 2021 00:42:52 +0000 Subject: [PATCH 0776/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 2fb9b523cb..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 59 + + 53 Performance From cc1ea8c285803b9f0c5ae5afeebab896be900848 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 17 Sep 2021 01:56:42 +0000 Subject: [PATCH 0777/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 914c7aa031..e6830fd3f9 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [This app has downloaded a reasonable amount of data in my phone but i don't seem to find those files in my local storage. There is no directory by the name of the app in my device. How come the app manage to access those files but i can't? Or is there any way to get access to those files?](https://www.reddit.com/r/androiddev/comments/pp3mvs/this_app_has_downloaded_a_reasonable_amount_of/) -- [How to remove inner padding from vector drawable](https://www.reddit.com/r/androiddev/comments/pp1mgw/how_to_remove_inner_padding_from_vector_drawable/) -- [Trying to find the best dpi setting for some custom tablets](https://www.reddit.com/r/androiddev/comments/pp1dx8/trying_to_find_the_best_dpi_setting_for_some/) -- [Ad network and indeterminate ProgressBar](https://www.reddit.com/r/androiddev/comments/pow48t/ad_network_and_indeterminate_progressbar/) -- [What are those application that can install fonts style in galaxy phones?](https://www.reddit.com/r/androiddev/comments/pov2vt/what_are_those_application_that_can_install_fonts/) -- [Android TV apps with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pou5sw/android_tv_apps_with_jetpack_compose/) -- [Android Jetpack Compose Examples for beginners](https://www.reddit.com/r/androiddev/comments/potydt/android_jetpack_compose_examples_for_beginners/) -- [Will Google have to revert it's In App Purchases enforcement now?](https://www.reddit.com/r/androiddev/comments/potkal/will_google_have_to_revert_its_in_app_purchases/) -- [Currency Exchange App in Kotlin with Dagger2 and RxJava2](https://www.reddit.com/r/androiddev/comments/posdmd/currency_exchange_app_in_kotlin_with_dagger2_and/) -- [How to implement code completion for an android application ?](https://www.reddit.com/r/androiddev/comments/porqkf/how_to_implement_code_completion_for_an_android/) +- [Best language (for me) to start developing simple apps in android](https://www.reddit.com/r/androiddev/comments/ppq3kj/best_language_for_me_to_start_developing_simple/) +- [Selling In-App Products on Android: Implementing Google Play Billing V4](https://www.reddit.com/r/androiddev/comments/ppjhc9/selling_inapp_products_on_android_implementing/) +- [How to test flows that emit during viewModel initialization](https://www.reddit.com/r/androiddev/comments/ppj3pr/how_to_test_flows_that_emit_during_viewmodel/) +- [Question about external USB storage access on Android 11](https://www.reddit.com/r/androiddev/comments/ppg9re/question_about_external_usb_storage_access_on/) +- [Wireless Debugging auto connect not working on specific machine.](https://www.reddit.com/r/androiddev/comments/ppfl1k/wireless_debugging_auto_connect_not_working_on/) +- [Starting new job after 4 years of working for first company](https://www.reddit.com/r/androiddev/comments/ppep73/starting_new_job_after_4_years_of_working_for/) +- [Responsive design best practice w/ margin&padding](https://www.reddit.com/r/androiddev/comments/ppebx2/responsive_design_best_practice_w_marginpadding/) +- [Fetch latest source tag for device](https://www.reddit.com/r/androiddev/comments/ppdtbm/fetch_latest_source_tag_for_device/) +- [Is it possible to sync/update the offline cache of Firestore while in the background?](https://www.reddit.com/r/androiddev/comments/ppddxo/is_it_possible_to_syncupdate_the_offline_cache_of/) +- [App promotion with GoogleAds](https://www.reddit.com/r/androiddev/comments/ppd06b/app_promotion_with_googleads/) ### *InfoWorld posts* From 8d65d54f496b0fd2012791ba4b0d14700359d6ac Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 18 Sep 2021 01:52:45 +0000 Subject: [PATCH 0778/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e6830fd3f9..4f42569872 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Best language (for me) to start developing simple apps in android](https://www.reddit.com/r/androiddev/comments/ppq3kj/best_language_for_me_to_start_developing_simple/) -- [Selling In-App Products on Android: Implementing Google Play Billing V4](https://www.reddit.com/r/androiddev/comments/ppjhc9/selling_inapp_products_on_android_implementing/) -- [How to test flows that emit during viewModel initialization](https://www.reddit.com/r/androiddev/comments/ppj3pr/how_to_test_flows_that_emit_during_viewmodel/) -- [Question about external USB storage access on Android 11](https://www.reddit.com/r/androiddev/comments/ppg9re/question_about_external_usb_storage_access_on/) -- [Wireless Debugging auto connect not working on specific machine.](https://www.reddit.com/r/androiddev/comments/ppfl1k/wireless_debugging_auto_connect_not_working_on/) -- [Starting new job after 4 years of working for first company](https://www.reddit.com/r/androiddev/comments/ppep73/starting_new_job_after_4_years_of_working_for/) -- [Responsive design best practice w/ margin&padding](https://www.reddit.com/r/androiddev/comments/ppebx2/responsive_design_best_practice_w_marginpadding/) -- [Fetch latest source tag for device](https://www.reddit.com/r/androiddev/comments/ppdtbm/fetch_latest_source_tag_for_device/) -- [Is it possible to sync/update the offline cache of Firestore while in the background?](https://www.reddit.com/r/androiddev/comments/ppddxo/is_it_possible_to_syncupdate_the_offline_cache_of/) -- [App promotion with GoogleAds](https://www.reddit.com/r/androiddev/comments/ppd06b/app_promotion_with_googleads/) +- [Can someone explain how to simplify android development](https://www.reddit.com/r/androiddev/comments/pqb65a/can_someone_explain_how_to_simplify_android/) +- [Android Studio Bumblebee Canary 12 available](https://www.reddit.com/r/androiddev/comments/pqasdg/android_studio_bumblebee_canary_12_available/) +- [Waves Animation with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pq97wd/waves_animation_with_jetpack_compose/) +- [Distributing Android OS](https://www.reddit.com/r/androiddev/comments/pq51c8/distributing_android_os/) +- [Are you allowed to tell your users things such as "playing our puzzle game 15 minutes every day will improve your focus" even though it might in fact be true?](https://www.reddit.com/r/androiddev/comments/pq39uf/are_you_allowed_to_tell_your_users_things_such_as/) +- [I can't contact Google for my App Suspension](https://www.reddit.com/r/androiddev/comments/pq19dv/i_cant_contact_google_for_my_app_suspension/) +- [‘Gamebaaz’ a full-stack KOTLIN application. Entire android app is in jetpack compose + backend tech stack includes Ktor + mysql + heroku deployment. If you find it helpful, please give it a star](https://www.reddit.com/r/androiddev/comments/pq0ogr/gamebaaz_a_fullstack_kotlin_application_entire/) +- [App Feedback Thread - September 17, 2021](https://www.reddit.com/r/androiddev/comments/ppzp0b/app_feedback_thread_september_17_2021/) +- [🙅‍♂️Don't let ViewModel knew about framework level dependencies](https://www.reddit.com/r/androiddev/comments/ppz6kb/dont_let_viewmodel_knew_about_framework_level/) +- [Experience with Nicholas Duro's Private Island interview](https://www.reddit.com/r/androiddev/comments/ppz2hv/experience_with_nicholas_duros_private_island/) ### *InfoWorld posts* From cc10081a9c98ce7ff58d3643a6989d492060179d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 19 Sep 2021 00:39:16 +0000 Subject: [PATCH 0779/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 31 Performance From d5fab70d805a1b1dd8fe29cc7767a992ab93badb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 19 Sep 2021 01:52:02 +0000 Subject: [PATCH 0780/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4f42569872..0424e7ad12 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Can someone explain how to simplify android development](https://www.reddit.com/r/androiddev/comments/pqb65a/can_someone_explain_how_to_simplify_android/) -- [Android Studio Bumblebee Canary 12 available](https://www.reddit.com/r/androiddev/comments/pqasdg/android_studio_bumblebee_canary_12_available/) -- [Waves Animation with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pq97wd/waves_animation_with_jetpack_compose/) -- [Distributing Android OS](https://www.reddit.com/r/androiddev/comments/pq51c8/distributing_android_os/) -- [Are you allowed to tell your users things such as "playing our puzzle game 15 minutes every day will improve your focus" even though it might in fact be true?](https://www.reddit.com/r/androiddev/comments/pq39uf/are_you_allowed_to_tell_your_users_things_such_as/) -- [I can't contact Google for my App Suspension](https://www.reddit.com/r/androiddev/comments/pq19dv/i_cant_contact_google_for_my_app_suspension/) -- [‘Gamebaaz’ a full-stack KOTLIN application. Entire android app is in jetpack compose + backend tech stack includes Ktor + mysql + heroku deployment. If you find it helpful, please give it a star](https://www.reddit.com/r/androiddev/comments/pq0ogr/gamebaaz_a_fullstack_kotlin_application_entire/) -- [App Feedback Thread - September 17, 2021](https://www.reddit.com/r/androiddev/comments/ppzp0b/app_feedback_thread_september_17_2021/) -- [🙅‍♂️Don't let ViewModel knew about framework level dependencies](https://www.reddit.com/r/androiddev/comments/ppz6kb/dont_let_viewmodel_knew_about_framework_level/) -- [Experience with Nicholas Duro's Private Island interview](https://www.reddit.com/r/androiddev/comments/ppz2hv/experience_with_nicholas_duros_private_island/) +- [I released my first Kotlin app and giving away 400 free promo codes: HACK: Beautiful Hacker News client with reply push notifications, swipe to vote & comment, submit posts, reader mode for articles, text to speech for articles, highly customizable with themes, fonts, colors](https://www.reddit.com/r/androiddev/comments/pqxbse/i_released_my_first_kotlin_app_and_giving_away/) +- [How to upload files to S3?](https://www.reddit.com/r/androiddev/comments/pqw7q5/how_to_upload_files_to_s3/) +- [Masters Degree and Android Development](https://www.reddit.com/r/androiddev/comments/pqvm6m/masters_degree_and_android_development/) +- [Releasing an app on Play Store with SMS & Call Log permissions](https://www.reddit.com/r/androiddev/comments/pqtq9c/releasing_an_app_on_play_store_with_sms_call_log/) +- [Investigating and disabling hard-coded certificate pinning in an Android application](https://www.reddit.com/r/androiddev/comments/pqslhb/investigating_and_disabling_hardcoded_certificate/) +- [Making Android Studio Plugin that records User Input](https://www.reddit.com/r/androiddev/comments/pqsa09/making_android_studio_plugin_that_records_user/) +- [Question: I want to start an application within another application, but I don't want to use intent.](https://www.reddit.com/r/androiddev/comments/pqqi6z/question_i_want_to_start_an_application_within/) +- [How to create an analog clock UI in jetpack compose?](https://www.reddit.com/r/androiddev/comments/pqpwix/how_to_create_an_analog_clock_ui_in_jetpack/) +- [Your app contains content that doesn't comply with the User Generated Content policy.](https://www.reddit.com/r/androiddev/comments/pqpukf/your_app_contains_content_that_doesnt_comply_with/) +- [Google apps spotted with a partial Material You Redesign | Android 12](https://www.reddit.com/r/androiddev/comments/pqogl9/google_apps_spotted_with_a_partial_material_you/) ### *InfoWorld posts* From 5e533a36d3143ea2f3cccbea2702ef9a21a26be9 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 19 Sep 2021 23:58:10 +0000 Subject: [PATCH 0781/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 47155 -> 47263 bytes 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 661a29f4bc..ffe646769f 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -84,4 +84,11 @@ _date,total_clones,unique_clones 2021-09-09,347,32 2021-09-10,362,26 2021-09-11,252,23 -2021-09-12,277,19 +2021-09-12,280,19 +2021-09-13,356,28 +2021-09-14,366,26 +2021-09-15,379,30 +2021-09-16,348,26 +2021-09-17,379,33 +2021-09-18,290,25 +2021-09-19,374,28 diff --git a/traffic/plots.png b/traffic/plots.png index fdc3d2fa9dbb87b2d6dd40b77eac120be1cb294b..9e717ab26a4dead1670c201225e3aec9b8b0a2f0 100644 GIT binary patch literal 47263 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ÐoC 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 literal 47155 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 QP7;0&?mwbmpl2WaUlAz|e*gdg From 146a1781b4b403b40adc67616131409b853a0cfc Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 20 Sep 2021 00:43:00 +0000 Subject: [PATCH 0782/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 ++++-------------------------------- 1 file changed, 25 insertions(+), 230 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 58 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From d0a38a2f1ffa52af1ae4a79ba30fe9f9bc9248bd Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 20 Sep 2021 01:52:51 +0000 Subject: [PATCH 0783/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0424e7ad12..c6f1b759e2 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I released my first Kotlin app and giving away 400 free promo codes: HACK: Beautiful Hacker News client with reply push notifications, swipe to vote & comment, submit posts, reader mode for articles, text to speech for articles, highly customizable with themes, fonts, colors](https://www.reddit.com/r/androiddev/comments/pqxbse/i_released_my_first_kotlin_app_and_giving_away/) -- [How to upload files to S3?](https://www.reddit.com/r/androiddev/comments/pqw7q5/how_to_upload_files_to_s3/) -- [Masters Degree and Android Development](https://www.reddit.com/r/androiddev/comments/pqvm6m/masters_degree_and_android_development/) -- [Releasing an app on Play Store with SMS & Call Log permissions](https://www.reddit.com/r/androiddev/comments/pqtq9c/releasing_an_app_on_play_store_with_sms_call_log/) -- [Investigating and disabling hard-coded certificate pinning in an Android application](https://www.reddit.com/r/androiddev/comments/pqslhb/investigating_and_disabling_hardcoded_certificate/) -- [Making Android Studio Plugin that records User Input](https://www.reddit.com/r/androiddev/comments/pqsa09/making_android_studio_plugin_that_records_user/) -- [Question: I want to start an application within another application, but I don't want to use intent.](https://www.reddit.com/r/androiddev/comments/pqqi6z/question_i_want_to_start_an_application_within/) -- [How to create an analog clock UI in jetpack compose?](https://www.reddit.com/r/androiddev/comments/pqpwix/how_to_create_an_analog_clock_ui_in_jetpack/) -- [Your app contains content that doesn't comply with the User Generated Content policy.](https://www.reddit.com/r/androiddev/comments/pqpukf/your_app_contains_content_that_doesnt_comply_with/) -- [Google apps spotted with a partial Material You Redesign | Android 12](https://www.reddit.com/r/androiddev/comments/pqogl9/google_apps_spotted_with_a_partial_material_you/) +- [Android Developer documentation inconsistent with 2020.3.1?](https://www.reddit.com/r/androiddev/comments/prk0bd/android_developer_documentation_inconsistent_with/) +- [Jetpack Compose - Login Screen Implementation](https://www.reddit.com/r/androiddev/comments/prjbpr/jetpack_compose_login_screen_implementation/) +- [Why What'sApp isn't using Room Persistence library to store local data?](https://www.reddit.com/r/androiddev/comments/prhlco/why_whatsapp_isnt_using_room_persistence_library/) +- [How can i promote and network?](https://www.reddit.com/r/androiddev/comments/prgnqo/how_can_i_promote_and_network/) +- [Is there a way to limit smartphone to 8gb of ram?](https://www.reddit.com/r/androiddev/comments/prgmkb/is_there_a_way_to_limit_smartphone_to_8gb_of_ram/) +- [Anyone of you guys got the blocked by play protect warning for your apps? How did you fix it?](https://www.reddit.com/r/androiddev/comments/pre6vt/anyone_of_you_guys_got_the_blocked_by_play/) +- [What is “donut-hole skipping” in Jetpack Compose?](https://www.reddit.com/r/androiddev/comments/prauhz/what_is_donuthole_skipping_in_jetpack_compose/) +- [Espresso testing strategies - mocking data](https://www.reddit.com/r/androiddev/comments/pr9u8t/espresso_testing_strategies_mocking_data/) +- [Is it possible to create an Android app which will manipulate another app in that mobile(Not emulator)?](https://www.reddit.com/r/androiddev/comments/pr8upw/is_it_possible_to_create_an_android_app_which/) +- [Android App Overlay](https://www.reddit.com/r/androiddev/comments/pr8358/android_app_overlay/) ### *InfoWorld posts* From 44d121f49c0b325c491f8347cad4b05a05cc82ff Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 21 Sep 2021 00:39:45 +0000 Subject: [PATCH 0784/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 ++++++++++++++++++++++++++++++++---- 1 file changed, 230 insertions(+), 25 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 57 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 661be48cbfc833c552360ac8cae4354bd05d2754 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 21 Sep 2021 01:51:34 +0000 Subject: [PATCH 0785/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c6f1b759e2..6c9f3fe5b3 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android Developer documentation inconsistent with 2020.3.1?](https://www.reddit.com/r/androiddev/comments/prk0bd/android_developer_documentation_inconsistent_with/) -- [Jetpack Compose - Login Screen Implementation](https://www.reddit.com/r/androiddev/comments/prjbpr/jetpack_compose_login_screen_implementation/) -- [Why What'sApp isn't using Room Persistence library to store local data?](https://www.reddit.com/r/androiddev/comments/prhlco/why_whatsapp_isnt_using_room_persistence_library/) -- [How can i promote and network?](https://www.reddit.com/r/androiddev/comments/prgnqo/how_can_i_promote_and_network/) -- [Is there a way to limit smartphone to 8gb of ram?](https://www.reddit.com/r/androiddev/comments/prgmkb/is_there_a_way_to_limit_smartphone_to_8gb_of_ram/) -- [Anyone of you guys got the blocked by play protect warning for your apps? How did you fix it?](https://www.reddit.com/r/androiddev/comments/pre6vt/anyone_of_you_guys_got_the_blocked_by_play/) -- [What is “donut-hole skipping” in Jetpack Compose?](https://www.reddit.com/r/androiddev/comments/prauhz/what_is_donuthole_skipping_in_jetpack_compose/) -- [Espresso testing strategies - mocking data](https://www.reddit.com/r/androiddev/comments/pr9u8t/espresso_testing_strategies_mocking_data/) -- [Is it possible to create an Android app which will manipulate another app in that mobile(Not emulator)?](https://www.reddit.com/r/androiddev/comments/pr8upw/is_it_possible_to_create_an_android_app_which/) -- [Android App Overlay](https://www.reddit.com/r/androiddev/comments/pr8358/android_app_overlay/) +- [What is this?](https://www.reddit.com/r/androiddev/comments/ps84lx/what_is_this/) +- [Release Kotlin 1.5.31 · JetBrains/kotlin](https://www.reddit.com/r/androiddev/comments/ps7h8x/release_kotlin_1531_jetbrainskotlin/) +- [Kotlin android development tutorial for web developers](https://www.reddit.com/r/androiddev/comments/ps5wvx/kotlin_android_development_tutorial_for_web/) +- [Exiting android emulator crashes my linux machine.](https://www.reddit.com/r/androiddev/comments/ps500g/exiting_android_emulator_crashes_my_linux_machine/) +- [Mobile Apps validation approach](https://www.reddit.com/r/androiddev/comments/ps4mpj/mobile_apps_validation_approach/) +- [Android 11 Send user directly to the Location Permission screen](https://www.reddit.com/r/androiddev/comments/ps1xek/android_11_send_user_directly_to_the_location/) +- [First time app: licensing your terms of use/servive/copyright?](https://www.reddit.com/r/androiddev/comments/pryhis/first_time_app_licensing_your_terms_of/) +- [Is app source code copyrighted?](https://www.reddit.com/r/androiddev/comments/prwglb/is_app_source_code_copyrighted/) +- [Build applications with python](https://www.reddit.com/r/androiddev/comments/prvj9c/build_applications_with_python/) +- [Noob question, can't find a tutorial on how to view all available network folders/smb](https://www.reddit.com/r/androiddev/comments/prv3wf/noob_question_cant_find_a_tutorial_on_how_to_view/) ### *InfoWorld posts* From 53ef027cd07187e6ce95a535e83afaca17720e08 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 22 Sep 2021 00:39:12 +0000 Subject: [PATCH 0786/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 53 Performance From f5f75474e3561c0c2bc019f8cfcceaf2f1b0f007 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 22 Sep 2021 01:52:59 +0000 Subject: [PATCH 0787/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6c9f3fe5b3..52b3cdf13e 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What is this?](https://www.reddit.com/r/androiddev/comments/ps84lx/what_is_this/) -- [Release Kotlin 1.5.31 · JetBrains/kotlin](https://www.reddit.com/r/androiddev/comments/ps7h8x/release_kotlin_1531_jetbrainskotlin/) -- [Kotlin android development tutorial for web developers](https://www.reddit.com/r/androiddev/comments/ps5wvx/kotlin_android_development_tutorial_for_web/) -- [Exiting android emulator crashes my linux machine.](https://www.reddit.com/r/androiddev/comments/ps500g/exiting_android_emulator_crashes_my_linux_machine/) -- [Mobile Apps validation approach](https://www.reddit.com/r/androiddev/comments/ps4mpj/mobile_apps_validation_approach/) -- [Android 11 Send user directly to the Location Permission screen](https://www.reddit.com/r/androiddev/comments/ps1xek/android_11_send_user_directly_to_the_location/) -- [First time app: licensing your terms of use/servive/copyright?](https://www.reddit.com/r/androiddev/comments/pryhis/first_time_app_licensing_your_terms_of/) -- [Is app source code copyrighted?](https://www.reddit.com/r/androiddev/comments/prwglb/is_app_source_code_copyrighted/) -- [Build applications with python](https://www.reddit.com/r/androiddev/comments/prvj9c/build_applications_with_python/) -- [Noob question, can't find a tutorial on how to view all available network folders/smb](https://www.reddit.com/r/androiddev/comments/prv3wf/noob_question_cant_find_a_tutorial_on_how_to_view/) +- [App Developers, do you know what causes device bans? And how to bypass that?](https://www.reddit.com/r/androiddev/comments/psv4uf/app_developers_do_you_know_what_causes_device/) +- [Swipe to delete gesture animation in Jetpack Compose.](https://www.reddit.com/r/androiddev/comments/pssm9j/swipe_to_delete_gesture_animation_in_jetpack/) +- [Is Android 12's dynamic theming feature Pixel exclusive?](https://www.reddit.com/r/androiddev/comments/pss2kd/is_android_12s_dynamic_theming_feature_pixel/) +- [Can Google PAD (fast-follow) reduce apk size?](https://www.reddit.com/r/androiddev/comments/psr9du/can_google_pad_fastfollow_reduce_apk_size/) +- [How secure is Firebase AppCheck?](https://www.reddit.com/r/androiddev/comments/psox67/how_secure_is_firebase_appcheck/) +- [Youtube | Open Source | Building Windows 97 themed Notepad App Using Jetpack Compose 🚀](https://www.reddit.com/r/androiddev/comments/psoclr/youtube_open_source_building_windows_97_themed/) +- [Shimmer Effect for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pslrxv/shimmer_effect_for_jetpack_compose/) +- [Losing users.](https://www.reddit.com/r/androiddev/comments/psjpb4/losing_users/) +- [I am newly in Android programming , i know Java not very good but at least. I want some your advices which chapters i should cover . Maybe some tips for Junior , please i will glad to any answers!](https://www.reddit.com/r/androiddev/comments/psiquk/i_am_newly_in_android_programming_i_know_java_not/) +- [Weekly Questions Thread - September 21, 2021](https://www.reddit.com/r/androiddev/comments/psi8cs/weekly_questions_thread_september_21_2021/) ### *InfoWorld posts* From b9665d7651e3bb15268120ed3c17e312e1e5206d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 23 Sep 2021 00:41:03 +0000 Subject: [PATCH 0788/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..66688f9407 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 57 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..29092e4bf2 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 23 Performance From bfd945858d7ba116ec07d08c727f6a5e3fb585f0 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 23 Sep 2021 01:56:23 +0000 Subject: [PATCH 0789/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 52b3cdf13e..22220e5988 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [App Developers, do you know what causes device bans? And how to bypass that?](https://www.reddit.com/r/androiddev/comments/psv4uf/app_developers_do_you_know_what_causes_device/) -- [Swipe to delete gesture animation in Jetpack Compose.](https://www.reddit.com/r/androiddev/comments/pssm9j/swipe_to_delete_gesture_animation_in_jetpack/) -- [Is Android 12's dynamic theming feature Pixel exclusive?](https://www.reddit.com/r/androiddev/comments/pss2kd/is_android_12s_dynamic_theming_feature_pixel/) -- [Can Google PAD (fast-follow) reduce apk size?](https://www.reddit.com/r/androiddev/comments/psr9du/can_google_pad_fastfollow_reduce_apk_size/) -- [How secure is Firebase AppCheck?](https://www.reddit.com/r/androiddev/comments/psox67/how_secure_is_firebase_appcheck/) -- [Youtube | Open Source | Building Windows 97 themed Notepad App Using Jetpack Compose 🚀](https://www.reddit.com/r/androiddev/comments/psoclr/youtube_open_source_building_windows_97_themed/) -- [Shimmer Effect for Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pslrxv/shimmer_effect_for_jetpack_compose/) -- [Losing users.](https://www.reddit.com/r/androiddev/comments/psjpb4/losing_users/) -- [I am newly in Android programming , i know Java not very good but at least. I want some your advices which chapters i should cover . Maybe some tips for Junior , please i will glad to any answers!](https://www.reddit.com/r/androiddev/comments/psiquk/i_am_newly_in_android_programming_i_know_java_not/) -- [Weekly Questions Thread - September 21, 2021](https://www.reddit.com/r/androiddev/comments/psi8cs/weekly_questions_thread_september_21_2021/) +- [Do you really have Gradle configuration cache work on the Android project?](https://www.reddit.com/r/androiddev/comments/ptkso2/do_you_really_have_gradle_configuration_cache/) +- [Released 𝚜𝚚𝚞𝚊𝚛𝚎/𝚕𝚘𝚐𝚌𝚊𝚝 – tiny Kotlin API for cheap logging on top of Android's normal 𝙻𝚘𝚐 class](https://www.reddit.com/r/androiddev/comments/pth0o7/released_𝚜𝚚𝚞𝚊𝚛𝚎𝚕𝚘𝚐𝚌𝚊𝚝_tiny_kotlin_api_for_cheap/) +- [Smart Casting Does Not Work With Multiple Data Classes And Warns Me To Cast Then Saying No Need To Do This](https://www.reddit.com/r/androiddev/comments/ptgm6m/smart_casting_does_not_work_with_multiple_data/) +- [Puppy adoption app UI using Compose](https://www.reddit.com/r/androiddev/comments/ptf8bv/puppy_adoption_app_ui_using_compose/) +- [Recycler view as a alternative of scroll view?](https://www.reddit.com/r/androiddev/comments/ptcuwn/recycler_view_as_a_alternative_of_scroll_view/) +- [Increase Your Efficiency as an Android Dev - Keyboard Shortcuts, ADB aliases, Live Templates](https://www.reddit.com/r/androiddev/comments/ptc1y7/increase_your_efficiency_as_an_android_dev/) +- [Emulator with ADB and Google Play Services](https://www.reddit.com/r/androiddev/comments/ptbfqg/emulator_with_adb_and_google_play_services/) +- [App resources "images" , "logo" copyright](https://www.reddit.com/r/androiddev/comments/ptamoh/app_resources_images_logo_copyright/) +- [Do you(developers) know how much device ram your application consumes in best, normal and worst case scenarios?](https://www.reddit.com/r/androiddev/comments/ptaiud/do_youdevelopers_know_how_much_device_ram_your/) +- [Keep getting Javadoc generation failed error only on Bitrise](https://www.reddit.com/r/androiddev/comments/pta6ia/keep_getting_javadoc_generation_failed_error_only/) ### *InfoWorld posts* From 45f88463ea57038688b74fa905ea9eae875dd3ba Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 24 Sep 2021 00:38:32 +0000 Subject: [PATCH 0790/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 66688f9407..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 57 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 29092e4bf2..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 23 + + 25 Performance From 4fc1c00959b8b0977b27530dd71292e6ddb16035 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 24 Sep 2021 01:51:09 +0000 Subject: [PATCH 0791/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 22220e5988..698e83bcad 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Do you really have Gradle configuration cache work on the Android project?](https://www.reddit.com/r/androiddev/comments/ptkso2/do_you_really_have_gradle_configuration_cache/) -- [Released 𝚜𝚚𝚞𝚊𝚛𝚎/𝚕𝚘𝚐𝚌𝚊𝚝 – tiny Kotlin API for cheap logging on top of Android's normal 𝙻𝚘𝚐 class](https://www.reddit.com/r/androiddev/comments/pth0o7/released_𝚜𝚚𝚞𝚊𝚛𝚎𝚕𝚘𝚐𝚌𝚊𝚝_tiny_kotlin_api_for_cheap/) -- [Smart Casting Does Not Work With Multiple Data Classes And Warns Me To Cast Then Saying No Need To Do This](https://www.reddit.com/r/androiddev/comments/ptgm6m/smart_casting_does_not_work_with_multiple_data/) -- [Puppy adoption app UI using Compose](https://www.reddit.com/r/androiddev/comments/ptf8bv/puppy_adoption_app_ui_using_compose/) -- [Recycler view as a alternative of scroll view?](https://www.reddit.com/r/androiddev/comments/ptcuwn/recycler_view_as_a_alternative_of_scroll_view/) -- [Increase Your Efficiency as an Android Dev - Keyboard Shortcuts, ADB aliases, Live Templates](https://www.reddit.com/r/androiddev/comments/ptc1y7/increase_your_efficiency_as_an_android_dev/) -- [Emulator with ADB and Google Play Services](https://www.reddit.com/r/androiddev/comments/ptbfqg/emulator_with_adb_and_google_play_services/) -- [App resources "images" , "logo" copyright](https://www.reddit.com/r/androiddev/comments/ptamoh/app_resources_images_logo_copyright/) -- [Do you(developers) know how much device ram your application consumes in best, normal and worst case scenarios?](https://www.reddit.com/r/androiddev/comments/ptaiud/do_youdevelopers_know_how_much_device_ram_your/) -- [Keep getting Javadoc generation failed error only on Bitrise](https://www.reddit.com/r/androiddev/comments/pta6ia/keep_getting_javadoc_generation_failed_error_only/) +- [How else do you test your apps, apart from Unit Testing?](https://www.reddit.com/r/androiddev/comments/pu5c6k/how_else_do_you_test_your_apps_apart_from_unit/) +- [[App architecture] Building app with multiple features/games like MPL.](https://www.reddit.com/r/androiddev/comments/pu37ju/app_architecture_building_app_with_multiple/) +- [How much will this app take to develop/cost?](https://www.reddit.com/r/androiddev/comments/pu0dii/how_much_will_this_app_take_to_developcost/) +- [[Room Database] How to get a default object if query can't find any such row?](https://www.reddit.com/r/androiddev/comments/ptzyov/room_database_how_to_get_a_default_object_if/) +- [Android App - Hot spot, listening to pings](https://www.reddit.com/r/androiddev/comments/ptzg8w/android_app_hot_spot_listening_to_pings/) +- [Animating gridview item](https://www.reddit.com/r/androiddev/comments/ptyzdd/animating_gridview_item/) +- [3D cube launcher](https://www.reddit.com/r/androiddev/comments/ptvj95/3d_cube_launcher/) +- [Android Gradle Plugin 7 LibraryBuildType no longer has isDebuggable property](https://www.reddit.com/r/androiddev/comments/ptvemu/android_gradle_plugin_7_librarybuildtype_no/) +- [App dev time/cost calculator](https://www.reddit.com/r/androiddev/comments/ptuu1f/app_dev_timecost_calculator/) +- [Question : Do android OS clears data from Android/data/com.package.name?](https://www.reddit.com/r/androiddev/comments/ptut4s/question_do_android_os_clears_data_from/) ### *InfoWorld posts* From 8d10c1278da26ad8850ab089f1af27e833a7803e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 25 Sep 2021 00:37:56 +0000 Subject: [PATCH 0792/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 26 Performance From 28f247a9dfecdad5e2fe4dd4917a82755657b51f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 25 Sep 2021 01:49:39 +0000 Subject: [PATCH 0793/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 698e83bcad..e18e1b5b4f 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How else do you test your apps, apart from Unit Testing?](https://www.reddit.com/r/androiddev/comments/pu5c6k/how_else_do_you_test_your_apps_apart_from_unit/) -- [[App architecture] Building app with multiple features/games like MPL.](https://www.reddit.com/r/androiddev/comments/pu37ju/app_architecture_building_app_with_multiple/) -- [How much will this app take to develop/cost?](https://www.reddit.com/r/androiddev/comments/pu0dii/how_much_will_this_app_take_to_developcost/) -- [[Room Database] How to get a default object if query can't find any such row?](https://www.reddit.com/r/androiddev/comments/ptzyov/room_database_how_to_get_a_default_object_if/) -- [Android App - Hot spot, listening to pings](https://www.reddit.com/r/androiddev/comments/ptzg8w/android_app_hot_spot_listening_to_pings/) -- [Animating gridview item](https://www.reddit.com/r/androiddev/comments/ptyzdd/animating_gridview_item/) -- [3D cube launcher](https://www.reddit.com/r/androiddev/comments/ptvj95/3d_cube_launcher/) -- [Android Gradle Plugin 7 LibraryBuildType no longer has isDebuggable property](https://www.reddit.com/r/androiddev/comments/ptvemu/android_gradle_plugin_7_librarybuildtype_no/) -- [App dev time/cost calculator](https://www.reddit.com/r/androiddev/comments/ptuu1f/app_dev_timecost_calculator/) -- [Question : Do android OS clears data from Android/data/com.package.name?](https://www.reddit.com/r/androiddev/comments/ptut4s/question_do_android_os_clears_data_from/) +- [Looking for Android Tutor](https://www.reddit.com/r/androiddev/comments/puwrqt/looking_for_android_tutor/) +- [How can I get tab layout like this with the rounded indicator? (Example from GDrive)](https://www.reddit.com/r/androiddev/comments/puv972/how_can_i_get_tab_layout_like_this_with_the/) +- [Launch Response Time](https://www.reddit.com/r/androiddev/comments/puuch8/launch_response_time/) +- [Logcat/ADB question: can I determine a reason why my phone's display is constantly waking up?](https://www.reddit.com/r/androiddev/comments/put2sd/logcatadb_question_can_i_determine_a_reason_why/) +- [Starting to realize, how much damaging is Google dominance over Android platform to users, developers and even phone manufacturers.](https://www.reddit.com/r/androiddev/comments/pusnte/starting_to_realize_how_much_damaging_is_google/) +- [Which backend framework?](https://www.reddit.com/r/androiddev/comments/purxae/which_backend_framework/) +- [Messenger inside Coroutine becomes null](https://www.reddit.com/r/androiddev/comments/puoeyt/messenger_inside_coroutine_becomes_null/) +- [What are some good resources to get in depth knowledge of Gradle as an Android developer?](https://www.reddit.com/r/androiddev/comments/pulc1r/what_are_some_good_resources_to_get_in_depth/) +- [How to Prepare Your Android App for a Pentest: The Bits and Pieces](https://www.reddit.com/r/androiddev/comments/puksg2/how_to_prepare_your_android_app_for_a_pentest_the/) +- [Templates without Navigation component in Android Studio 4?](https://www.reddit.com/r/androiddev/comments/pukn4m/templates_without_navigation_component_in_android/) ### *InfoWorld posts* From c0edb82733c27d0bb72672763b6586ef60b548b6 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 26 Sep 2021 00:41:32 +0000 Subject: [PATCH 0794/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..038f2c8dbe 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 29 Performance From a14f70dcdd1d44a3e4a4adfa4b2cce44cddeb20a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 26 Sep 2021 01:51:42 +0000 Subject: [PATCH 0795/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e18e1b5b4f..9b166fe590 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Looking for Android Tutor](https://www.reddit.com/r/androiddev/comments/puwrqt/looking_for_android_tutor/) -- [How can I get tab layout like this with the rounded indicator? (Example from GDrive)](https://www.reddit.com/r/androiddev/comments/puv972/how_can_i_get_tab_layout_like_this_with_the/) -- [Launch Response Time](https://www.reddit.com/r/androiddev/comments/puuch8/launch_response_time/) -- [Logcat/ADB question: can I determine a reason why my phone's display is constantly waking up?](https://www.reddit.com/r/androiddev/comments/put2sd/logcatadb_question_can_i_determine_a_reason_why/) -- [Starting to realize, how much damaging is Google dominance over Android platform to users, developers and even phone manufacturers.](https://www.reddit.com/r/androiddev/comments/pusnte/starting_to_realize_how_much_damaging_is_google/) -- [Which backend framework?](https://www.reddit.com/r/androiddev/comments/purxae/which_backend_framework/) -- [Messenger inside Coroutine becomes null](https://www.reddit.com/r/androiddev/comments/puoeyt/messenger_inside_coroutine_becomes_null/) -- [What are some good resources to get in depth knowledge of Gradle as an Android developer?](https://www.reddit.com/r/androiddev/comments/pulc1r/what_are_some_good_resources_to_get_in_depth/) -- [How to Prepare Your Android App for a Pentest: The Bits and Pieces](https://www.reddit.com/r/androiddev/comments/puksg2/how_to_prepare_your_android_app_for_a_pentest_the/) -- [Templates without Navigation component in Android Studio 4?](https://www.reddit.com/r/androiddev/comments/pukn4m/templates_without_navigation_component_in_android/) +- [Question about Admob Campaign](https://www.reddit.com/r/androiddev/comments/pvk3jn/question_about_admob_campaign/) +- [Convert Android’s Gradle files from Groovy to Kotlin Step by Step](https://www.reddit.com/r/androiddev/comments/pvidly/convert_androids_gradle_files_from_groovy_to/) +- [Anyone uses the Huawei Ads kit to monetize?](https://www.reddit.com/r/androiddev/comments/pvht5r/anyone_uses_the_huawei_ads_kit_to_monetize/) +- [Admob what % do we make from ads?](https://www.reddit.com/r/androiddev/comments/pvh3h2/admob_what_do_we_make_from_ads/) +- [Hey Android Developers, Do you know that you can remove extra log data like time stamps or package name from logcat to focus more on the logs itself? Learn how to do it in this video.](https://www.reddit.com/r/androiddev/comments/pveg68/hey_android_developers_do_you_know_that_you_can/) +- [Do you and how would you handle device being out of memory?](https://www.reddit.com/r/androiddev/comments/pvebe1/do_you_and_how_would_you_handle_device_being_out/) +- [GitHub - OutSorcerer/pocket-automl-android-tutorial: Pocket AutoML: Tutorial for Creating an Android App for Image Classification with Deep Learning](https://www.reddit.com/r/androiddev/comments/pvd19u/github_outsorcererpocketautomlandroidtutorial/) +- [Hi everyone!Is selling source code of android apps that i made profitable or not?Has anyone ever earned decent amount selling source code?](https://www.reddit.com/r/androiddev/comments/pvcdfm/hi_everyoneis_selling_source_code_of_android_apps/) +- [How do i make Click events with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pvc9s9/how_do_i_make_click_events_with_jetpack_compose/) +- [What's the best way to duplicate a block of code into multiple activities/fragments?](https://www.reddit.com/r/androiddev/comments/pv9etw/whats_the_best_way_to_duplicate_a_block_of_code/) ### *InfoWorld posts* From 95953b1f01eb3835f2bec984bac6802ac7dcaf99 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 26 Sep 2021 23:57:48 +0000 Subject: [PATCH 0796/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 47263 -> 46567 bytes 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index ffe646769f..fddb9851ed 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -91,4 +91,11 @@ _date,total_clones,unique_clones 2021-09-16,348,26 2021-09-17,379,33 2021-09-18,290,25 -2021-09-19,374,28 +2021-09-19,382,32 +2021-09-20,413,34 +2021-09-21,356,29 +2021-09-22,325,22 +2021-09-23,400,30 +2021-09-24,397,31 +2021-09-25,259,23 +2021-09-26,287,22 diff --git a/traffic/plots.png b/traffic/plots.png index 9e717ab26a4dead1670c201225e3aec9b8b0a2f0..ef9f3107afe7f4faf74e640e5e366dfb3e1f426d 100644 GIT binary patch literal 46567 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 XegVHPry!M%z|ZMZXS6Cb?85&86BnJ@ literal 47263 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ÐoC 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 From e094d6d56eac4fa82d0dabfc1de3c16e76f6d32f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 27 Sep 2021 00:39:07 +0000 Subject: [PATCH 0797/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..77dd795017 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 50 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..16a1aed88b 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 33 Performance From 9e2bae45d87d3f419a14206dff1ae48fae1a38c8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 27 Sep 2021 01:51:18 +0000 Subject: [PATCH 0798/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9b166fe590..827050ea41 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Question about Admob Campaign](https://www.reddit.com/r/androiddev/comments/pvk3jn/question_about_admob_campaign/) -- [Convert Android’s Gradle files from Groovy to Kotlin Step by Step](https://www.reddit.com/r/androiddev/comments/pvidly/convert_androids_gradle_files_from_groovy_to/) -- [Anyone uses the Huawei Ads kit to monetize?](https://www.reddit.com/r/androiddev/comments/pvht5r/anyone_uses_the_huawei_ads_kit_to_monetize/) -- [Admob what % do we make from ads?](https://www.reddit.com/r/androiddev/comments/pvh3h2/admob_what_do_we_make_from_ads/) -- [Hey Android Developers, Do you know that you can remove extra log data like time stamps or package name from logcat to focus more on the logs itself? Learn how to do it in this video.](https://www.reddit.com/r/androiddev/comments/pveg68/hey_android_developers_do_you_know_that_you_can/) -- [Do you and how would you handle device being out of memory?](https://www.reddit.com/r/androiddev/comments/pvebe1/do_you_and_how_would_you_handle_device_being_out/) -- [GitHub - OutSorcerer/pocket-automl-android-tutorial: Pocket AutoML: Tutorial for Creating an Android App for Image Classification with Deep Learning](https://www.reddit.com/r/androiddev/comments/pvd19u/github_outsorcererpocketautomlandroidtutorial/) -- [Hi everyone!Is selling source code of android apps that i made profitable or not?Has anyone ever earned decent amount selling source code?](https://www.reddit.com/r/androiddev/comments/pvcdfm/hi_everyoneis_selling_source_code_of_android_apps/) -- [How do i make Click events with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/pvc9s9/how_do_i_make_click_events_with_jetpack_compose/) -- [What's the best way to duplicate a block of code into multiple activities/fragments?](https://www.reddit.com/r/androiddev/comments/pv9etw/whats_the_best_way_to_duplicate_a_block_of_code/) +- [Mockoon port for Android](https://www.reddit.com/r/androiddev/comments/pw5htq/mockoon_port_for_android/) +- [Do you guys use EULA to protect your code from being stolen?](https://www.reddit.com/r/androiddev/comments/pw2jrt/do_you_guys_use_eula_to_protect_your_code_from/) +- [Is it okay to use an autogenerated privacy policy/Ts&Cs for my app?](https://www.reddit.com/r/androiddev/comments/pw28he/is_it_okay_to_use_an_autogenerated_privacy/) +- [Implementing things from other games](https://www.reddit.com/r/androiddev/comments/pw20n2/implementing_things_from_other_games/) +- [Material Date Picker with SharedElementTransition? Any way to do?](https://www.reddit.com/r/androiddev/comments/pvvmv5/material_date_picker_with_sharedelementtransition/) +- [Synchronize Android's RecyclerView with TabLayout](https://www.reddit.com/r/androiddev/comments/pvv63p/synchronize_androids_recyclerview_with_tablayout/) +- [Google will move to develop innovations for Android in the main Linux kernel](https://www.reddit.com/r/androiddev/comments/pvuvkf/google_will_move_to_develop_innovations_for/) +- [Does the play store distribute to the same set of users after halting staged rollout?](https://www.reddit.com/r/androiddev/comments/pvu86y/does_the_play_store_distribute_to_the_same_set_of/) +- [What is your current experience as native Android app developer?](https://www.reddit.com/r/androiddev/comments/pvtrbe/what_is_your_current_experience_as_native_android/) +- [GOOGLE PLAY SUBSCRIPTION : Can users multi subscribe the same plan?](https://www.reddit.com/r/androiddev/comments/pvr21d/google_play_subscription_can_users_multi/) ### *InfoWorld posts* From 5fde4eaafd51dabe5b814d60c663b8d97b537395 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 28 Sep 2021 00:39:47 +0000 Subject: [PATCH 0799/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresultmobile.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 16a1aed88b..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 33 + + 27 Performance From b8f9be60fa63307d8a0fb1546cf72a029f849d8c Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 28 Sep 2021 01:52:13 +0000 Subject: [PATCH 0800/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 827050ea41..50765a1b17 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Mockoon port for Android](https://www.reddit.com/r/androiddev/comments/pw5htq/mockoon_port_for_android/) -- [Do you guys use EULA to protect your code from being stolen?](https://www.reddit.com/r/androiddev/comments/pw2jrt/do_you_guys_use_eula_to_protect_your_code_from/) -- [Is it okay to use an autogenerated privacy policy/Ts&Cs for my app?](https://www.reddit.com/r/androiddev/comments/pw28he/is_it_okay_to_use_an_autogenerated_privacy/) -- [Implementing things from other games](https://www.reddit.com/r/androiddev/comments/pw20n2/implementing_things_from_other_games/) -- [Material Date Picker with SharedElementTransition? Any way to do?](https://www.reddit.com/r/androiddev/comments/pvvmv5/material_date_picker_with_sharedelementtransition/) -- [Synchronize Android's RecyclerView with TabLayout](https://www.reddit.com/r/androiddev/comments/pvv63p/synchronize_androids_recyclerview_with_tablayout/) -- [Google will move to develop innovations for Android in the main Linux kernel](https://www.reddit.com/r/androiddev/comments/pvuvkf/google_will_move_to_develop_innovations_for/) -- [Does the play store distribute to the same set of users after halting staged rollout?](https://www.reddit.com/r/androiddev/comments/pvu86y/does_the_play_store_distribute_to_the_same_set_of/) -- [What is your current experience as native Android app developer?](https://www.reddit.com/r/androiddev/comments/pvtrbe/what_is_your_current_experience_as_native_android/) -- [GOOGLE PLAY SUBSCRIPTION : Can users multi subscribe the same plan?](https://www.reddit.com/r/androiddev/comments/pvr21d/google_play_subscription_can_users_multi/) +- [Is there a type of notification/popup that can be created using Native Apps that isn't replicable via websites?](https://www.reddit.com/r/androiddev/comments/pwvi2r/is_there_a_type_of_notificationpopup_that_can_be/) +- [Why torrent apps for android?](https://www.reddit.com/r/androiddev/comments/pwsfn2/why_torrent_apps_for_android/) +- [Anyone knows what those 4 X 2 , 1 X 2, etc information is all about in widgets screen ?](https://www.reddit.com/r/androiddev/comments/pwrtw9/anyone_knows_what_those_4_x_2_1_x_2_etc/) +- [Is it possible to develop an open-source app while still have subscription based business model within in it?](https://www.reddit.com/r/androiddev/comments/pwr04q/is_it_possible_to_develop_an_opensource_app_while/) +- [Windows for Android dev](https://www.reddit.com/r/androiddev/comments/pwquvf/windows_for_android_dev/) +- [Hey Android Developers, Do you know that you can validate and debug your Android app Analytics implementation using Firebase Debug View? Learn how to do it in this video:](https://www.reddit.com/r/androiddev/comments/pwqgdl/hey_android_developers_do_you_know_that_you_can/) +- [Is VOIP protocol implementation more or less uniform for all apps?](https://www.reddit.com/r/androiddev/comments/pwnazh/is_voip_protocol_implementation_more_or_less/) +- [Hello friends, i have an application that seems to only install via Android Studio when i try to use the Apk i keep getting a App not Installed error](https://www.reddit.com/r/androiddev/comments/pwmug9/hello_friends_i_have_an_application_that_seems_to/) +- [Is there a way to embbed a complex flutter app thats uses flutter_storyBook, in a native Kotlin App as a module?](https://www.reddit.com/r/androiddev/comments/pwmf3u/is_there_a_way_to_embbed_a_complex_flutter_app/) +- [The Kotlin serialization library v1.3.0 is now available allowing serializing and deserializing Java IO stream! You can now read and write JSON directly to network streams or files. 🎉](https://www.reddit.com/r/androiddev/comments/pwkq2v/the_kotlin_serialization_library_v130_is_now/) ### *InfoWorld posts* From 9081646a68774bc0abfbf52db6301c999a1e555e Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 29 Sep 2021 00:38:40 +0000 Subject: [PATCH 0801/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 77dd795017..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 50 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 27 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 7c36c8d0aa0c24fa49f45be1bdf57e60066d350a Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 29 Sep 2021 01:45:03 +0000 Subject: [PATCH 0802/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 50765a1b17..0bff30255b 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is there a type of notification/popup that can be created using Native Apps that isn't replicable via websites?](https://www.reddit.com/r/androiddev/comments/pwvi2r/is_there_a_type_of_notificationpopup_that_can_be/) -- [Why torrent apps for android?](https://www.reddit.com/r/androiddev/comments/pwsfn2/why_torrent_apps_for_android/) -- [Anyone knows what those 4 X 2 , 1 X 2, etc information is all about in widgets screen ?](https://www.reddit.com/r/androiddev/comments/pwrtw9/anyone_knows_what_those_4_x_2_1_x_2_etc/) -- [Is it possible to develop an open-source app while still have subscription based business model within in it?](https://www.reddit.com/r/androiddev/comments/pwr04q/is_it_possible_to_develop_an_opensource_app_while/) -- [Windows for Android dev](https://www.reddit.com/r/androiddev/comments/pwquvf/windows_for_android_dev/) -- [Hey Android Developers, Do you know that you can validate and debug your Android app Analytics implementation using Firebase Debug View? Learn how to do it in this video:](https://www.reddit.com/r/androiddev/comments/pwqgdl/hey_android_developers_do_you_know_that_you_can/) -- [Is VOIP protocol implementation more or less uniform for all apps?](https://www.reddit.com/r/androiddev/comments/pwnazh/is_voip_protocol_implementation_more_or_less/) -- [Hello friends, i have an application that seems to only install via Android Studio when i try to use the Apk i keep getting a App not Installed error](https://www.reddit.com/r/androiddev/comments/pwmug9/hello_friends_i_have_an_application_that_seems_to/) -- [Is there a way to embbed a complex flutter app thats uses flutter_storyBook, in a native Kotlin App as a module?](https://www.reddit.com/r/androiddev/comments/pwmf3u/is_there_a_way_to_embbed_a_complex_flutter_app/) -- [The Kotlin serialization library v1.3.0 is now available allowing serializing and deserializing Java IO stream! You can now read and write JSON directly to network streams or files. 🎉](https://www.reddit.com/r/androiddev/comments/pwkq2v/the_kotlin_serialization_library_v130_is_now/) +- [How does android app system works?](https://www.reddit.com/r/androiddev/comments/pxkm9o/how_does_android_app_system_works/) +- [Why is "DAU/MAU vs. peers" not showing data in play console?](https://www.reddit.com/r/androiddev/comments/pxekfv/why_is_daumau_vs_peers_not_showing_data_in_play/) +- [The lack of documention about Material You colors is disturbing](https://www.reddit.com/r/androiddev/comments/pxdmch/the_lack_of_documention_about_material_you_colors/) +- [Selling Android app via escrow.com](https://www.reddit.com/r/androiddev/comments/pxd2hh/selling_android_app_via_escrowcom/) +- [Caribou - a tool to help your team manage software migrations (like migrating to Jetpack Compose) in a collaborative and data-driven way.](https://www.reddit.com/r/androiddev/comments/pxbjqo/caribou_a_tool_to_help_your_team_manage_software/) +- [How to obtain resource id from UIautomator event](https://www.reddit.com/r/androiddev/comments/pxb7bs/how_to_obtain_resource_id_from_uiautomator_event/) +- [Google Play Content Rating](https://www.reddit.com/r/androiddev/comments/px6nld/google_play_content_rating/) +- [What are some of the things to keep in mind before changing developers for my app?](https://www.reddit.com/r/androiddev/comments/px6niw/what_are_some_of_the_things_to_keep_in_mind/) +- [Weekly Questions Thread - September 28, 2021](https://www.reddit.com/r/androiddev/comments/px5vgg/weekly_questions_thread_september_28_2021/) +- [java.lang.RuntimeException: Canvas: trying to draw too large(122680608bytes) bitmap.](https://www.reddit.com/r/androiddev/comments/px384u/javalangruntimeexception_canvas_trying_to_draw/) ### *InfoWorld posts* From 0ffc0f3a4a4b4e74324464c9f5ff13a1fad34aa3 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 30 Sep 2021 00:44:53 +0000 Subject: [PATCH 0803/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 255 insertions(+), 255 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 54 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..a6edb77e97 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 31 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From 4e856775718a914dd20d4ea60d3bf968f7fff75d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 30 Sep 2021 01:57:31 +0000 Subject: [PATCH 0804/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0bff30255b..935e1e326c 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How does android app system works?](https://www.reddit.com/r/androiddev/comments/pxkm9o/how_does_android_app_system_works/) -- [Why is "DAU/MAU vs. peers" not showing data in play console?](https://www.reddit.com/r/androiddev/comments/pxekfv/why_is_daumau_vs_peers_not_showing_data_in_play/) -- [The lack of documention about Material You colors is disturbing](https://www.reddit.com/r/androiddev/comments/pxdmch/the_lack_of_documention_about_material_you_colors/) -- [Selling Android app via escrow.com](https://www.reddit.com/r/androiddev/comments/pxd2hh/selling_android_app_via_escrowcom/) -- [Caribou - a tool to help your team manage software migrations (like migrating to Jetpack Compose) in a collaborative and data-driven way.](https://www.reddit.com/r/androiddev/comments/pxbjqo/caribou_a_tool_to_help_your_team_manage_software/) -- [How to obtain resource id from UIautomator event](https://www.reddit.com/r/androiddev/comments/pxb7bs/how_to_obtain_resource_id_from_uiautomator_event/) -- [Google Play Content Rating](https://www.reddit.com/r/androiddev/comments/px6nld/google_play_content_rating/) -- [What are some of the things to keep in mind before changing developers for my app?](https://www.reddit.com/r/androiddev/comments/px6niw/what_are_some_of_the_things_to_keep_in_mind/) -- [Weekly Questions Thread - September 28, 2021](https://www.reddit.com/r/androiddev/comments/px5vgg/weekly_questions_thread_september_28_2021/) -- [java.lang.RuntimeException: Canvas: trying to draw too large(122680608bytes) bitmap.](https://www.reddit.com/r/androiddev/comments/px384u/javalangruntimeexception_canvas_trying_to_draw/) +- [For those that became an Android dev while while working, how long did it take?](https://www.reddit.com/r/androiddev/comments/py9oab/for_those_that_became_an_android_dev_while_while/) +- [Is SDK development a good career move?](https://www.reddit.com/r/androiddev/comments/py846k/is_sdk_development_a_good_career_move/) +- [Has anyone made hardlinks like on Windows tablet? My company requires a legacy app -- Kiwix -- but it doesn't support external storage on my tablet, so I got to thinking: Linux/Windows/OSX all solve this the same way for all their software, maybe Android can do it in a generalizable way too?](https://www.reddit.com/r/androiddev/comments/py72qd/has_anyone_made_hardlinks_like_on_windows_tablet/) +- [is it still a good time to learn Android development?](https://www.reddit.com/r/androiddev/comments/py66tn/is_it_still_a_good_time_to_learn_android/) +- [What is the realistic income increase using Ad Mediation?](https://www.reddit.com/r/androiddev/comments/py4mk8/what_is_the_realistic_income_increase_using_ad/) +- [Recommended approach to determining when to run a DataStore migration?](https://www.reddit.com/r/androiddev/comments/py2cnn/recommended_approach_to_determining_when_to_run_a/) +- [Many users complain they can't download our app on Gplay](https://www.reddit.com/r/androiddev/comments/py11n0/many_users_complain_they_cant_download_our_app_on/) +- [Do you know nice project with dagger2?](https://www.reddit.com/r/androiddev/comments/py08ka/do_you_know_nice_project_with_dagger2/) +- [Android United Slack Group](https://www.reddit.com/r/androiddev/comments/pxzjwv/android_united_slack_group/) +- [Found my .apk file on a Chinese website](https://www.reddit.com/r/androiddev/comments/pxxrf4/found_my_apk_file_on_a_chinese_website/) ### *InfoWorld posts* From f0c7c92b287f89e3e16ece5b8ac212d2dae37fc8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 30 Sep 2021 01:57:33 +0000 Subject: [PATCH 0805/2080] Updated with the latest blog posts --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 935e1e326c..cee1aa25c2 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,7 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *InfoWorld posts* +- [Microsoft weighs in on Surface Duo apps](https://www.infoworld.com/article/3634419/microsoft-weighs-in-on-surface-duo-apps.html#tk.rss_android) - [Google Flutter 2.5 UI kit is now stable](https://www.infoworld.com/article/3632887/google-flutter-25-ui-kit-is-now-stable.html#tk.rss_android) - [Jetpack Compose for Android turns GA](https://www.infoworld.com/article/3627298/jetpack-compose-for-android-turns-ga.html#tk.rss_android) - [Microsoft sunsets Xamarin toolkit](https://www.infoworld.com/article/3626453/microsoft-sunsets-xamarin-toolkit.html#tk.rss_android) @@ -293,7 +294,6 @@ and ***Android Patterns*** ? Consider buying me a coffee :) - [Google wins Java dispute, Oracle remains defiant](https://www.infoworld.com/article/3614083/google-wins-java-dispute-oracle-remains-defiant.html#tk.rss_android) - [PinePhone: A Linux smartphone a developer could love](https://www.infoworld.com/article/3610602/pinephone-a-linux-smartphone-a-developer-could-love.html#tk.rss_android) - [Google Jetpack Compose Android UI toolkit now in beta](https://www.infoworld.com/article/3609830/google-jetpack-compose-android-ui-toolkit-now-in-beta.html#tk.rss_android) -- [Android 12 developer preview bolsters privacy, user experience](https://www.infoworld.com/article/3608937/android-12-developer-preview-bolsters-privacy-user-experience.html#tk.rss_android) ### *RedHat posts* From dd4627795cbfbe70bf4280a55b282333ae538140 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 1 Oct 2021 00:42:52 +0000 Subject: [PATCH 0806/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++++++++++++++++++++++++++--- reports/pagespeedresultmobile.svg | 4 +- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 6cd9750525..1c3b87daf2 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 55 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + NA + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a6edb77e97..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 31 + + 27 Performance From 54276cc283676ad74dadaca332636498181a5a29 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 1 Oct 2021 01:57:30 +0000 Subject: [PATCH 0807/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cee1aa25c2..bd60721a13 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [For those that became an Android dev while while working, how long did it take?](https://www.reddit.com/r/androiddev/comments/py9oab/for_those_that_became_an_android_dev_while_while/) -- [Is SDK development a good career move?](https://www.reddit.com/r/androiddev/comments/py846k/is_sdk_development_a_good_career_move/) -- [Has anyone made hardlinks like on Windows tablet? My company requires a legacy app -- Kiwix -- but it doesn't support external storage on my tablet, so I got to thinking: Linux/Windows/OSX all solve this the same way for all their software, maybe Android can do it in a generalizable way too?](https://www.reddit.com/r/androiddev/comments/py72qd/has_anyone_made_hardlinks_like_on_windows_tablet/) -- [is it still a good time to learn Android development?](https://www.reddit.com/r/androiddev/comments/py66tn/is_it_still_a_good_time_to_learn_android/) -- [What is the realistic income increase using Ad Mediation?](https://www.reddit.com/r/androiddev/comments/py4mk8/what_is_the_realistic_income_increase_using_ad/) -- [Recommended approach to determining when to run a DataStore migration?](https://www.reddit.com/r/androiddev/comments/py2cnn/recommended_approach_to_determining_when_to_run_a/) -- [Many users complain they can't download our app on Gplay](https://www.reddit.com/r/androiddev/comments/py11n0/many_users_complain_they_cant_download_our_app_on/) -- [Do you know nice project with dagger2?](https://www.reddit.com/r/androiddev/comments/py08ka/do_you_know_nice_project_with_dagger2/) -- [Android United Slack Group](https://www.reddit.com/r/androiddev/comments/pxzjwv/android_united_slack_group/) -- [Found my .apk file on a Chinese website](https://www.reddit.com/r/androiddev/comments/pxxrf4/found_my_apk_file_on_a_chinese_website/) +- [I'm trying to move from only-used-by-me projects to releasable projects, but I could use some advice on how to set up API key protection.](https://www.reddit.com/r/androiddev/comments/pywdog/im_trying_to_move_from_onlyusedbyme_projects_to/) +- [If your app require a device unique ID for tracking data or white listing device, watch this video to get some idea how it should be done!](https://www.reddit.com/r/androiddev/comments/pyubfb/if_your_app_require_a_device_unique_id_for/) +- [Firebase Remote Config: in-app default parameter values](https://www.reddit.com/r/androiddev/comments/pytf0c/firebase_remote_config_inapp_default_parameter/) +- [MediaCodec+Camera2](https://www.reddit.com/r/androiddev/comments/pys9tj/mediacodeccamera2/) +- [Using Jetpack Compose in production](https://www.reddit.com/r/androiddev/comments/pys6mo/using_jetpack_compose_in_production/) +- [Upgraded to Arctic Fox 2020.3.1 and my "src/main/jni" is not showing in the project anymore.](https://www.reddit.com/r/androiddev/comments/pyq9ni/upgraded_to_arctic_fox_202031_and_my_srcmainjni/) +- [Simple Button Design](https://www.reddit.com/r/androiddev/comments/pyq66z/simple_button_design/) +- [how to bypass an apps ability to know is being run on an emulator rather then a real device?](https://www.reddit.com/r/androiddev/comments/pyp9rb/how_to_bypass_an_apps_ability_to_know_is_being/) +- [Published a blog post on Firebase chat app](https://www.reddit.com/r/androiddev/comments/pyo6yd/published_a_blog_post_on_firebase_chat_app/) +- [Android Studio Bumblebee Canary 13 available](https://www.reddit.com/r/androiddev/comments/pynz1v/android_studio_bumblebee_canary_13_available/) ### *InfoWorld posts* From 1e60ab521bbec1523d23b69f8d89adab3cea03b3 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 2 Oct 2021 00:39:08 +0000 Subject: [PATCH 0808/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 10 +++++----- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 1c3b87daf2..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 56 Performance @@ -137,10 +137,10 @@ 80 Best Practices - + - - NA + + 83 SEO diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..ae482f0f42 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 28 Performance From 0f35a4ee2b42fb9d47a0dcc2d0f8838d8ec25631 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 2 Oct 2021 01:49:29 +0000 Subject: [PATCH 0809/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index bd60721a13..d5a52333c8 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I'm trying to move from only-used-by-me projects to releasable projects, but I could use some advice on how to set up API key protection.](https://www.reddit.com/r/androiddev/comments/pywdog/im_trying_to_move_from_onlyusedbyme_projects_to/) -- [If your app require a device unique ID for tracking data or white listing device, watch this video to get some idea how it should be done!](https://www.reddit.com/r/androiddev/comments/pyubfb/if_your_app_require_a_device_unique_id_for/) -- [Firebase Remote Config: in-app default parameter values](https://www.reddit.com/r/androiddev/comments/pytf0c/firebase_remote_config_inapp_default_parameter/) -- [MediaCodec+Camera2](https://www.reddit.com/r/androiddev/comments/pys9tj/mediacodeccamera2/) -- [Using Jetpack Compose in production](https://www.reddit.com/r/androiddev/comments/pys6mo/using_jetpack_compose_in_production/) -- [Upgraded to Arctic Fox 2020.3.1 and my "src/main/jni" is not showing in the project anymore.](https://www.reddit.com/r/androiddev/comments/pyq9ni/upgraded_to_arctic_fox_202031_and_my_srcmainjni/) -- [Simple Button Design](https://www.reddit.com/r/androiddev/comments/pyq66z/simple_button_design/) -- [how to bypass an apps ability to know is being run on an emulator rather then a real device?](https://www.reddit.com/r/androiddev/comments/pyp9rb/how_to_bypass_an_apps_ability_to_know_is_being/) -- [Published a blog post on Firebase chat app](https://www.reddit.com/r/androiddev/comments/pyo6yd/published_a_blog_post_on_firebase_chat_app/) -- [Android Studio Bumblebee Canary 13 available](https://www.reddit.com/r/androiddev/comments/pynz1v/android_studio_bumblebee_canary_13_available/) +- [How does keyboard development compare to app development?](https://www.reddit.com/r/androiddev/comments/pzkjno/how_does_keyboard_development_compare_to_app/) +- [Easiest way to make a simple soundboard app with no experience?](https://www.reddit.com/r/androiddev/comments/pzk3z2/easiest_way_to_make_a_simple_soundboard_app_with/) +- [How to find out which Android devices are my user's using?](https://www.reddit.com/r/androiddev/comments/pzim1j/how_to_find_out_which_android_devices_are_my/) +- [Publishing apps for others](https://www.reddit.com/r/androiddev/comments/pzga8l/publishing_apps_for_others/) +- [Can i open a play store developer account in another country to unlock in game purchases ?](https://www.reddit.com/r/androiddev/comments/pzfw7c/can_i_open_a_play_store_developer_account_in/) +- [How to mitigate reverse engineering attacks](https://www.reddit.com/r/androiddev/comments/pzez3x/how_to_mitigate_reverse_engineering_attacks/) +- [App suspended from the Play Store](https://www.reddit.com/r/androiddev/comments/pzdj6e/app_suspended_from_the_play_store/) +- [How to calculate retention?](https://www.reddit.com/r/androiddev/comments/pzclow/how_to_calculate_retention/) +- [Which (Jetpack) libraries are not available to use from Java at this moment?](https://www.reddit.com/r/androiddev/comments/pza0ee/which_jetpack_libraries_are_not_available_to_use/) +- [Updating my tech stack: RxJava vs Flow](https://www.reddit.com/r/androiddev/comments/pz9afi/updating_my_tech_stack_rxjava_vs_flow/) ### *InfoWorld posts* From d458b0c0c68a32fbb93b4aff64763ff8729d1a8c Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 3 Oct 2021 00:43:41 +0000 Subject: [PATCH 0810/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ae482f0f42..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 28 + + 25 Performance From b7a75477ba81d6de6e5114c01ed237b1222d857f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 3 Oct 2021 01:54:24 +0000 Subject: [PATCH 0811/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d5a52333c8..9bd6722f11 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How does keyboard development compare to app development?](https://www.reddit.com/r/androiddev/comments/pzkjno/how_does_keyboard_development_compare_to_app/) -- [Easiest way to make a simple soundboard app with no experience?](https://www.reddit.com/r/androiddev/comments/pzk3z2/easiest_way_to_make_a_simple_soundboard_app_with/) -- [How to find out which Android devices are my user's using?](https://www.reddit.com/r/androiddev/comments/pzim1j/how_to_find_out_which_android_devices_are_my/) -- [Publishing apps for others](https://www.reddit.com/r/androiddev/comments/pzga8l/publishing_apps_for_others/) -- [Can i open a play store developer account in another country to unlock in game purchases ?](https://www.reddit.com/r/androiddev/comments/pzfw7c/can_i_open_a_play_store_developer_account_in/) -- [How to mitigate reverse engineering attacks](https://www.reddit.com/r/androiddev/comments/pzez3x/how_to_mitigate_reverse_engineering_attacks/) -- [App suspended from the Play Store](https://www.reddit.com/r/androiddev/comments/pzdj6e/app_suspended_from_the_play_store/) -- [How to calculate retention?](https://www.reddit.com/r/androiddev/comments/pzclow/how_to_calculate_retention/) -- [Which (Jetpack) libraries are not available to use from Java at this moment?](https://www.reddit.com/r/androiddev/comments/pza0ee/which_jetpack_libraries_are_not_available_to_use/) -- [Updating my tech stack: RxJava vs Flow](https://www.reddit.com/r/androiddev/comments/pz9afi/updating_my_tech_stack_rxjava_vs_flow/) +- [How to integrate a SINGLE MoPub Native ad in a Relative Layout (using java)?](https://www.reddit.com/r/androiddev/comments/q078uv/how_to_integrate_a_single_mopub_native_ad_in_a/) +- [How long you guys took learning compose for building some project by yourself?](https://www.reddit.com/r/androiddev/comments/q06zkq/how_long_you_guys_took_learning_compose_for/) +- [Ethernet losing static address on power loss](https://www.reddit.com/r/androiddev/comments/q06444/ethernet_losing_static_address_on_power_loss/) +- [How can I make nested Recyclerview clickable as a whole view?](https://www.reddit.com/r/androiddev/comments/q0480p/how_can_i_make_nested_recyclerview_clickable_as_a/) +- [How Google destroyed our startup by terminating our Google Play Developer Account](https://www.reddit.com/r/androiddev/comments/pzxi4y/how_google_destroyed_our_startup_by_terminating/) +- [How legitmate these claims about "Google Ban by Association"? are these people really innocent? can a company's dev account get banned by just having a banned Employee?isnt that an exageration?](https://www.reddit.com/r/androiddev/comments/pzx9xe/how_legitmate_these_claims_about_google_ban_by/) +- [Did anyone of you start Android development (instead of iOS or both) because you didn't have a Mac?](https://www.reddit.com/r/androiddev/comments/pzx545/did_anyone_of_you_start_android_development/) +- [Scheduling network task in cron job fashion](https://www.reddit.com/r/androiddev/comments/pzrz7r/scheduling_network_task_in_cron_job_fashion/) +- [Flutter limitations](https://www.reddit.com/r/androiddev/comments/pzqmuv/flutter_limitations/) +- [How do I export for an Android app splash screen from Adobe after effects?](https://www.reddit.com/r/androiddev/comments/pzqkj8/how_do_i_export_for_an_android_app_splash_screen/) ### *InfoWorld posts* From d585ca1e8013e9107d02d3a5764eed1c34bc39f7 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 3 Oct 2021 23:58:11 +0000 Subject: [PATCH 0812/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 46567 -> 46394 bytes traffic/views.csv | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index fddb9851ed..b5763e457c 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -98,4 +98,11 @@ _date,total_clones,unique_clones 2021-09-23,400,30 2021-09-24,397,31 2021-09-25,259,23 -2021-09-26,287,22 +2021-09-26,294,24 +2021-09-27,338,21 +2021-09-28,392,31 +2021-09-29,368,30 +2021-09-30,377,30 +2021-10-01,400,31 +2021-10-02,357,30 +2021-10-03,236,23 diff --git a/traffic/plots.png b/traffic/plots.png index ef9f3107afe7f4faf74e640e5e366dfb3e1f426d..ebc5fca3de87c22d27a8d4196feeb68aec701a9a 100644 GIT binary patch literal 46394 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 literal 46567 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 XegVHPry!M%z|ZMZXS6Cb?85&86BnJ@ diff --git a/traffic/views.csv b/traffic/views.csv index c4ea63c3ef..3432a9b8bd 100644 --- a/traffic/views.csv +++ b/traffic/views.csv @@ -29,3 +29,7 @@ _date,total_views,unique_views 2021-08-26,1,1 2021-08-27,1,1 2021-09-02,6,1 +2021-09-20,1,1 +2021-09-21,1,1 +2021-09-27,1,1 +2021-09-30,1,1 From 468c1fd41563e0648a06e4703703db8bbb3ad878 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Mon, 4 Oct 2021 00:45:31 +0000 Subject: [PATCH 0813/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..e5f8facab5 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 22 Performance From 5f86e6cf3a57e89522e403d8ecfec8c1f7bc6dfe Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 4 Oct 2021 01:57:29 +0000 Subject: [PATCH 0814/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9bd6722f11..e9d8573af1 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How to integrate a SINGLE MoPub Native ad in a Relative Layout (using java)?](https://www.reddit.com/r/androiddev/comments/q078uv/how_to_integrate_a_single_mopub_native_ad_in_a/) -- [How long you guys took learning compose for building some project by yourself?](https://www.reddit.com/r/androiddev/comments/q06zkq/how_long_you_guys_took_learning_compose_for/) -- [Ethernet losing static address on power loss](https://www.reddit.com/r/androiddev/comments/q06444/ethernet_losing_static_address_on_power_loss/) -- [How can I make nested Recyclerview clickable as a whole view?](https://www.reddit.com/r/androiddev/comments/q0480p/how_can_i_make_nested_recyclerview_clickable_as_a/) -- [How Google destroyed our startup by terminating our Google Play Developer Account](https://www.reddit.com/r/androiddev/comments/pzxi4y/how_google_destroyed_our_startup_by_terminating/) -- [How legitmate these claims about "Google Ban by Association"? are these people really innocent? can a company's dev account get banned by just having a banned Employee?isnt that an exageration?](https://www.reddit.com/r/androiddev/comments/pzx9xe/how_legitmate_these_claims_about_google_ban_by/) -- [Did anyone of you start Android development (instead of iOS or both) because you didn't have a Mac?](https://www.reddit.com/r/androiddev/comments/pzx545/did_anyone_of_you_start_android_development/) -- [Scheduling network task in cron job fashion](https://www.reddit.com/r/androiddev/comments/pzrz7r/scheduling_network_task_in_cron_job_fashion/) -- [Flutter limitations](https://www.reddit.com/r/androiddev/comments/pzqmuv/flutter_limitations/) -- [How do I export for an Android app splash screen from Adobe after effects?](https://www.reddit.com/r/androiddev/comments/pzqkj8/how_do_i_export_for_an_android_app_splash_screen/) +- [Installed Android 12 back in August and about a month after that the phone got wet so I went ahead and dried it out and when I try to power it back on it's stuck on the Android logo startup and won't go into the phone. Any advice?](https://www.reddit.com/r/androiddev/comments/q0vht4/installed_android_12_back_in_august_and_about_a/) +- [Thanks to this sub I just got hired](https://www.reddit.com/r/androiddev/comments/q0vdgg/thanks_to_this_sub_i_just_got_hired/) +- [How to save room database list after drag and drop in recyclerview?](https://www.reddit.com/r/androiddev/comments/q0u5g5/how_to_save_room_database_list_after_drag_and/) +- [My volume key no longer changes the media volume, it just changes this weird icon that does nothing.](https://www.reddit.com/r/androiddev/comments/q0u1fz/my_volume_key_no_longer_changes_the_media_volume/) +- [What format is compatible for importing an animated splash screen?](https://www.reddit.com/r/androiddev/comments/q0r7pn/what_format_is_compatible_for_importing_an/) +- [Jetpack Compose - Login Form Validation (Building a Login Screen Part 2)](https://www.reddit.com/r/androiddev/comments/q0qxed/jetpack_compose_login_form_validation_building_a/) +- [Is anyone else's app updates getting stuck "in review" for over 24 hrs now?](https://www.reddit.com/r/androiddev/comments/q0q8qp/is_anyone_elses_app_updates_getting_stuck_in/) +- [Is there any way to delete the browsing history of "com.android.browser" from the program?](https://www.reddit.com/r/androiddev/comments/q0q4dv/is_there_any_way_to_delete_the_browsing_history/) +- [App suspended from Play Store for not having a privacy policy. Appeal rejected even after adding a privacy policy.](https://www.reddit.com/r/androiddev/comments/q0occt/app_suspended_from_play_store_for_not_having_a/) +- [Android Application class ?](https://www.reddit.com/r/androiddev/comments/q0nepl/android_application_class/) ### *InfoWorld posts* From 85262fa3bc173377d1d7b892966f206f906eab24 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 5 Oct 2021 00:40:06 +0000 Subject: [PATCH 0815/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..ff53e9d72e 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 55 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index e5f8facab5..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 22 + + 26 Performance From dda42992ed3a63afb0af1f16f1325eebc0bebebb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 5 Oct 2021 02:01:19 +0000 Subject: [PATCH 0816/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e9d8573af1..c7e22cb0c0 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Installed Android 12 back in August and about a month after that the phone got wet so I went ahead and dried it out and when I try to power it back on it's stuck on the Android logo startup and won't go into the phone. Any advice?](https://www.reddit.com/r/androiddev/comments/q0vht4/installed_android_12_back_in_august_and_about_a/) -- [Thanks to this sub I just got hired](https://www.reddit.com/r/androiddev/comments/q0vdgg/thanks_to_this_sub_i_just_got_hired/) -- [How to save room database list after drag and drop in recyclerview?](https://www.reddit.com/r/androiddev/comments/q0u5g5/how_to_save_room_database_list_after_drag_and/) -- [My volume key no longer changes the media volume, it just changes this weird icon that does nothing.](https://www.reddit.com/r/androiddev/comments/q0u1fz/my_volume_key_no_longer_changes_the_media_volume/) -- [What format is compatible for importing an animated splash screen?](https://www.reddit.com/r/androiddev/comments/q0r7pn/what_format_is_compatible_for_importing_an/) -- [Jetpack Compose - Login Form Validation (Building a Login Screen Part 2)](https://www.reddit.com/r/androiddev/comments/q0qxed/jetpack_compose_login_form_validation_building_a/) -- [Is anyone else's app updates getting stuck "in review" for over 24 hrs now?](https://www.reddit.com/r/androiddev/comments/q0q8qp/is_anyone_elses_app_updates_getting_stuck_in/) -- [Is there any way to delete the browsing history of "com.android.browser" from the program?](https://www.reddit.com/r/androiddev/comments/q0q4dv/is_there_any_way_to_delete_the_browsing_history/) -- [App suspended from Play Store for not having a privacy policy. Appeal rejected even after adding a privacy policy.](https://www.reddit.com/r/androiddev/comments/q0occt/app_suspended_from_play_store_for_not_having_a/) -- [Android Application class ?](https://www.reddit.com/r/androiddev/comments/q0nepl/android_application_class/) +- [What is your currently configured SharedFlow implementation ?](https://www.reddit.com/r/androiddev/comments/q1joi2/what_is_your_currently_configured_sharedflow/) +- [Back to Android after a 3.5y break](https://www.reddit.com/r/androiddev/comments/q1g0el/back_to_android_after_a_35y_break/) +- [In this video you will learn how to use String Manipulation Plugin to define your data classes faster in Android Studio.](https://www.reddit.com/r/androiddev/comments/q1ce8u/in_this_video_you_will_learn_how_to_use_string/) +- [Material Components 1.5.0-alpha04 · More Material 3/You](https://www.reddit.com/r/androiddev/comments/q1c4j8/material_components_150alpha04_more_material_3you/) +- [Google integrated Android Runtime (ART) into the Project Mainline - what are the consequences (to custom ROMs, OEMs, mobile carriers, developers)?](https://www.reddit.com/r/androiddev/comments/q1c15z/google_integrated_android_runtime_art_into_the/) +- [Google launches the stable version of Android 12](https://www.reddit.com/r/androiddev/comments/q1b65y/google_launches_the_stable_version_of_android_12/) +- [Android 12 is live in AOSP!](https://www.reddit.com/r/androiddev/comments/q1aynd/android_12_is_live_in_aosp/) +- [Bottom Nav in Jetpack Compose with other full screens.](https://www.reddit.com/r/androiddev/comments/q1ajuz/bottom_nav_in_jetpack_compose_with_other_full/) +- [Jetpack Compose for iOS!](https://www.reddit.com/r/androiddev/comments/q1a1wt/jetpack_compose_for_ios/) +- [Disable Managed Google Play?](https://www.reddit.com/r/androiddev/comments/q19a3y/disable_managed_google_play/) ### *InfoWorld posts* From 6e6ec5a5a898be677a67993ca18ca6af1ffdc72f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 6 Oct 2021 00:43:38 +0000 Subject: [PATCH 0817/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ff53e9d72e..0c4df78de0 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 55 + + 53 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..9971c205c1 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 24 Performance From d8690f4e135f23da624690860eeb700d6f45e36d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 6 Oct 2021 01:52:25 +0000 Subject: [PATCH 0818/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c7e22cb0c0..e0d38a167c 100644 --- a/README.md +++ b/README.md @@ -269,16 +269,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [What is your currently configured SharedFlow implementation ?](https://www.reddit.com/r/androiddev/comments/q1joi2/what_is_your_currently_configured_sharedflow/) -- [Back to Android after a 3.5y break](https://www.reddit.com/r/androiddev/comments/q1g0el/back_to_android_after_a_35y_break/) -- [In this video you will learn how to use String Manipulation Plugin to define your data classes faster in Android Studio.](https://www.reddit.com/r/androiddev/comments/q1ce8u/in_this_video_you_will_learn_how_to_use_string/) -- [Material Components 1.5.0-alpha04 · More Material 3/You](https://www.reddit.com/r/androiddev/comments/q1c4j8/material_components_150alpha04_more_material_3you/) -- [Google integrated Android Runtime (ART) into the Project Mainline - what are the consequences (to custom ROMs, OEMs, mobile carriers, developers)?](https://www.reddit.com/r/androiddev/comments/q1c15z/google_integrated_android_runtime_art_into_the/) -- [Google launches the stable version of Android 12](https://www.reddit.com/r/androiddev/comments/q1b65y/google_launches_the_stable_version_of_android_12/) -- [Android 12 is live in AOSP!](https://www.reddit.com/r/androiddev/comments/q1aynd/android_12_is_live_in_aosp/) -- [Bottom Nav in Jetpack Compose with other full screens.](https://www.reddit.com/r/androiddev/comments/q1ajuz/bottom_nav_in_jetpack_compose_with_other_full/) -- [Jetpack Compose for iOS!](https://www.reddit.com/r/androiddev/comments/q1a1wt/jetpack_compose_for_ios/) -- [Disable Managed Google Play?](https://www.reddit.com/r/androiddev/comments/q19a3y/disable_managed_google_play/) +- [RecyclerView Fast Smooth Scroll To Top](https://www.reddit.com/r/androiddev/comments/q2a4xj/recyclerview_fast_smooth_scroll_to_top/) +- [This was reported in 2012 🙈](https://www.reddit.com/r/androiddev/comments/q26iqr/this_was_reported_in_2012/) +- [Constraint layout, textview and ellipsize, a sad long story..](https://www.reddit.com/r/androiddev/comments/q25uba/constraint_layout_textview_and_ellipsize_a_sad/) +- [Unity, app bundle signing keys, ELI5](https://www.reddit.com/r/androiddev/comments/q251os/unity_app_bundle_signing_keys_eli5/) +- [Calculating dips by the formula px/dp = dpi/dpi for screen resolution](https://www.reddit.com/r/androiddev/comments/q23ukc/calculating_dips_by_the_formula_pxdp_dpidpi_for/) +- [8 Tips Learned from Adding Payments to DoorDash's Android App](https://www.reddit.com/r/androiddev/comments/q236s4/8_tips_learned_from_adding_payments_to_doordashs/) +- [Android 12 Is Here To Impress You With Android Open Source Project](https://www.reddit.com/r/androiddev/comments/q229gl/android_12_is_here_to_impress_you_with_android/) +- [Firebase Authentication [All official development resources]](https://www.reddit.com/r/androiddev/comments/q217ot/firebase_authentication_all_official_development/) +- [AdSense account has been disabled even though app is in early access.](https://www.reddit.com/r/androiddev/comments/q20boy/adsense_account_has_been_disabled_even_though_app/) +- [Drag to reorder in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/q206ou/drag_to_reorder_in_jetpack_compose/) ### *InfoWorld posts* From 90aecece0e0cb648c46a34d889ec1de731243ef7 Mon Sep 17 00:00:00 2001 From: Alexander Rogalskiy Date: Wed, 6 Oct 2021 17:16:15 +0300 Subject: [PATCH 0819/2080] Updates on files --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e0d38a167c..71dd9d7fa3 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) [![Stargazers over time](https://starchart.cc/AlexRogalskiy/android-patterns.svg)][stars_chart] +[![Statistics report](https://cauldron.io/project/5126/stats.svg)][stats_chart] + ## 📎 *OpenGraph Card*

@@ -425,6 +427,8 @@ and ***Android Patterns*** ? Consider buying me a coffee :) [stars_chart]: https://starchart.cc/AlexRogalskiy/android-patterns +[stats_chart]: https://cauldron.io/project/5126 + [contributors]: https://github.com/AlexRogalskiy/android-patterns/graphs/contributors [docs]: https://alexander-rogalsky.gitbook.io/android-patterns/ From afe6a9cbe5334547cae6f87e47d75f600d241b49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Oct 2021 14:35:17 +0000 Subject: [PATCH 0820/2080] Optimised images with calibre/image-actions --- traffic/plots.png | Bin 46394 -> 34899 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/traffic/plots.png b/traffic/plots.png index ebc5fca3de87c22d27a8d4196feeb68aec701a9a..acb6c7277dac221668fb6e739cb921cb228a3d4b 100644 GIT binary patch literal 34899 zcmbrm1yEdF*EQI<1`Y1+?rtH$f?IHx-~@L91W1tJgy8P(Zb1UUy>WMU{cq=a-hbY& zrl#hf8oDT;>3i>yz0cWu?X^z0vf{f}$b`rs5a^Yx%o|k@2s!`+f?7p{2j1ZsU)%(K zAUVo>_yhu>8$-UK3dIVnK_GIF>>CMnkA=fD1dlk4hd%u(cnxPX&GI&o)$}_yCADfuKrDuVYL#T~EfAr4SY^Ba(k^PzL z8Ta6>zw_B*XV7!hyJOU|4^9%1A{avw`YVbR^xt2R#s7H+O6KoB=s`%3|0BYY|NW5# zqK5oM@jBq|k6`HUkiUYJL0JFi7yrNB!{K{I2Aiy`Y;1ZuYkxG^&gws3>{kK#f%SoX zSs-R;{N2wetpC2hdRhV%DFvkst30?M)B5p0pMDq{VX-1c?xYOJGNOKzhxEq8t+mMR z-yYF}tf~KPGqQL?Y=-~a?Kg)>xjFNxN06>%fly(g_{~i}FD`in`tVRh)TCiZDh%&U z7Hn+}#t{=Mz8c0u?gZfmyn5EIfL-NkOZs#L3=OvP_Ar5f$7$x_VpCjDPhOyB(47<% zz7aJ0vtuHbKmJYa2l6J*J3Uz>ie59Tv!ujCS~|tlO!sdatuPm`7t-Ivftz9nJS83S z!jiw$3nT~bX+l~VS@4UDqC8vL$Qa!9I>3(+6!Um?c`|eayZT$7L6{JcqW4Yb&me4m zVZq==+Q9HwwLfad5l8`5sZ^dVlrDD42lVy=g4m=z=T;?6@YKJa5eby0 zS@p+hM$gBy{;dglwgg@KCTX1pdlpYm&tIYlGz#sH=ki7BMX`Er^X95e&gKN%R?6Y9 zs{=7qTQj;236DMx&5c(Fvq^02w~|jCl`N~{Iq!yo&_(IDhLVyPHHrsL*Lor!mOXb! ztjDuM&iG)NMZH~IYVU>k__WF!*O5OoyA<7fZx8=aEz{w-(l76L_VV1zOQL3C8ajXs z>nQAMa-Eah?lf8b$nmwMcZG68=&?Bq128=`pf{GGhl{P81k$bvj?^L|`X8r@Y2K%B z$82tz@m!y*R0JzuZ2w8%PvNqRTJ+e6lyk(nA`a_ND^QdzP)ws{W>#2VUpJe`mECvE zSIRi91_^sz7Gh-#C9-hY3psCwE!jmuW1Jw2^Lt<0UOnI9b=y7Op6x$VNPUr+F4lq)rPJbw-E4Wq+~A+3$D;w~FyHT|OF3s5grtcn0)EMMYmad!NXB zP6L}eyl;-rr__{+UL2NNKkSA3K3pfvKW2e00bfh=(Id&cY0#yASM7XsY$Im*v$;aa zky}e0;?$STAfJb$hOLWHu?BAiGqYU54q9sJ*G!<$S46bY!slVmOh5m>36PNV~ue9s2h-CrVHJ zRM@SntE<}k#(r-sE9kz38ybV4NiYZR%D?Nr}=x zjm`y?m|vN-{nn)DLrwl!1q6JRE{{a#G|;dfEs*$;SRYbI;l|ak-qzq>qO}XF6+ts_eHSe!8DxSXQY6g zvS@-n5601z92)r8+a6KcpJwzR_EAx$KT{ z{tyFJc}fu1rxD~}V$qz`Kyeu{tmM)uB(1TTVm^WT@dkBIEQm zI&F-2GQVyRLl%GS@ug9!YbX1&%L+-Afry2{CKM?SWO01q1IcwfecM?-0c3(EuAS^w^2G zaF%HkF4&mJK?cf76)J4mi@r6?HYGa%^ag$e7&;pFMW@jHs|LW6FWPyb6^$`OVq;@{ z3_#`I1WJ3ChF~;t?vk5yuS@z{Z+76zvHsH=I?y-_#`q+ zVy%kw1*|WbOlW2x99)~-A!y~6B;g-$aW&@47=f&V9wFIn+s`>)N=Yu$kIOJml}C3i`Ks0)~CbCp^8 zzmCfFTZ-X_3(q6pj-EbdWnD&*2t6u-t_@z71?%s4{-SH*&Zzw$Vt<*^_J6fl3M4tU z29u*7K~-lnt9fL^&7xbcZh~2+Yu|on;dxXyOHE1Hy>-JK1UlsAlS680?`lcK`bx6> z=4{~a>}SC7_&FVmxDD$qm7M=KLKNk?tk;6&4r-wAz-kw~>U5 zF>2wTKVR(cj^}KZH7v(M7UtuQ7r!5T4(Vre-Sq+Et7{`dC+gAt7xz~Oma}Il#zqe9 zclk@+**5r+z1#ydyYn>#>c#4^TX5@xs!1>M7Qx^gm{^-d}*-zo8 z%gOzhchRH?z+7wFx1PPdnm4Wi7Nc*_?BC&xo{SGte;@xD6{AA0MOTe}FC6=48W_4^ zT2K{D%1;g6o{%GLOIY$|m-jz7rR%I8o*z!Oic88>DGS-5@CgZvKiDwYeCYULXVMhbSZ+a`!WyLN7FC5wN@19Vvm)< zAt4NyO)h(?Kg9e+;f%;pI+N}zRI}}U4~+}RS}c?pwX}dJ<|il^6g+{W>+w<4ItwLkojK5$ZglcrE_WltH%W-UYceYPV9>$Dw!1{+hvAF*O!$1JY8gR zh8%^@k*y4Md$Z!tRAoujkGO__P8+Ku0cd< z9viRj*1xgI@j;?Rd64M5=?^SdaO}kB!yH?`ooe*cgYemBU;&{Ai7ZHm|2c+o33ZW##W! z(Unxel*a`iR7WW7vbemS{^hCR3(@+a$D{o!5!~a=eK|x53+w>edFXZ^;xOwBfZ7S8 z(}mjAW`#3B)2*h#2{?_S=o?Ag{_~Rv8UsAw@!s~v1U&CXt~pBJb-7D{E^_(({zc2s zH?P&%&7^Mp-*QG{SyG6Sv=-Y61j?}0C910#t)?MJDG%c;F+9|&vp0oXrQjw zT2Fp`9RP`gz)ipQ5K?<8fB^aKux4~~kS;^L!MKFLDWIbD{A(=`Xb$W=-|b{L1HqFT z2)-CJ{CiOCGa8l9&EwIT=9_}T{uz?SloBRLHsS^Avi&*iLybkGT!8otYpgI3nMg@W zs$)cmWLkN{kZjN?c0Kuq(`gGv*>qfd1MMU}748x@@8zO+I z29i8VjBinpjSoHow3ywc>N}M}S86veWlH!`wrP{2)?D5t zUWzX?Elt4Y41Ah_oQ5WEES3eoF&YS##|m!gC}qQ&l-`C4KBZ!om`s22OD621N{5W0 zY``BfV4yJqu=#qKIBx#*Iu>ML*B)gK8AwSYBB`G%?j*@h!vg3AB-*6*FRk^s@Jk`x zyZls7CZjcax8fiVX`u{1o3O{)Hc=RsovpyeWC}G$$FCFK zG;&cd^pvXbbA4QU5r_$1j{vD$pO>e9O9*HEs)K_kj8cYZnc`}Fn+1{+?l93X*)SE* zw$}j|e%i_8u=;B;D~W|W(nm@=DnMo%f>im)b*|tbKVJ&0qnyFylJ-&Fd+T?rT|r+E zgWn-66Qf0~!*7S<`X`H-mjU>N$eR*^n2!>K?VNpiJ8e8ZXx5 ze<&Pxtx6pbVcD4NXJR9__pZM|uFwBZM-+T;$U`@W5q~A&TpTn{Y^ShB4Kq z*5|$Hjsb9>kej!*{Fb3KoM*`@3NL}z66fv%q7}ACrbN-pENGVRjKS?dXi5tb0{{iw z?D?PiO#8w{gZ5Xg0Epn6Ko^XGP*3wAcI()tMH!8x0X@S=V&}QMUD*C}Hf)2)eIck&<;iILAdj|u|x#RhiwP)jjNgXfi zSLb#)Nxx?Tf@<67#mPQO=mRvpqw{73h`nb{QYy0XMoIi0IrR^kDcoU=7VXUm#E?Wz zCQiwm`BmU=SiTQxM(%bZJ*ro4gJ-SYc}JS5f&@n%xoJ@SY1HkKUKT!umEvNynV@&yy@oEi(MXX`A0zpIK0i1m!>Z5458t0lfqX3uEUTftR#eQq6_0H9!miJQdqm9GYfb>2yah59PAjA{IW z;@-vd6YHDc@8Vlln&s;DWVtilV{O)?zHBab6I(4GUGz)q!+;051OmIuAdvP`nf66E zm4LY85F8bI{p!Megqt^y7Sm5!CMIO5ui2v!C1u1pZKWf05Ddwx^WPx3mVaikpboKe zFv?i9g4j1)W}NW#oasdV`=630OnbPF9|#9Ep3&yD_F2A-mP(AO@zI`!kq5&P190WJ zhr9fe=%vgJEjDXM4T@rVgzw4jL1YW7kfZUdP?ss}_uv^w5mGegj>p zQKAU}?ZTs@wP+0Xr;4cfmOXNE^Ye=zh7eB!jy;n56hWV&~NYVb;K6KvVS~KHLfvYDjS1y!1r;q6kBLJ(v4sbI9 z<9_Q6esz}Dyg#LtYVHdMT(Au7s(fN?`r*Nm;!yrjZbbP?|7`x)u0{D-4~OY)5sMab zC7~^*QD8ETLGv(=p82{fFCFog3eZwSKfo`lruV;@0nqi08dU_!W#0zhV3n;wF5oE0 zozN~eS<)(b2Q1;|FdigkJ(!YV9dSb* z-yhgV@pqw5x1dU-1me7rh`cN{)1{s<&o8_85;iP=Oj~}pO z9H-`>Bz;!nBa!|NXCNiWZm7X*doy9bZlXqspdvxz_bg>Fh9O*)i}ubjQ=TF$D7+`9B%UQZ672Pf!Ou03kjp9pFudjnx3PerX~j<| zzEMJCR&EB@-4&rcv90JwDhPmaGGJG$(?X}9qRMpL*{PUS+DOaEfl5Y(cp~#m17s_E z6WbBA4T^Tt&2HxsOn+>-0?|PMyFDHhzx$A%tD`?RV=qfZC_YvzDRM3_?HvK<^se{1 z&9spQHGD?xd?uu>gG3REpK_?_qIJ802VO#B;2b(B`}0r?+kJyGK%X}&P~5rL1*RRY z#JzwJ=~Lj009Az%%eyuy7U&iHW=*VUvrno(AGuJ(scj0c?Isr|+h1u7Y6xl*Mp5-7 zV@N&*j`rEBALu0AfnjFgnX=U)R1MKx(GqEd(40(^0UR_%19WX@E4#4EPWRic;_e(Y z#5-90naKi3X@xi#2tK}-QtfT8?QE}H@;?l21){IDSBF)Obnf2tkl>dd)H1S?g|@!3 zG&fRscFTU10zg8L1}BrM^K_=n^uEvHw4ei`Ylu@)KodPy8KC87WE%gym>T5&gP;g) z)tJd-@j7Lx6a@ws5qK=uyBg=n%0ys4;0}95e`{Fwsj~Xj?~T&M1j(GgEtUrH0*DVu z>&DElrXwCY`!KBvBqg9=mrS5XY%1bycS?w}p>Wuh$Zwm|Fz~>#jDtbr3~T^*5^iDD(C^Uh&#K(VRjbD822VWi#oS9rK;@aVjSEs{S!=NnZ{#R+!E8q>}U!fY|# zTRLbjzHaVduYZ5;Nh5>E!O*O@Z@QGk$RRW0Q1RlTmuq`%)sR;$dd(gQ3AlGlpfOnd z94pJ0Hriou2#gD1!e-wq^6h9C^$n^`06R+a{!Tr*6JAVszxrSv3)~CV3VgrF{*o~X zQME1lt95D)h9Bp@K|`Kf>AWaryXPV z94vhV?BjBYcii9^L@B|MoGMb-!sx`HQaM%_K+GzH31!P0IQ2mnKoBh+il$ZYE?3sybs*Gj0ZLf>x1l z=*S9;eZJ@WhnB2BT#WlIQrCS2S7F9sl|uIoNtOy^W__i17gt8AH4csm6^}|?Yk>L| z=aK_X`$^&bVVHTKrMhLKv5ydqWI_me?-tMMCW9&I`}yR|-xjMc=(Q-ZVw!!NpC&@Z ze{$IxuHVcbZGYPkhr#1#yVNbR^)v*BaDKcp_%f{wN{j>@0zejIUw59?(31W26=&-Y z-%7lG%U3*xjlM`V!!fsbHp6AWtA6O-2X7uPCpP~ghK-vaTfgexOT6}&%RlHaYrvch z3pm{xw+(!wXKI>iE?;FaYQFDaCd*6OF~|?ULfWplJ|{X(Hzplb6(=F5WTBWYh_~Am zwS2KRUtoogEPjIA+3b42C;@=EZs8FT@v{cr?~j`gSOt zR~nNF=frX!;L>md1t;k`>Btom=dN?r*lTHsXPSW@1bW6R)2hbr7+EZil}2>>a(2LS z#nFM^FxdDi{X2nixN2FP`H0Azam;>ZPv%`UOuvi9!AaHUkjN$Y?fVsqhxmS?dTIXN z8ERT76_A$-NH8`frC9V4h*7@b1OV+SvyRwgre7^;5L|k-`0R1CuaEolBPW8Lkd=ou zGWM_2lXS z^?eW8PtL`=FTWf(pwdLEaKPmg`~7;+GVtOArMa0P78_|2!N?r#u)A0YcoCKq;A7#-XM*x3<2Y(Vp_PS{%f~z-CNDZ-Ed-1<@tt(LO^lD; z`=y;erSBB$Ckktd&6S?TlwN8*L!f~JviK-+CoYRl;n8AaVMkY`4C!US+n@;Fh)4<`CY4~7rNe;gRSz_ zA#$=*vb>jpuOWMXlz9zm44t@b3af_64BA@@xV$>i7n>Z8QKw^Zd`ut;C;{~*!1b=! zH7wD3U&kvXr;7UO6ss3eiap=vC=m{Rpbe$P*HuUtcb^oO_AsQQrRmunb8LLA@v@dT zezmmP7Klf8!rc}ah=wJ`PWK&go$-{mr=;{?q6<8HsE)2zsR%X+vt9Q+FEelu89lf( z%$qR>q6l87IiPNpF#b(j6kN>;@Dctr+5nXX0HW)=ZLygxul6`InQw8gumx(Zp3kf; zhn(|OrlCb}x!cbkoS=M{FMR94?a$te8twAe3)I zJ>vNl`EExG6NM^N8z+e@y2Yrg@@#GDkdlRl5Iaz?u#DVfhDkisMELL^02V&K=QrNN z6>s<3Dl%2ZwRKfW#S#7k#Mcq`_F+$i4Xjb-G|=%WGj}1+)p=0iNCW({lo&sDEsh$F zELN-0*}-tHq%PG#%~VXtkUW)J{@WM3?ILf*#Jhz6tsjAHLl& zYVcQ_a<0)IP(EPUv*Oi?1VM9n-`}`v6`>4&n9A(6$)=@=GEXO$hd;dTSV^SUh36RW zvlOR%o%*_YoAKVFzeWuWlH?Q0yAj667mV6!HS)4)pxo$lFm0g|O z@4_mot&?j9`GM8ZH_vu^*G?9G^7B0TRSHM9QC=C=Y0EKH8*hsfKM`N&+|=e_U0M>& zv*&bdre30Fm9nv~mc`X-$7C8VaaK6*_^}be^QnJAHnq4>GFy%J%&Qg?Hr@>)l2KSn zHhS%9*;;;5Wua6oY=X19JJxOMfhUtwhIw+-+rwA z=!zn7_N6Kqi0gms#m?_p#Ei^(xSF{&%aYoP44tCFoi}z|>D}eq(S4X-`!IOoQf8b3 zqfh$1(*K>@v-KzM`aW$TdF~$=w47%w(IX`raG&mi>V4&|yvY&CY^2D0yVoeMAQ{FD zX`2Px=(Z>_>m^XoTu#nO+p)7OVgXvW=VPQYiSYgg?pl^9vef!!mv@yRMQP!%>Q~*t zBT1jTRHdUP67+h{cBC@hh?M?u3>TBv*V4nS@fgEX()l*Vk{dm4&rDRkW+9{gThDJa zw(6e-kNq0b!ekG%bXA2i+U!OhqGhI<@ACD@W8k6%?sqy4-Zbl3-WkZZG`bq3X)o%d zz4Fj(b2CUHGJl@Jq`7|&P;EZa!LPi03StI(4mg-T&<_17GzyPo+7N#(yEYZL$Xui^0gN;cmW%G3;J8zq=T%A-WRt~a8679ADpluWv zyl^1xIrxifM&5IYdZ2;- zH?AqXu2Xu5|?e9)wJeEW0de_2|0L0Lb+4yzkPvO)- zzSat??AS87lWldblp73v4yvFD8OyHq$RL>a4MKk+1q%ikK2JD-EzqwkrlC&j9!edD z4k)+|eQjE3d+{jI*eO`R+5=7#&WYbUgo@%eM~->g#3*VJY?sJi^a-k?!-Ag~&imD_ zm)j+H-ppJw@zbZ?2-Eew8QgAnz^`zso_tkpyxHLVnCy@wE^&^%Z4nfes0?#=^fm^Y z^ce3|S3~Q=2X8hjbIdO^`Ynp-u>kt1AwcKb{iM_{{oBT3n}wgcZM6kpp(%vjiKAxP z$x$vpa6ygzCL%^-7S7jGJOvpH)AG84CTTRG@f zzHUn77wx@N%UuP(_Fh+CnKW`K%gc-BU_>%Y0ReRH>RwX9jNH!hYWIYJ(mptog7puW zpI=7r<*4oJwm4|awC0@W$Dgb>T%+CE^(ATDFXkhR^-+EOPTnSt3b$q5EDO7sb$RQ= zeYAMp>TjS}WPnDe_j+qu2tm*|_t)m1YMwzoBq}SBFLf9z6v3{q-@lSfcBw;(zc|~B z!p#D4hk$xD+0eoW;V98j_^Ou-YTYoC?cd*fWTu%z2|FGJ_lqKY?q|_8LXkUSnZtMQ zwZh)SKPhNP85bS+@pipRceVuERIz}F`bma>8J{jH4Mzrn>d6R)pT4@;AyBfy{^aOk z!}=SBQ_d{Py6?~gLv@9X#zVv!T#gT`DZZ}SO?^7ukEK#smX^=04^Y__;Vx}m=gS)h z;i=3|_dy#dgV-T75zNuN@46A|t6c4xxGc3(mku*UGo#%56*1(3(k#Y(kvqk40>l&| z`RVQ?*}TXi7BlM=ue#Ixx@+bgbUezJJ~gUq9X9`jCJf0iU5P6|%?i&y-l5uzu9%kP zAO?Rm|AktjWu-#&NpXJ??t<1UkS0pWvccrCwMVt&SUmV$+fUB|XBw9o5YTM<=zH}( z$DS&pJQZD=^LHoS%)A%8RZMTZ7A@{j{Y9B#_u56frD-A*R^kh1@C{+BOm+(*Mg^Ht z?fM?!sOjtK><ea^~tqc@!Icsos!OCH`F3cC|E&HCaY3H(4yo3_MJj$31S%2=W<*3YKhi0wkG zf|E7AHueX0o<5?6I7PXenR`$s>Q@fKEPlwH0i0O-_r~WP%H)Z}4Sb@+*4Fa*EdiN+ z=>-y%{L3hGVX^FfzO7!O^`+k~j?2OnRidS)Z`V1yDU*~M`l6R83Y>>dkukHCGUDA4 z9Q;ZKSpDD~@Zi;rIMc)TrCcM!=CoQw@)6t2;{bXEk*GTa@u3o^Q3l7<4ltGe z`iUF5AQe`PmJXlx)`hpa#8&LPeJ^8rg(*_30_l;3HG#UGUE!%;qCF}_4`I?%FXBhL zR}(Lbd~~eq*fG)z7m7d6S!Tl(ytK^vTcL9v3i~RG6d;N`T6>V z@+jYyEi+}2l-0e=pq-NRtlm5wOxIkXNiIvRCQEDP0~5dgeTdRHcW-5F|H(hCDZ%m> z1iC;!D@-UmTdVV8jXU*yXAR_(FWj+q+3!?#VKGr%7*4r?l1!iGcP0Y&vQn1X%CybH zgr8A%y*PfxgDgaruhi+WA=`SGJA~bp2zr)i;frpBf>fFJ9(;$`=O)~xW-+t^_&V~W zx@Ab%Xd{eJbhI$%5>hFs9mUmP`Gs6$IcsUnule9I4GD@WRoOzaxQpDt+W*avU|soCm}EGj{|o2DP)KkeYp9O+*9$-k|S`Hn>LmE@q`{ktFB3RJY=g_d{H3Q9%bPSpNY z+R_1~nmQcDQMTvCXoDAlbT_;3 z;F4Jqhflk}-u|32`?Y&D^)2xSu@U!I+09>EgoF^3OTkPR4w95fGT^Vp3CW(IC0-1XEp;SZ*{9pI^P(MtrJ?W< zp&gG-Ev^lSqa@#{kM8(5d{!tlbmJw^e`j_98pA{0WJT|61fsHyEc>>>ct< zR`tCfaXXK*r5_9Ui{ECI>5A5uf>C#%Zf@}pecgY8_g^yp>i}-7f4Tbqvi0GNKE$P` zmq*0M$LFH{0$7reFXL^f_b_%ae;M-&GQ|IWJ#%L|(SyE`i-{Q$ATrL+#tXH@))Lq$ z{d5{Tt|hWN+z-g_vf1*^(kQfsBj3QX=8^kCiv@S;#FF{!bMKx3mCfn;V+r6#)SO zH}skh&Fg?(Nr1XCo_sg_gNr*1o0#8GoYeo($r@bG61irs9K8=92Kz6|R&<+e7j+hY zQXrIBd3$@-SKW8N?|ysk-CV>%p9*KTk3v{v04|opk(vvzbydst1Uxq)`KBbLTi-R< zFXfv2`Z|#%g+SONt5f%p24GDf?Jz-JNQIuVfZpI;6mbkdSsJ2>7S4uU^*(8%^S(Y* zxfw^%=0`$8at7Nq47S}YGZFFG=Ss99wod&?;fZ@k=Bw^$@N)9ReeFhW&RG(&Y6q>a;UO^>;CIk8n9mA zn;vvAb$T`^r)mdewr-NfK}e_B3YF^w@RE9-pDG@3!FD;%57 zLzU$V1djuXYdOzk0Hc^ir}jILV-EtVhG{}^enSC60k$Vs167cY1aXKR6CO3&9H}xu zS#1)&no_H_o}?ulTI;NOf2mz-6{F{|76S02Dh2=oXI?!6DZnR&R5)`13asAT5^Qg+ z9f<$%Bluf2gc9?17r0AS)z=>twmY{w8{BWSqFO=W z)6zbet=M5ymsF11&;G`$`VC{O`{AVHB@qCJrf&6Z@z|(WR^{-%5y@RV0_9z( znlYH(n@(M5K#Y;Yx{9%>zlelmlumiwf4%vKs7BD94S5;ca zSKzN503*5RmN%>q5Q22GYO-U<%E_s2IaMAhYj-KkxdRq+4%o1K2r|ypG)_&SJer9T zMPtXqamy!IzTddy!ClvUojxJ`2^Z6nIyxzW`IusG;5kz80t&|K*SVZb6;0cO*2}F; z`X=~mK3hIpt(OJB`UK6+!&4_S`Wg#Y^mY}-b0^K6T2yrT_}vM(q2l~}zE4fOGZQ|p z!x9?LlB=I72jCaTlhVrQ0hWYW zDD?!k&B+X0v!kr%jpSWEkJ~>TMm$lw#g=_<^b<4&1rtZW@fXv+yc<4Sf^ty1@Z`G& zzE>L7W0_q7T8j17R~QV_C0a?#ZQfuJ|EWTi{og}wM0332+~4gi9{4^-SMgJ*eFTUQ z`@FuH;zkGS^SK`1jlTpF2Gj7H*gW7cX%?39cx2m2m|#^;sd&fmGI_Ok!#n}=SK=`R zaFdI{F51wF(Ba|XsS%0+{ETKYf_*Q}?TO14sTDK`*U~1|L3|199?jgX+Po33qU?R?|6A) zGvWlLRS|5L*l{L_608=J;R*1!J9P!!eLa+4CmzV`6%54Qtr-=y@lfG6l(*y>nVkUR zXT5b?%xpyou0|7>sNZY_7-V4!vSA?}>)~`}fGx|7{Uwy1o;tSlceR9e_tI-dAbnm> zDQtp;3g%@`mf>&OMK$yvDR!Q=74R0k8SKkb)PBpxrdl)#N-?39!Ml;X6FUx@1(8GiTH z=3=SZBypWGYn|<3(VsE823^nAe=$DekzzltxRtH?u>AM~^aY-nH*Dt}Gy*Xegf(4! z8rX|AG6cd1aJ=<8!Zv5OBiTt& zPsXuZNnsn>T$h^UM-3vGT(`p!I+m(O3q~@bx2>{!TE7+c@7L$8!HKEY`q1kMrV>2| z2-TdusO551(!r9I^jrbQT$z6WarXwOXjsiJY4I39AF z#qO~fV3G|4J0%yZscZ+=p#OE(QfH&mT^#`+N+%X`*Bq4 z#a0;INgRWVzX*0AfzfVTx4!>c@GDl(e2ry^WMd;)y0-26^=wRCOPRhZmJErX;}*xz z;7yrh@mA9N>yObzZU&`#O{z-;-}nzsS$nH{wgq#;cevtE#Lcq0m%jOhfwVL*m=UX` zGj!fX^`gTXC9&$O z<3`&-BdCl0{=SR6Tu&Dq2!l|p?$EdnqwzFp(QfT+3$rJUEU||8b|!Nhuhk%MZXula zLIi9|^d8*KJ{BT5i=GF08Zi`$VZi=O}O8iK|=jJQkB52w>r z3Bn07Sfii3cIrro{py}(r;<+xwoJb4CX}5#rQcp7P}cr9Ss->1ZWnD zN;IdMKMkuF0FN-#W)ioxE&ba6xgQ6d?lr_U#!6_-bpq|Z{>bfqtk+|IZ%93CRD!={ zP|2Fvz}ET&6^Ww>G$odaOLyNn-Z>rh>=!j(;)s(|i}LXqc0uCp&mTkA^w8hz(5MA$ z!S#{6Ie&Z>uH)#GG_RyoT39jIaII^qYXp!@dg|v$-Cz@-E4jvi@O)t|0=klY+}K;= z1yDB>eO!v-_*nlc9p?Snq{Viv2q&~P*TS%^4P57pUZ$DWgoU|-DYyd@CIT5m|CBwd z8xk&I0u2>rPYhAx`2&>g)Cb!*?6C)o5U#V09AhrM7Qs_o?2V?K^f*A$2G@)J?&mm= zG-MrFbNM%L90I%V$fx6ny@Cw&aFX~h60&JZVo%&gI*oUcAV7|#nlP~@`LY?O6v2<& zUlItg%}O#IE>B>r4nDhhxm0(yzX19QdI;a|Bl_0Km<1&N0CEjxW!nf3x&HQc`i`I- z)66zfxdRMrKo@rI3((0K9f?BpV!HTDdJ$XtSCLVmYIdc*MPb*2<9BtxdATBX{`w>( zCH3@-kn>O4at)|==jT-LDHE}fj0W1@qI;W2LWPmxxVC<8e>K*E&XQ&e!*_-c>$-qD ziU`P2p^A;pr-Xpg}u4Nv1L#5F*$UTr(ixgkf6@ozQ-45FQa z0s|=!0)6(xGQ&52{}y03;z!q&73He!U@`@O0f}DOam^ppb1f^b zh4gCZGC$Y~~x()Va_r8=e+{(02c5i{c z1OpAVGF_N+fyM~@S%0i+w!2HFq6BYtnkkJ|j%qu86B-gC3y3Dvz4!!G`9()o0JjD5 zzKeu^uZxFvyuaL2EmEZcXsTZqEGsBf>wL5BYi<9V+9i0VoAPuVPw<&-;0fcot-N{aH3V`iwsk=nymhe z_CJ~%53Std1NbjvwCH`IN)Zux34-@+l%0X{8BrWOt7(A03WtdDKTU5dWyTK(X@xI_xgaG;Sw%%&QX%7RSWh72rQzaI(|~@*a{~X0uy6-Xb)WBl zJoz;=2CHGNH98;T zmBnu9hvaw=@m9jo1yKF}4XK3#p?5a1pbP!~?MhsD^_SbTjmW_)IvF5GS=f2^wV^%Z ze>;B!FD)%zK;e|{#UDQK(Ls$J%70DDdMLE=$wN;5sPD~^q3te;mTFsBpAUw-rj}mr3#O=?qZX z{D4u#qp&uL0|LRf8<+sr|5sxNQA+@%y@G+?zhl3=BKi%Jli z{2fGP77OsNKZxG%QUQlCsNDSO?`Jx*6aq5q+~c9q(Ig;ylgpD!*sLC6jRR7(ApnfA zc7doiD1zf@tZe;f_1y=n&4(Ti1|m)O`z64E1wiIbLr*VreZ0g(K|!HfqRHY3 zti;p4yODx`8lC3R?PQr{aBvVf`=R{!V7aYD_;xi2;8d5U3)wI7Lt^w&ow~1I=z<|f zPRM-t4v>$N47`c}qI*x{5wNsEj1{j1ju;m=AC@c~9T^NgGB_9mi5UTPsL{kfH0;)ZeyNEUzh6u^k-}@o=)U6Hz--vA2Ph76{hsbW{?tP0oSIU{p}PfA{lYg}&h+u!fw*cK{6dxcQ`RA+@pt%1A7}xgz z#SwBU2;pa7JXWv+0D6@w*(Knq?Dj&Q=egVt%X*N*A({XnEf0`2I`58AwCvDOQx5=Z zIc<`mUz0i@@$!4Vvm6{6$^ixmR#*s~G-*4IPd<+qWfLH)IJb%;VgV!S`xa!sP%8_Z zO+gLpfxvXV|H+#GG37)yL)NvmHPsr6_n!Mj1rZN`Y=Z>=F5&=X=Kw&fp$7aBB20zg zr$F1Ojph^MSqYQAR`lYPxSc&fM%*MAo@+oascEQ{PQOd()!ncbVnwqgO~6#db-&E z>g=zhqWt3bUwDR)?h=p^q*D~6Lj(Z@>F!b*=^hjWK>-OV2`TAj=CB@P2;J>=vohr`)#fOfao7&nZ$BkiO*kG`Q zExey3DJcoNvFSrUFc-)2HO47<&9CoaE`o|EiX0-bCIWVrwO1F&(#=~GghR*JyKCoW zYs>yPWQmSD{M)y0vUYz_Lv4`dN_$%+-t$J+3A^PIH+Z2`u%^Gcsz^57m4!m7$uWY{Du~ZkuaXwEc`Y!_=qd{sW29O}Q4BV3d zB;n3(%o3M{<<*5(63N#*@mwy?oZj3s=9sjhT19grUfxv&`e;79Rgy>%uW=B*%Z0do z?d+68)nY9{C8pZ}K?(!8Al@o{A#i;=@nx~vi-F7h!-#i=^q_kp*@Mfd)F-=#m9B?l zAC>X4`@Z7@m?ePZ|2MM3^~j)DF_klxvc6%dEIGum;Qbuiwr9`GTyvJ^*xmiqAZei@ zuB&-O9>CT}iymkKD#Dw$;JO`7QSwW`f{6vwV3hU}?6<9^(9P&_qJJQr%{^B1K0;E{a~IS>U#s_xAQi=jE|C?1KtUssOFXNbKGG8i+0~T17)2r}%(>-|Cy?jRE6}06t>gFi$QHVn5=5 zi^m4TGX;nNdpVYSTC>w?mRmDVj_a%OR5pJcQmcANnlgvIG5CH206tdIZQ@Vy z3-nq;I`YPSw|U|G^qcp%9ju*V0lDWV3Eb`^TZyOex!i$P&AU3?i8Kohig)mNv^(tR z=ur#d6kM9ri9ngiH+vyuM}5~GT|r)6$=SKA0JHZYKd^GYZ++`kz$kfylc(Q?gPpmp z>rpa`z(VlYV=f<;KlZynDL$J@Oo1}%OZo!6caC?o;_X2;$XRS2zlYPUWOLu~GL)+6 zlkVA78!{_AdjEyi(%LIV)ggA~W@67UK$Lat2|fRgQ_ZX9w7aYknS^ONBj10n@(D73 zUc0|TPQ^|Rdq51UCw2q1(Uownl4!7c7{tWJZl_f`El8qPeJ!TfV-WlC0t!4CGT9dd zDne7{qiivu4ZPa3@oAhZjb6SLOV0qbK{THG50dfnARbycZWG`>LgS8hig8W3tG*kQ zsBBF^1!}Hp7V4o7UYFyyJpw_42L+tdVVquN<$noP_4Q`R>31m_)K@O^Ne)1G!o!@R zPb)BVi|bd{#KHR0gWBpX(oUAfV-aseOPM*>6EKf7;!;dLoFPIq2g6@#~M5ef}x6|TTxLgq?oZf*>P}p*s{s(E|95m9C zTuI@i=7b)(@7LDIV7RA8I;tdfTE1HS4c_JDU|6&`l?xyWES-E$w4CpEX9@vCRaH`x z7Uoa8eRDDAt|;lv(axf}_vn~xNgzj|IZzn(%&KPL#5>v^@p%`J|1tEIE^oOxEnkA@s^wz`BQm5)F_Sbh# zM0J%JcGz%-jm!jZsu5T7?(Nhp|gLca59+JSlz zSX02P;|Sf?>J59E`Y28;Ps%ik!RPiJm#KgHEq72UF*WI4^ANSNh*+1lOlw z^4ORSGNBI+Rcob1aI^i{^=Vl@bIaKx&atQKk+aVg!@Qk{*=@ z*M}!P*i&bwBzEy+h{P{9kRlcfTYl`f@az6F>Ir7A{K*{=ZnCE*`PmWO%N=8wnrg@x zdg9_d^g8=BrqVD0a#n>8bpe5f?7kNCC?XE2dM4NU)YuF6#|ZZuLT}H`3s-YXd%q4n$$|2D!TowCI5%fXeitX^}Q^Z80I zL}%+Vvs*RJx8txIS`R;12&ZYJ;~`2yi}Bt@g@_GkI&YAYvI{P8vH2X4Oq@LBHrJ~- zTy(J*Af63HM9$0Er=(RP!gUTGFUHG%mYa7ZRwPZUJ)0v=$(6HKqe|@#v20-UE|r&g*W698=8p|L!1-ry>$4uiXn?m(xY_AR5$9A+ckGH>*u3?uIR* z4a_fuqN3@LY&7GELGA?mG2Xje|D3}xs#`OIk*Kn zwEdU_iFAHpf9-yU=M*7al0mX;VIYQoNM_*R6{s`y&3Om;D21F?jPS{+=ys8WK|`0zYbN`D@gl52hfn_7{YZK%#`sgsN{Q0_*Tx)39R zchpv_?D2OyekN#JI@cMqGP!&IVv^V3MQQ}i*)@_tk4uUi+bYfiwl`%|7M*K<)NrblWD>iI*Z4(Fg{!`BxSkH*TYy^jp!ARKmBP(F=e#pzhzwn39 z#`{XbB?yZt>Qrt^vylpM=x46W*2@^cMVweK&~`RYOO72^_3-D)sWAT!Q;T_%yNYk} zqMoC|L_+q0aDJb!W{t7R?Z=%Q6txkt%;u`N13R+cu;n15$S))xcpiDV98nauoa}eD zL!CZlNu;fpYf92kWIlB7DUH$*YKzaM4xeg24BZl+ost;ytvvp;p({%lk-c0&Or=c| z1dCw{<7h{E--qXyEvWkPsP)zs!5zc!8t!yyRG$TnyyqF*oOZ|94-bo| z972Rl;yi9bR5@a8GCGgFcGdZ1KA2ybV8rgq za4*)!*SQ!e@wKM#X6xnr^Z|Kb(-#D4-F%qZJ;!H#*tHf_Ga!XkZN%)d6s>A(`NmLOEkA?$;#KVp7f+ZK}O-#)~u^{S@I)XwB~br0== z2E=Em?P6O(5*HI?^;rB}{-_EpTbq_0x6`k6jD9TyI7Vk^7+Er<46{xT4T6I1_Yz)G zMeot5&e)W;>^GW+MBqjuui{n-y*d3P#(O4fnTMF_N8vPiY?B^ewcV?~x!c1gqnyPRU_VUWnQ&?H}8-jzpW0=y~7W3O*qpY~a7J zOz_UM;cg_YC;T>DBjD^_LiM^c>fH66vfevFsQzGW!(2#YPnW>PhU^pq1L5tp=}@yx z@;f+&?kBzHlN*z=9Sp|9$pnj^(SA9SYa`VG5DJ^1TjJ@J+NkG1M-w zfT8iXVrG=A?&_{k_EF3X1odfaFRo;$QnJf$;grqi*2FrS3v=~q`um4j*{uRE{S_-> zSV!gu={(t_QBu@i+3VfQ7YyNcu584F4tTtq_BGoJG|ejR`|K+0OgQqTI#VR<#it9u zGfJyflmuPtID$noRBIw@KAfIBnf&??GgEc4iTh<3$T~ytr0pp-w^dnmo@BlsQTtTE zt$yiH6W~&D%rYf3CLm_r3wOhqHN~!)92)R;-${K|8~NA|O_3<)_+YA;-hAy!B9GpV zFg#2L-Z$5SiGOh_>WFNo?EN!w9Xd4Xq_b<>O6w#a?Or-CW6C(#t|RsugGSVYLGjar zrYXSEF@;WEzw%ZMg1e+|JJ$(sK<(UK-lafC=GDPDM#)Bjr)n zB*i}43Vc>ZC)iZ+Q)sNs=)q59tM)E46dwMgJhVQ|rpoZfyulCZCP-SetY(m(v^(ag*%OdPb{74pg9QpPR+7sC6K z3-Zs4)28UWOx~&=P69)9ZSW7Q=GjA4^mj<{ijCem|K#j@#tiVD07}!e?iG2+YpSiv zga&Ua=Lw3lH;1r9I`zk=M4Rk3ju`8`LU6eg--^PNhG=Cw{o-#F1 zKjSLJ0h?~8Bq-5G-XR$2vl7TKaoVZRkv0Eay#*M&zBZ1m#-zXl_1dokPS3cXw{Hu}4 zQJvBNm$zeW(_z1}o!Nce6d!zwSLx2@2^W1GtXr0weEaS^?$f0C*5WFvyA^XgiU zv0hKIUwrXijzMQ#{d;K?tCg7JT67vJ!Ig^nK;BlrCV#|ykjxZ$3i6-*eq8v|A7`F! zMriGnKS636u*-N7^U#B`@V zeugK>5R)8s-rB_+@N{fSuIVKzeJ?BXDU=rg;eu=||1Q-LD}=;<=HQtU{heN1gnY3f zS%1b&oZB4i*c$2J?O8Q`e+M1mVp+C1%J9rP+C^+c1>WM1X>^HWkw%*wM0Q%qCDQSHkb~1sYjUddD=oe16@#HO(vsoo z#;Ur6Nl&`8`Z?TUn*A1nFt~1Tl!{gXYxL_VN0Yx(Cqon?`O>Nt{K7oNc_I?LVM;7Xun23?l-EE|^ z39Y83dv}CsiPSUD;uhFvXs+ol6*KVqhQ<%W$RH%&-WWL<(kgRabl)Vd`kFbP7oPS(jEX3_VwKU~ z=~OF_G)emtkhe@=Rt^-Tv;AQ@o{-oiZ?{nLV_*qde<<;s5Gsn!&=bYy760*cqh@Nf z`bR)p`PK#}Ix&V5k%^7hHMoJ+W_6JGc>3DTLF#NL>`3BLA`qQ!IxP4FV-qdXAyY%Du8h-L4F0kUE#A#saFwDNi!g9|MjH-ybmZJ zMgcs8u2I{wp1q^*76O-&`SnQ33w!ZY{!zK$4hs`IB3mbuPL>323baf*Dq(ylm0m=F z->f6=Y_Kn7EbrC-JoOV}yV5?@ufg-rapvX_sg;(!uXb12k(g_UHH3=hYgU&Duy!4+ zrw-4$iVG^A(2L*yvd>{_5AyII^Ltph#8MDt5PC&SSJQzsIlam^5iHwMV4?{_a|TIv z`Eor~d$F!;OB$D#>x%36?4kt?y3!fRnDeeA3&N~juGO=q8cl!aDx?`*8={GCJA?#O zJrCR9rIdkd=q>?X2>A6zfs@Fci_?m{Cu*)7x1W^EgR$rCmTL|1fKyBg+pF4uJGtH$ zpB&v1wxg!<>is!s1X!0x6T1Msm79WBZzc-=J7)eq$U z>5#fl$CLdJvcYk#C@{_I)df`w%v$UX)}*Rn`ek3ELSF% z?xDEX7)*To%;qDr0abYy@LHNEIJbE}64S{fq8AQc*m+9*prl>;is73Hob8^rz<09A z9k3}R2dbrU&$M^eY%6);RMCV;Z7<`gWZN%!rqL|Dx?G7opF7)+3eFSU8Za@<*zCiE zALa`zQa}5qd)Ay~Sci=RVcc|kM{EuNmartu`%bDsQ@`7Z#_zpKg)K3y_^~jElwd60 z9*fmj0)$~YuC(RESNL`c7b61V^1(|r?uj!-#8(wtUGjMQO?2FoF#{ynoz@>2c5Y?Z zM@H`d&ZK_eqI)+nx^+1{jAgm~i3Ib23gkWp29BKmnZrUlFJQvm@xw|2Zje5d(zZE? z0^h8i@EE|)ii?R=${s$FjmMy=brb$)N4Y zf=%veuER3%ibN~5A}WM=Se=CA_~o}HxirfsxKEZ@SWIQS2;1E>gZ4(6lpxlY*2<$_ z?5C|M0ss|pyvqXdX5r=D|Apix#LTc;G&gs(j3b3TF`+A;_Rm6*m210_jXvl;*2Fwz ztzX8zAVhBC%wJ%;yi<75cx;DP()#Nw!2)tJ$pFtEpAvcg1#5*TMf=5FhR?Wa^!g`3 z4}xI=c0BI#3$$=0Sz#xw9K)(fBL7y`7t#3g(Dep1;%Y|P&+u=h_16vW0cZr1@lS7m zK@$yJz@0W3-$hXpv<2^Pi)RHB zqm|*kY8o*An7GQ!$R?!jb6lxd8063u`Z_|-_-QTYU*#Nv7laQdZ z<@%~*1*m6nK+fv3N-$!L=hFEK)R=f($m-gf@-Cw3FG!_pq%Q-EXdLh)P;o#aE(i6i z0#4^W55V)DqiUSMNcr_=s@QDP8t@HfyDWFV1!nSop!4(aHSWEWlTVXiSiS`|t42fj zajnf81$u9}_V#vhR>+c;ag%GyUqemj0LjFFcPQq1hQq9I5AGqtyftQi^E!RAdJfz9 z1N*T80N$BdZfBCiJO>B=PcOjJo;o%8+n3wN!4iqTl(9JoS%Rb?_l>!Zbw8B9e-{YK z`u&zqQY=w8eH59B^=0z&w{I(GE>Cw8P{L@kuoEw^WIwd|dGA43l`iL&2yq}FBgO!e z4u=dm6%|`7>r3@gLH~;*Qk+)c_S3?t27010Ff0`rHE7F6(HrGK#20KP(Dst;O1|(K z)%OBr*s?ts=j~DmRe#I_$)kCZ^8qXt z3NN1xcxL^A8^t0auH*p*EDr!9e~V)TLoke?vSE@k+E#kZPR9h)^dB(FbBA} zo33J!9ihXb)+oUqNOI9Ys?_VEy#Zu(<0Or+r;}(>ZaVidGo-Mkm1l*Og(CsH+4TW{ zR|7<&HB@#L7|0*r@Y;$|%%=N@jqi&<0$Tu4&ZDMHLz@(eEoKZd4LJxj`1Rl#87vI5 z5j-|-CpG|N(>(J#O^<&xrFJNf*tvjFq+)m9;%U?OoN(eG&c zzRx`p#XNUJa3~^&gL-Miy~@JB;}H^S8&?q0iRQH^--keB9!F!mvm~&u{tz783ry&M zPW#hu^$o)ZOYH)n5oH}-lz}^MQQ~?}reE@Ny>6d|^Kk5D^tE|xp zMNGfFgPAc6JeQ0nd*-vk|9Td{rHjUk^fbKZzHy*yjJZaO2RTfk?8Ycm@0*FDB;ak# z1y-+2QY#aHy>O&Z_5!X6#o;swJPKHA(nEfLFo&&>#f8^x!)M2QGmi!Vob^7qJTWOL zh2jCV1iL{!t;mi1g~mLQaqAPIeF1*Df88ShI25!psOUNL z=Scz%P0%6)CGw+Gggfp%TG1LMNTg6<-K%tBFtyRY9!E)%iViHWa)j1HH&*^hE8>j4~k;fho6Nz;}fc`{^TktVUl!|>0dZtb=w zgznH+!_$}$Vn~oU1wA#kZ<$`vFTh3of z7cK%1;3_>&7D=5TDa6Uwp#aY~J#=^QD@BsC(61Xi=h~D|8~GwC^(H1F24zIx4 z;|Lmv9JB}lAKfW;Q{2%#sfG9P$7LI#^gis1*B~-9%~Pe1_5RoU^y7ejMV?3+Csn4c zw1C5HX~T9cgO8O$SL*>a`s!y_lCO&7 zluD37bw!(KDy7jUbeGcs3!Z6smYZLPlxzYNt5!Q2Tk~yhZeqOBng}7-Fp+SY*8m<& zx|bZ;w5jF_W!$(c3aF2lhv~Ol@+*19P4yrGHgG#_YSdbfqbcmYd3fOoK-LvtjWm7) zYXT0C31ES{UD%Wu3%d^t8kP5-g-?Nu8lCfkw2vEEfe(Xn9Q%?yi}zv>mi^k#RGC1N z&kCrp2dzW4^HO_B&s*@M{I4!c?IGGVjz%?x1T>GHKd$csNM?uAIoGJmNDwp|M+96t z-1a`OWztG2FdTzu1KZkZiZ?IBR)*q+Q!~#Lw28<^oX%rBbeMT`YscAZDjalA(r@ZE z36+4E$HQ`c71tT z17z*#xjI)KQPG(YCCtLTy*;;tjn*J^$1o8Bz8arnTVVzOk3PVH$F-DNsT-^9gnjzt zwhJ1waE?Dj1m0fnoE|5E)f4NJVTENMX@V-)Tr978-dvsYHgaNww-+KNonD7EfL-1U zShtc+(M-XPXRcpcW@84j5Es3-%a~naR(%G-alHiSS&xeQdW7*m)dxL}`y_;xb2vbK zht-NHB=}jK^9h*f9Xgr^Tb$i@R_~r(C%41tGd(b1SCkNn&WpKdiQm&2Ni+~(qudTu z?Wo(R25t!q0$8y@jmOiL2dAKii4{Af;LDHKzcS(W(-pAcDyId6f1pns*%+GV&Rku_ zF59g?PZUkI+neO5n^d$Va1J!8As47FCOeN8L<9HQu#6(C-Y)kT`_$Fx_lk2I<7m?cOyvL4@&R2ZJF7YO>q0-Ixu)1tKT^_4uyIudC#>1a5 z$P?GqLD(t9svm)90vUv&NWbbe$sYA%>~pk?`Y*?+o6j_BTn`jwI3+eOhQc9A4h2cS-%#kQEdSSI zQ7di|seF*MCob(qyTXohwFCOBMxF^@cunWyzEt4V0`K<;xKze(A!Aokw^xS=;!(|) z^b;jU%8Zg-Ue>Ko)5vEmzRQ~Snx2c6wOOt+deB{L&vpZV;Ost+zQhOdQ#T%y z`o872=oyYHV=ozTRqJscv9Pd=zhtb>ZIKQ_E1}g(_eK`i7}mT!NRjqA-n2pm4IA=h zJ$E_T!74R)otl=V5LF+DY`~Fg`Ocp-@se>fVB&FLeTl&NOGeP5t7Qd}XH^dvZ-!@@ zRB(7`Y4b%tPiS7F{HME1^kLsqF#d|w%O>8oJy%Xs99q%pQX9L&1sOodC@50%GbS1}oECxIf=dwFcFoF!wGK%JX=L%Z(i}Bpj zc@arFYY7Sr)dqodnm!jZ*Y@R*);1cwdk_dCtjQN2nFxAuqEF(Zf%OY~j8IHzoxL^E;`6cxyo(Z)2Sx?7V$GkzPUs&@ za*e_7U47)CfIQJ9gUCPzx1p~dMIY{7`b4=Q1&*<9k;oJJnpu<65;9Fs0SN4UHQ_{G zx+jq#j)O8rt358Pf`xM;Ft(>N-j_#m>Dyx;sln^{^K?7Da}_g)G$KARah-7D4Z$X! zWgPs0gT@RT8#YZ0`5XI8tZ@e+EV~^jdDxBXxA>m_lpD0kTLERi8{)hP+Uhxe0V}sr z_%dGLOl}3|EHQ*HNdH{)lhJnIV9JM&(`9^-GlURg=c2t3Y1Uk>)GD5w@qy=%MkVMg zm2Z+ZFR^$$pw4G8uWdyk(yulvvK~ZiDCL^YH~)LfnLQo94zM7Q10^^U1Pua-b^s>{ z0>O~R#esmm#&aep1Z5uNIG2pRFb!E5cY4vrpMNXB%9f` zVZud@>b1UY_R~_0&NWvWm8A`d{^#k|*8@MUK>%gZUp{@jMXeTyZd>gkg9e2DlYBOV zDm^KwqRHfP1^N!%BA#SXCrpg>65ctvpd$6#zHAKnbRvaO%s8siy%5mmc&Y2)dj7^p3GssKsj6b|w38?%sG{`Exah>9Ho2IGO607-!NV%Z3$7i9?IY-Hu zq8ZKdfYFV&P3(E`S-X9=vf_dc-^Qi#9U_OP0X9N8#nY!xoBEB~HqFQSf1v+?zbZXe z#loq+bJ8TTZF<&LY@L>3EpCoTp z2iuwahUfWf&W?BKw=Zxkr*gkZzgcxcv@ARtvcKINl-L)!bR89H?7(wHviY>Vy!;vb zqw#v>{VZ?sUrDZ9X#CKJ8-&>Y<=U;+yRVxyg*maoh|>;q@gst}W^ zdz%8|%D5c`Ddb^VQu)p5B3yS1)6}168|A=?9OV9%irQ^08#g^ZP&J;<@p*m1rMPhU zt3~zh!%Mj*HNTsSuI2u=WJKwtaf-!%?^m}fsL-NDO2pUo8zZHWvPe0kJn}hGY4%&Q zLQh}Uu6K`N@#J9gk-tpMmlog4o1zlM!|^^bV^xQQM=gQZ?zG;cg$&*BGk01=(GsG- zz5cK6H!0S5m&rUnlVT#5j$zXuN*k9?f2AV!(;;3IXp4K=h;U82WHcoYt@azr+Hhmo zmaoR%sZ@Q(Y^xh&x_m?o+eSaf=O-ngjztSOPK_AU{>-0p`C+o+FzUj%R@-ajq)_QOMRdO$MHDBU z){_Ez&FTC<8V@S3DzhtS{)P}2uN5!&%zkM$;d#*v`Jtpsk;VB`3s!J+lrnRpo_1vE zr8JXWavknf@W|VItM2TV1IBnfu77&uE(l@&%Siu~ap23H5e0sqHlqlKpVP2fuDo z?0du9wf;cX-_e6NBGrxhJE>-f<1Wsq!Kt0)6K}R9{nMF%>X&u~zdQ~-^0x{DH3MW+ z@0uSPOOG9N?w+2=jML3vRS~+$rfWpvc)P39Wyq6k?}}36Fs!F)7N)7ae@=5r4drKs zmf3u);;J*dUDB#2Gw?Oaw2i;Gv2c2jXP{*hqJ*p`R9)II=egfUl&Amw!dPpoVCDB_ z44qfQsU971&G2!(eZ_m(xUY%>#gNR;YFM_Z#cvRrIGeCy;@tOePC3s-OGi zuRBzU+D#@^{iGi!C=&GMNzf0=r1Wa}Ub!=JE0}Wd&9hY-@3THf35zqkZsDlq7Q z>=79w8(S04llne4`CP#+igaJBNA3yve}1&SqxOx{a zw-ZENMkNa`lrGaxT&po`#WV*p-mQ1>(&0=LucoK-2AW_5F(I7P2!kL@kaL~^!|l6(0k=e7-}FHh+vcQt(> zLOr!u+iv^THdPHTayNKM9Uf}RhHon~=7|(OGPrno4PTWx%=8{@tfMSAZSDyCe0lN=Mc{|2A2B zZ|j5HGPy+#^?aR1e9TsfajSdR-f+T`>Q?{vdQgl*t!_P-H{%&^?}4qJpxx-H)v8dY z;@_O(2D6wN!m7_mIU}p@#>9Uyi2SRVIWjrTfqpbKXyF+9cGci!Sv^=oZ9 ziDoeluhOH5B*KG&>~Y-h+U0yHK3JUYmsTsL@xK(s@;D{k2cpjSN*~BkzCqwssE}RpHYwI7X6Cx<*w-uS`W8ZY6A)SN16iX?bSDh=rx?ITIvO5 zn%?>MHF9!sRVY3eT8jF7*Jpbq%FktpTr8=4p>yTb{ax@~#xkl~45U79F=6znVxvjxg8L zSd~{*h$=#@JDfztHpQ;Rx3E@?zFB%+O0TzI?meIUIJ?Ay@cI4USKbk`nM+g+k94m} zs&HHbOPDUhomgAutUEUr(41e0=_i_fSp0cA!boW5eUvO@?Yl zt~`!0y62)Cl0(F{dhqo8=2uN5e`kjg$12g?*VBbInhV+G&0~4bAcHd3E4?KW5&UyE{QMGE>Yj*PUkrQsA5` zsDXJOleaqYZS0Gm+5Ck&-h{zHKfmp%eMSEM}Wng97+*GNMXCCj#_?E^LC@RMI> z=ygsFI?^xP+xOmiX8tW9v-{F!_s7RKNSRH-mO~>Vsq`DmQ7`T8#_ER1sVs{k1^t`W{NXVx@~Fjr1*! z#uE18f$r4Txfs`c;I!336pU!~aY+{(E6pnud~&~2g1(sD;zb25jDIEky!Jg^$1bB( z$Qp)$(VgDP?PG%j;6ng?#y5GS^tz!LgTq<6B z5J0U2g%nayLIgJurFU8ZghTJUY=}L`=TK5pzo8R#E2DL4{6)wh`2qrVju@?tcOm0{ zCUcajZWq>u(`#@kIHv$TN#TDUq=bO_w;c-3J@idPaPb&aFekuWyUhQ3IPhv;p#}y* zCU{;=ps-S6#g9s()uQdc1hrk)h4R4L8`xx0;(!0%E@!{UvL|C;P=y?U?#)q`!Y}^k zpSO2-WMnShlVZwNaF}{ob!AiQ>>Utqw6qN$9^4)1JN%mdHQw9e(h4yppI9>|<h*VX|M;M-~{xkt2Z+R1?@PVkZb`QK@IBw6P2`@tE!?w+F8ECZlU(Zzc=0kedkOI z_!xAgq~=-$nl8)Gf@jVE?k-XRZW5#s(Xoe5n{i+|vXdB_-Ne^aVB=r27FsCcG+D+0 z?jBb7Fr>kMU}(rv1p@VLe10Soc~_^zkb1AVThxB0DxZQ!e@rQk-Rv{1Fg!RI1D7{F zEG(=HpsL3D6Zm#Zkk3Vqz9e7RO%!dwiRLkm0pZAcU0-*_5y(De;KEIYQ}H?GC?~*C zZQnp6LCU=(07EhW1RX;f{F-B`qhFFq2 z`aqsq7Wc!4qoQu>i-dmw5$hzhh1RjQjliMO`_Q`PH-K6tAt?{PfbuvJl$M4P1(;t$ zzVVyAlez*-b)>DdfKzd=UswPL!EF#f@_4Y(f>{L3drK2Iv%LWC|MivS4DPnQFg^Fad?&t3W&M z4lqp5dLB03-dq-g3_Uq{V=B*c$csKtERf~I<0$ic-e!U{;pxfjk)hz$9RcL6&D%l1 z_?ou?`8$=M^3NDrKUC;^f$qn_O$@1&^-&d61M|u#AWG?hB5)B%Tb_hUU9|z7SqwJ{ zlDH~#3`#%xeK8MExmI#r$tsH;!kScYz51?;wOdS8F<;@0fV*H0e)t#7F{PqY@IIBy zf*^?$qrPe7KYt!Km&~eB?E~3k%PH_O1^F;CJUkQJfd+sw{^tgGA*%3$=?x0Tp&}O)4;#d8qXXCV{{Y>#&WBl~9`*$x z6f+0Zo4LnXbKp&wQferhfU?hZV4-(27+*WA(Rft6wL6V*!a?hQ=HiOqF+x~90f4P; z$t?ObKW!w)$o*NF@>4(Ipcg4ZL$}HDWQ(lC@GqtSo@K5ozK;Kg9sYinR!1T5AXB+5Nbq-2TB^h^rAM0;c;1LlK-R)*R*ZsbEq7ktG`e4opWv28$ z3UXi(p|fzK+y5rw%KnHLQu-k}npj5!DN0w3oqMlSr#Q$KJ}KQ&P*sQbBv7x>%Vh)# zZq^)-cg`H9D{{mtCr`5cp&@@D5Ug=UIT_8iO!sq$aL`H??vu|@zsEZ%QBI8OK*p%^ zk(>R52APtN`Q4Y@9igd8E{&Q`Ay8rnC}e<|0hk}akALM2MhK`~{Qvb!)X_k71pFXI ztp@+sOZi)`nRt(gKon5eC=tj{?%-P^ka9V<3S_9~I-VUVf?RJxce9&|9zt?(R?2Cy@ zUIsfGJ(QX~Ycy^W1bv z(}_ONtnZ=DC8O|fqvlOCl*{CO^DYt%lVuTGK#exY~7^Dr-vv+^Ry&{1^%j^-j=g)e2k}g0n~f{nH0o z*ZH#`8p2h8H2Cing#OQ3;BdG)#M_Hn3$$~TD8$@1<8B3g{)Bel;^E;{KDL|C1r^_7 zFcaUL0;uDg`Fi(CfaHpZjD!QH%PhcFIWaLY-3+gPWV#px0E1#MA^tZ&WL1$PS+hqg zM8LV_i7x$5gG~bBPW>&p>E3-pV#JMVb43gS@v5`DP+23i_O ztoy$U2rXfIv0I}a@UKMr|J#Ix5lfYRii4VldOIPtprOU->pYMg$0b6|fMA@0sS0-Q zFYqayOt##NgJ`WaAShG<2Urd+3=l#q!7{23xDLfYqnoIAw-W>1=zX2QRwkdGbOG*Q zaEdrTTyp@udcjD2%mvnnc|a8ra^KX%r9-_y1=xP17J-Qk?z|*BTkDb~aj~AIohkPb z=u>Z3p5qY^RIjhUHfZ*%d;EH&l|JCi?9><#S6-$|&SSQ0&(;_KxCy{-G@M?X?m7Vv zR|OzA)(3(a@->%XZ5fyaHTF;+BAO0NAa8&btpX4M&rATkBGD-D`j~1P4RkE7#`C*4 zB`v}`1Dp=+s@G}&P@&h_0;Z}aI~gFlFhVTf1Fffa5e_ytuu0@tJ{d7&vPf@P{|?Z+ zw(5f@wvKiI(egJwEJfJKqcq=634PJGTFX{2eZA_ zh*qYb>5gJxAclZ#&E}0H;O^WCg4QI?lb0KJNI_*AO`32NwVl(iESp;QC z$|M!U!op(S{oQF4SK_IvT8xsjJ1h98ZQIolVMR)D+WeLF+*htz*j3L2XTLl~# zGr)i~xA1Qq*k_iVfU#PuEk&^Z(0Q>{v!nIJw7sYE3}J!WgB^~`R(Nk&En zHMV9jUiCUXWItLIE_MdOiF&A$FYNLxRNx*cPvpPiX!yVTsY{9?^s(h*dow3gDoZg z|LjHg{5VW(yk7avc&aD9zz_uc2l2n)8I6c z{&}uaP9%_Tq~}#93Kym2c7V?+O7o{h{QWB^6GTCeOiWB%Qc}W5itrlwm-wSEE0O>2 zIu%q&%I{cNoUuxsU0qSBsn&a+KD^mDK8}ctjO?-^kb%`0rY!qx&&rPMpP0kwcyTqW zHSqB-mZ%C%Kwm~}El)&51l}_{K5m9m$l#zXHa0fo^y;eGTre6EU%3@z9QItUjun$C zZXidCDnSjth}xMyjqUE@^0LaAHw)Xr-X8Lrf&#|Q&Mp)KQD#P&Z~Opv08<>lp6T2& zFdz&11VjN&Pb8$IOe8-F!caztWkyKjUi>B@4VIEa%tGN(C|8cgKWUpH#||XZ_Wr2o1e^0&o^Ao z_;1aNve=BfS$Ho2OP!w-x{o`a7j7Jj^oU?S3ZXecK4biX zUT(Ztokh=m4Zc#idooWxt-m{*n2AVCm8#f(pzmBPaH{2-_RRa@snrvUkC1F^jXzKwQxO|$BwMpYDS`b2EYDa8zT8;A8p19+jlSi8nnTF{r0V* zwwCto+u-t+r+N344ou;}9I2SFmX_0YRPcT6?d_1>p`ot6z8`+i|M2}+{GQYBn6y?` zSN-$zX?^Z5DX6k7BS)n$4ft*uF0uKWC_6{e5cC2W2#6V&Toy@#r3b0cEfLeiSvYP%p5YO}i9=^iw+4ubXe0Mw-wW6W|jr?7z!n?cgZQl@M;^Vuo zj}{cA<92;ixIy55YoBVt#JzmNJ->10r1t-jra3G#MtGK3!cYO%*l1v z*!8gfj;*cj?EL)t?rv~oBqpT1>6*yb*LN_912J4e?9(T#1ZLg!ICZ_XA)b}Ld&UrO ze%*J{+`?KA5fJ`(-Prm*9Mxje`g2)M{_=Z%V$^MzOoTi=J)BIIXvQozd97Ts*)?6^ zW%yhZiUp#vH9z&m&?X7EF=tCg=BbzK2|hnw=rns1T3K1irwjHG+x=~eXVOk&HH6i! zvCi~)xaQ^O$Hv2x@b!HMKHj#nLhcWCJa$(|MS}f>wW*;)VQO7$NO)Y}gVr>&qyCzp zh$a%qChgerY5d|l!)c+Hufe{=U0yn8WoO%6e7xN+E;nDOVbasn198t`w=9^Il_iba z(;G!~w-G7a+s7vR<9;tc!~Jqha?H|BR+*iho!9M{#JDGdYZ%?x)ph&d&C1SVy%U7f zZkYrV6SKy4sUIx8#Zm*;&5|2AI2`b3LSLIauV7zOQ-25ho&xTd)p_^R_DF_;l9E#4 zvZM*6kiY4*S=)N#vfSS@`#(&M87)DvUtfv_7qzx^hk$*lp0!G-)%U#%C{)frpEJuC zt9LTf(b2iRoKTo+bh9f=KLHCYN!L}RT5P`3EVNK-XEt4;$s@!qBt+_ecd;{3VcbJ` zgKJxwH)g&&mW>G3vTb-cLa)hl?2n0zqoX6Q?;~%c>ygp^WMOxY_3ZC2x{a;PAV06iP-w{8SNQ%veEXdNk%3Q5`+0f-jG~mscJDENDSMLcNbwKeCP2abCqTaV9_Ge(n!g@Phqr5|P zPr=?q$Ha)ul<9`|SaK3IxE@J^*B%!`JZCpIJ0rr+n_c+&j8|SoyYx?UT7A0A8fy!k zJy(GbW#}+6&;;E62n!24+vvsuQWpq;i^Iy1^Shmli$$jqHj8m;`HXi%+ICG{p)Aej zB)(0@=f` zzzM6z`RB#O#od{5ay~vj5?*`%oE&Q7@oA8z^JJ60mXu@Y{yX>pX*V;wK#2CJ^ zJy~wDUaX7qI%&cOg$S(vz}7$lG6n|ol~*Ae$n%7IS0Q0K9jY;vOX2mdO<#>h=`=m4 z&9>vMtU*yO$^da`MXmT|?BWGJijk zE~Hs!Zy5EWN<0*=uCZ~VNR`1Dy$u9a=EPpu#WO@lS9h+)h8X0`Uk)4Hf1mCTysziX zE>BikWKZ(5CJLk*hWWU-aCvxmz&WsYX{vB5rTjS3mw%@nsA`zMd=&KUDExwx-}{sW z*@CYmbv6!5_{K5f6G+rjCT3<%Ywhr`aBvm13D|mBpKaZqV$E!ox5--l{UOE)r8P;1s{@IOGDa+tTzFXM zX0c;5Q_Sv;0DvN}_co7Byzq<+*_R|@u)CkV4k**E1XE|pqdvq!4=9o%ytugdSe3pjaHhCXup#HCxq^;rYbItKTpcD`bWI4 zP*BxxIa4+S;>Omi<*gr$E_`ZA$^bYwy&&G)7xbDyqI&%IZ|vX-d`BRr@Z(R@q2#6O zdM8K6FnG!~R(ZWKlUFqU*IgeWCP*4!WpF>+*vNGRqBD^O-eSg-!Rl2Q!T0s`g%NUW z$M+&Ju`|8D+{?+y zA@F0?`)l4mI+SJqvezcaA62@oGk^Q1O=fs!02F05C0Zl#va?5ns+|A=J7L#>o144J zb}9Mv^mKvD3?PTJG+j+mMmNHGH+jessf~R_Ee(@EMnR`6(TpQq`RRXHRW7Ln@id6s zw{>A51f}Qc`lo=%Qw4H7q9!{&$6Gm{;N^ud>n52wdS{ zKJ#D!D2|(4T56NK*qh1TZEZ`#1VG-tw6&{s9(47?^YEH|^;FhQR0r$h9K!0$kK7xv7@9g~fbhQn7sKN0k zJ|PES@EZa;{dqFW-&0ud3+zv2GY3g*#t2`&eBtHg#lpsJ2jS=2bCW%DP^ewYyyAT! z7qx&%{w_?d_zgSz_-%6;Ic&5086^ndj-@41P)^CbPv28gQbIc7Ye2#uNMM2cnV1-? zR=hPPNzV1|2^8OaP-6WJEf+w=2Dz@it?i3MIMEr{4MZpI9?O;_WHo?LNk&k!v7P1h z94|E{fbz)>YC!}EpD4)89?$=7WFC__Oa~3l*1NpHTBY(je5F&)JDoL-tZ+G)UU(;8 zJjL#PYah?7tF?Izg?44Sjq4{TejUb8ytYuw0?MKFN^@G8fZO`vp=^uqKY(L%H7iZs zJw1u^y&kTQ#C;KG8(fOnzW8i}^YD6{Q(H}!tW6dwdxOdbpj2h2&8OwhNV8#}jA<`j z^OmZK31LdMkrU@jZ3wbSHpMiDStQ>hq1&)H})qdv8!QEDZzWcwc89UEMfZ9X!%FWuo!gt$P z`GK;rxU@9)#{?AwIg60zCG;Q&KAv`1&;1FYO?L;uhKB{99SEV>YO91ZAxV&00TiCE zwn8NE)MS9$gW=3>PZQBOv_5vXUW<7B2ODI(?{BKD=f-cJ<>lq;8XBU1{1blsLrWKnKTRuuH~$N)-$UrjPgUrW&U z%~UN`lTG0c2k*u0{?iV*gd{6EctK$HaR=eTqT^aY+Pj`t6HPf&N3(9O`DN310c4 zqmZZcfW|K$p=lQBqVAxqQRB~NWB`VDW-E-r=ZF}J1tOJ}`ZxPxG#g!+ILwAO!AgO~ zW+(8@&uz&C9}$BDdZJT>yy9z@J&Qkz?yj%5gKbD+H$e%-V_F9|mW1Cqn5E@08bBUg zh6sQ)8l3mq!R5#HoCQx?;c5k4H+!R?tqvl&_s^q+S}01Xv7T!O-}xgV0s*Zl9R&Vr zeughQjTe)44K*!oP&hFUo|FnS7pj%%NP%djl}}yG@Oz@*<*loeGiQs2BulNGmaD;G zaJxNioVVB_-KvRKgE|`gC-I#RzmV7UX7j_b@oMWAG$KwY+=#uu<9FHb1i(2-$cvkT zf}%vfC5)t0y* zXLm)IfT#H$7|8B^YCu9lV(XEbolUh+W0MU)9vUJ0_tjN{?g&yDS6A04vNn(pvHsMZNDZ82#)~iT3sEF`lUPN^!jjc`lK9gV3_>T=>R8?;yWu92=ScX zFJv8XMCxo645T1XKmwtWP5hK2ICv$DLnHg!**z}41eQDI(&!k@TgXpA(lxD7I_H0Q zPb!>{BM^`>iHCQ~05Sl6#dG3;e*M+&eo<@@j=o+dIm};%Z|whv4k;j~*Vo+(3k&0h zDtw?lrO73NWiEgxpb!K1;vjj)-=rdkl@&`3!x?i)Li*_sg~1&92PBFRS|))=FEg9$ znL#F!2e+?QQZh@SgdxBWZgyiPoA8jeekjGKAX$v91T5mS(=yx zG&Tx=lT2dSoSAcjsL%iY@AnsNC;{Ug{jIz~9=(jH3wB9;L zd~ST-5L@QkP7t#PIKXEG!Dl-YA@RS^&_skV#pn`c=rlJs4`j&_0Gp>K<0=_lu3m*% z@IJJmR)2Ghx%HcBOygLSqTHX0OIcmK{;CzRzW%roRSFSokxD6sE&A2u;TqmKt;|9k8VjyE1xa!Lck&5R`U*60kp=5dinJl$wd6NcR!e z96`EJ=|9lDk9&-q`j+8K02ZvlT_!;^`$d6v#}}_;yq52QYQ<~yjl^dgvk{ZdHB^ku z;fT$Ph9uH>Sq;%IM$!J9JMW^Rj3;oye7Ev~9S{W|mQ_aupZSSk;thnsrcb8P*+L^` z3Oonf=(jK((vg4Oi9Bi~35DEQ^Yl)zx7Q1H*<yB0x#wg;q9<M9$6dLR!DtaStta++fS0J9E=KWO9d zb`fECZn{B5{Nq8Nv;laK`?6oB7o)B&4s;vbcGGHFdDk}Wm9jro7&^M{6DR)YX>Mt2QI!kGE$59TiIM@5pR6!%I?N4NP&Cy-z=@)Jll|M|&B z=TD>@a(yr8m5qjg3?2{AmU4@)k3mFf`D2X7duOw57ar<( zR978?*~O(!Y8iM0#j7|z7{CWpq2e=tKANwF;#!?L`!Arj$Hco{^dC4lI7|XQtJkL5 za*C4q_nC46x}jc>c?>|yO1PR}&dCSew*AIOLD+X7zZtP}I$&RLh>j-8sZ=xt2G7Y8@D zd;qk+2L-KM`jV5AuWxLGF5;1sM@Ehu9q`Z1&8_Y4Yi;IdNwb)sw;tePzzytkQhacU zO({1UD?@4>eNaz^cX^{aG7+_su{T&S`~>l?z9XT+KYa6E!U(Vc=Py`=gwjBt4w_-F zi3b6<<3Yeyhc4C_b|CP(9b4~zVx(z`ZS>bE|NTn#I~X!p1M|SG{;vD z9Jw5ol)B%vZF}?m<&v*aJ8b&d>(5eC$?zy$-}U-~$6F^@UO-s^zEk?chZj)t5cGne zz(WrM1OSV!%e{&49$~=emgqLdkGy*b1C05y?}H5n32!T4@%xFS0~F_VMap(q8ovO} ziY_;{;&K2y$*fkwb2|J@(B$^XPQ%O1jrO=p9SPssggHQ51bAfizrD~`b#~_L2*S*l zilIRx=7y5(fU5rng}?xEc6N6YMVHex{-CVXFUxi_2$dsI)WQ)WEDqpif-~BdQCO+6Vfo7@DApZ zVHZYrppTZ0V}#lPnc{=E8yj296)n0++o0-wE+?6-c0wFZ<5=s!kGe@~vb5TudhLoP7YjPDJM>Zv=4%LXCC9wcLsIXUm;R(M)Je8x!gfA1M`~im?|0#Jg z98r5pB42$_1E>4;4dTb)!D?r7(bzq z9^W13sbiKT6^l%elMGRK;7ihjipM18TQ7d>nAEOOJGTn^9r)O2@ECm1VnWEr-}*|( zKTwG^N(n^*NwI71GKAcf5YJC=jtQ%@W}U^`O0OrpCF4NidHdbw-YdIjpXeVlm{G}0 z7d7Htw8*~*6OCxGelCfCiDXY;%o!+Z?Mq{U6r~4R{HaDx)wOE}Q8w-ePkA7LX!tNj zfI8InLxwIMLoRp$l%md9B^nus37}CvxSaiy2T&sz13(R?rFZ-BS!3qzSyr!GgqD){ zk1;;z41GSGX}tB&k3~ZcMFEpzoPoX>Vumh(1Q(27L54`T(w-3xhCe`2=ISw4nsuXi zX;m7imhC=BScJPnTLSubY72e>WLVLT%?gR&HfaoTajI%t z8bk0e_^=26N>oKIV4)e^dM`9Gr70krj@V67dppvyr}*Eu-{Y3I7xrkFzSS`tXBNE+|$^A^y^g?BEoaIgKlx5;*C5&+7!3QRF0YD;n*bmFc zlZVuRKp+6&WYm4JH;iK>u^wTwVc`6fg5#kE2 z2GSYb=A5SkPoZe{mb5!8`5=}QhoIjN!kIZw`hPotd$qIn|KLQ*od!QiWyQFqd$R(S zFUdj_fG^*>a?e^*)4DV5C>Y;^jo|RW{PpS^^q!^Znprd++45u{YH`0#oitr+G-ANQ zPf(10yG-?_VGqA{t3~QeG_|f=c#}&vRD|=TeBAB2l)`q z>cni%zF&?>-7EgxRFs()7sO!f_+y}NV@jyf-uqY%DTv(Qq*&`Rv+L}F`Pd#Vo0KMv zhdjmi-&O77EFJR?YnFD#Yv%n4)p79_|GwTD%6cu5+VB#kwYP#SyY~5St{Bc#FttBT ze7em%nMk;V@gg>}QW;hNma2%mD3SJv4glV0&uZ#T-~MWH)eDp!)W;;Jjns7^-r8T$ z5gxtV0v!pC%m~}y7ON^Dfxjobz}F9Yae(#??mu}*dkI;@(HY?A`%`AViGHnt@n$4_t~pof1-jPBM^nKzPYRz_5-1}vLu82GfQEaXTQbUD9~sOi~o znsks+DCi5p;rpR5)Hcu+0p^1>&b+wsP2spFn3ipalGV&Lbh>gR#70%{a zC{Z8>u!D|v&l7SmY2PYcOd+74AgUG7mtHHFYqE2;-M_&o{3={2x)WsrsVQ+Vw1sS~ zx9hV^5alr#d@=rGFNzVanLfXAqQ$H!>d=pA7|V%ARUdb9w{Fwhw&rIbg=weWWEt%o z4>K{4oq;nq&drTzg!|;74(r!K^%Xp>$64*CbS-E9?<$1DSSB}9+xGF~5o?)tu4i-i z6Pw#IcVQv>BA>A(vz32WPP1nj3xTw5!FlOw+SOTxW}}VY^fl>Vgw=G-7n{S8i8Q%j z6Pi)N7Td{0CQ4xg5AeRKv}^fG(}9a}KQ*&4e(@4sp?NR}VHY4wLGhO_hc4^4=6NX% zouYtjY#!yhqlMLJms97ON_)<@&~K%<85rnmF+ti!cG)HiNdst!O=;hvet?vtVgy)= zpGy1lSig}EAh6v=ql$6%Z%#7{K2w&Pu7icn7;(+iv{8@dxJazJWQ9U_>iTHh+@Hy5 zlFn_%yc~g5zW^krHCFam9Z2)8+)6D;EfE2IETFRoJOUU|5d=G z#-O`};eje5MS6he%mx$R0}>Tr$Tlz>c>fK-0kHfF?@ZU)1I#&-DTS}EuT9Xq)*a8U zHuuo{g7fB)b3U0I!!VZIO@Wv!J(yY@F>7SMJC@L}-~z4K53nxXd8~7=Qn9ic)*8M{S z`WuG-x{co6-ammx4gpPm5c!(CW0;cE#xJ1LyA_yZoqYI|(%_%DyBB)HX?n+@YreYG z36vY@I`01JzQWR4HQvEL*7;OfABhhSQ2c8{g)StkHztC#*Nx1Ez?L8kE)TCSy=1po z{yP5W;@0I^T*UKPwhQz^EMzua58slFt#VC3+m7H{pO!t=2i;yuu*P7_I*`a_Y!2EX zz%eoE)cq_dc#A;13^#z(t6Wm&%Ou^G|k3okD5=``1>Bb z*lDp{9V>^XXU9l{*mzw==Y0NjbaW7R_r>ORFHcYYr>7^Nc{*GDhUo|u1N!8C z0UgC3sf+}$%!e?4^+??ip(V+U%sj9uJf3t-eV50IcmP8umZirrXMzFmI0Ul#qwI^h zoVOw4FAq|lC*Lw+pOh&|_57WoINHR^3qwM=mu{cO|C?I1qq2-vTd4yC>pQTK%xTdM z82OR@IEK5k9&#`qblw{e*xlXLen<2FnlrgIZu{+z5K^1cGe@?P)X)-Yfv?o2n?yH% zNXGMqZ6c3UR${nDZVcQJ#XN$^T_spoLyrL6#O{@vbq>l^{zeD}%yWWTu^}K<)D({8 z4?K@^wl*)$Pb3LzZ(k=cSO^XEZ?7nyeRyNKzHMNf3QH+FGSn7mM{YGhe8bhHRctsl zra_ii855I0zkHKZz$=>!kq1G((Gz(ANWjJGy5Ted4$H~6TGf`~&|z}3Hy@B;fYHKD zd?a*g1av6fhV0ep9l0>sx61!)2RF$d+UmiSu7*HnmY_NNS{HjgiD*P-30 z`V()r%z$X$;84rOH}Ptv?H8Zuxp>>>eJ* zP*13s416$G#BMcJ*8{~EHzcZqz1+$np%k9{|f&Q4Wp7n0f+SH0Ym_El>t z*7TTzb8R!)?R_&+b_Oo$i4g89CQYd*1ATQh`NRI4W%MyigRLl;%YWX)DX4k$NE397 zkAlB*S>D;kwG678D0TG3pGef2X|>RpbNzn&goZghC*>}h42n7K$0VHAA2_toiS-}n zJtd%f2@VaVVrGsgDY0TW{=ZJMrRCwc5fI(!7dswu ziweHWFPXyhrp;sfwqnw-xNV1$Z^Hn8l8Y*iEL3B_kW&%j!a`h5k>yMD2M1%F( zgiunD&rP;Rv2+eg_(5mogZZ|kjK9)Ay1XH6*rHn z%HK6gndWe$(&fj7TM#IG0gBJpIsi!l3W=*TGa1KY^~IpisG^CLM+nvURkzWRv6&{$8Z*Fd4;p6u}rAI)=qA6BUX9W~Of&Qp8jXk-h>bt_rLilBlbZ?09 zy{wKguDSc1fJ_J4zE*?kS)EA>4(IaI19hZNZNhF&NE#OEg!J&>8}2v6{;xCs9MP{C zSaoUN@EGsaMNB%ltr{8OMGmiYcs-|{g-(?z&mcnD`h46{9@O z8kG>4KGVJCw`2z@n05){LkoNrE_^52<++(bsMiP6$(+snt&!EMVKm_#QGJ_|`*U~o z@nNlAd^^)~IpwOjbz9vNlpa*aWO`Ngez30B5%Cy>gYtNnPj?=?tI;pvQ+B?TS)=kb zKvKS4k%Y;v>xl9ne(@6}{ZS?yHgKJ*U?iAoO*lP_DID3qa@!Ht_o)_2B z>ZfX$JH@({-d%-S(1zMVvi8}U{>G>Nn*y0_pFdu0x*tmsvlK+;Ed^5wvM||)e09z< z2Ril_ai-hQ-a$-AK~i2v`ptRK9!_hjH>m>C^2k}DN)`^sU5lhv+$|sbgfaoy9nJ8x z=Fi}@o=#2?oL@iijLBW^1CFXj?vfcl|EWj6TPzjo%vMX;%M=Px%YKc=oc0(mW0OCg z_pDK+7FSCh0$F_SY)SNct!9d`a{B*2TO&d{{0@Ez70mcAF6)0 zTe<#LkXW3Ocgw`@+YJzz8rn(T3KTZ#)*(b4uP|3tW!l>e+C& z`{es0W-cbhH!qDQ)IFSbS*Sa6EV1^yMUU>!4Ra@-K!hd}3--29Ye~6!)KqWSFU?2k zWSWw8wi7LwqfqA33Wd;LH6i)eUlRDd+?n~@n&d9ZZnT+a*^vN2V|@?>hgeHsdw5N$ zk>Fb~=4Z0C|52zSLW?f*(fkJ4D*10ueX?8Jtp|n#O~t=MTs6{g6HpZS5j{x0rkmHNEODWN)JMTG9FCccwT03hjXH*}9r!Ux9DiM^_e;x; zsbLs1+owt)3=ul(alY@nixB$C|UoOUapbu+lBds!(}UTC^emUV{mS}QQa zt$Hs76-;^ElSVKLFs&AhwZ~)bBV4I@c-9jO(dY_Bo1d_>Uo9+_fCL;DtQwlJRTG?3g72S$Bd zUjJ))V^7Z=7gJFPxEp(?-)oLq7y=`@+H8rY+x-3p=}RK(N`I0X7+X45}X%!=nZz01u_M4XQThv7G`OkRzN$_hn2HxJok&NGJ0TWB3#LS2WD{J zX>%_6$$NIM&rF-=N%Y=?C+xwjWmqZEE+lzVRzsKLo&vE9;|1+ieQLZ5fo2h5kk#JdIvUSt2#l-RQ zdN{zYvF&l${uHrS?iu(BT-g&AEHMSqiGZKA4F`S_H1}_(6*G5q$d8 zksccOPFrBw4wHTHp|i5cVj<8i-#RZ@GyrMoaiQirO9&&9v8vS_0-xmw z=1Nf}3U1sq$4<5BW}S~howy}6_^L6~{#~)<6T~>J6gK-rK@u}*!Bk8OzY*=%-- zz%oA?gv%5sy0SWXULUVNM?nWw$X@>`dDoA-omaWqGmcarra)RNPF z#%lCgSp@E3r-R&>LO5SVVaL)AIsu&JF6F5tL#F8M2^iEN1uf?2#l(=TmS-^N$!L5~ zx8q}@2FT&@JCyEo9sg8MpHKfAx;6bw3_!sgc~mD96dVnj$OO?0e!y-un)f)SPndAD zcdN>D!?DwvcFF#dfCEbLG)W}f>yAM$7`WSpd1I^6H~Qsa)uYl@D*+!&?F8Xky}l*m zXk5&zdaXS*L0u76RA(1GH&_Lc)RJ>p&Nl_@U8?kQh=kEu1NpCy&F@;83v;{MYm!b) ztTZ0|GtHC};HtFP*6zDM|Y24*Kp7N1L39J+Q7<) zOLk#711Pp(Pln{rwQFGxXW0e(AkF3pqn6o{BNc|1R^tKw?GRqa_iZw$p7roTj@zkl z1yh!%#cPmQ8!`hW3FeV!M}j7HYOiPAL$+VJEH%?w!!$Wg>*HxHo6ILVFIpWEnCm>; z;&adMriI0#9SjLrqC@cr|Wb zUA51V%0GcwQQNhklZQ~PDtL6Qu(cQ#L9%jJ+oxAtBHxuart9@;=aJg}@_V39Kac-5 zW?Qd`!2ue6On7_5Bp`!q;5j$yn~f+*UrYl8xIyXEZxHng%z~{=8Fm}B|M2_z z$~F4jGX>NBk7uh_e?q-LE!gWkH)~`C+*0gU7Vh+|vy*E_zEbC=;g-!ja*@1YJj!a0GTrv>b5VEPMUFL+`1Z zU$D1(|8hncW6AfV_wla|QCB%kYmqA7b?>A4z*oan;{mij6%&UmlE(+`K}&>|FnrdtT{XP>5#`dT5Jd+F+<6q&PuT!p*k$fGHD+eM$Bqi+&Q`* zXkTl*QyFEr1)!!@_ob`R1B##&1+seb6@gMwqHNaMQXtD#*Z>U!hBdc`Ce}T}BP&+3 zHJpIydrv`LkM{|EtPaA0^$1$wkcIQKPj(t?k8FG+WCnIaLG*(mYYcmQpYz{1lu!R2 zU$idv3(b}%CTJvEJb1tEA%;!hHuzaVf8k#@JXOL38ma`pUsXjrBY~ncp-hY5av!xR08=du*5Ka%b@Gfu<5mT9_LNu21mqxg0xx-=Pe&lB*ZZO2rF$V~ z@riNand(UN$E^0&Z%dLb->#hRxCbx75HWE!;0H3X#oE>12%TD5?|nQgQB8=5X{J3s zE9KE-6RclUN6QG2%Wav`JLL3O#eLCS+JALrw>k$&*TJk#CXT)#M-b`6h-vP;LX`jj zqD!0Ak(K>N_81*#>Imm5(!18Nwx>oH0sxuFo+C$kiSka@EtwYoh?XwTBq zx7{3BSA1uWXSWl5R@ubr+Og;~vt0@&FjPqtg#puvH-|8Ty?s0N8JID}6BB?FWYdMU z_4*5_eMC_d{BMhYX$&mSRg-gx0yhO4BbXHhO%-PuUe%!diDn`SQB-3;)Q32E5%^w@ z1f{;RFGg(A|ArqyxE;sk11Yg#B0WNXB&zuZ3JFr99UrYtGJXkx-e(=Q)D-1+xs>fj z6J_Ynfr6IPYo|s|R{?Crtt||jIqlID_U9}yEnz_NN?`+b7f;v&#I@v(rfJ(p!;_U& zH7Jj}+Lgg7AgOKjj+m&O7PGo@SZg4DB7yL>%M~EjrMtE)QJ{3jP$OfDeZQx&@~wf( zc99Y)lJFh!4r>vZOY%e7yk8OtsT8dp)%HtUecVC=8kM`twVy_E)69o!i}v*Cu_eSi zWC1ohUqSUlDkVqPc4cy9G~FPE)oTmHt)x}gV#dgQZA8oHH~*>GWJ)G*Ss02BUXVTG zq+ zpq?lHUk_+IOMk}fR}m}!#!6&oN*Z^3jRHL_Tb)5$Z~8?bJeALYLtAfGr|dNDV7RZ6 zbc+fq7)2T${nKEpVEDq7Ru>yR1T7i{4|mu;_&-A4W4A7Rk|snITCtU>YMWUyJBEJ^ zak1k4H6~(O7QwLBb?{Z+fj4jkQzCn+btkeWD^U5&GdX$6HCKuWANUgiyX4jJZ#dr% z@%8lcdrp(Ll1A)A=-&m6ZvAA?;PPo(BSsA61vGde5l^spnt?f0Cur_$Xn{`<^kaJE zJ3N^&Py!mvUby6u8|h!v)_oOlQ4zGcY59DO+i_)tHj=ixguG~b7+(997?Gf%V6ZVT z_Cw{o?I67dD|?yOYXC1(nR?){8l;X+Eg+^W3W^Vq);n9Cs0$x@_`JOz&B;S z=H-?jU8fLJ`jl_eMev8SV({{nXoAnjf#3jM3pBB|ObpWA^P|t>Gm0WjPBMkr^`h%d zm1n!`-8mz6?9zm;sB_naYd3fuztrvyLt@g(H$JMcBT~kMEhx=vSePsJkn$i-=q1t{ z+|(BXPMvVNj2ZoJs@(l!mgA?^%mQlebZL=%^*Vuhto0qeT(9^?uXlmvemIpvejc0L z0U$wylj;l0)PBzxJYQ7pb7)lK%xIn(H+)rn`@UnjHU3jAT$Kk&GCD%z{uqZN*Sq9X z6T8vvb7^bNZDQZSc8rI;ol%ub*Che`>Azps7?h9{RY^`Nzi%&*u`XOBn8BJqo%Kr( zHYp;yn&{;Gv(uL_0CHH=?Ud@4zjyk#9hc+6itE4)<<(lu^r;9>&a>(lle8Up2 z^bO*a?@8HhduqDAeOI~M#Qe1}u{zfJ+c=p1AwE1e^An)I0PSrO-$g-$K6&HV-BGd5 zq=UW10(fg@9ill8+)9J`LU%8<-+QzsuZ8@fvP&#n5sz(dRgVHa=s!dkp^6jet0^$4 z``-)MT-_H+ye@29Q-U!=P)#O9zp|mcGT8tJy$x()d_00b@TLS%{bxRAO#|9hV5vIx zHXu})S8erdN(Wkxwe@wS5~iVkF`!TehDDvf?uu$O_%T&UTOSt^Qmc|oJ~k#qRHfV{ zHH610<>clnHoDqWnJzOGjbB47tF?eBI?=13p`oFlTpL*`MKhwxrw{xHtn%9X*qD?- zw=laXb(JeRzqH0+9z>lA8B6rrK zI=DIw&Od%plV(FBTkdRt?dV+woMw36)atrFPFzg6~+CN(l zy`~rwi*v<_xc~228q&bC=cUh z28Q6%?M8`qEmWcn6?>9cbU~d_Y5XqcqrYHC`JGq67e4|e-RmMB+7O0m4d*S74R@R?jDb98>{KkP`9f+WdHiOhPr+~tHx>P$RB}E1>w0z#T ztiV7-3I-OOR?}hceC}6|j%@Z=i_!S>2PB5oFA9ctat~i9z2@P;&y95uNC0<=je`^J z_enwU?1kBI>KfRAd>}lFN2_js`)J%dGSV|YZ_iZWdZdMbM$igOX<`~01YpYc;ll?k za`KU%6k@l4I4+(f|C#&Q%q%7$AqeW^zpVx4|Bk6CTz{yO7@e4#6|5)%CYg2LCx)<; zv~oj3!z%N!ufPEN5(h^NtgqC^kFNyS#fIC`~|Jx5;zLJwrZUS(*-)l(ZB$)25!EZiM4vV{>Aaq|0ZtDHl=JfOGAWUGrVu z*-d-RM+F6SAgTTY1b)h39;*zD7}9jPrX%U4z==3Hqwi-E6slPLdT;nsy8>ixrF&x;)DoZ?c5`?B|rRmUQ z>le6Cl7x(ma`5q{n`Pzq@84SvC3AH@6pifj{oKR=y3ht=XfMeSXA;$mZG0jX;7aE5R>@SSA>gYST2662M*M! z0>x|klcXPX;ti{(ue*~i6{(%7*;J;MR)YdMBuDOnJO%?FQRl6Lh<;E%jLq+}m zY(=(KoqeX#{mDo9Bw0&kT%^v0F; zwa)QhzRU!sgkPLQ;hyV1XhQ~ZOCo@$vLFzHv6 z1h@b*fuqZ$Cm$>7T+dM;Br$1 zbGAwFR|f_JI;D5yGhRA2FBjBxRDwr{gg(ODi&J1EDFT)#%if<9V4c+E19Y3E38P~{ zp(z43+`8V4ouQO`sBZK#!RZZqwtX{=tj>CC zo1**d1xob&Zg!*!NF9@)3W7`WGEvad0u!8g65oE&+WFQ1{kwNhfp;y^eRrM=T{e{m zehC-VpMi3C3b#zj zZU7YKN^UDYwVs<% zk}AL&1Uf1<<|KSKZs2O)+TP9sdhz_j!^277-m}%{%ZEC@<%FMZji+*?aIS#6jPT?c zoK00AaQXkx_MY)v|Ly<(yEIW+vXT}mSqTvuijq>c>|HXmSG1InO0ubB6Oz3N*&%!H zy+^j+`RZol)w|H}UomEKrzok2~9euh=>}{ z8z7I}-bxH%%keg2K72Sp z&A<@TVbi-y+a5x5we+;KNL-ovutmmc$DEHpDq$up3X86*s05B6!a?%^@o@OhY~IiB z6BHEZLdEorSl)y|LEsTV*Z{));_uu`(19RT)wr42h(|#E<{Jz9c^Og4Ni`)TWrHX#OFb3kVG+Sw;wo zqK#Tpilw(Wty+nY7R2G@NR&co*R=lyuVURSIEc9eViX(RV||q7h`mk^RO- zmo+s_Xi3l%eb>s!$XE}b90TP;3>wX&??Dzl`0&a16s&`yx=icIV}^5m5^UV6PyJ|#TRE$D=^rufp<{=!W7U1CJo&V?=Ga^~9 z_oBA0&P_$vRe8mv6?ZEp0FkJdAKq7e*i9NsNPT0l{1vW=i?fCOx%Ki{422Br7r;Wv zkNPEMx2axRO&w1)Y7PH!&*)u>hnpJ_KM+p3xZ1s--N|@fNX{>+CH8G#ytUQ*h#cWF zdw&~iK23d4$5M}e9$rLfVY2h_{*GmHK*I+kd7BU~ul*3KE80F+k6KF|pSKhCpy%y@HSR`?^x32{ z=TGEaGNdJhOc8I^W-PIU5ci?~t=MV%rLZ7`}80Bux&Rb76uJ} zUT0?r)Z!Fr3yvM&lfd#;U>UC z2r?@V9A&jX9rg#;^a&C0oxYqAv6hNQ#`Oyj6eLNPnaa^KF~vjc_!ZfWfrE;qq&u9A zj~zfX(e2*R$obl0$Kmo~)>mhx2-mzi{qlQa;$3J=?*MT`EVdE+2f{`}P5ABllKaS& zmWowkjltG`gV$Z|+*sEi<7OWlZ_Tnz!gee^R`sGT6XJzWfk8nYGX8xlv5^u!n_<~^ zW~)_WkHhZlM(@v`Z>j-6mF%adHyEoqT`|#`{7_s{l2YNDN)(^4;|8;lo3b078 zfB(KSHa=cjRmB4FG$I}{mzWlqQ?IvgFCk?~&Xo4%O9~7~c7%=c6)eC~H9UL+DGG85GD;@GCgfqkB92r% zV|DW#ZlmXiBV2$joCwj`=;5iHZO02Eb&QMa_c1f&_don>(=#&8YUGg!9Tl{*&Jc4T z4q*`xXtr^O=oCJS8&@V7A`%1{2?;mAM1Su7C4`P=4mcLcqeTD_N^D#lG8(RqhEQ>; zWhi<;L0N>2-Q+&ovOGUpf)@m$QG7~sF0nqojTaUa0L=7knxYrXsXnl$bbxjOo+Jc$ z$nRVyCkinWx>~)D<}oQu00JO+Dy}AXhN(9L=_A;7fDYV?Dl{eSzBA52A68jWUSIG1 z^03`2gi>Tv^$P0Kqw%@l5qxTAo(j8P`*kPQxE9vi+(^9}Ar6Mk<2LQOWKbWiTbg=D zQ_i1g^CKh36wtC1<~XjrZtIMYVuEiyZ!>koIg#SLfPf$NW%u~F>iGIEJo|_=BQT|o z=5ak)B{n;xVT#JiNe>%2kY5?C@<;6^e&%ZkHOc<(M87L*a2F5>L`sZy*iH5NzPDOp zSCJ85jfldpqqk=pqL#em1$(RzMfBnUTW~5)IaP0Cea&GifBRYHKKU~|^N7#+?#?dz zJ3{*+hkus$;Z)~%R58yWq>y@}3y(|YV@k-m2k)DEV_xC+mmCP8mY|cEYBLmfi@uI6 zHu0ypapN!@UDS_zam$E2-8+@x6wW!lm6LpN-EDSehFI!|q*?FG8AO^Y*0!|xx3#GN zL<5OB3*JG6Kd&2%GihdaHZds){0{m{_3AzB*j3?%_Ec1!Gfrd&kKj)Oi?O7_-zwb+ zDssn-^d1)(^&;uUF40|uGq@YCCQKmGkoXoMEs=ol_Jc|pWt{#EvC}*^^*_N|$mi$h z6F~{!EcB`QOOy3^P>XwqhK4RL_Ii3tyBMj`^BG1GUKG0RC&@95+&b z^q(&S3jTcSCR&RKS5JYeg$uMtSk(Qy2L4~$qo+y({A~n>qb(=!q4x6 z4-Y{IOz*jqiYfw}1k`{xySRR8q*5p@DNzWJ6Zy}_|NEB>D75f#d~F<60&fPUPIGl} z`lAhnoVcxC0FeVT@EP7gFqbjBMkJ-gvH>(LMRtsXcvZCv%&hB`S|R;}Gx$pK z9UUFfSY||GXNgJ>yLyhwDP2WdyS0nUKu*LE!8ZsX>hPcK8Q0(*zK-9#{hu$ZUp?4F zl31J(qm7`vqJXz)020M%gw*40=`wJW67!%ofh5G>$sQiWyBs6b?UK2GCI)O(g1cR#5Ce`Iw{&Uy=eg?RC?^jVgWk3@g7|s!PSWMu4 z##yo8v^>m8L=N6wUNU`&F94s&Rc~%;I*C-c*ptbr&`i$bKUL0u7dw}3Feu!HcnRT` z0`;CfpU^Sxeabv(xvxOWE_TXNJ8Tl=8ZpGRmIynDSk~`!7Ws|; zJjj1PR^oZ`qp5;;fd~Y^P0Nu6+(wSbSP9pPLZXb4l9I%!!mqcp)#AT@|4vjt>JfAp zFRQ?JjiB1Ydrgtr|G!=8V_gXnMW#b17%cTEM#|b@#$l8(c5sIJD)TZYSy;rjZrKuv zr*blkQnf@TT=LXSTJP8Y?SmL~?`@Gzv+hJJ@&JWCV1@en`!`JikEU&6Li9_!y1DU) z3?Szzs;;JjCOp__-PWJaNJ2;F1Xjw)^7^kF{QuA5W;IfI@!^EB3XxS#qz@AO6(Xzj zNUcWXjYyuB)$yR(-U|Ey2V{yy9a&1JbkiQu3R*-Wv~`)8o0COFNd_WQ&WHPyKmTuW z`Cm0=zmOkh^>VRWrcm}80m?xJ>)rt11tN?kauJ)eKq%a+kCGA3o-SsPI3=euPp~lk zfd-P6h{8IwMDZ~SnLsoUaYa8(!nELV4?S3U@AW@lcrHHZjh=k7Q$tM5gWMISaHM8?C(Nd-(OY0gd<1RxmWp1!`HS+=w8B}G4f{su%1 zo9#j4H%2H>kAW14T__zR&pw;&MhB29(R1gd_!5LxMm3H<&&+p$)^Pk5UCcCo>j}GK43Xqb{T8$433~0fy&X8ir{~x38 z#rMrlLUwxsmqJ^j_I5;`#a>-O)*amd%&{Ilnm@N!{(lYi|5#EiHcKU+zOI7JZ(%Na zKfgSzg_@;1)5Tz99UspqJxxtbReBm*@gI})Zv#bGCUUmn@7*X3)+2oitGWLnC@6?1 zDwJjHOE3GccM~ORPMS;~JWS7P@N;9Wb3+rjxi?uq%KqyLijdv;>2^e6Sy|bkX<4QJ zwoB$eWKg;j=OWJ|10{Zt6MP;>9v>6>FX9`X|F7R%eFDPBG&B#2f|O9rUm!3YUp}DF z^;9hMC}P6e&p3KYWogMIbt)hCc^NJMS~p$OJ3>G$Y7g1={Zd6$sd?AW=p8y=7|^)JiwJ=Vu?((~n> z9k@o#-~_QLeA8K5o+t7kxF%`=7QpogfC_?n)Kf2Cz51NHbar+Yap5|t3*{fEk``;TL;)@b%4kO%GLjdw;&B6U`ogb&^Er)+S;0gf*F#pE*Q5kSn=W#5yTQY zdU{0Hym_wh(dTK$AKu&!&TBs$pn2cGKy9M7c(2jn!-oNe`})glJJsR7@zhS1bLT#Q zP>B6TsHx%6=EAEPL1qNq0~I={cdh2;=D=GfyLLj(`r!?6fM>R!j*f0_ywwNM55Xhq z?(e^bQyvt~nfdvl=C~;(wOs=q3@n|9UyjHp^gNWnIUxYcSCi{LT_!`mLm(KTyC*w> z9(Y)KF!Q8H0K5`uFq7llUYzJTLq=%n*59704yCQI3{oU+^MQ(E)psLqGZLgRHOF~5g#LsWgJc7@YXiy` z5rQL1nHz2N1WRf!Ev@3W$-6+NT$A5K@vrSuOGfbL{%66zNA_%LWtGz}B`fIC;KE7&hlFBHRSI+8qNAI(#_FmIyzi9u|fZDg7be+&i{XX6U)wc z=>f70#DLG?6zDyQYrFq34j){lU*j|vS-*$;!w!)Qi2#yXhQ&_EegKFjZdOwo`N3Bl z3g|g{;2$&6(nv01k1Q>dP0taxu}9YnoeC&eahGsM;NK7KUcnjeztPI4LxsXqN{<2}c1J=9cI7IyT=4k*>@Xc5*Ud%m1m>_SW2N{a-C}qjfxqpDuN$U4Z+av>J)K~#!Qm$YX4HYCy*3x` zJhJc2wFoZb=}pVk9aYhxi6^&SD2zWl*4q9vLQh#x2zMY8{SW8?Zt<+sx&y%h%o1j1 zenGGrH&${t2#Dtw6yiWxqauC*k_1u$xUK|S7Z&O|JlIfY?nNxX!|IOn)VPdrTLmnz z8xSbyR8Xy?IaTfE3v?F`ee#6eamh}HAxmX!huclZ(C;^WR&q2;Bx^#{G__vGTz zDthq?Z0PSd`;mNh)mV8dv)yUker?UF;oO2%eq~MZ(@9C$bIrDbc+&bs-LxQXOF~sH z;+V#)O5gCq;{HLIFI%SIJP0^4;JljvvoSBSkij_<5lozFY{agWxg#+>8MOtf;+yv^ z$Vq5F1;V1_x!SJC-U-w461(%w-z`+cgO%-kJv4U;W%rQ?)$^-2^JQ!fNlOOiHt+hV zF2x^VXASugSj$Nn3r%>jkDZo@wp_!WYs}$|Yzu+8Wg#!M70rd-%#Bt>`SzU=JJVDS zTt`;R#U0|U63PeD|47Wep*k#d{mPZikSuX`gx3u>f&U7-r-_pV_?!2Efhu2VxI{z_ zgLp#1)@n*MQGYkcuEMNhQ&CCOc4*WcY8LG^lMS&dBIoRi{CmwRnh#Y)DHcY)fQIrN z;~LR1pRD3$eRTZ(!^*aj)|r-&lBM~)YwLdpxqGCO{AwfahP6|yg@pR}rms_ym?({_ zLdQqnc}E;S&Klw#=y2BDvT;2iKuYg+zEgbe8p~hxwD*^>s+-BtA zb1296r}M!a3-Y!%|)Oo{c=hlS|0o}y?Gh9Xal3Ypqll-{R-%tzZj(PT!2;V(} zuFeJ?A3uR}&lffwKIopY`apIkiwYV|_R`TQ^`#JmLloQ8Z2PHKS68QIW_sXp1`yqC zCc*@Q<_&l@4gr25u1~}M1y8i7wUxoyc6NXu{-7%83@B=%){R@YiYhBTPy=b+d3DF# z&wZnFtLEoELOr-s>iYJ)(uUV}RX5YNvcL7ODq0C#;S4*Fv@Tpu!%)3>>c0KO4yHec z9>$c()y|vB?(?i_C2;PE?VAZ9Ka2guq_s*{yVLD`UBkcd_BG`I2Aug+$JVhjcmnXHljjq-Kb%s$`^ui-3Mr9BcFjR_ty~-@vF6dhp^?pYJ#0 z-A{tnEO?0imzOFTI^20nM^}IFzXu~qJicqZx<5@aVZwb1`Jv?5;70q#;I5~0S7nwYoEO1k)MAzb}!!ur)igt|V^ zK^TCD+4i9Y&@fr@&-wfq6FR)E#~;yKcYkEG?EB6jv+q2P(gaq(A^lX~+YIAa-=^f+ z-ChAQ*c{q46Rc-AcG)wqC%Ghlfqv`ztVQgFy(OTKHSc}=qJT0V%Wf0916@m%=fWo5 zGY#QOg2JtZ@d*&IjY|FW@{Zu?XoSe{*}cZ@oR2xoIZZ7G4pzrF9XfuLeS6%t;E85u zn&oo^RT&PPv8UxW-#>*sK~oSGv7o0GM2w2kn^Aw_y7QpuzSW?uOTP0#^J?0Kec~4$ z22b40z2X?fkR~3r!72}-G>yb&y-fqql@*dRm~<~1|rdw4aP`hf~Xa) zO`C>MW7MzQCbKE=k+gzCyK(kn7~xHR&xhVZ1K^Ub11p5-=gLPhErf$*_RkkGl^fLr zHezdN%if;B$AxBi*sHcD{n7NvVE<#&sxYH%+AUR=A941rTP4H4eCV-}JY7yDK5IS1 z{OzlH4Ba8cI#<{Wu1Gn?5!;XBZBkVg{Xw}>GhmsJ{Qo@aPSQLI{GNRHAp6c6BsXA7 zj!Ljf{nJkeEEw?!YK9Jg7xylnbNOzU&cmYKATpb1`{BV@zk;y7GXuuLCDkjO^bf5a z&!_doKCP^(Gu!aFa6aH|6}-}P|5QW2;LDRjM?GpfCs|npC^%^@92BVu)=Ms*q=-rD zxMv%9E%UfpLSj#9#D%&q-)yxV9E-Rgx9z_+$)dJ8b#;4Ej=b)7jHlpSw|b71bXkPM z;bORO^5ol}r^3zyp!A)LM#=KrM|Ty`_y937Rfa!(un@zo6%mqkd*RXF=9 z&HqMUJ>{`)dV6enyqRy<$+GVw34v z7L0#=&7{|o*==sbyy?s~M6qc+L27%0-&WNO>AWfWx(C3NsHQ&w2QSZCd=JxA<$vm+ ziU{J7pM0GEl|S{8InDG{Sf-_QbRyvd3c%af6^_ISWG+#Y!AEX`@`Q2g98bG+OaDTH z)Uf6|&8EdahGI^+o(XB^0>>%YTr%Z9E$dNOt96a%N`0xx<3HY78^09CCgLmc)0=W) z*^t6+>qGUS+i#`j*Ms4N=RcY|WK5hRL69|DG}Un4C&5RMhd+e3gi`cpX0j@cW&XV{aGu7 zI{XU38uf{aBy<<|W6kJY^n^}@cq%6);uTcV{PPos4!jYIFg?TK*UKGsZQ$2|N6D$- zx~kTM#0O93-XF_|lz{AMQRP!b#WFh`Y`roprT)fBwbKtU=m}X11jX}*XcxVswb+{d zK4`?AYw4SqMf7B8qSL#0TwM+JzQ2Pp$b{wNdM&Z?24Lwslu` za26iipO{$7WqyALh$q^KHsnUTZ)%KvSsS88obYO=FvEw|hf=GaX?Fp#pwX$UU61kI+OUx{-2^oBLu`I{ zKU)X|Z9YqB!)A0EvQ7SLHC?j|`_KdFV7E^lfmSr%IUM-rX0MH8*)6w0!RC84Syjnb zIlq2mm=`+a#%uWHgVstjn?w5WnU&)cS?1T2@Wa|w1E%W&cBSX1v&6MIgEM0^-z}?v z;0S~T!wo-M_sP2<8@qP!DN!=N1KcE6sg-CipV~d|%l-AmwVpIJ+&N%Ly7hNOtkM@%uKnFw)EAGrG~BX2Kn7ehkbmsm*)Syi=-|rn zeP-4_!t}L4@RB*&H#|oyTX0*eRBy8i<-eT@lDeMT&#}|0;T~2fdu=9-VqJQL!m`Av zg+M8ts)3|2N`A_f`@B;cF@lm~?Vlu>o&$%q_^3_^*hBt~2G+EL)$R3D;rr`05y5a< z4;kqUUF(wxkFt$GuyBrpw(~4E;y8eu{3}mAdoY@3GET6R>cVl7O|;x<7mR*hL&j=u+so?KLhyZVshK2Tgoi*7E1ViosT@`f4!qxY30JHx z`3HMdk7y^x3LJDx_HOX)+S*`I&{?-vo&TkTQo!9)MKhw@S!;iHB7sbVzHTP_md$tN zPd7R}p)|as3XyWFsS786Q2(s>J-Juihh%<_QtR)ph4}6lh@rc$o}jy_PpUVrS2M6W zJV^dN(;Q3A=k4vqev2>P^g0r_Lf^`3`%*RLmHWALRGpi$3ctq4Pj7o6V2ylPLua2k zUl4D@?z;OLm(0~!+UwtHboOkpAAT*-Q|@ssB*Mv@iDlmSYF&%<pH{I@sa zgOf+G%H|&mP7fxjvRm!V?6=sg{kX}KkUOboXO^i;(zH-NegTR33GiDkQf<#+Y7Z7m zmh9A)YyTOpGYu7MlU4CldOf^7&r6p*ck0fC9wnNVEw7Vg&dv_4)`%ej2li8U_K#Yc z@8@9O^!~ol^9O?p)?b~#GkSF7EJClWV4~j$XAJ6yF z{Kzrasq$f!+vVx~iEmQm!ITSs;^TF+W)}K87=nXAE89%ZwEQ+tUGGZ{&b0TZx0`_d z%kA$avKXI$*9#{^_DBb~W;1*oqBzZ_P_kxjwI}%PZ751BnCeqhTxj-7Ck-oeZCNvn z-zGUqqqER>Chj7<`ONpwzESF+QTv(hw+FZQ54nxVBT4xhLY26zcxd7cU#v|^Oli)c zo1&+#Z8W#;bi3KxpL5H%Df4rY)+x^1F}I$1>JkJgEz6A>9lb`=Ke{B=qs2}Y#jkMA ztVhdy9qiKvNNL)Oad?m70>xzn0-ps>I72ee|E+1WO@_E*xbpoRnHyhq`pr(Bc3q>P z%(fT*;$@=P-mjs3jls#fWy$`xNZzxC`L@#1#=6nE%CCBZv-w>Ea*vp#!VW;7_&oOt zCv|%E$C&oy4x#vhtJOQ16jsRPCMWcuA)EnSN}kb;x2k=#xyh~6n*ZE_J9QOvVA82T z$Gxu3njGD4`7CWx6bhwTcd&AVaV^HE_KnPCU5rdG9pqc{k$#O0r9V4des11U7x<}z zbPZ=*jr2KYD?GQC{;L06pSQNP)JmIYew$+khkHCLqs#M*?%5>iR(`989S5+4(-O`u}ET@o?fnN(I+ z`Vm(So0btP*~)2?5hIF*FDDiLgU}Q^|vjnR$a#sEt0w1=qhY!>>ob7OH%rWP5#0x z2*PT%X?rt2zkur5+(Vk8mpxZMhBvu=kgIJC zZACpPkBi1|#0Yh^Aao6*`MvhOj{VWuY z-)q;(zhyQq;N)GB+j=wjHg}>mnc9SMqDygZr`Z$h4S^fZ5yu(SN94l7eSe1O@L1J6 z2JoT?y5I<^)Y!A;#cayBjFrc5!WfL@dOcn($^6}iS2#}8Cb`l`S;lz!xY-UIW&WyHXR=@gDqCf3 z4)PI#*L_F!EF!Lixv1OyInfOt021KV_xjv-yIU}H!oy&uP1Qq!*K@eQn{t~|wpU+; z(6*GR{_^fPHkB2fzP`Ht&|9zz)0MyYplNHSH z0>L@As>1^b=F`-1$3;~o;MxxuwPtBH_ozj;@S3Nid|-AyUUU`-V;n)$J*cl?>YLSlN`(e zW^Pn(gCZiV_j9_{$FZ4U;2MFGjdlFIy>4ZD0Q(ZzlvVN|Fl3vj+TTzVQ`?1~wQjZD zeT}&n0dmFXqtqPfr=p6JRTi~u9 zldKCs;R2(L%idg+)YU`5&m5foB8QO>ato@#Uc8Fk5SpQHHnA${e_+&as`oP3?w^1M1nej7H^pu->z#QG_lRPjJ?9DFOr-%Fov!ic zVp+9$8!N;JscoO9ex|R^?YNUcz^vW{!>Z|n;o~;#^vS{ZZ?_~o6+l)QJnKpnH*0u5 z{c<$k%_o_ix|4)*k@k1awD%arq~9_rzR4!b>!K>XuYPWgv;S=Zyvj9}Y?mo~jO}!` z+H{YJ`1!+LuU~qxcX}ABGas~<)rsFl8U8Mn2Xq17g_WAKe`lbH_MI8si`@j-s7>Up z`ap&L!R}u`$0iuvGby&%nTJdVQ08F8w2+m-F^%!*^K%Er`(r>q&p@J*3g}w`EW%_Q{np+j8uY?pke|{={ z&#Hs*u%_*Mk~|mCc~sBQel%We%oi9W^60&W-6&vMrLC)<9eDV(5S-hyV^0_d7SdwrU z$fygvbv+_HiIHjdgS-6-vdiFEERa<;!PFN2jU=Kdynf`mLL*U#y5;Q{k*U8)e)N`i|3zbStwtCvU5r&ZSCF z9sHK?wToij>!q^4<0u=AJwy0B&z#NUMDEp;tzK;Y)GxJtlLQWN#V%$)=2X^H%g_0i zb?;8#5;UUc_lL+w4>ns)kW-M0{JdzJb}fD4oYn)(W>_`3#C1U}-R(v;1A!GBUOdOL z;oxhpXQW%~FXNEakWl_B;4g0&U=tMLDh``?gN8cW5=dXCo@Rc@L>X?%)_(E+E!uQJ zVb~F+zgMW1`DTIO>=6VbUF|e&m~z6}W)K<NX3`kLg=wl0r1M!WeeA1F0?z>JHi(#UhfE6Hy^?&T~0 zTfTbE;EtxjXE|0Wi(Q|P)qn^oxxQrT%BmZoH^@EDFDjhb&A6Jz7Wq-2Aa)9bCISO? zK`q;jX7Yi1z_VS0ocdhWF-Ohl+nYnURms>7>6Us-YNq9_kNyff)_O<&oC_oCmm&C) zg=;5zP`81|T4z1dN>5dmSt4GYhY7lPW{?ZxDFip2J`EG}s;@%jal6yrw1sYq3ow(K z`f)_411v{o@3ihb;AAS2=P1{1^UwaCod0oemq~jkrL*q#P;6!u<9Jnij9?{-```#q z7~OO8q4>7#+7g;qVPKv{c(H4mJt*#o?y*~m->)K38jiF%o+@^k*?!_Dzt4^4KG?gDMqo-<> zGq@`E4+Jsv<-HFpS6ouod1?Pd^GW1ia0-b{=w|?0!q%W>6UuV6e;U1&Jby&L?dOUn zidQ0x1}AsT7FO*@3FPQ7m`N_tR(gDLTiiB1;eA>QQMda0&remeYREOn!1LW#fw(Z+C>KXjxW7 zG*{f{%|gO*UfVi2=d_kJc`QImy|_W5JXZXk=0kQSPq}tS_J;(|k!?5~#RTnlv?yg~ zZB*aDX_j`I>M#nRv)BMhV-MKNs{iEN`hCAEBs38-MYV=ajgN$w9!y!9OE&5}Jl>_y zQv#?;$Ky|Q^t)n(9=Ve34UaMo@s43T`IVxur9Mny>&aOS6YZjhTeIH+OmtlER9(Sd zx&iT=lmafD#npBXnscxC~v#V5pr_;SQ zKM(JZiCdXd2TU%S#F{Cpy(#%Rl^4i(rpatmSXa%$<5=6AmmfT$j{yi#Y5It*U{T)393dy`<8H;rjZHuT1+?rKHplEmChpx!s9d6U#mu81 z9s+_jjx+UYDq+`Jk!HO>YpEJ_<1F-xI^iOaH8=lMaeXnE$N@L>GC6L0>E2^Dh)UXs>3%s!gI zJ=?uUX<9iSO^zar^jB`_D(eOl5nQhX7ub#&*at(C263FFE! z0VXT*`+$v+sgHLZHBUdkw0w?@SZC(*?aRqb{wtd)Fq7?r%H5U8#zFy0ZnLqk9JL*9tMqa|qE9 zeq0HaX|m53%07ow0-T3`NUpCXiqpHE_O_O^^bDW578LWn)S9;dI~sMCl)!YuVN>_7 z@y%CIdiox&(VA+O+O!b&6)~j-0Ek!^8dc#_(s3^H#~Tpo&Zi$65fZsXx0 z_G6?FXE_sw07(Df!9XTkoY;}Av-PiZVt_wr; zdC!1HpE5H)!WuDSXm(1Xqg1XLvOC5l}a!1AJPi*?}cG8+Y#c{Nzsa&Ug z)hI4G%S@e%z#IL&z&UmQrQMbWi_;6eRM(gjKYdb|Da>a#HIF?nn!C}D1Begy^s`l+ ztbXb1=g5>7KiXlSfIel5AQN+jl-($;Fz6@4WHhR7Hekr0}-LywP_FPrk`6is*+>+Niq&H%C zfcj2I2EBi}ofl?$JRG94OExf^u0C{w#Qy15iV4fe8k>c}9dfM0$ChT(sI_k{Q=&{5mD2pSh{m26NMw%W))z*Z!k2J*{EyI433X`gogGq=BAm? zTB_VAKg!R_#7|SWS_e?3&G}}nFmFGFdT-@>d710Sf#^}KJ|O7_@7-~ zam3*{nh_qKo8yyOdV|_Z@Y?VZ!E7zlQNiLbf4{s8pmEsZY zcBb0KThdKB>yp~z^Kz8vzaF$Y{_L0EBK~J=~1Lm`o7YzqB78@&amv5AZIjTG@za0 zThTxNXk3oOS4kCdi7`=B~HCRYc8-qM9ffvPcXXx!%On~Zv*!6afH;fE%zz5de$74H5&xu;m3OlKW;@+}7vQvVxLUdNSE)V--4pA%aRlKos9OQdU=0fOb(?UC z+>3QvIcfaZSgy)7Bqh?|08(dQWYKIgjx)F}X%?+WgE%Qd^1vq#j)&>jcd6!4Zp&`b zQW$eTY)GrCoWcM74|A*JKDQ#Zbo!P9AM?`7=}_mGy}t4urdqnNWeG8i_m8pF0An%7 zbAruj5fdxV?%gSjnxR}DM}Py8n!>N_w-D|7OK6!9Sh4N*RLH=D;cCIx#O{^l2! zrnKCq!uY*^#;4BCg7WaG=Kguiee?^7`SQp-A-`Bc)W9moEcyxa_05WJ$SE#*4#_SX zbxIU~4;}Y(E91pUx1PSRhbtlUE{{FG)Ui!aMcv9B@HQFxYsay`CpoH*;7&{XyieVP zit^|k*?nFg4}V!<4e-kx7m8|L+F~O(Q-v&*XU%w>|A-K-XJ zYKQ3>UUvP~xm)D~NJJD0Jl88Ku4xYCKTs+6!=Na|0JGDckr`t~vG--m{g4jkbR05% zN84Ay&N`b)ZMbq!dOK6A<>|l&A zi+gJ8p39i^3n#96F>nQL!o?DQ#C0{I=iGzajdq!t|9_ zGk?*A({{-4)s3oSI6(3eZ!-Ofz%99lzkAse=5ctb&mrqti}&tWYjKtu-Z z2HJlZ0qM?K9*Kd9yK{jX(~hB*-A7CN>e(|gh<7w091DAM3nPxvDDxW~;Lwf{7!yoO z&u90{Rjtq%O2%B!vjDRc78a7B2Mgnv#*bCM3kfY7I zT>cd*g(`<(-42iTRiocS_wLI*J>h|4l(Wu06XYe>2S(Q04Kf5i*WAA&@oqjO{YigO zesQ$oEF~Zml~DNI@5mBB_Y{XlQ<*VFFk|qwOOYGRe#}9|T;_z-)IoGO=L~CSWo4n| z8x!e$K-%aY9xer;hW6rPAv|Cx6=Hu*657d%kc%Oh$y)=pfR?uQP6~?5;Y4WUQa#dt zgCJsq3A)W_T80c6&E4E!)p*-aq;GfrEc&tsa$2-;nVOqxPqd}C0TvM`V7?9GjES*o zX!%|Ot|#I9_Z|rHnwosAqvdf3LCnvYymCz4P^cW$^vY$s4V=FUEE<>C_NJILnsCYn zBR$MB+0L=g%P_5sC{6}#k175=>6Bf2@s%ZOj{y2GR6~q-I}T%HmKR#Oj(kn|@M!Oq zwwk1DdQ*i^`p7>vDq}|Ot_m2>6K?V?>AECq=eS$wcu;Oeds`b?ql;>4_A)UQ9-3@a zv)_dV+<^+eXK1&Fr~=BS=`yx>f-=-G$4!!#m(QB5x=`FnMn;B_aQwMz3(Bth^U%f% zKD@+}4C> zn;1s?{P~u#F-n>>^ndFVy{2A8S2dw~K##ZD<0ajvPoKJ1YZ`;qrm)OQ3_+R2z{_IG zc&W-qV_t8MYVh1F`_-RHRznhMFZ|J(FG|QOMM6(^6&oEL7@$KI3~B|jBDpEkFd3* z7`b7aKw&kbB<4<=51PAT zlHM+p?D>Pat1}eOwo~!l%xbhB?qD&byh&ulLLCcL%BlXy*7QCggsPd?k#|S6qgLS^ zo+3(PhBdThZt^ivA2R(huw2ALOeR)S@n%wT^0kOeJ_YXc=Y64YAPf62y>cItVVIaZ zQ1S+dgiraRL3|3p5qc9gBPu1V5>r!C4X9>`M`kUQbDq2N2K3?>08j{FsI#-P^5Mob zGi`c);|fqlXhj^(UtFCMg?x};EMK~AL;$DJ`slwlPhPqwfo{$AybBWlKUPWckKEV^ zMT#M$Y-5=44fe@5mGlD03d>?&%|c*Y{Wa#J(Lb_nf`d5kKh1s-rhkssHPQ?cjw*aAOGdVyt>@N8c)MRJtIj z{E)chz1n-+v@35DI#9bYe%P1axz?CMq74k(sMiHh!T-|n%owY?l#qXEh6dGi5Ez)!fL zm5>Y;q660_evVrrY~N(o>~83CUnr>AZiP0Y1PT>*JF<`laVE#-kkv2&1#!vLl#A$u zEnK(jUs_pFP&T)`dTcL5^e+L=(g1_werpOlp^+d=z|_Kmi{hDLd<++KFh7i14{DdZ zDFOq_eYZoD3A?|5wqfIP?iEF)W2(b`PZ<257yhMlHd6NV^{|3NO3L1%xw<``0af|+ z`3GIiLtauyosqoyXXpSmbvLBi_c8ME(4jN-yA=%lPb){9mAy8!R;s45q2+$<`>xEe zky3T0ki{jBiOZBuaK*CBOnzhoxfZ7mT#34_@&Ry?Rw=uS8hw zkStsO%a%aFVt@A$=_E4ciYKZv^Pem_FCOI}9_EPyu&o#`sUQ$Uzirzko}1}$1?wLu zNqMcCgBSf?z4}!Ps9FtRW1q`E(RZ#Kpm}8~xYMFi5EHkpOo0 z6DU+eZC}5B{prq0%EopE80)hEm2ndt6;zNzOliUbPr& zs@bznI&%6nIkXmO7${mgcsHj0S7jwHJ*lhk==dg*Q->2BYkYg$Xpc~`XD?@ugx=vS zmGNnx#30)BSFa*(5VKmaSI{E-oFlB5<#r&px!4X>vCumaBoL`Fo0<}c0SX}QNF*H{ zolD2w5kph&t3lX@Khh4IVpx}m@VU*yjAe1wuYzmKmZ5mRzY>ik_uUV7$L)UAu}on+ zc%VV|U2s`0XIp*)PwJ62r=3BbS3Vf4cJd zl7s{~w5u1)>t&+S%?Gc9Nz=K&`)~TK-e+6-Yxm-_kOO~b-MEd+_q{&HJg+9z((bU@ znfrJv>FQsTXKF_N^(*H4_U=`Bef8KAjDNm*%(&U$wE-gua(l!io@jdhVmr%}IUB0;biG@;N{OfmGUIe1YfKm!BEo&dl=H}No;5SM&L zRB38qaTP&;6)0T2{TVjX$G{KU79~p#HWAU>p7wYxqtv$EfR~sf{;U7d`Sa%qQQ~=s z1z+e2fhd?^HBQdT$~p(?Ktb~@LZc7z1@Ti5hd~^`8<>7IqE55s%Qc8@pJ!(a6RHA0 zdm3zPpU?c+bSI+jsGuM{2EYDiml`sZ`=sswDTLhOR_jJ4+4aE6hBnBpron*OL=st>lW~ADm2kxXJ*sGSc(W-G zgLr*~?fFQbp!_0CD-odd4$8#T6QQ6PkRhTG5Msrdt}dDpco;|xOuRkS5%1}or6cxm zQ*$%j2p99ki%d`;@bY2F9~E^Wk)T_9iAYcj@>gGI&ow)kZ+@f=wg>Z!a2xO^U0q$y zAnp;YP(UBK{$$!rYgGgbGhoE?bLpt(*w-NU0h0O>I|!4H8yB69eTbOISO&`Svvkz& zc=d}A?$W#9s_6!ZX<*neE;XUzp%7M1O;6|NuFrE8S|ADm7V=e*7W|F|;9Er2CIZ-} zAm{HNkBzvvelip>-&=iPzHg#GYP3x+s#V~HZ+34k$@x@u@=xc5j(VY|Fr(de3(fkw zoGx6rAbQ%H-YAG|6yp1#j_k~uwAwuiGL7Fuu68ya%y#oW? z2XV)H)}tS-EnC9L!PJ&>!4DDSpEQf%_cd9%8&pUlNg9h6Rnkm1fm@S!Hydi-%b>Ob zmo)_`PiR8I9eFnJT^Q57M%CEUAY0N*Yoh1XyvJf2412^J*r zZIj-9A=WX8LM&F`$^OQPZZ|RoF8%B6n_Ja)t6i?0r0N>caI25Ebou#lWetX&`Q5MB z0L@V%n}RFZ^%tUIGaw}HrP3Ta~=(<^mf;2}yZqaW&n+gDwboU>(A1Z6V<# z=2KHLi5wz-u^B|p65wB6CnO}$U-S&)EhX(B8D*C3dYe%dx69If=~8V2E)Uqq{qH9f$JyxsZ!MQl4D;=wTsCc@6}3SCLt$D$2IXNPS^$jVOy&2=2nh?D_5Iolqz8dE8v=p> zHc8=uNtb?zBVj3eF5`4RH*JX`l3$`!H+{ z2Hu=7X&?=BBU>hxb^=JU$k-be1)kp-e7K1sEWEMYUiM2-+I)oBNU`IOg-68`Lmj4x z@k%B7uJSL&xQeqaD7}9S#`XB(;sV69C78%~(3$Z3%aKztu zFcaWhzPvCu>6^;4mG4+rh*ze9-CBpetwGjQfAy~lIc*C?^D_(#2357N7VnT{l!NMU z1q{m42hvdo9;LSxQ2VKiHg9Ru@!ZVUKRyxy{ahmg-meqrrE_@TBnx4 z=f`fj)(DMycK)pSV|d+ger2~{Il- z_xtVj;lQKw#*_MdS}{VsEBdc#A*X>au2D;iJ0c<~6$Nt^Zk!6$9B)+NRTGODC+w*EWq7~WP_7Og{TRZw zf@5HiQr;@U(n%{NAu%e=8$0;rOC;uFAFX)eynHo|u}tOiis!!zr~3CmI(iQw2x2d+G0lN$Fb98w5;$6opL?hQh8dmJb7hq z3eV6BQyPUP?Fz*UMDzO*y38&7iA!5UWSNOWU3a$QMXCDP(}gpGuj^#alP|6V>U=uO%=hD2J#8DaSj|QgV4O?IGj>ZZ5Gal+XB=JA4_R zb6Zr{P^3Qo?Blm9G>qxN$9#i+oXpm%2rvmt%wd0O6d*kHYV_#cT{Oco9b>%ovr(E% zr)n~(4`j01Y4aU)I*ukpHDxMowyu>cd;K-4^vaf1M|D|Smz=s4v)^==z7Q{M4H2*K zAFWL^>wQQaUV4zGdPVV&m(7pm7DKe#Ht8hge-Pueb?n^U&&FvxIj!s!6B>0=G^(EH zJT1~7ZkjW=n>3*J5oC*Q`L9rmfgYUJyE$oU&tt^ zImxw#G#M`td9{ljuUb#N*t0_)_$_@2kJ;lsJ~+Z=*sHCu{G`R?yKPfF?`rS%kl9ZM zHTOJwo^1_hZ%8 z&x{U?3w+z1bd$RlpGDm^pHtu1gK^+-Xga<%yu9nY@YE@|XV6KFzf{%w{jM&@L+MF5dv(&zmP- zmvIe@IK5sH;EG`mt<2N;@=?d`N->+Y3M;?0DOdFLUW0&is^YJzm&ZfWDy(mNRuDIo zGh5!N3!7Y-J}Qy*)$NwCECaVg^rods>NV!nAKvAad9~Fit4&+pUYz;$()fer`jU6s zryo6Ud$^R_GOyC5L94vBIE&eb4D%FjWiZ7;yQr7(}ReoW6L|}Up&rtgElO_X?#;Ki+ZEORj zhsKC9;`GFM>R0VuGT$QdjM>^g&Pm)^^r^bX+dw@g)Lz7v6Rh;~(&*l|52uVSR4bO| z%}?f+zTUL?R(?>g$~Nk2A-y_Tks|AbOO;gG=4-9vJNgPl#HQP$p4iJ@&-vi%^MpAm z_ds!oStm!v3C*aSCz>*EW?XKIE>YUJ+YY4*yYgslKYqAJd~|avO^Hk-;Xfv8^tm}s z?`qiPn%Iu>CL48jrki;x9A9AWP6;;au=YMvbMRh%hTXBft1MzCy%yc3?~PsYEb-{q zAHQI3duPq~BFh5bUhBOlT$l#>ENc~S8OqjWWe1n|<-YrJ!i+`r^{9zxRIkj1M)x#^ zviIL6^VbDd;SW-{zqDnP-5Gc`_o%ISkh;Pwp^e&SyGuOV_wN36K_1duZ<$_YEq$^O z-0^j)*y&yKC{N(#@wUMz`%S7Rs1u)f?GA9APB)uY(7K?xuX&iUVVoyujn|K`twtw4 zpUtd}UA&v^8z3{vQg&zA7W*`&z{51f52y<-MMl*2*-2kDU#d8G@BYUJ(KEY?o<$Ai z`z4ngUfUk<#5w!C+Lhg18e5nGt`$BH zuePDGKMHdd6g5j)G>ppHT)X^*rFOw7?WUg1R12q+EH>V3n%DB|$Gn_-e7=mlE$^5! zY^0vPZMIA=Y1n%_srT)SYHDrqX{%pDm#EH-uPZJ^S_Y+SeG0h0fi>v6ynlv;o>dA~ z%Z1D74DY&w_=(%~gwYN&2N&VxW`~~_d$xF7pXw8!-Q%@Tcw2EttzL)TuH5m{o~AU# z>)(8xS{i*GJnXq*y83PNd({HT4|yGO>4)hxSNH=HXZO%|9pnObl*$l##J6m5e0n~2 z-Cd5+pdjJih@$XZZ!da7byX&bq{ZCB(OiUL=IzYY1|-bIV1UC&)@Kfc3|(~4?fd$lzs??`p~sUT38S1g(=sTu(JQnO z`hMGrx{K%2myVA~SMg}o=e4}#A?JPSNLB?myeMIuC}qz9OT?Zbh~IXD>OJ14`P9|g zk+WkZJyR$yKg>?f;J|^L*4aP$-o;Zd;l!a`#r|@jj>B-cTbpWfcOHMWJQ@i;Y)8da zs(Z0`=Yj7(?JiFoPOq$vbi7>Az5j518CrUgAJ7;g7Ck_E9{RnIyJf%r;9(>*|Q-sMfK{wOA`$cYk3%W>{hzElIj6g)CfNFc{fo-_nS(fqoW zyy+cRh_v41aSPBaakvRM4c^Sj5p3RNWknyMOM^BFF#Yy{v&Unexy{VhZ`8=%UQk~m z>6tTJ0$Lk$77@CAB8R#ku)uG(0}%xMDoDf{&Wz%+vdp1c^DHmij z@S*67t_doCr?X?ks2IY?EWub2R38Bbdis5ECP<^3Jaqzr?Siu{t*r^m86&BB$dfEX zH5;?1mX`qaMj`>r9KGAbNJBy)O;TK(1~jEJCfR49kdWvP2>S#9;^;Y?iLoAU7$%6) z+L~Ul2^LvT(%xWKHUM%g?8|B%Ruk9wMW^ z$qNlax@tqTfpwdhpM3ohv=`kJQx>aJr?y~kAk{xMh z+jN1hCJ0dG5{;w~tJrXk*oi7*h9(_)nHFNw(#t^8yxNj& zL1*2oVQFVaf%aQ6li(RnQ*r^)9K#(u$3ge1Kf6<1XD1&4o!4cfCf)(8KNmmChM}>s za}cvLFhF*-!J07hD#qheks&a^b;gTo#=vzHdNMaVn*ner`n?!TrUk!BoX$NYvd#-R zh_!3i)}eC)Igkb`L+?u^8MOdJFRXQ{OUe9p`v>&!z_CmRFzJDzA=|+eR?v30T395a zmzsh8?RH&Ux)a0hQ1e@QzP=mLEg)LbFg^orgu&ZN->xl5;&hf-O8yH|;?7#o}6zTT0QFAay1@X-Iq4Len+D6=^fOmwbqx(DUC!VkQ=+5KL`5;en#kF4Js!4& zD9s`1d|0@&Z`$p{ZjY$GX7aH|Hz zb<+9Tzpt-txVJWB6$#V?h>^k2&@jtGOG}I7Eta5d4^Waw7>UBEY)so591Tr-5Wwv- zKonx=;0kFIgypVXN!PB$!&q5yM}7L0%`hz%AZ3K?AAscXa#mK=P2}na`K%6()L#fy zkXsn#+&OyUo@e`WrR$isgpNX5LvwRs-ze{jAW~S#eTLUsoA21Zoh*0|rjWPV+3@(c z^b)rRS0%<7eeCNS>EySHP7mqPMTYjX#b{6DP$R(J1Q%MIs=GhTR;rL#Rq{w;aC*1*udp~csD zqwDvc6L-NRo0e#>)`EG8U@^OZfX79$-5gv3eQffn-%=hpvmA<02*te4RYd`eYbF7_ zP{dh@&~xWjVxgB;R0uSWVueoUgd3lCyQ_*IeKxaayyiwo=V9FyB!`q*V! zjk|~56gN385@8k4I7>j?1KnQm=VL)G8Bw_f{1}jiW&=7!!qpmc-!w$<1wwPRH%XH|iGvYYp80blHrVB46 zgv`?cc}bt4%`t^mZwa8_<7q94C}#CmoP~LWjOC&wBS+`gm*}Dl`PFhM`KY#SYI5v zzBIpv3??ANfb_)xTDTdarX6*uY76QL+v zP56EZ<$LaL!5iVaOf&*CXYK27{5258{v5oiu72un@fcbGhE ztxQ<>xN3<4`v6I!>>9oVO0GSrOzXRPbQbS5^!8p4PxT1@(BR-1bY&1|CJSV2s$c;# zlRprPi_poll8};m?ArZLm)U(|4T?d$57o)@7#vn?*GWvc|CE>*U2N7h2-uRjJG>Cn z1%atlEd^W^QS!HaYliGgap$FIif0V=;{tQoZKTZ(8e0==;%cJ$rLZ@&ZY0EP*HYO3*aqnSVpEZ)wMY&7+Tzb%qqAt&~aSf~kJP9^Zqc$>L?k?y{;{{{F@VHf}a From f52e301949476a2fdd81497f8b3140acba26bcc3 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 7 Oct 2021 00:41:58 +0000 Subject: [PATCH 0821/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 27 insertions(+), 232 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 0c4df78de0..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 53 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9971c205c1..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 24 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From f610eebeda3ee39e7db9cb9d4adb00ebbe02d066 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 7 Oct 2021 01:55:37 +0000 Subject: [PATCH 0822/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 71dd9d7fa3..3284ba0e49 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [RecyclerView Fast Smooth Scroll To Top](https://www.reddit.com/r/androiddev/comments/q2a4xj/recyclerview_fast_smooth_scroll_to_top/) -- [This was reported in 2012 🙈](https://www.reddit.com/r/androiddev/comments/q26iqr/this_was_reported_in_2012/) -- [Constraint layout, textview and ellipsize, a sad long story..](https://www.reddit.com/r/androiddev/comments/q25uba/constraint_layout_textview_and_ellipsize_a_sad/) -- [Unity, app bundle signing keys, ELI5](https://www.reddit.com/r/androiddev/comments/q251os/unity_app_bundle_signing_keys_eli5/) -- [Calculating dips by the formula px/dp = dpi/dpi for screen resolution](https://www.reddit.com/r/androiddev/comments/q23ukc/calculating_dips_by_the_formula_pxdp_dpidpi_for/) -- [8 Tips Learned from Adding Payments to DoorDash's Android App](https://www.reddit.com/r/androiddev/comments/q236s4/8_tips_learned_from_adding_payments_to_doordashs/) -- [Android 12 Is Here To Impress You With Android Open Source Project](https://www.reddit.com/r/androiddev/comments/q229gl/android_12_is_here_to_impress_you_with_android/) -- [Firebase Authentication [All official development resources]](https://www.reddit.com/r/androiddev/comments/q217ot/firebase_authentication_all_official_development/) -- [AdSense account has been disabled even though app is in early access.](https://www.reddit.com/r/androiddev/comments/q20boy/adsense_account_has_been_disabled_even_though_app/) -- [Drag to reorder in Jetpack Compose](https://www.reddit.com/r/androiddev/comments/q206ou/drag_to_reorder_in_jetpack_compose/) +- [how can I group my elements by section?](https://www.reddit.com/r/androiddev/comments/q2w562/how_can_i_group_my_elements_by_section/) +- [Android visual design, how to](https://www.reddit.com/r/androiddev/comments/q2tqew/android_visual_design_how_to/) +- [Is using an API on mobile app published to play store considered business use?](https://www.reddit.com/r/androiddev/comments/q2r04w/is_using_an_api_on_mobile_app_published_to_play/) +- [Best beginner friendly courses for android](https://www.reddit.com/r/androiddev/comments/q2pq9t/best_beginner_friendly_courses_for_android/) +- [7 things you should know before using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/q2mz8d/7_things_you_should_know_before_using_jetpack/) +- [Making games about chidren fairy tales](https://www.reddit.com/r/androiddev/comments/q2l65r/making_games_about_chidren_fairy_tales/) +- [Is there anything wrong to do repository operation from inside RecyclerView Adapter?](https://www.reddit.com/r/androiddev/comments/q2kgh2/is_there_anything_wrong_to_do_repository/) +- [Is Samsung's "Color theme" in One ui 4 beta 2 different from Google's material you?](https://www.reddit.com/r/androiddev/comments/q2kck3/is_samsungs_color_theme_in_one_ui_4_beta_2/) +- [Suggestions how to prepare for job interview?](https://www.reddit.com/r/androiddev/comments/q2jupp/suggestions_how_to_prepare_for_job_interview/) +- [Can someone link or help me out with what data can we get on publishing an app to play store?](https://www.reddit.com/r/androiddev/comments/q2iak8/can_someone_link_or_help_me_out_with_what_data/) ### *InfoWorld posts* From 0680574d43835d50f397b12066aeb1e68c7ec04f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 8 Oct 2021 00:43:16 +0000 Subject: [PATCH 0823/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 +- reports/pagespeedresultmobile.svg | 255 +++++++++++++++++++++++++++--- 2 files changed, 232 insertions(+), 27 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 6cd9750525..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,26 +1,231 @@ - - - - - - Application Error - - - - - - \ No newline at end of file + + + + 25 + Performance + + + + + 58 + Accessibility + + + + + 80 + Best Practices + + + + + 83 + SEO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Progressive + Web App + + + + + + + + + + + + + + + 0-49 + 50-89 + 90-100 + + + \ No newline at end of file From f77dc4cd8c8f1fda5bfc4c3869ec22a78bb4623f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 8 Oct 2021 01:56:32 +0000 Subject: [PATCH 0824/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3284ba0e49..0dda37c182 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [how can I group my elements by section?](https://www.reddit.com/r/androiddev/comments/q2w562/how_can_i_group_my_elements_by_section/) -- [Android visual design, how to](https://www.reddit.com/r/androiddev/comments/q2tqew/android_visual_design_how_to/) -- [Is using an API on mobile app published to play store considered business use?](https://www.reddit.com/r/androiddev/comments/q2r04w/is_using_an_api_on_mobile_app_published_to_play/) -- [Best beginner friendly courses for android](https://www.reddit.com/r/androiddev/comments/q2pq9t/best_beginner_friendly_courses_for_android/) -- [7 things you should know before using Jetpack Compose](https://www.reddit.com/r/androiddev/comments/q2mz8d/7_things_you_should_know_before_using_jetpack/) -- [Making games about chidren fairy tales](https://www.reddit.com/r/androiddev/comments/q2l65r/making_games_about_chidren_fairy_tales/) -- [Is there anything wrong to do repository operation from inside RecyclerView Adapter?](https://www.reddit.com/r/androiddev/comments/q2kgh2/is_there_anything_wrong_to_do_repository/) -- [Is Samsung's "Color theme" in One ui 4 beta 2 different from Google's material you?](https://www.reddit.com/r/androiddev/comments/q2kck3/is_samsungs_color_theme_in_one_ui_4_beta_2/) -- [Suggestions how to prepare for job interview?](https://www.reddit.com/r/androiddev/comments/q2jupp/suggestions_how_to_prepare_for_job_interview/) -- [Can someone link or help me out with what data can we get on publishing an app to play store?](https://www.reddit.com/r/androiddev/comments/q2iak8/can_someone_link_or_help_me_out_with_what_data/) +- [I open-sourced my 4-year-old interval timer app!](https://www.reddit.com/r/androiddev/comments/q3mevy/i_opensourced_my_4yearold_interval_timer_app/) +- [Apply special effects to images with the CameraX Extensions API](https://www.reddit.com/r/androiddev/comments/q3m77m/apply_special_effects_to_images_with_the_camerax/) +- [5 amazing Gradle Plugins for Android apps](https://www.reddit.com/r/androiddev/comments/q3lyub/5_amazing_gradle_plugins_for_android_apps/) +- [Disable Startup Apps on Condeco Tablet](https://www.reddit.com/r/androiddev/comments/q3lfuo/disable_startup_apps_on_condeco_tablet/) +- [middle developer](https://www.reddit.com/r/androiddev/comments/q3gloy/middle_developer/) +- [GitHub - xmartlabs/TypedNavigation: A lightweight library to help you navigate in compose with well typed functions.](https://www.reddit.com/r/androiddev/comments/q3gjpr/github_xmartlabstypednavigation_a_lightweight/) +- [Hi! Some years ago I had depression and decided to start a small game to hold to something but I was unable to finish it. Unfortunately, I'm with the same problem and decided to finish what I started. my goal for success is to make someone that had a bad day smile. If you want to test it pm me.](https://www.reddit.com/r/androiddev/comments/q3fyjo/hi_some_years_ago_i_had_depression_and_decided_to/) +- [DataStore: proto vs Preferences](https://www.reddit.com/r/androiddev/comments/q3f5n0/datastore_proto_vs_preferences/) +- [OnePlus 9 Pro LINEAGEOS on OnePlus 9](https://www.reddit.com/r/androiddev/comments/q3er5y/oneplus_9_pro_lineageos_on_oneplus_9/) +- [Are we still allowed to use Secure.ANDROID_ID (aka Android ID, SSAID)?](https://www.reddit.com/r/androiddev/comments/q3ekca/are_we_still_allowed_to_use_secureandroid_id_aka/) ### *InfoWorld posts* From ddfc8d99d9716903c1437dda000de56fb8c058aa Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 9 Oct 2021 00:38:26 +0000 Subject: [PATCH 0825/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..eaeae6a0e9 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 52 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 27 Performance From 01aa150e24081714fdca16c605591a690a09af49 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 9 Oct 2021 01:46:44 +0000 Subject: [PATCH 0826/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0dda37c182..61b4e9f4ff 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [I open-sourced my 4-year-old interval timer app!](https://www.reddit.com/r/androiddev/comments/q3mevy/i_opensourced_my_4yearold_interval_timer_app/) -- [Apply special effects to images with the CameraX Extensions API](https://www.reddit.com/r/androiddev/comments/q3m77m/apply_special_effects_to_images_with_the_camerax/) -- [5 amazing Gradle Plugins for Android apps](https://www.reddit.com/r/androiddev/comments/q3lyub/5_amazing_gradle_plugins_for_android_apps/) -- [Disable Startup Apps on Condeco Tablet](https://www.reddit.com/r/androiddev/comments/q3lfuo/disable_startup_apps_on_condeco_tablet/) -- [middle developer](https://www.reddit.com/r/androiddev/comments/q3gloy/middle_developer/) -- [GitHub - xmartlabs/TypedNavigation: A lightweight library to help you navigate in compose with well typed functions.](https://www.reddit.com/r/androiddev/comments/q3gjpr/github_xmartlabstypednavigation_a_lightweight/) -- [Hi! Some years ago I had depression and decided to start a small game to hold to something but I was unable to finish it. Unfortunately, I'm with the same problem and decided to finish what I started. my goal for success is to make someone that had a bad day smile. If you want to test it pm me.](https://www.reddit.com/r/androiddev/comments/q3fyjo/hi_some_years_ago_i_had_depression_and_decided_to/) -- [DataStore: proto vs Preferences](https://www.reddit.com/r/androiddev/comments/q3f5n0/datastore_proto_vs_preferences/) -- [OnePlus 9 Pro LINEAGEOS on OnePlus 9](https://www.reddit.com/r/androiddev/comments/q3er5y/oneplus_9_pro_lineageos_on_oneplus_9/) -- [Are we still allowed to use Secure.ANDROID_ID (aka Android ID, SSAID)?](https://www.reddit.com/r/androiddev/comments/q3ekca/are_we_still_allowed_to_use_secureandroid_id_aka/) +- [Is Android dev a good career? Does it have a future? How is the pay?](https://www.reddit.com/r/androiddev/comments/q4bd8q/is_android_dev_a_good_career_does_it_have_a/) +- [Video as camera input in android emulator](https://www.reddit.com/r/androiddev/comments/q4ajnp/video_as_camera_input_in_android_emulator/) +- [Android Rust Introduction – AOSP](https://www.reddit.com/r/androiddev/comments/q48za5/android_rust_introduction_aosp/) +- [LiveData is superior to StateFlow for UI and ViewModel layer.](https://www.reddit.com/r/androiddev/comments/q46b23/livedata_is_superior_to_stateflow_for_ui_and/) +- [Ways to notify the user](https://www.reddit.com/r/androiddev/comments/q43k6q/ways_to_notify_the_user/) +- [Best admob mediation without sdk integration?](https://www.reddit.com/r/androiddev/comments/q42uch/best_admob_mediation_without_sdk_integration/) +- [Question for students of Udacity - Developing Android Apps with Kotlin](https://www.reddit.com/r/androiddev/comments/q3zpfj/question_for_students_of_udacity_developing/) +- [App Feedback Thread - October 08, 2021](https://www.reddit.com/r/androiddev/comments/q3x9d1/app_feedback_thread_october_08_2021/) +- [ReactButton 2.0.3 Release with customized tooltip feature](https://www.reddit.com/r/androiddev/comments/q3wb30/reactbutton_203_release_with_customized_tooltip/) +- [How to listen app’s traffic on a rooted emulator?](https://www.reddit.com/r/androiddev/comments/q3ujox/how_to_listen_apps_traffic_on_a_rooted_emulator/) ### *InfoWorld posts* From 015ad4aab19ead8052ab96e53dceccfe79fde2ec Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 10 Oct 2021 00:41:39 +0000 Subject: [PATCH 0827/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index eaeae6a0e9..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 52 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..a894ff34a8 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 31 Performance @@ -133,8 +133,8 @@ - - 80 + + 87 Best Practices From 8a0ea162369fa8dd239b5c2d6b61721c00e3ad16 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 10 Oct 2021 01:51:32 +0000 Subject: [PATCH 0828/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 61b4e9f4ff..38ce6d0adf 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is Android dev a good career? Does it have a future? How is the pay?](https://www.reddit.com/r/androiddev/comments/q4bd8q/is_android_dev_a_good_career_does_it_have_a/) -- [Video as camera input in android emulator](https://www.reddit.com/r/androiddev/comments/q4ajnp/video_as_camera_input_in_android_emulator/) -- [Android Rust Introduction – AOSP](https://www.reddit.com/r/androiddev/comments/q48za5/android_rust_introduction_aosp/) -- [LiveData is superior to StateFlow for UI and ViewModel layer.](https://www.reddit.com/r/androiddev/comments/q46b23/livedata_is_superior_to_stateflow_for_ui_and/) -- [Ways to notify the user](https://www.reddit.com/r/androiddev/comments/q43k6q/ways_to_notify_the_user/) -- [Best admob mediation without sdk integration?](https://www.reddit.com/r/androiddev/comments/q42uch/best_admob_mediation_without_sdk_integration/) -- [Question for students of Udacity - Developing Android Apps with Kotlin](https://www.reddit.com/r/androiddev/comments/q3zpfj/question_for_students_of_udacity_developing/) -- [App Feedback Thread - October 08, 2021](https://www.reddit.com/r/androiddev/comments/q3x9d1/app_feedback_thread_october_08_2021/) -- [ReactButton 2.0.3 Release with customized tooltip feature](https://www.reddit.com/r/androiddev/comments/q3wb30/reactbutton_203_release_with_customized_tooltip/) -- [How to listen app’s traffic on a rooted emulator?](https://www.reddit.com/r/androiddev/comments/q3ujox/how_to_listen_apps_traffic_on_a_rooted_emulator/) +- [App Theming with Dark and Light Mode | React Native ⚛️](https://www.reddit.com/r/androiddev/comments/q4ybai/app_theming_with_dark_and_light_mode_react_native/) +- [Developer Salaries](https://www.reddit.com/r/androiddev/comments/q4xgk7/developer_salaries/) +- [Can we (and how can we) implement ViewModel in Android without extending androidx.lifecycle.ViewModel class since ViewModel is not just a concept in Android but in general software development?](https://www.reddit.com/r/androiddev/comments/q4uj8e/can_we_and_how_can_we_implement_viewmodel_in/) +- [Can we parallelize creation of ui object?](https://www.reddit.com/r/androiddev/comments/q4p2vm/can_we_parallelize_creation_of_ui_object/) +- [How to show Jetpack compose alert dialog?](https://www.reddit.com/r/androiddev/comments/q4orvn/how_to_show_jetpack_compose_alert_dialog/) +- [Ads are now able to bypass Google Play to install apps WITHOUT user consent. Digital Turbine DSP seems to be the one enabling it.](https://www.reddit.com/r/androiddev/comments/q4nltn/ads_are_now_able_to_bypass_google_play_to_install/) +- [How to install and try One UI 4.0 (Android 12) beta on your Samsung Galaxy device](https://www.reddit.com/r/androiddev/comments/q4ndbt/how_to_install_and_try_one_ui_40_android_12_beta/) +- [Running two A/B experiments at once (with 2 variables each), or one A/B experiment with 4 variables?](https://www.reddit.com/r/androiddev/comments/q4lmbj/running_two_ab_experiments_at_once_with_2/) +- [How to build app like Samsung game launcher?](https://www.reddit.com/r/androiddev/comments/q4kmnn/how_to_build_app_like_samsung_game_launcher/) +- [Introducing Compass: Effective Paging with Realm and Jetpack Paging 3](https://www.reddit.com/r/androiddev/comments/q4j9hu/introducing_compass_effective_paging_with_realm/) ### *InfoWorld posts* From da1c71152540606d3e0ea39728232d275d6d2f73 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 10 Oct 2021 23:58:14 +0000 Subject: [PATCH 0829/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 34899 -> 44268 bytes 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index b5763e457c..4d1fe3bb81 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -105,4 +105,11 @@ _date,total_clones,unique_clones 2021-09-30,377,30 2021-10-01,400,31 2021-10-02,357,30 -2021-10-03,236,23 +2021-10-03,254,27 +2021-10-04,290,28 +2021-10-05,380,29 +2021-10-06,402,29 +2021-10-07,359,29 +2021-10-08,348,28 +2021-10-09,346,26 +2021-10-10,367,29 diff --git a/traffic/plots.png b/traffic/plots.png index acb6c7277dac221668fb6e739cb921cb228a3d4b..cb2636ea5d322514ead9e43bd954af251de45b8a 100644 GIT binary patch literal 44268 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 IMlQ$y4l?uYumAu6 literal 34899 zcmbrm1yEdF*EQI<1`Y1+?rtH$f?IHx-~@L91W1tJgy8P(Zb1UUy>WMU{cq=a-hbY& zrl#hf8oDT;>3i>yz0cWu?X^z0vf{f}$b`rs5a^Yx%o|k@2s!`+f?7p{2j1ZsU)%(K zAUVo>_yhu>8$-UK3dIVnK_GIF>>CMnkA=fD1dlk4hd%u(cnxPX&GI&o)$}_yCADfuKrDuVYL#T~EfAr4SY^Ba(k^PzL z8Ta6>zw_B*XV7!hyJOU|4^9%1A{avw`YVbR^xt2R#s7H+O6KoB=s`%3|0BYY|NW5# zqK5oM@jBq|k6`HUkiUYJL0JFi7yrNB!{K{I2Aiy`Y;1ZuYkxG^&gws3>{kK#f%SoX zSs-R;{N2wetpC2hdRhV%DFvkst30?M)B5p0pMDq{VX-1c?xYOJGNOKzhxEq8t+mMR z-yYF}tf~KPGqQL?Y=-~a?Kg)>xjFNxN06>%fly(g_{~i}FD`in`tVRh)TCiZDh%&U z7Hn+}#t{=Mz8c0u?gZfmyn5EIfL-NkOZs#L3=OvP_Ar5f$7$x_VpCjDPhOyB(47<% zz7aJ0vtuHbKmJYa2l6J*J3Uz>ie59Tv!ujCS~|tlO!sdatuPm`7t-Ivftz9nJS83S z!jiw$3nT~bX+l~VS@4UDqC8vL$Qa!9I>3(+6!Um?c`|eayZT$7L6{JcqW4Yb&me4m zVZq==+Q9HwwLfad5l8`5sZ^dVlrDD42lVy=g4m=z=T;?6@YKJa5eby0 zS@p+hM$gBy{;dglwgg@KCTX1pdlpYm&tIYlGz#sH=ki7BMX`Er^X95e&gKN%R?6Y9 zs{=7qTQj;236DMx&5c(Fvq^02w~|jCl`N~{Iq!yo&_(IDhLVyPHHrsL*Lor!mOXb! ztjDuM&iG)NMZH~IYVU>k__WF!*O5OoyA<7fZx8=aEz{w-(l76L_VV1zOQL3C8ajXs z>nQAMa-Eah?lf8b$nmwMcZG68=&?Bq128=`pf{GGhl{P81k$bvj?^L|`X8r@Y2K%B z$82tz@m!y*R0JzuZ2w8%PvNqRTJ+e6lyk(nA`a_ND^QdzP)ws{W>#2VUpJe`mECvE zSIRi91_^sz7Gh-#C9-hY3psCwE!jmuW1Jw2^Lt<0UOnI9b=y7Op6x$VNPUr+F4lq)rPJbw-E4Wq+~A+3$D;w~FyHT|OF3s5grtcn0)EMMYmad!NXB zP6L}eyl;-rr__{+UL2NNKkSA3K3pfvKW2e00bfh=(Id&cY0#yASM7XsY$Im*v$;aa zky}e0;?$STAfJb$hOLWHu?BAiGqYU54q9sJ*G!<$S46bY!slVmOh5m>36PNV~ue9s2h-CrVHJ zRM@SntE<}k#(r-sE9kz38ybV4NiYZR%D?Nr}=x zjm`y?m|vN-{nn)DLrwl!1q6JRE{{a#G|;dfEs*$;SRYbI;l|ak-qzq>qO}XF6+ts_eHSe!8DxSXQY6g zvS@-n5601z92)r8+a6KcpJwzR_EAx$KT{ z{tyFJc}fu1rxD~}V$qz`Kyeu{tmM)uB(1TTVm^WT@dkBIEQm zI&F-2GQVyRLl%GS@ug9!YbX1&%L+-Afry2{CKM?SWO01q1IcwfecM?-0c3(EuAS^w^2G zaF%HkF4&mJK?cf76)J4mi@r6?HYGa%^ag$e7&;pFMW@jHs|LW6FWPyb6^$`OVq;@{ z3_#`I1WJ3ChF~;t?vk5yuS@z{Z+76zvHsH=I?y-_#`q+ zVy%kw1*|WbOlW2x99)~-A!y~6B;g-$aW&@47=f&V9wFIn+s`>)N=Yu$kIOJml}C3i`Ks0)~CbCp^8 zzmCfFTZ-X_3(q6pj-EbdWnD&*2t6u-t_@z71?%s4{-SH*&Zzw$Vt<*^_J6fl3M4tU z29u*7K~-lnt9fL^&7xbcZh~2+Yu|on;dxXyOHE1Hy>-JK1UlsAlS680?`lcK`bx6> z=4{~a>}SC7_&FVmxDD$qm7M=KLKNk?tk;6&4r-wAz-kw~>U5 zF>2wTKVR(cj^}KZH7v(M7UtuQ7r!5T4(Vre-Sq+Et7{`dC+gAt7xz~Oma}Il#zqe9 zclk@+**5r+z1#ydyYn>#>c#4^TX5@xs!1>M7Qx^gm{^-d}*-zo8 z%gOzhchRH?z+7wFx1PPdnm4Wi7Nc*_?BC&xo{SGte;@xD6{AA0MOTe}FC6=48W_4^ zT2K{D%1;g6o{%GLOIY$|m-jz7rR%I8o*z!Oic88>DGS-5@CgZvKiDwYeCYULXVMhbSZ+a`!WyLN7FC5wN@19Vvm)< zAt4NyO)h(?Kg9e+;f%;pI+N}zRI}}U4~+}RS}c?pwX}dJ<|il^6g+{W>+w<4ItwLkojK5$ZglcrE_WltH%W-UYceYPV9>$Dw!1{+hvAF*O!$1JY8gR zh8%^@k*y4Md$Z!tRAoujkGO__P8+Ku0cd< z9viRj*1xgI@j;?Rd64M5=?^SdaO}kB!yH?`ooe*cgYemBU;&{Ai7ZHm|2c+o33ZW##W! z(Unxel*a`iR7WW7vbemS{^hCR3(@+a$D{o!5!~a=eK|x53+w>edFXZ^;xOwBfZ7S8 z(}mjAW`#3B)2*h#2{?_S=o?Ag{_~Rv8UsAw@!s~v1U&CXt~pBJb-7D{E^_(({zc2s zH?P&%&7^Mp-*QG{SyG6Sv=-Y61j?}0C910#t)?MJDG%c;F+9|&vp0oXrQjw zT2Fp`9RP`gz)ipQ5K?<8fB^aKux4~~kS;^L!MKFLDWIbD{A(=`Xb$W=-|b{L1HqFT z2)-CJ{CiOCGa8l9&EwIT=9_}T{uz?SloBRLHsS^Avi&*iLybkGT!8otYpgI3nMg@W zs$)cmWLkN{kZjN?c0Kuq(`gGv*>qfd1MMU}748x@@8zO+I z29i8VjBinpjSoHow3ywc>N}M}S86veWlH!`wrP{2)?D5t zUWzX?Elt4Y41Ah_oQ5WEES3eoF&YS##|m!gC}qQ&l-`C4KBZ!om`s22OD621N{5W0 zY``BfV4yJqu=#qKIBx#*Iu>ML*B)gK8AwSYBB`G%?j*@h!vg3AB-*6*FRk^s@Jk`x zyZls7CZjcax8fiVX`u{1o3O{)Hc=RsovpyeWC}G$$FCFK zG;&cd^pvXbbA4QU5r_$1j{vD$pO>e9O9*HEs)K_kj8cYZnc`}Fn+1{+?l93X*)SE* zw$}j|e%i_8u=;B;D~W|W(nm@=DnMo%f>im)b*|tbKVJ&0qnyFylJ-&Fd+T?rT|r+E zgWn-66Qf0~!*7S<`X`H-mjU>N$eR*^n2!>K?VNpiJ8e8ZXx5 ze<&Pxtx6pbVcD4NXJR9__pZM|uFwBZM-+T;$U`@W5q~A&TpTn{Y^ShB4Kq z*5|$Hjsb9>kej!*{Fb3KoM*`@3NL}z66fv%q7}ACrbN-pENGVRjKS?dXi5tb0{{iw z?D?PiO#8w{gZ5Xg0Epn6Ko^XGP*3wAcI()tMH!8x0X@S=V&}QMUD*C}Hf)2)eIck&<;iILAdj|u|x#RhiwP)jjNgXfi zSLb#)Nxx?Tf@<67#mPQO=mRvpqw{73h`nb{QYy0XMoIi0IrR^kDcoU=7VXUm#E?Wz zCQiwm`BmU=SiTQxM(%bZJ*ro4gJ-SYc}JS5f&@n%xoJ@SY1HkKUKT!umEvNynV@&yy@oEi(MXX`A0zpIK0i1m!>Z5458t0lfqX3uEUTftR#eQq6_0H9!miJQdqm9GYfb>2yah59PAjA{IW z;@-vd6YHDc@8Vlln&s;DWVtilV{O)?zHBab6I(4GUGz)q!+;051OmIuAdvP`nf66E zm4LY85F8bI{p!Megqt^y7Sm5!CMIO5ui2v!C1u1pZKWf05Ddwx^WPx3mVaikpboKe zFv?i9g4j1)W}NW#oasdV`=630OnbPF9|#9Ep3&yD_F2A-mP(AO@zI`!kq5&P190WJ zhr9fe=%vgJEjDXM4T@rVgzw4jL1YW7kfZUdP?ss}_uv^w5mGegj>p zQKAU}?ZTs@wP+0Xr;4cfmOXNE^Ye=zh7eB!jy;n56hWV&~NYVb;K6KvVS~KHLfvYDjS1y!1r;q6kBLJ(v4sbI9 z<9_Q6esz}Dyg#LtYVHdMT(Au7s(fN?`r*Nm;!yrjZbbP?|7`x)u0{D-4~OY)5sMab zC7~^*QD8ETLGv(=p82{fFCFog3eZwSKfo`lruV;@0nqi08dU_!W#0zhV3n;wF5oE0 zozN~eS<)(b2Q1;|FdigkJ(!YV9dSb* z-yhgV@pqw5x1dU-1me7rh`cN{)1{s<&o8_85;iP=Oj~}pO z9H-`>Bz;!nBa!|NXCNiWZm7X*doy9bZlXqspdvxz_bg>Fh9O*)i}ubjQ=TF$D7+`9B%UQZ672Pf!Ou03kjp9pFudjnx3PerX~j<| zzEMJCR&EB@-4&rcv90JwDhPmaGGJG$(?X}9qRMpL*{PUS+DOaEfl5Y(cp~#m17s_E z6WbBA4T^Tt&2HxsOn+>-0?|PMyFDHhzx$A%tD`?RV=qfZC_YvzDRM3_?HvK<^se{1 z&9spQHGD?xd?uu>gG3REpK_?_qIJ802VO#B;2b(B`}0r?+kJyGK%X}&P~5rL1*RRY z#JzwJ=~Lj009Az%%eyuy7U&iHW=*VUvrno(AGuJ(scj0c?Isr|+h1u7Y6xl*Mp5-7 zV@N&*j`rEBALu0AfnjFgnX=U)R1MKx(GqEd(40(^0UR_%19WX@E4#4EPWRic;_e(Y z#5-90naKi3X@xi#2tK}-QtfT8?QE}H@;?l21){IDSBF)Obnf2tkl>dd)H1S?g|@!3 zG&fRscFTU10zg8L1}BrM^K_=n^uEvHw4ei`Ylu@)KodPy8KC87WE%gym>T5&gP;g) z)tJd-@j7Lx6a@ws5qK=uyBg=n%0ys4;0}95e`{Fwsj~Xj?~T&M1j(GgEtUrH0*DVu z>&DElrXwCY`!KBvBqg9=mrS5XY%1bycS?w}p>Wuh$Zwm|Fz~>#jDtbr3~T^*5^iDD(C^Uh&#K(VRjbD822VWi#oS9rK;@aVjSEs{S!=NnZ{#R+!E8q>}U!fY|# zTRLbjzHaVduYZ5;Nh5>E!O*O@Z@QGk$RRW0Q1RlTmuq`%)sR;$dd(gQ3AlGlpfOnd z94pJ0Hriou2#gD1!e-wq^6h9C^$n^`06R+a{!Tr*6JAVszxrSv3)~CV3VgrF{*o~X zQME1lt95D)h9Bp@K|`Kf>AWaryXPV z94vhV?BjBYcii9^L@B|MoGMb-!sx`HQaM%_K+GzH31!P0IQ2mnKoBh+il$ZYE?3sybs*Gj0ZLf>x1l z=*S9;eZJ@WhnB2BT#WlIQrCS2S7F9sl|uIoNtOy^W__i17gt8AH4csm6^}|?Yk>L| z=aK_X`$^&bVVHTKrMhLKv5ydqWI_me?-tMMCW9&I`}yR|-xjMc=(Q-ZVw!!NpC&@Z ze{$IxuHVcbZGYPkhr#1#yVNbR^)v*BaDKcp_%f{wN{j>@0zejIUw59?(31W26=&-Y z-%7lG%U3*xjlM`V!!fsbHp6AWtA6O-2X7uPCpP~ghK-vaTfgexOT6}&%RlHaYrvch z3pm{xw+(!wXKI>iE?;FaYQFDaCd*6OF~|?ULfWplJ|{X(Hzplb6(=F5WTBWYh_~Am zwS2KRUtoogEPjIA+3b42C;@=EZs8FT@v{cr?~j`gSOt zR~nNF=frX!;L>md1t;k`>Btom=dN?r*lTHsXPSW@1bW6R)2hbr7+EZil}2>>a(2LS z#nFM^FxdDi{X2nixN2FP`H0Azam;>ZPv%`UOuvi9!AaHUkjN$Y?fVsqhxmS?dTIXN z8ERT76_A$-NH8`frC9V4h*7@b1OV+SvyRwgre7^;5L|k-`0R1CuaEolBPW8Lkd=ou zGWM_2lXS z^?eW8PtL`=FTWf(pwdLEaKPmg`~7;+GVtOArMa0P78_|2!N?r#u)A0YcoCKq;A7#-XM*x3<2Y(Vp_PS{%f~z-CNDZ-Ed-1<@tt(LO^lD; z`=y;erSBB$Ckktd&6S?TlwN8*L!f~JviK-+CoYRl;n8AaVMkY`4C!US+n@;Fh)4<`CY4~7rNe;gRSz_ zA#$=*vb>jpuOWMXlz9zm44t@b3af_64BA@@xV$>i7n>Z8QKw^Zd`ut;C;{~*!1b=! zH7wD3U&kvXr;7UO6ss3eiap=vC=m{Rpbe$P*HuUtcb^oO_AsQQrRmunb8LLA@v@dT zezmmP7Klf8!rc}ah=wJ`PWK&go$-{mr=;{?q6<8HsE)2zsR%X+vt9Q+FEelu89lf( z%$qR>q6l87IiPNpF#b(j6kN>;@Dctr+5nXX0HW)=ZLygxul6`InQw8gumx(Zp3kf; zhn(|OrlCb}x!cbkoS=M{FMR94?a$te8twAe3)I zJ>vNl`EExG6NM^N8z+e@y2Yrg@@#GDkdlRl5Iaz?u#DVfhDkisMELL^02V&K=QrNN z6>s<3Dl%2ZwRKfW#S#7k#Mcq`_F+$i4Xjb-G|=%WGj}1+)p=0iNCW({lo&sDEsh$F zELN-0*}-tHq%PG#%~VXtkUW)J{@WM3?ILf*#Jhz6tsjAHLl& zYVcQ_a<0)IP(EPUv*Oi?1VM9n-`}`v6`>4&n9A(6$)=@=GEXO$hd;dTSV^SUh36RW zvlOR%o%*_YoAKVFzeWuWlH?Q0yAj667mV6!HS)4)pxo$lFm0g|O z@4_mot&?j9`GM8ZH_vu^*G?9G^7B0TRSHM9QC=C=Y0EKH8*hsfKM`N&+|=e_U0M>& zv*&bdre30Fm9nv~mc`X-$7C8VaaK6*_^}be^QnJAHnq4>GFy%J%&Qg?Hr@>)l2KSn zHhS%9*;;;5Wua6oY=X19JJxOMfhUtwhIw+-+rwA z=!zn7_N6Kqi0gms#m?_p#Ei^(xSF{&%aYoP44tCFoi}z|>D}eq(S4X-`!IOoQf8b3 zqfh$1(*K>@v-KzM`aW$TdF~$=w47%w(IX`raG&mi>V4&|yvY&CY^2D0yVoeMAQ{FD zX`2Px=(Z>_>m^XoTu#nO+p)7OVgXvW=VPQYiSYgg?pl^9vef!!mv@yRMQP!%>Q~*t zBT1jTRHdUP67+h{cBC@hh?M?u3>TBv*V4nS@fgEX()l*Vk{dm4&rDRkW+9{gThDJa zw(6e-kNq0b!ekG%bXA2i+U!OhqGhI<@ACD@W8k6%?sqy4-Zbl3-WkZZG`bq3X)o%d zz4Fj(b2CUHGJl@Jq`7|&P;EZa!LPi03StI(4mg-T&<_17GzyPo+7N#(yEYZL$Xui^0gN;cmW%G3;J8zq=T%A-WRt~a8679ADpluWv zyl^1xIrxifM&5IYdZ2;- zH?AqXu2Xu5|?e9)wJeEW0de_2|0L0Lb+4yzkPvO)- zzSat??AS87lWldblp73v4yvFD8OyHq$RL>a4MKk+1q%ikK2JD-EzqwkrlC&j9!edD z4k)+|eQjE3d+{jI*eO`R+5=7#&WYbUgo@%eM~->g#3*VJY?sJi^a-k?!-Ag~&imD_ zm)j+H-ppJw@zbZ?2-Eew8QgAnz^`zso_tkpyxHLVnCy@wE^&^%Z4nfes0?#=^fm^Y z^ce3|S3~Q=2X8hjbIdO^`Ynp-u>kt1AwcKb{iM_{{oBT3n}wgcZM6kpp(%vjiKAxP z$x$vpa6ygzCL%^-7S7jGJOvpH)AG84CTTRG@f zzHUn77wx@N%UuP(_Fh+CnKW`K%gc-BU_>%Y0ReRH>RwX9jNH!hYWIYJ(mptog7puW zpI=7r<*4oJwm4|awC0@W$Dgb>T%+CE^(ATDFXkhR^-+EOPTnSt3b$q5EDO7sb$RQ= zeYAMp>TjS}WPnDe_j+qu2tm*|_t)m1YMwzoBq}SBFLf9z6v3{q-@lSfcBw;(zc|~B z!p#D4hk$xD+0eoW;V98j_^Ou-YTYoC?cd*fWTu%z2|FGJ_lqKY?q|_8LXkUSnZtMQ zwZh)SKPhNP85bS+@pipRceVuERIz}F`bma>8J{jH4Mzrn>d6R)pT4@;AyBfy{^aOk z!}=SBQ_d{Py6?~gLv@9X#zVv!T#gT`DZZ}SO?^7ukEK#smX^=04^Y__;Vx}m=gS)h z;i=3|_dy#dgV-T75zNuN@46A|t6c4xxGc3(mku*UGo#%56*1(3(k#Y(kvqk40>l&| z`RVQ?*}TXi7BlM=ue#Ixx@+bgbUezJJ~gUq9X9`jCJf0iU5P6|%?i&y-l5uzu9%kP zAO?Rm|AktjWu-#&NpXJ??t<1UkS0pWvccrCwMVt&SUmV$+fUB|XBw9o5YTM<=zH}( z$DS&pJQZD=^LHoS%)A%8RZMTZ7A@{j{Y9B#_u56frD-A*R^kh1@C{+BOm+(*Mg^Ht z?fM?!sOjtK><ea^~tqc@!Icsos!OCH`F3cC|E&HCaY3H(4yo3_MJj$31S%2=W<*3YKhi0wkG zf|E7AHueX0o<5?6I7PXenR`$s>Q@fKEPlwH0i0O-_r~WP%H)Z}4Sb@+*4Fa*EdiN+ z=>-y%{L3hGVX^FfzO7!O^`+k~j?2OnRidS)Z`V1yDU*~M`l6R83Y>>dkukHCGUDA4 z9Q;ZKSpDD~@Zi;rIMc)TrCcM!=CoQw@)6t2;{bXEk*GTa@u3o^Q3l7<4ltGe z`iUF5AQe`PmJXlx)`hpa#8&LPeJ^8rg(*_30_l;3HG#UGUE!%;qCF}_4`I?%FXBhL zR}(Lbd~~eq*fG)z7m7d6S!Tl(ytK^vTcL9v3i~RG6d;N`T6>V z@+jYyEi+}2l-0e=pq-NRtlm5wOxIkXNiIvRCQEDP0~5dgeTdRHcW-5F|H(hCDZ%m> z1iC;!D@-UmTdVV8jXU*yXAR_(FWj+q+3!?#VKGr%7*4r?l1!iGcP0Y&vQn1X%CybH zgr8A%y*PfxgDgaruhi+WA=`SGJA~bp2zr)i;frpBf>fFJ9(;$`=O)~xW-+t^_&V~W zx@Ab%Xd{eJbhI$%5>hFs9mUmP`Gs6$IcsUnule9I4GD@WRoOzaxQpDt+W*avU|soCm}EGj{|o2DP)KkeYp9O+*9$-k|S`Hn>LmE@q`{ktFB3RJY=g_d{H3Q9%bPSpNY z+R_1~nmQcDQMTvCXoDAlbT_;3 z;F4Jqhflk}-u|32`?Y&D^)2xSu@U!I+09>EgoF^3OTkPR4w95fGT^Vp3CW(IC0-1XEp;SZ*{9pI^P(MtrJ?W< zp&gG-Ev^lSqa@#{kM8(5d{!tlbmJw^e`j_98pA{0WJT|61fsHyEc>>>ct< zR`tCfaXXK*r5_9Ui{ECI>5A5uf>C#%Zf@}pecgY8_g^yp>i}-7f4Tbqvi0GNKE$P` zmq*0M$LFH{0$7reFXL^f_b_%ae;M-&GQ|IWJ#%L|(SyE`i-{Q$ATrL+#tXH@))Lq$ z{d5{Tt|hWN+z-g_vf1*^(kQfsBj3QX=8^kCiv@S;#FF{!bMKx3mCfn;V+r6#)SO zH}skh&Fg?(Nr1XCo_sg_gNr*1o0#8GoYeo($r@bG61irs9K8=92Kz6|R&<+e7j+hY zQXrIBd3$@-SKW8N?|ysk-CV>%p9*KTk3v{v04|opk(vvzbydst1Uxq)`KBbLTi-R< zFXfv2`Z|#%g+SONt5f%p24GDf?Jz-JNQIuVfZpI;6mbkdSsJ2>7S4uU^*(8%^S(Y* zxfw^%=0`$8at7Nq47S}YGZFFG=Ss99wod&?;fZ@k=Bw^$@N)9ReeFhW&RG(&Y6q>a;UO^>;CIk8n9mA zn;vvAb$T`^r)mdewr-NfK}e_B3YF^w@RE9-pDG@3!FD;%57 zLzU$V1djuXYdOzk0Hc^ir}jILV-EtVhG{}^enSC60k$Vs167cY1aXKR6CO3&9H}xu zS#1)&no_H_o}?ulTI;NOf2mz-6{F{|76S02Dh2=oXI?!6DZnR&R5)`13asAT5^Qg+ z9f<$%Bluf2gc9?17r0AS)z=>twmY{w8{BWSqFO=W z)6zbet=M5ymsF11&;G`$`VC{O`{AVHB@qCJrf&6Z@z|(WR^{-%5y@RV0_9z( znlYH(n@(M5K#Y;Yx{9%>zlelmlumiwf4%vKs7BD94S5;ca zSKzN503*5RmN%>q5Q22GYO-U<%E_s2IaMAhYj-KkxdRq+4%o1K2r|ypG)_&SJer9T zMPtXqamy!IzTddy!ClvUojxJ`2^Z6nIyxzW`IusG;5kz80t&|K*SVZb6;0cO*2}F; z`X=~mK3hIpt(OJB`UK6+!&4_S`Wg#Y^mY}-b0^K6T2yrT_}vM(q2l~}zE4fOGZQ|p z!x9?LlB=I72jCaTlhVrQ0hWYW zDD?!k&B+X0v!kr%jpSWEkJ~>TMm$lw#g=_<^b<4&1rtZW@fXv+yc<4Sf^ty1@Z`G& zzE>L7W0_q7T8j17R~QV_C0a?#ZQfuJ|EWTi{og}wM0332+~4gi9{4^-SMgJ*eFTUQ z`@FuH;zkGS^SK`1jlTpF2Gj7H*gW7cX%?39cx2m2m|#^;sd&fmGI_Ok!#n}=SK=`R zaFdI{F51wF(Ba|XsS%0+{ETKYf_*Q}?TO14sTDK`*U~1|L3|199?jgX+Po33qU?R?|6A) zGvWlLRS|5L*l{L_608=J;R*1!J9P!!eLa+4CmzV`6%54Qtr-=y@lfG6l(*y>nVkUR zXT5b?%xpyou0|7>sNZY_7-V4!vSA?}>)~`}fGx|7{Uwy1o;tSlceR9e_tI-dAbnm> zDQtp;3g%@`mf>&OMK$yvDR!Q=74R0k8SKkb)PBpxrdl)#N-?39!Ml;X6FUx@1(8GiTH z=3=SZBypWGYn|<3(VsE823^nAe=$DekzzltxRtH?u>AM~^aY-nH*Dt}Gy*Xegf(4! z8rX|AG6cd1aJ=<8!Zv5OBiTt& zPsXuZNnsn>T$h^UM-3vGT(`p!I+m(O3q~@bx2>{!TE7+c@7L$8!HKEY`q1kMrV>2| z2-TdusO551(!r9I^jrbQT$z6WarXwOXjsiJY4I39AF z#qO~fV3G|4J0%yZscZ+=p#OE(QfH&mT^#`+N+%X`*Bq4 z#a0;INgRWVzX*0AfzfVTx4!>c@GDl(e2ry^WMd;)y0-26^=wRCOPRhZmJErX;}*xz z;7yrh@mA9N>yObzZU&`#O{z-;-}nzsS$nH{wgq#;cevtE#Lcq0m%jOhfwVL*m=UX` zGj!fX^`gTXC9&$O z<3`&-BdCl0{=SR6Tu&Dq2!l|p?$EdnqwzFp(QfT+3$rJUEU||8b|!Nhuhk%MZXula zLIi9|^d8*KJ{BT5i=GF08Zi`$VZi=O}O8iK|=jJQkB52w>r z3Bn07Sfii3cIrro{py}(r;<+xwoJb4CX}5#rQcp7P}cr9Ss->1ZWnD zN;IdMKMkuF0FN-#W)ioxE&ba6xgQ6d?lr_U#!6_-bpq|Z{>bfqtk+|IZ%93CRD!={ zP|2Fvz}ET&6^Ww>G$odaOLyNn-Z>rh>=!j(;)s(|i}LXqc0uCp&mTkA^w8hz(5MA$ z!S#{6Ie&Z>uH)#GG_RyoT39jIaII^qYXp!@dg|v$-Cz@-E4jvi@O)t|0=klY+}K;= z1yDB>eO!v-_*nlc9p?Snq{Viv2q&~P*TS%^4P57pUZ$DWgoU|-DYyd@CIT5m|CBwd z8xk&I0u2>rPYhAx`2&>g)Cb!*?6C)o5U#V09AhrM7Qs_o?2V?K^f*A$2G@)J?&mm= zG-MrFbNM%L90I%V$fx6ny@Cw&aFX~h60&JZVo%&gI*oUcAV7|#nlP~@`LY?O6v2<& zUlItg%}O#IE>B>r4nDhhxm0(yzX19QdI;a|Bl_0Km<1&N0CEjxW!nf3x&HQc`i`I- z)66zfxdRMrKo@rI3((0K9f?BpV!HTDdJ$XtSCLVmYIdc*MPb*2<9BtxdATBX{`w>( zCH3@-kn>O4at)|==jT-LDHE}fj0W1@qI;W2LWPmxxVC<8e>K*E&XQ&e!*_-c>$-qD ziU`P2p^A;pr-Xpg}u4Nv1L#5F*$UTr(ixgkf6@ozQ-45FQa z0s|=!0)6(xGQ&52{}y03;z!q&73He!U@`@O0f}DOam^ppb1f^b zh4gCZGC$Y~~x()Va_r8=e+{(02c5i{c z1OpAVGF_N+fyM~@S%0i+w!2HFq6BYtnkkJ|j%qu86B-gC3y3Dvz4!!G`9()o0JjD5 zzKeu^uZxFvyuaL2EmEZcXsTZqEGsBf>wL5BYi<9V+9i0VoAPuVPw<&-;0fcot-N{aH3V`iwsk=nymhe z_CJ~%53Std1NbjvwCH`IN)Zux34-@+l%0X{8BrWOt7(A03WtdDKTU5dWyTK(X@xI_xgaG;Sw%%&QX%7RSWh72rQzaI(|~@*a{~X0uy6-Xb)WBl zJoz;=2CHGNH98;T zmBnu9hvaw=@m9jo1yKF}4XK3#p?5a1pbP!~?MhsD^_SbTjmW_)IvF5GS=f2^wV^%Z ze>;B!FD)%zK;e|{#UDQK(Ls$J%70DDdMLE=$wN;5sPD~^q3te;mTFsBpAUw-rj}mr3#O=?qZX z{D4u#qp&uL0|LRf8<+sr|5sxNQA+@%y@G+?zhl3=BKi%Jli z{2fGP77OsNKZxG%QUQlCsNDSO?`Jx*6aq5q+~c9q(Ig;ylgpD!*sLC6jRR7(ApnfA zc7doiD1zf@tZe;f_1y=n&4(Ti1|m)O`z64E1wiIbLr*VreZ0g(K|!HfqRHY3 zti;p4yODx`8lC3R?PQr{aBvVf`=R{!V7aYD_;xi2;8d5U3)wI7Lt^w&ow~1I=z<|f zPRM-t4v>$N47`c}qI*x{5wNsEj1{j1ju;m=AC@c~9T^NgGB_9mi5UTPsL{kfH0;)ZeyNEUzh6u^k-}@o=)U6Hz--vA2Ph76{hsbW{?tP0oSIU{p}PfA{lYg}&h+u!fw*cK{6dxcQ`RA+@pt%1A7}xgz z#SwBU2;pa7JXWv+0D6@w*(Knq?Dj&Q=egVt%X*N*A({XnEf0`2I`58AwCvDOQx5=Z zIc<`mUz0i@@$!4Vvm6{6$^ixmR#*s~G-*4IPd<+qWfLH)IJb%;VgV!S`xa!sP%8_Z zO+gLpfxvXV|H+#GG37)yL)NvmHPsr6_n!Mj1rZN`Y=Z>=F5&=X=Kw&fp$7aBB20zg zr$F1Ojph^MSqYQAR`lYPxSc&fM%*MAo@+oascEQ{PQOd()!ncbVnwqgO~6#db-&E z>g=zhqWt3bUwDR)?h=p^q*D~6Lj(Z@>F!b*=^hjWK>-OV2`TAj=CB@P2;J>=vohr`)#fOfao7&nZ$BkiO*kG`Q zExey3DJcoNvFSrUFc-)2HO47<&9CoaE`o|EiX0-bCIWVrwO1F&(#=~GghR*JyKCoW zYs>yPWQmSD{M)y0vUYz_Lv4`dN_$%+-t$J+3A^PIH+Z2`u%^Gcsz^57m4!m7$uWY{Du~ZkuaXwEc`Y!_=qd{sW29O}Q4BV3d zB;n3(%o3M{<<*5(63N#*@mwy?oZj3s=9sjhT19grUfxv&`e;79Rgy>%uW=B*%Z0do z?d+68)nY9{C8pZ}K?(!8Al@o{A#i;=@nx~vi-F7h!-#i=^q_kp*@Mfd)F-=#m9B?l zAC>X4`@Z7@m?ePZ|2MM3^~j)DF_klxvc6%dEIGum;Qbuiwr9`GTyvJ^*xmiqAZei@ zuB&-O9>CT}iymkKD#Dw$;JO`7QSwW`f{6vwV3hU}?6<9^(9P&_qJJQr%{^B1K0;E{a~IS>U#s_xAQi=jE|C?1KtUssOFXNbKGG8i+0~T17)2r}%(>-|Cy?jRE6}06t>gFi$QHVn5=5 zi^m4TGX;nNdpVYSTC>w?mRmDVj_a%OR5pJcQmcANnlgvIG5CH206tdIZQ@Vy z3-nq;I`YPSw|U|G^qcp%9ju*V0lDWV3Eb`^TZyOex!i$P&AU3?i8Kohig)mNv^(tR z=ur#d6kM9ri9ngiH+vyuM}5~GT|r)6$=SKA0JHZYKd^GYZ++`kz$kfylc(Q?gPpmp z>rpa`z(VlYV=f<;KlZynDL$J@Oo1}%OZo!6caC?o;_X2;$XRS2zlYPUWOLu~GL)+6 zlkVA78!{_AdjEyi(%LIV)ggA~W@67UK$Lat2|fRgQ_ZX9w7aYknS^ONBj10n@(D73 zUc0|TPQ^|Rdq51UCw2q1(Uownl4!7c7{tWJZl_f`El8qPeJ!TfV-WlC0t!4CGT9dd zDne7{qiivu4ZPa3@oAhZjb6SLOV0qbK{THG50dfnARbycZWG`>LgS8hig8W3tG*kQ zsBBF^1!}Hp7V4o7UYFyyJpw_42L+tdVVquN<$noP_4Q`R>31m_)K@O^Ne)1G!o!@R zPb)BVi|bd{#KHR0gWBpX(oUAfV-aseOPM*>6EKf7;!;dLoFPIq2g6@#~M5ef}x6|TTxLgq?oZf*>P}p*s{s(E|95m9C zTuI@i=7b)(@7LDIV7RA8I;tdfTE1HS4c_JDU|6&`l?xyWES-E$w4CpEX9@vCRaH`x z7Uoa8eRDDAt|;lv(axf}_vn~xNgzj|IZzn(%&KPL#5>v^@p%`J|1tEIE^oOxEnkA@s^wz`BQm5)F_Sbh# zM0J%JcGz%-jm!jZsu5T7?(Nhp|gLca59+JSlz zSX02P;|Sf?>J59E`Y28;Ps%ik!RPiJm#KgHEq72UF*WI4^ANSNh*+1lOlw z^4ORSGNBI+Rcob1aI^i{^=Vl@bIaKx&atQKk+aVg!@Qk{*=@ z*M}!P*i&bwBzEy+h{P{9kRlcfTYl`f@az6F>Ir7A{K*{=ZnCE*`PmWO%N=8wnrg@x zdg9_d^g8=BrqVD0a#n>8bpe5f?7kNCC?XE2dM4NU)YuF6#|ZZuLT}H`3s-YXd%q4n$$|2D!TowCI5%fXeitX^}Q^Z80I zL}%+Vvs*RJx8txIS`R;12&ZYJ;~`2yi}Bt@g@_GkI&YAYvI{P8vH2X4Oq@LBHrJ~- zTy(J*Af63HM9$0Er=(RP!gUTGFUHG%mYa7ZRwPZUJ)0v=$(6HKqe|@#v20-UE|r&g*W698=8p|L!1-ry>$4uiXn?m(xY_AR5$9A+ckGH>*u3?uIR* z4a_fuqN3@LY&7GELGA?mG2Xje|D3}xs#`OIk*Kn zwEdU_iFAHpf9-yU=M*7al0mX;VIYQoNM_*R6{s`y&3Om;D21F?jPS{+=ys8WK|`0zYbN`D@gl52hfn_7{YZK%#`sgsN{Q0_*Tx)39R zchpv_?D2OyekN#JI@cMqGP!&IVv^V3MQQ}i*)@_tk4uUi+bYfiwl`%|7M*K<)NrblWD>iI*Z4(Fg{!`BxSkH*TYy^jp!ARKmBP(F=e#pzhzwn39 z#`{XbB?yZt>Qrt^vylpM=x46W*2@^cMVweK&~`RYOO72^_3-D)sWAT!Q;T_%yNYk} zqMoC|L_+q0aDJb!W{t7R?Z=%Q6txkt%;u`N13R+cu;n15$S))xcpiDV98nauoa}eD zL!CZlNu;fpYf92kWIlB7DUH$*YKzaM4xeg24BZl+ost;ytvvp;p({%lk-c0&Or=c| z1dCw{<7h{E--qXyEvWkPsP)zs!5zc!8t!yyRG$TnyyqF*oOZ|94-bo| z972Rl;yi9bR5@a8GCGgFcGdZ1KA2ybV8rgq za4*)!*SQ!e@wKM#X6xnr^Z|Kb(-#D4-F%qZJ;!H#*tHf_Ga!XkZN%)d6s>A(`NmLOEkA?$;#KVp7f+ZK}O-#)~u^{S@I)XwB~br0== z2E=Em?P6O(5*HI?^;rB}{-_EpTbq_0x6`k6jD9TyI7Vk^7+Er<46{xT4T6I1_Yz)G zMeot5&e)W;>^GW+MBqjuui{n-y*d3P#(O4fnTMF_N8vPiY?B^ewcV?~x!c1gqnyPRU_VUWnQ&?H}8-jzpW0=y~7W3O*qpY~a7J zOz_UM;cg_YC;T>DBjD^_LiM^c>fH66vfevFsQzGW!(2#YPnW>PhU^pq1L5tp=}@yx z@;f+&?kBzHlN*z=9Sp|9$pnj^(SA9SYa`VG5DJ^1TjJ@J+NkG1M-w zfT8iXVrG=A?&_{k_EF3X1odfaFRo;$QnJf$;grqi*2FrS3v=~q`um4j*{uRE{S_-> zSV!gu={(t_QBu@i+3VfQ7YyNcu584F4tTtq_BGoJG|ejR`|K+0OgQqTI#VR<#it9u zGfJyflmuPtID$noRBIw@KAfIBnf&??GgEc4iTh<3$T~ytr0pp-w^dnmo@BlsQTtTE zt$yiH6W~&D%rYf3CLm_r3wOhqHN~!)92)R;-${K|8~NA|O_3<)_+YA;-hAy!B9GpV zFg#2L-Z$5SiGOh_>WFNo?EN!w9Xd4Xq_b<>O6w#a?Or-CW6C(#t|RsugGSVYLGjar zrYXSEF@;WEzw%ZMg1e+|JJ$(sK<(UK-lafC=GDPDM#)Bjr)n zB*i}43Vc>ZC)iZ+Q)sNs=)q59tM)E46dwMgJhVQ|rpoZfyulCZCP-SetY(m(v^(ag*%OdPb{74pg9QpPR+7sC6K z3-Zs4)28UWOx~&=P69)9ZSW7Q=GjA4^mj<{ijCem|K#j@#tiVD07}!e?iG2+YpSiv zga&Ua=Lw3lH;1r9I`zk=M4Rk3ju`8`LU6eg--^PNhG=Cw{o-#F1 zKjSLJ0h?~8Bq-5G-XR$2vl7TKaoVZRkv0Eay#*M&zBZ1m#-zXl_1dokPS3cXw{Hu}4 zQJvBNm$zeW(_z1}o!Nce6d!zwSLx2@2^W1GtXr0weEaS^?$f0C*5WFvyA^XgiU zv0hKIUwrXijzMQ#{d;K?tCg7JT67vJ!Ig^nK;BlrCV#|ykjxZ$3i6-*eq8v|A7`F! zMriGnKS636u*-N7^U#B`@V zeugK>5R)8s-rB_+@N{fSuIVKzeJ?BXDU=rg;eu=||1Q-LD}=;<=HQtU{heN1gnY3f zS%1b&oZB4i*c$2J?O8Q`e+M1mVp+C1%J9rP+C^+c1>WM1X>^HWkw%*wM0Q%qCDQSHkb~1sYjUddD=oe16@#HO(vsoo z#;Ur6Nl&`8`Z?TUn*A1nFt~1Tl!{gXYxL_VN0Yx(Cqon?`O>Nt{K7oNc_I?LVM;7Xun23?l-EE|^ z39Y83dv}CsiPSUD;uhFvXs+ol6*KVqhQ<%W$RH%&-WWL<(kgRabl)Vd`kFbP7oPS(jEX3_VwKU~ z=~OF_G)emtkhe@=Rt^-Tv;AQ@o{-oiZ?{nLV_*qde<<;s5Gsn!&=bYy760*cqh@Nf z`bR)p`PK#}Ix&V5k%^7hHMoJ+W_6JGc>3DTLF#NL>`3BLA`qQ!IxP4FV-qdXAyY%Du8h-L4F0kUE#A#saFwDNi!g9|MjH-ybmZJ zMgcs8u2I{wp1q^*76O-&`SnQ33w!ZY{!zK$4hs`IB3mbuPL>323baf*Dq(ylm0m=F z->f6=Y_Kn7EbrC-JoOV}yV5?@ufg-rapvX_sg;(!uXb12k(g_UHH3=hYgU&Duy!4+ zrw-4$iVG^A(2L*yvd>{_5AyII^Ltph#8MDt5PC&SSJQzsIlam^5iHwMV4?{_a|TIv z`Eor~d$F!;OB$D#>x%36?4kt?y3!fRnDeeA3&N~juGO=q8cl!aDx?`*8={GCJA?#O zJrCR9rIdkd=q>?X2>A6zfs@Fci_?m{Cu*)7x1W^EgR$rCmTL|1fKyBg+pF4uJGtH$ zpB&v1wxg!<>is!s1X!0x6T1Msm79WBZzc-=J7)eq$U z>5#fl$CLdJvcYk#C@{_I)df`w%v$UX)}*Rn`ek3ELSF% z?xDEX7)*To%;qDr0abYy@LHNEIJbE}64S{fq8AQc*m+9*prl>;is73Hob8^rz<09A z9k3}R2dbrU&$M^eY%6);RMCV;Z7<`gWZN%!rqL|Dx?G7opF7)+3eFSU8Za@<*zCiE zALa`zQa}5qd)Ay~Sci=RVcc|kM{EuNmartu`%bDsQ@`7Z#_zpKg)K3y_^~jElwd60 z9*fmj0)$~YuC(RESNL`c7b61V^1(|r?uj!-#8(wtUGjMQO?2FoF#{ynoz@>2c5Y?Z zM@H`d&ZK_eqI)+nx^+1{jAgm~i3Ib23gkWp29BKmnZrUlFJQvm@xw|2Zje5d(zZE? z0^h8i@EE|)ii?R=${s$FjmMy=brb$)N4Y zf=%veuER3%ibN~5A}WM=Se=CA_~o}HxirfsxKEZ@SWIQS2;1E>gZ4(6lpxlY*2<$_ z?5C|M0ss|pyvqXdX5r=D|Apix#LTc;G&gs(j3b3TF`+A;_Rm6*m210_jXvl;*2Fwz ztzX8zAVhBC%wJ%;yi<75cx;DP()#Nw!2)tJ$pFtEpAvcg1#5*TMf=5FhR?Wa^!g`3 z4}xI=c0BI#3$$=0Sz#xw9K)(fBL7y`7t#3g(Dep1;%Y|P&+u=h_16vW0cZr1@lS7m zK@$yJz@0W3-$hXpv<2^Pi)RHB zqm|*kY8o*An7GQ!$R?!jb6lxd8063u`Z_|-_-QTYU*#Nv7laQdZ z<@%~*1*m6nK+fv3N-$!L=hFEK)R=f($m-gf@-Cw3FG!_pq%Q-EXdLh)P;o#aE(i6i z0#4^W55V)DqiUSMNcr_=s@QDP8t@HfyDWFV1!nSop!4(aHSWEWlTVXiSiS`|t42fj zajnf81$u9}_V#vhR>+c;ag%GyUqemj0LjFFcPQq1hQq9I5AGqtyftQi^E!RAdJfz9 z1N*T80N$BdZfBCiJO>B=PcOjJo;o%8+n3wN!4iqTl(9JoS%Rb?_l>!Zbw8B9e-{YK z`u&zqQY=w8eH59B^=0z&w{I(GE>Cw8P{L@kuoEw^WIwd|dGA43l`iL&2yq}FBgO!e z4u=dm6%|`7>r3@gLH~;*Qk+)c_S3?t27010Ff0`rHE7F6(HrGK#20KP(Dst;O1|(K z)%OBr*s?ts=j~DmRe#I_$)kCZ^8qXt z3NN1xcxL^A8^t0auH*p*EDr!9e~V)TLoke?vSE@k+E#kZPR9h)^dB(FbBA} zo33J!9ihXb)+oUqNOI9Ys?_VEy#Zu(<0Or+r;}(>ZaVidGo-Mkm1l*Og(CsH+4TW{ zR|7<&HB@#L7|0*r@Y;$|%%=N@jqi&<0$Tu4&ZDMHLz@(eEoKZd4LJxj`1Rl#87vI5 z5j-|-CpG|N(>(J#O^<&xrFJNf*tvjFq+)m9;%U?OoN(eG&c zzRx`p#XNUJa3~^&gL-Miy~@JB;}H^S8&?q0iRQH^--keB9!F!mvm~&u{tz783ry&M zPW#hu^$o)ZOYH)n5oH}-lz}^MQQ~?}reE@Ny>6d|^Kk5D^tE|xp zMNGfFgPAc6JeQ0nd*-vk|9Td{rHjUk^fbKZzHy*yjJZaO2RTfk?8Ycm@0*FDB;ak# z1y-+2QY#aHy>O&Z_5!X6#o;swJPKHA(nEfLFo&&>#f8^x!)M2QGmi!Vob^7qJTWOL zh2jCV1iL{!t;mi1g~mLQaqAPIeF1*Df88ShI25!psOUNL z=Scz%P0%6)CGw+Gggfp%TG1LMNTg6<-K%tBFtyRY9!E)%iViHWa)j1HH&*^hE8>j4~k;fho6Nz;}fc`{^TktVUl!|>0dZtb=w zgznH+!_$}$Vn~oU1wA#kZ<$`vFTh3of z7cK%1;3_>&7D=5TDa6Uwp#aY~J#=^QD@BsC(61Xi=h~D|8~GwC^(H1F24zIx4 z;|Lmv9JB}lAKfW;Q{2%#sfG9P$7LI#^gis1*B~-9%~Pe1_5RoU^y7ejMV?3+Csn4c zw1C5HX~T9cgO8O$SL*>a`s!y_lCO&7 zluD37bw!(KDy7jUbeGcs3!Z6smYZLPlxzYNt5!Q2Tk~yhZeqOBng}7-Fp+SY*8m<& zx|bZ;w5jF_W!$(c3aF2lhv~Ol@+*19P4yrGHgG#_YSdbfqbcmYd3fOoK-LvtjWm7) zYXT0C31ES{UD%Wu3%d^t8kP5-g-?Nu8lCfkw2vEEfe(Xn9Q%?yi}zv>mi^k#RGC1N z&kCrp2dzW4^HO_B&s*@M{I4!c?IGGVjz%?x1T>GHKd$csNM?uAIoGJmNDwp|M+96t z-1a`OWztG2FdTzu1KZkZiZ?IBR)*q+Q!~#Lw28<^oX%rBbeMT`YscAZDjalA(r@ZE z36+4E$HQ`c71tT z17z*#xjI)KQPG(YCCtLTy*;;tjn*J^$1o8Bz8arnTVVzOk3PVH$F-DNsT-^9gnjzt zwhJ1waE?Dj1m0fnoE|5E)f4NJVTENMX@V-)Tr978-dvsYHgaNww-+KNonD7EfL-1U zShtc+(M-XPXRcpcW@84j5Es3-%a~naR(%G-alHiSS&xeQdW7*m)dxL}`y_;xb2vbK zht-NHB=}jK^9h*f9Xgr^Tb$i@R_~r(C%41tGd(b1SCkNn&WpKdiQm&2Ni+~(qudTu z?Wo(R25t!q0$8y@jmOiL2dAKii4{Af;LDHKzcS(W(-pAcDyId6f1pns*%+GV&Rku_ zF59g?PZUkI+neO5n^d$Va1J!8As47FCOeN8L<9HQu#6(C-Y)kT`_$Fx_lk2I<7m?cOyvL4@&R2ZJF7YO>q0-Ixu)1tKT^_4uyIudC#>1a5 z$P?GqLD(t9svm)90vUv&NWbbe$sYA%>~pk?`Y*?+o6j_BTn`jwI3+eOhQc9A4h2cS-%#kQEdSSI zQ7di|seF*MCob(qyTXohwFCOBMxF^@cunWyzEt4V0`K<;xKze(A!Aokw^xS=;!(|) z^b;jU%8Zg-Ue>Ko)5vEmzRQ~Snx2c6wOOt+deB{L&vpZV;Ost+zQhOdQ#T%y z`o872=oyYHV=ozTRqJscv9Pd=zhtb>ZIKQ_E1}g(_eK`i7}mT!NRjqA-n2pm4IA=h zJ$E_T!74R)otl=V5LF+DY`~Fg`Ocp-@se>fVB&FLeTl&NOGeP5t7Qd}XH^dvZ-!@@ zRB(7`Y4b%tPiS7F{HME1^kLsqF#d|w%O>8oJy%Xs99q%pQX9L&1sOodC@50%GbS1}oECxIf=dwFcFoF!wGK%JX=L%Z(i}Bpj zc@arFYY7Sr)dqodnm!jZ*Y@R*);1cwdk_dCtjQN2nFxAuqEF(Zf%OY~j8IHzoxL^E;`6cxyo(Z)2Sx?7V$GkzPUs&@ za*e_7U47)CfIQJ9gUCPzx1p~dMIY{7`b4=Q1&*<9k;oJJnpu<65;9Fs0SN4UHQ_{G zx+jq#j)O8rt358Pf`xM;Ft(>N-j_#m>Dyx;sln^{^K?7Da}_g)G$KARah-7D4Z$X! zWgPs0gT@RT8#YZ0`5XI8tZ@e+EV~^jdDxBXxA>m_lpD0kTLERi8{)hP+Uhxe0V}sr z_%dGLOl}3|EHQ*HNdH{)lhJnIV9JM&(`9^-GlURg=c2t3Y1Uk>)GD5w@qy=%MkVMg zm2Z+ZFR^$$pw4G8uWdyk(yulvvK~ZiDCL^YH~)LfnLQo94zM7Q10^^U1Pua-b^s>{ z0>O~R#esmm#&aep1Z5uNIG2pRFb!E5cY4vrpMNXB%9f` zVZud@>b1UY_R~_0&NWvWm8A`d{^#k|*8@MUK>%gZUp{@jMXeTyZd>gkg9e2DlYBOV zDm^KwqRHfP1^N!%BA#SXCrpg>65ctvpd$6#zHAKnbRvaO%s8siy%5mmc&Y2)dj7^p3GssKsj6b|w38?%sG{`Exah>9Ho2IGO607-!NV%Z3$7i9?IY-Hu zq8ZKdfYFV&P3(E`S-X9=vf_dc-^Qi#9U_OP0X9N8#nY!xoBEB~HqFQSf1v+?zbZXe z#loq+bJ8TTZF<&LY@L>3EpCoTp z2iuwahUfWf&W?BKw=Zxkr*gkZzgcxcv@ARtvcKINl-L)!bR89H?7(wHviY>Vy!;vb zqw#v>{VZ?sUrDZ9X#CKJ8-&>Y<=U;+yRVxyg*maoh|>;q@gst}W^ zdz%8|%D5c`Ddb^VQu)p5B3yS1)6}168|A=?9OV9%irQ^08#g^ZP&J;<@p*m1rMPhU zt3~zh!%Mj*HNTsSuI2u=WJKwtaf-!%?^m}fsL-NDO2pUo8zZHWvPe0kJn}hGY4%&Q zLQh}Uu6K`N@#J9gk-tpMmlog4o1zlM!|^^bV^xQQM=gQZ?zG;cg$&*BGk01=(GsG- zz5cK6H!0S5m&rUnlVT#5j$zXuN*k9?f2AV!(;;3IXp4K=h;U82WHcoYt@azr+Hhmo zmaoR%sZ@Q(Y^xh&x_m?o+eSaf=O-ngjztSOPK_AU{>-0p`C+o+FzUj%R@-ajq)_QOMRdO$MHDBU z){_Ez&FTC<8V@S3DzhtS{)P}2uN5!&%zkM$;d#*v`Jtpsk;VB`3s!J+lrnRpo_1vE zr8JXWavknf@W|VItM2TV1IBnfu77&uE(l@&%Siu~ap23H5e0sqHlqlKpVP2fuDo z?0du9wf;cX-_e6NBGrxhJE>-f<1Wsq!Kt0)6K}R9{nMF%>X&u~zdQ~-^0x{DH3MW+ z@0uSPOOG9N?w+2=jML3vRS~+$rfWpvc)P39Wyq6k?}}36Fs!F)7N)7ae@=5r4drKs zmf3u);;J*dUDB#2Gw?Oaw2i;Gv2c2jXP{*hqJ*p`R9)II=egfUl&Amw!dPpoVCDB_ z44qfQsU971&G2!(eZ_m(xUY%>#gNR;YFM_Z#cvRrIGeCy;@tOePC3s-OGi zuRBzU+D#@^{iGi!C=&GMNzf0=r1Wa}Ub!=JE0}Wd&9hY-@3THf35zqkZsDlq7Q z>=79w8(S04llne4`CP#+igaJBNA3yve}1&SqxOx{a zw-ZENMkNa`lrGaxT&po`#WV*p-mQ1>(&0=LucoK-2AW_5F(I7P2!kL@kaL~^!|l6(0k=e7-}FHh+vcQt(> zLOr!u+iv^THdPHTayNKM9Uf}RhHon~=7|(OGPrno4PTWx%=8{@tfMSAZSDyCe0lN=Mc{|2A2B zZ|j5HGPy+#^?aR1e9TsfajSdR-f+T`>Q?{vdQgl*t!_P-H{%&^?}4qJpxx-H)v8dY z;@_O(2D6wN!m7_mIU}p@#>9Uyi2SRVIWjrTfqpbKXyF+9cGci!Sv^=oZ9 ziDoeluhOH5B*KG&>~Y-h+U0yHK3JUYmsTsL@xK(s@;D{k2cpjSN*~BkzCqwssE}RpHYwI7X6Cx<*w-uS`W8ZY6A)SN16iX?bSDh=rx?ITIvO5 zn%?>MHF9!sRVY3eT8jF7*Jpbq%FktpTr8=4p>yTb{ax@~#xkl~45U79F=6znVxvjxg8L zSd~{*h$=#@JDfztHpQ;Rx3E@?zFB%+O0TzI?meIUIJ?Ay@cI4USKbk`nM+g+k94m} zs&HHbOPDUhomgAutUEUr(41e0=_i_fSp0cA!boW5eUvO@?Yl zt~`!0y62)Cl0(F{dhqo8=2uN5e`kjg$12g?*VBbInhV+G&0~4bAcHd3E4?KW5&UyE{QMGE>Yj*PUkrQsA5` zsDXJOleaqYZS0Gm+5Ck&-h{zHKfmp%eMSEM}Wng97+*GNMXCCj#_?E^LC@RMI> z=ygsFI?^xP+xOmiX8tW9v-{F!_s7RKNSRH-mO~>Vsq`DmQ7`T8#_ER1sVs{k1^t`W{NXVx@~Fjr1*! z#uE18f$r4Txfs`c;I!336pU!~aY+{(E6pnud~&~2g1(sD;zb25jDIEky!Jg^$1bB( z$Qp)$(VgDP?PG%j;6ng?#y5GS^tz!LgTq<6B z5J0U2g%nayLIgJurFU8ZghTJUY=}L`=TK5pzo8R#E2DL4{6)wh`2qrVju@?tcOm0{ zCUcajZWq>u(`#@kIHv$TN#TDUq=bO_w;c-3J@idPaPb&aFekuWyUhQ3IPhv;p#}y* zCU{;=ps-S6#g9s()uQdc1hrk)h4R4L8`xx0;(!0%E@!{UvL|C;P=y?U?#)q`!Y}^k zpSO2-WMnShlVZwNaF}{ob!AiQ>>Utqw6qN$9^4)1JN%mdHQw9e(h4yppI9>|<h*VX|M;M-~{xkt2Z+R1?@PVkZb`QK@IBw6P2`@tE!?w+F8ECZlU(Zzc=0kedkOI z_!xAgq~=-$nl8)Gf@jVE?k-XRZW5#s(Xoe5n{i+|vXdB_-Ne^aVB=r27FsCcG+D+0 z?jBb7Fr>kMU}(rv1p@VLe10Soc~_^zkb1AVThxB0DxZQ!e@rQk-Rv{1Fg!RI1D7{F zEG(=HpsL3D6Zm#Zkk3Vqz9e7RO%!dwiRLkm0pZAcU0-*_5y(De;KEIYQ}H?GC?~*C zZQnp6LCU=(07EhW1RX;f{F-B`qhFFq2 z`aqsq7Wc!4qoQu>i-dmw5$hzhh1RjQjliMO`_Q`PH-K6tAt?{PfbuvJl$M4P1(;t$ zzVVyAlez*-b)>DdfKzd=UswPL!EF#f@_4Y(f>{L3drK2Iv%LWC|MivS4DPnQFg^Fad?&t3W&M z4lqp5dLB03-dq-g3_Uq{V=B*c$csKtERf~I<0$ic-e!U{;pxfjk)hz$9RcL6&D%l1 z_?ou?`8$=M^3NDrKUC;^f$qn_O$@1&^-&d61M|u#AWG?hB5)B%Tb_hUU9|z7SqwJ{ zlDH~#3`#%xeK8MExmI#r$tsH;!kScYz51?;wOdS8F<;@0fV*H0e)t#7F{PqY@IIBy zf*^?$qrPe7KYt!Km&~eB?E~3k%PH_O1^F;CJUkQJfd+sw{^tgGA*%3$=?x0Tp&}O)4;#d8qXXCV{{Y>#&WBl~9`*$x z6f+0Zo4LnXbKp&wQferhfU?hZV4-(27+*WA(Rft6wL6V*!a?hQ=HiOqF+x~90f4P; z$t?ObKW!w)$o*NF@>4(Ipcg4ZL$}HDWQ(lC@GqtSo@K5ozK;Kg9sYinR!1T5AXB+5Nbq-2TB^h^rAM0;c;1LlK-R)*R*ZsbEq7ktG`e4opWv28$ z3UXi(p|fzK+y5rw%KnHLQu-k}npj5!DN0w3oqMlSr#Q$KJ}KQ&P*sQbBv7x>%Vh)# zZq^)-cg`H9D{{mtCr`5cp&@@D5Ug=UIT_8iO!sq$aL`H??vu|@zsEZ%QBI8OK*p%^ zk(>R52APtN`Q4Y@9igd8E{&Q`Ay8rnC}e<|0hk}akALM2MhK`~{Qvb!)X_k71pFXI ztp@+sOZi)`nRt(gKon5eC=tj{?%-P^ka9V<3S_9~I-VUVf?RJxce9&|9zt?(R?2Cy@ zUIsfGJ(QX~Ycy^W1bv z(}_ONtnZ=DC8O|fqvlOCl*{CO^DYt%lVuTGK#exY~7^Dr-vv+^Ry&{1^%j^-j=g)e2k}g0n~f{nH0o z*ZH#`8p2h8H2Cing#OQ3;BdG)#M_Hn3$$~TD8$@1<8B3g{)Bel;^E;{KDL|C1r^_7 zFcaUL0;uDg`Fi(CfaHpZjD!QH%PhcFIWaLY-3+gPWV#px0E1#MA^tZ&WL1$PS+hqg zM8LV_i7x$5gG~bBPW>&p>E3-pV#JMVb43gS@v5`DP+23i_O ztoy$U2rXfIv0I}a@UKMr|J#Ix5lfYRii4VldOIPtprOU->pYMg$0b6|fMA@0sS0-Q zFYqayOt##NgJ`WaAShG<2Urd+3=l#q!7{23xDLfYqnoIAw-W>1=zX2QRwkdGbOG*Q zaEdrTTyp@udcjD2%mvnnc|a8ra^KX%r9-_y1=xP17J-Qk?z|*BTkDb~aj~AIohkPb z=u>Z3p5qY^RIjhUHfZ*%d;EH&l|JCi?9><#S6-$|&SSQ0&(;_KxCy{-G@M?X?m7Vv zR|OzA)(3(a@->%XZ5fyaHTF;+BAO0NAa8&btpX4M&rATkBGD-D`j~1P4RkE7#`C*4 zB`v}`1Dp=+s@G}&P@&h_0;Z}aI~gFlFhVTf1Fffa5e_ytuu0@tJ{d7&vPf@P{|?Z+ zw(5f@wvKiI(egJwEJfJKqcq=634PJGTFX{2eZA_ zh*qYb>5gJxAclZ#&E}0H;O^WCg4QI?lb0KJNI_*AO`32NwVl(iESp;QC z$|M!U!op(S{oQF4SK_IvT8xsjJ1h98ZQIolVMR)D+WeLF+*htz*j3L2XTLl~# zGr)i~xA1Qq*k_iVfU#PuEk&^Z(0Q>{v!nIJw Date: Mon, 11 Oct 2021 00:42:05 +0000 Subject: [PATCH 0830/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 255 +++--------------------------- reports/pagespeedresultmobile.svg | 255 +++--------------------------- 2 files changed, 50 insertions(+), 460 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..6cd9750525 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 56 - Performance - - - - - 58 - Accessibility - - - - - 80 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index a894ff34a8..6cd9750525 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -1,231 +1,26 @@ - - - + + + Application Error + - - - - 31 - Performance - - - - - 58 - Accessibility - - - - - 87 - Best Practices - - - - - 83 - SEO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Progressive - Web App - - - - - - - - - - - - - - - 0-49 - 50-89 - 90-100 - - - \ No newline at end of file + + + + + \ No newline at end of file From 6353253e32ebc9da2e3a65187b983f1aba15c783 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 11 Oct 2021 01:56:07 +0000 Subject: [PATCH 0831/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 38ce6d0adf..1962c67dfe 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [App Theming with Dark and Light Mode | React Native ⚛️](https://www.reddit.com/r/androiddev/comments/q4ybai/app_theming_with_dark_and_light_mode_react_native/) -- [Developer Salaries](https://www.reddit.com/r/androiddev/comments/q4xgk7/developer_salaries/) -- [Can we (and how can we) implement ViewModel in Android without extending androidx.lifecycle.ViewModel class since ViewModel is not just a concept in Android but in general software development?](https://www.reddit.com/r/androiddev/comments/q4uj8e/can_we_and_how_can_we_implement_viewmodel_in/) -- [Can we parallelize creation of ui object?](https://www.reddit.com/r/androiddev/comments/q4p2vm/can_we_parallelize_creation_of_ui_object/) -- [How to show Jetpack compose alert dialog?](https://www.reddit.com/r/androiddev/comments/q4orvn/how_to_show_jetpack_compose_alert_dialog/) -- [Ads are now able to bypass Google Play to install apps WITHOUT user consent. Digital Turbine DSP seems to be the one enabling it.](https://www.reddit.com/r/androiddev/comments/q4nltn/ads_are_now_able_to_bypass_google_play_to_install/) -- [How to install and try One UI 4.0 (Android 12) beta on your Samsung Galaxy device](https://www.reddit.com/r/androiddev/comments/q4ndbt/how_to_install_and_try_one_ui_40_android_12_beta/) -- [Running two A/B experiments at once (with 2 variables each), or one A/B experiment with 4 variables?](https://www.reddit.com/r/androiddev/comments/q4lmbj/running_two_ab_experiments_at_once_with_2/) -- [How to build app like Samsung game launcher?](https://www.reddit.com/r/androiddev/comments/q4kmnn/how_to_build_app_like_samsung_game_launcher/) -- [Introducing Compass: Effective Paging with Realm and Jetpack Paging 3](https://www.reddit.com/r/androiddev/comments/q4j9hu/introducing_compass_effective_paging_with_realm/) +- [How do I make a new google play console developer account?](https://www.reddit.com/r/androiddev/comments/q5i7ul/how_do_i_make_a_new_google_play_console_developer/) +- [Is there a way to just get the source of the keyboard from AOSP, to create my own "Gboard" alike app?](https://www.reddit.com/r/androiddev/comments/q5he8j/is_there_a_way_to_just_get_the_source_of_the/) +- [Room & Kotlin Symbol Processing](https://www.reddit.com/r/androiddev/comments/q5gtvf/room_kotlin_symbol_processing/) +- [How do big corporations like Zynga, Ketchapp etc handle developer accounts (appstore, gpd) I mean are the founders only with root account access, while rest of the employees have admin access?](https://www.reddit.com/r/androiddev/comments/q5fds0/how_do_big_corporations_like_zynga_ketchapp_etc/) +- [Is Jetpack Compose actually stable if it is still missing important functionalities? Is XML actually more reliable when using features such as navigation animation?](https://www.reddit.com/r/androiddev/comments/q5et09/is_jetpack_compose_actually_stable_if_it_is_still/) +- [Change my mind: Git + Drive API is perfect for enabling data sync](https://www.reddit.com/r/androiddev/comments/q5e3ar/change_my_mind_git_drive_api_is_perfect_for/) +- [Apps Removed Due to Lack of IARC content rating - Penalty Against Account?](https://www.reddit.com/r/androiddev/comments/q5cidh/apps_removed_due_to_lack_of_iarc_content_rating/) +- [Static context in a failsafe situation?](https://www.reddit.com/r/androiddev/comments/q5chyq/static_context_in_a_failsafe_situation/) +- [Getting error message: @Composable invocations can only happen from the context of a @Composable function](https://www.reddit.com/r/androiddev/comments/q5al24/getting_error_message_composable_invocations_can/) +- [Jetpack Compose: lists primer](https://www.reddit.com/r/androiddev/comments/q58yj8/jetpack_compose_lists_primer/) ### *InfoWorld posts* From 7a33d7df41733a76ee5b8381d7e7c56974b957ba Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 12 Oct 2021 01:55:31 +0000 Subject: [PATCH 0832/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1962c67dfe..37678c52bf 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How do I make a new google play console developer account?](https://www.reddit.com/r/androiddev/comments/q5i7ul/how_do_i_make_a_new_google_play_console_developer/) -- [Is there a way to just get the source of the keyboard from AOSP, to create my own "Gboard" alike app?](https://www.reddit.com/r/androiddev/comments/q5he8j/is_there_a_way_to_just_get_the_source_of_the/) -- [Room & Kotlin Symbol Processing](https://www.reddit.com/r/androiddev/comments/q5gtvf/room_kotlin_symbol_processing/) -- [How do big corporations like Zynga, Ketchapp etc handle developer accounts (appstore, gpd) I mean are the founders only with root account access, while rest of the employees have admin access?](https://www.reddit.com/r/androiddev/comments/q5fds0/how_do_big_corporations_like_zynga_ketchapp_etc/) -- [Is Jetpack Compose actually stable if it is still missing important functionalities? Is XML actually more reliable when using features such as navigation animation?](https://www.reddit.com/r/androiddev/comments/q5et09/is_jetpack_compose_actually_stable_if_it_is_still/) -- [Change my mind: Git + Drive API is perfect for enabling data sync](https://www.reddit.com/r/androiddev/comments/q5e3ar/change_my_mind_git_drive_api_is_perfect_for/) -- [Apps Removed Due to Lack of IARC content rating - Penalty Against Account?](https://www.reddit.com/r/androiddev/comments/q5cidh/apps_removed_due_to_lack_of_iarc_content_rating/) -- [Static context in a failsafe situation?](https://www.reddit.com/r/androiddev/comments/q5chyq/static_context_in_a_failsafe_situation/) -- [Getting error message: @Composable invocations can only happen from the context of a @Composable function](https://www.reddit.com/r/androiddev/comments/q5al24/getting_error_message_composable_invocations_can/) -- [Jetpack Compose: lists primer](https://www.reddit.com/r/androiddev/comments/q58yj8/jetpack_compose_lists_primer/) +- [Android Studio - Arctic Fox | 2020.3.1 Patch 3 now available](https://www.reddit.com/r/androiddev/comments/q6994n/android_studio_arctic_fox_202031_patch_3_now/) +- [A10 Gesture Compatibility](https://www.reddit.com/r/androiddev/comments/q67hcp/a10_gesture_compatibility/) +- [Risk to Google accounts for a new dev](https://www.reddit.com/r/androiddev/comments/q66xcm/risk_to_google_accounts_for_a_new_dev/) +- [Does anyone know how to replicate the concept of AVG alarm clock extreme night light mode](https://www.reddit.com/r/androiddev/comments/q64t5y/does_anyone_know_how_to_replicate_the_concept_of/) +- [Android Studio Download Broken?](https://www.reddit.com/r/androiddev/comments/q64sma/android_studio_download_broken/) +- [Our great chat with Chet Haase about the book of the moment: Androids, the team that built the Android Operating System 😍](https://www.reddit.com/r/androiddev/comments/q62n47/our_great_chat_with_chet_haase_about_the_book_of/) +- [which databases to use?](https://www.reddit.com/r/androiddev/comments/q60nab/which_databases_to_use/) +- [looking for solutions](https://www.reddit.com/r/androiddev/comments/q5wrac/looking_for_solutions/) +- [Weekly Who's Hiring Thread - October 11, 2021](https://www.reddit.com/r/androiddev/comments/q5vayq/weekly_whos_hiring_thread_october_11_2021/) +- [What are your favourite shortcuts or features in Android Studio?](https://www.reddit.com/r/androiddev/comments/q5thme/what_are_your_favourite_shortcuts_or_features_in/) ### *InfoWorld posts* From 48940bed52a1bacf0cebfcbc27fad0c35cad706e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 13 Oct 2021 01:56:19 +0000 Subject: [PATCH 0833/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 37678c52bf..4da3c95e49 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android Studio - Arctic Fox | 2020.3.1 Patch 3 now available](https://www.reddit.com/r/androiddev/comments/q6994n/android_studio_arctic_fox_202031_patch_3_now/) -- [A10 Gesture Compatibility](https://www.reddit.com/r/androiddev/comments/q67hcp/a10_gesture_compatibility/) -- [Risk to Google accounts for a new dev](https://www.reddit.com/r/androiddev/comments/q66xcm/risk_to_google_accounts_for_a_new_dev/) -- [Does anyone know how to replicate the concept of AVG alarm clock extreme night light mode](https://www.reddit.com/r/androiddev/comments/q64t5y/does_anyone_know_how_to_replicate_the_concept_of/) -- [Android Studio Download Broken?](https://www.reddit.com/r/androiddev/comments/q64sma/android_studio_download_broken/) -- [Our great chat with Chet Haase about the book of the moment: Androids, the team that built the Android Operating System 😍](https://www.reddit.com/r/androiddev/comments/q62n47/our_great_chat_with_chet_haase_about_the_book_of/) -- [which databases to use?](https://www.reddit.com/r/androiddev/comments/q60nab/which_databases_to_use/) -- [looking for solutions](https://www.reddit.com/r/androiddev/comments/q5wrac/looking_for_solutions/) -- [Weekly Who's Hiring Thread - October 11, 2021](https://www.reddit.com/r/androiddev/comments/q5vayq/weekly_whos_hiring_thread_october_11_2021/) -- [What are your favourite shortcuts or features in Android Studio?](https://www.reddit.com/r/androiddev/comments/q5thme/what_are_your_favourite_shortcuts_or_features_in/) +- [Developer Options (Default Settings)](https://www.reddit.com/r/androiddev/comments/q707d4/developer_options_default_settings/) +- [Editing an XML in Android Studio wont save](https://www.reddit.com/r/androiddev/comments/q6yn7h/editing_an_xml_in_android_studio_wont_save/) +- [How to render SurfaceView cropped to a circle?](https://www.reddit.com/r/androiddev/comments/q6weyj/how_to_render_surfaceview_cropped_to_a_circle/) +- [What is a good uninstalls ratio for a new Android app?](https://www.reddit.com/r/androiddev/comments/q6vml8/what_is_a_good_uninstalls_ratio_for_a_new_android/) +- [A Comprehensive Guide to Android 12’s Splash Screen API](https://www.reddit.com/r/androiddev/comments/q6tuq8/a_comprehensive_guide_to_android_12s_splash/) +- [HELP PLEASE: Calling experienced developers. Any App developers here experiencing visibility issues with any of their apps?](https://www.reddit.com/r/androiddev/comments/q6sz6a/help_please_calling_experienced_developers_any/) +- [Image recognition API Questions](https://www.reddit.com/r/androiddev/comments/q6rzm1/image_recognition_api_questions/) +- [I'm getting this error, when trying to publish a app](https://www.reddit.com/r/androiddev/comments/q6rxwh/im_getting_this_error_when_trying_to_publish_a_app/) +- [Is sdkmanager tool literally broken by default for everyone else as well?](https://www.reddit.com/r/androiddev/comments/q6pto1/is_sdkmanager_tool_literally_broken_by_default/) +- [How to open other permissions page (App info -> other permissions) in miui programmatically ?](https://www.reddit.com/r/androiddev/comments/q6n12w/how_to_open_other_permissions_page_app_info_other/) ### *InfoWorld posts* From ded72c1613ebb0df66c4109b2f13d2b2ab3c1cd3 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 14 Oct 2021 01:53:08 +0000 Subject: [PATCH 0834/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 4da3c95e49..7164c61897 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Developer Options (Default Settings)](https://www.reddit.com/r/androiddev/comments/q707d4/developer_options_default_settings/) -- [Editing an XML in Android Studio wont save](https://www.reddit.com/r/androiddev/comments/q6yn7h/editing_an_xml_in_android_studio_wont_save/) -- [How to render SurfaceView cropped to a circle?](https://www.reddit.com/r/androiddev/comments/q6weyj/how_to_render_surfaceview_cropped_to_a_circle/) -- [What is a good uninstalls ratio for a new Android app?](https://www.reddit.com/r/androiddev/comments/q6vml8/what_is_a_good_uninstalls_ratio_for_a_new_android/) -- [A Comprehensive Guide to Android 12’s Splash Screen API](https://www.reddit.com/r/androiddev/comments/q6tuq8/a_comprehensive_guide_to_android_12s_splash/) -- [HELP PLEASE: Calling experienced developers. Any App developers here experiencing visibility issues with any of their apps?](https://www.reddit.com/r/androiddev/comments/q6sz6a/help_please_calling_experienced_developers_any/) -- [Image recognition API Questions](https://www.reddit.com/r/androiddev/comments/q6rzm1/image_recognition_api_questions/) -- [I'm getting this error, when trying to publish a app](https://www.reddit.com/r/androiddev/comments/q6rxwh/im_getting_this_error_when_trying_to_publish_a_app/) -- [Is sdkmanager tool literally broken by default for everyone else as well?](https://www.reddit.com/r/androiddev/comments/q6pto1/is_sdkmanager_tool_literally_broken_by_default/) -- [How to open other permissions page (App info -> other permissions) in miui programmatically ?](https://www.reddit.com/r/androiddev/comments/q6n12w/how_to_open_other_permissions_page_app_info_other/) +- [Facebook Audience Network bidding system to serve ads](https://www.reddit.com/r/androiddev/comments/q7k22y/facebook_audience_network_bidding_system_to_serve/) +- [Do you guys/ gals encounter "Zip Path Traversal Vulnerability" recently in Android 11?](https://www.reddit.com/r/androiddev/comments/q7gil9/do_you_guys_gals_encounter_zip_path_traversal/) +- [Template repository: fragment based & full compose](https://www.reddit.com/r/androiddev/comments/q7cypu/template_repository_fragment_based_full_compose/) +- [What companies give take home projects as an interview option?](https://www.reddit.com/r/androiddev/comments/q7bxpg/what_companies_give_take_home_projects_as_an/) +- [Android App Design](https://www.reddit.com/r/androiddev/comments/q79sf3/android_app_design/) +- [Regional/Country ratings are great for small and new developers?](https://www.reddit.com/r/androiddev/comments/q78p6x/regionalcountry_ratings_are_great_for_small_and/) +- [thousands of app reviews were removed, anyway to get them back??](https://www.reddit.com/r/androiddev/comments/q782ic/thousands_of_app_reviews_were_removed_anyway_to/) +- [JitPack Down?](https://www.reddit.com/r/androiddev/comments/q76luh/jitpack_down/) +- [Got 1 star from an app user because my app was made for kids and the user is not a kid 🤦‍♂️](https://www.reddit.com/r/androiddev/comments/q73cqo/got_1_star_from_an_app_user_because_my_app_was/) +- [where should getting data from another fragment happen onCreate or onCreateView ?](https://www.reddit.com/r/androiddev/comments/q72jjd/where_should_getting_data_from_another_fragment/) ### *InfoWorld posts* From bd35e8d1a3a2ccc6730473c116a833b070dd658f Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 15 Oct 2021 01:54:06 +0000 Subject: [PATCH 0835/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7164c61897..376ef6561a 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Facebook Audience Network bidding system to serve ads](https://www.reddit.com/r/androiddev/comments/q7k22y/facebook_audience_network_bidding_system_to_serve/) -- [Do you guys/ gals encounter "Zip Path Traversal Vulnerability" recently in Android 11?](https://www.reddit.com/r/androiddev/comments/q7gil9/do_you_guys_gals_encounter_zip_path_traversal/) -- [Template repository: fragment based & full compose](https://www.reddit.com/r/androiddev/comments/q7cypu/template_repository_fragment_based_full_compose/) -- [What companies give take home projects as an interview option?](https://www.reddit.com/r/androiddev/comments/q7bxpg/what_companies_give_take_home_projects_as_an/) -- [Android App Design](https://www.reddit.com/r/androiddev/comments/q79sf3/android_app_design/) -- [Regional/Country ratings are great for small and new developers?](https://www.reddit.com/r/androiddev/comments/q78p6x/regionalcountry_ratings_are_great_for_small_and/) -- [thousands of app reviews were removed, anyway to get them back??](https://www.reddit.com/r/androiddev/comments/q782ic/thousands_of_app_reviews_were_removed_anyway_to/) -- [JitPack Down?](https://www.reddit.com/r/androiddev/comments/q76luh/jitpack_down/) -- [Got 1 star from an app user because my app was made for kids and the user is not a kid 🤦‍♂️](https://www.reddit.com/r/androiddev/comments/q73cqo/got_1_star_from_an_app_user_because_my_app_was/) -- [where should getting data from another fragment happen onCreate or onCreateView ?](https://www.reddit.com/r/androiddev/comments/q72jjd/where_should_getting_data_from_another_fragment/) +- [Best way to boost your app, get installs from a direct link, or make users search on it on Google Play?](https://www.reddit.com/r/androiddev/comments/q8bkcu/best_way_to_boost_your_app_get_installs_from_a/) +- [Is there anyone here who use IntelliJ for Android development? What is your reason?](https://www.reddit.com/r/androiddev/comments/q8bhi8/is_there_anyone_here_who_use_intellij_for_android/) +- [Apptentive- pop up for "Love this app" Comes up but doesn't send user to Real time survey](https://www.reddit.com/r/androiddev/comments/q89uqj/apptentive_pop_up_for_love_this_app_comes_up_but/) +- [Anyone changed their app name from previously +30 characters to 30 or less? What was the impact on your new installs?](https://www.reddit.com/r/androiddev/comments/q86y3s/anyone_changed_their_app_name_from_previously_30/) +- [Android Studio Chipmunk Canary 1 available](https://www.reddit.com/r/androiddev/comments/q869tn/android_studio_chipmunk_canary_1_available/) +- [Android Studio Bumblebee Beta 1 available](https://www.reddit.com/r/androiddev/comments/q869t3/android_studio_bumblebee_beta_1_available/) +- [State managment uber and chat app](https://www.reddit.com/r/androiddev/comments/q84k9i/state_managment_uber_and_chat_app/) +- [Injecting objects into composables with Hilt](https://www.reddit.com/r/androiddev/comments/q842un/injecting_objects_into_composables_with_hilt/) +- [Need Ideas for a Unique Android App](https://www.reddit.com/r/androiddev/comments/q83n41/need_ideas_for_a_unique_android_app/) +- [How to detect if your website is being scraped by someone' app using JSOUP](https://www.reddit.com/r/androiddev/comments/q83b0q/how_to_detect_if_your_website_is_being_scraped_by/) ### *InfoWorld posts* From 71a7257218f760a8ebf2c591f50c12aec6dea9fb Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 16 Oct 2021 01:58:06 +0000 Subject: [PATCH 0836/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 376ef6561a..bc57492246 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Best way to boost your app, get installs from a direct link, or make users search on it on Google Play?](https://www.reddit.com/r/androiddev/comments/q8bkcu/best_way_to_boost_your_app_get_installs_from_a/) -- [Is there anyone here who use IntelliJ for Android development? What is your reason?](https://www.reddit.com/r/androiddev/comments/q8bhi8/is_there_anyone_here_who_use_intellij_for_android/) -- [Apptentive- pop up for "Love this app" Comes up but doesn't send user to Real time survey](https://www.reddit.com/r/androiddev/comments/q89uqj/apptentive_pop_up_for_love_this_app_comes_up_but/) -- [Anyone changed their app name from previously +30 characters to 30 or less? What was the impact on your new installs?](https://www.reddit.com/r/androiddev/comments/q86y3s/anyone_changed_their_app_name_from_previously_30/) -- [Android Studio Chipmunk Canary 1 available](https://www.reddit.com/r/androiddev/comments/q869tn/android_studio_chipmunk_canary_1_available/) -- [Android Studio Bumblebee Beta 1 available](https://www.reddit.com/r/androiddev/comments/q869t3/android_studio_bumblebee_beta_1_available/) -- [State managment uber and chat app](https://www.reddit.com/r/androiddev/comments/q84k9i/state_managment_uber_and_chat_app/) -- [Injecting objects into composables with Hilt](https://www.reddit.com/r/androiddev/comments/q842un/injecting_objects_into_composables_with_hilt/) -- [Need Ideas for a Unique Android App](https://www.reddit.com/r/androiddev/comments/q83n41/need_ideas_for_a_unique_android_app/) -- [How to detect if your website is being scraped by someone' app using JSOUP](https://www.reddit.com/r/androiddev/comments/q83b0q/how_to_detect_if_your_website_is_being_scraped_by/) +- [Hosting my app admin panel on a server?](https://www.reddit.com/r/androiddev/comments/q91fff/hosting_my_app_admin_panel_on_a_server/) +- [Second display](https://www.reddit.com/r/androiddev/comments/q919a5/second_display/) +- [How to "highlight to make the user aware of an action and show a description of it" in XML/Kotlin?](https://www.reddit.com/r/androiddev/comments/q90qss/how_to_highlight_to_make_the_user_aware_of_an/) +- [Stressing memory on any android device](https://www.reddit.com/r/androiddev/comments/q8zb3k/stressing_memory_on_any_android_device/) +- [how can i make this chart? xml&java](https://www.reddit.com/r/androiddev/comments/q8ylb6/how_can_i_make_this_chart_xmljava/) +- [Insults apparently don't violate the Google Play Comment posting policy](https://www.reddit.com/r/androiddev/comments/q8wlg7/insults_apparently_dont_violate_the_google_play/) +- [Any idea how to clear room databases located in multiple feature modules?](https://www.reddit.com/r/androiddev/comments/q8wacy/any_idea_how_to_clear_room_databases_located_in/) +- [Does anyone encounter wrong File.getCanonicalPath from Android 11 device?](https://www.reddit.com/r/androiddev/comments/q8v8aw/does_anyone_encounter_wrong_filegetcanonicalpath/) +- [My app pulls data from my website api. How can I get the language translated data when someone has a language other than English in their device?](https://www.reddit.com/r/androiddev/comments/q8uxkd/my_app_pulls_data_from_my_website_api_how_can_i/) +- [How can I make custom options for each sub category like Amazon in Firestore?](https://www.reddit.com/r/androiddev/comments/q8tk7t/how_can_i_make_custom_options_for_each_sub/) ### *InfoWorld posts* From 75b662ba1b73b10b1508507b57ec110a82c59575 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 17 Oct 2021 01:52:01 +0000 Subject: [PATCH 0837/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index bc57492246..02b7a76a8e 100644 --- a/README.md +++ b/README.md @@ -271,16 +271,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Hosting my app admin panel on a server?](https://www.reddit.com/r/androiddev/comments/q91fff/hosting_my_app_admin_panel_on_a_server/) -- [Second display](https://www.reddit.com/r/androiddev/comments/q919a5/second_display/) -- [How to "highlight to make the user aware of an action and show a description of it" in XML/Kotlin?](https://www.reddit.com/r/androiddev/comments/q90qss/how_to_highlight_to_make_the_user_aware_of_an/) -- [Stressing memory on any android device](https://www.reddit.com/r/androiddev/comments/q8zb3k/stressing_memory_on_any_android_device/) -- [how can i make this chart? xml&java](https://www.reddit.com/r/androiddev/comments/q8ylb6/how_can_i_make_this_chart_xmljava/) -- [Insults apparently don't violate the Google Play Comment posting policy](https://www.reddit.com/r/androiddev/comments/q8wlg7/insults_apparently_dont_violate_the_google_play/) -- [Any idea how to clear room databases located in multiple feature modules?](https://www.reddit.com/r/androiddev/comments/q8wacy/any_idea_how_to_clear_room_databases_located_in/) -- [Does anyone encounter wrong File.getCanonicalPath from Android 11 device?](https://www.reddit.com/r/androiddev/comments/q8v8aw/does_anyone_encounter_wrong_filegetcanonicalpath/) -- [My app pulls data from my website api. How can I get the language translated data when someone has a language other than English in their device?](https://www.reddit.com/r/androiddev/comments/q8uxkd/my_app_pulls_data_from_my_website_api_how_can_i/) -- [How can I make custom options for each sub category like Amazon in Firestore?](https://www.reddit.com/r/androiddev/comments/q8tk7t/how_can_i_make_custom_options_for_each_sub/) +- [State Managment question](https://www.reddit.com/r/androiddev/comments/q9od0t/state_managment_question/) +- [Exoplayer API’s](https://www.reddit.com/r/androiddev/comments/q9lzum/exoplayer_apis/) +- [App looks amazing on layout preview, but awful on real device](https://www.reddit.com/r/androiddev/comments/q9ieac/app_looks_amazing_on_layout_preview_but_awful_on/) +- [Trying to install a system app extracted from a different phone](https://www.reddit.com/r/androiddev/comments/q9g6jm/trying_to_install_a_system_app_extracted_from_a/) +- [Books to get back into the swing of things.](https://www.reddit.com/r/androiddev/comments/q9faol/books_to_get_back_into_the_swing_of_things/) +- [How to use sealed interfaces in Android?](https://www.reddit.com/r/androiddev/comments/q9dqld/how_to_use_sealed_interfaces_in_android/) +- [DataBinding generated classes](https://www.reddit.com/r/androiddev/comments/q9cv97/databinding_generated_classes/) +- [Jetpack Compose: Drag-and-drop reorder for lists](https://www.reddit.com/r/androiddev/comments/q9b18r/jetpack_compose_draganddrop_reorder_for_lists/) +- [Spazes : [Since you can't search for spaces on the Twitter app, I made an app to do that!] Spazes is an android application that allows users to search twitter spaces and join in.](https://www.reddit.com/r/androiddev/comments/q9a19k/spazes_since_you_cant_search_for_spaces_on_the/) +- [Jetpack Compose - Learn with code](https://www.reddit.com/r/androiddev/comments/q98bkc/jetpack_compose_learn_with_code/) ### *InfoWorld posts* From 01c93180640aa9163974c035b7f58759559f1190 Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 17 Oct 2021 23:58:12 +0000 Subject: [PATCH 0838/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 44268 -> 43526 bytes traffic/views.csv | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 4d1fe3bb81..aa2392bf9e 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -112,4 +112,11 @@ _date,total_clones,unique_clones 2021-10-07,359,29 2021-10-08,348,28 2021-10-09,346,26 -2021-10-10,367,29 +2021-10-10,383,32 +2021-10-11,357,29 +2021-10-12,284,24 +2021-10-13,271,27 +2021-10-14,279,24 +2021-10-15,258,24 +2021-10-16,160,16 +2021-10-17,9,6 diff --git a/traffic/plots.png b/traffic/plots.png index cb2636ea5d322514ead9e43bd954af251de45b8a..85bbcda6f14d0b7f9fb59525940e4bf0a0eeaf6c 100644 GIT binary patch literal 43526 zcmd4(bySsY)IN$XLg^4GK|oZbL%LBB6i~WBy1Tnn1d)>NP^25AQ<3g&P*S=}YR~n4 zzrFW2#yR8seSF6|#Kl_cxu1K^d(Lald0kJCyzC1+Yzk}y0)Z#>^0^`cf$E1qp!~+X z39s-B&Md)S0!|X@PD-{WPOkb6#)#MYPIgwdPFCgy_gst}9L;TQxY*!7mV0JSPIiuh z?CjS6&l}im9ZcCf;;NG2OR(%-YB(Yg1p3JTQF6qx%@K%PN2%vemEDpzXIFNp-PZ|6B>nW$?{)456N4EQOcjvR{U6b<_q#6AQpJCEI&(t?wyNO8)|M)mW zhn4={Yjh9(|Lg}t!?l~laXQ8Hyu74pYHHjRp_xe!kn7hc$|TOs%{@IoH#Al$^LAS1 zMF|NFrQ_fj80tmdia$sG!D_!!gU1n($cviSh&ONEpoo8-nVDgkp+Md<=J2;~-w4Uc z&3f#m72)>>0p7DSGY?USkz4aYfkJ88=+?*ok3G@Dl9%4wcpIGD6sfMQR?If*N7%ekquPMuW;geE}(B|8C+3Ok(q?@5>@^F81*NN z-$n+BAGGfK6MlWjkohq@e08eAGS=o3gQ>8v@b1x3g&Urs6rz`f>qUEPloaCEo9<`D zYU&zNUo2?-b6)O8irL!QCMPGeT(xUQdrLENa&o?W^$NYYzrX+MRs{M$4{zG5`!e|$ z_g-YLDthqF72%WG#K8SH4z4-1Efrgg=Ed5CF}%1-MTG*N`!zj1{k7#s8RoB^F&e3k z6UWU87MzObuoY4rNe8P-OGbZUKkhT^)RrF3D8Q;1)Ur*LqG?f_%D9Y1+daOfkr#+o$ zba}WA9k<7!*-bnOquB98QEx$7T3Qo#R(<$b0z+oV!Lep^={0A$&;u(YKgJ%4m$1H#T{P}J@ zP3r0Cd2w;!b~LKi+1uN&=;$O!W!M(-#bs-XUr=zUL|=TRH%YC)g;n!ArmwH>p@(C>lPS7)nj?bL3+Q69aD*Sm0s+c4v%`1

k)@*&>gA0xiM*M1sa7GRg=>YlqcO6}X} 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 literal 47832 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 Date: Mon, 16 Aug 2021 00:36:55 +0000 Subject: [PATCH 0700/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 038f2c8dbe..fefed4fb46 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 29 + + 25 Performance From d80bb3e5b5d34067d25480f0f685e3e45a9fdb93 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Mon, 16 Aug 2021 01:46:29 +0000 Subject: [PATCH 0701/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 95d590f806..22c4a5dfdc 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Androids – A Book is Born](https://www.reddit.com/r/androiddev/comments/p4hf9g/androids_a_book_is_born/) -- [Web3.JS va Web3J](https://www.reddit.com/r/androiddev/comments/p4h0u2/web3js_va_web3j/) -- [Any faster way to preview compose?](https://www.reddit.com/r/androiddev/comments/p4gh3q/any_faster_way_to_preview_compose/) -- [You're currently unable to receive payouts because there's a hold on your payments account.](https://www.reddit.com/r/androiddev/comments/p4fvj6/youre_currently_unable_to_receive_payouts_because/) -- [What do you think is the percentage of developers getting wrong fully banned from play store ?](https://www.reddit.com/r/androiddev/comments/p4e16b/what_do_you_think_is_the_percentage_of_developers/) -- [Does anyone know how to restore data from google backup using a non-active set?](https://www.reddit.com/r/androiddev/comments/p4d2aq/does_anyone_know_how_to_restore_data_from_google/) -- [eBay Motors: Accelerating With Flutter™](https://www.reddit.com/r/androiddev/comments/p4cy2e/ebay_motors_accelerating_with_flutter/) -- [Which features exist to collect data about phone usage?](https://www.reddit.com/r/androiddev/comments/p4akue/which_features_exist_to_collect_data_about_phone/) -- [Room Database manipulating a list in LiveData](https://www.reddit.com/r/androiddev/comments/p47n80/room_database_manipulating_a_list_in_livedata/) -- [App Feedback Thread - August 14, 2021](https://www.reddit.com/r/androiddev/comments/p47l48/app_feedback_thread_august_14_2021/) +- [Starting out in android app development](https://www.reddit.com/r/androiddev/comments/p52nta/starting_out_in_android_app_development/) +- [What are some of your favorite Android podcasts?](https://www.reddit.com/r/androiddev/comments/p52kqw/what_are_some_of_your_favorite_android_podcasts/) +- [Android Development is a mess](https://www.reddit.com/r/androiddev/comments/p523d4/android_development_is_a_mess/) +- [Need Help! In app Architecture](https://www.reddit.com/r/androiddev/comments/p4zbwm/need_help_in_app_architecture/) +- [Udemy courses for beginners](https://www.reddit.com/r/androiddev/comments/p4yzkt/udemy_courses_for_beginners/) +- [Will taking a job at a no name company hurt my career?](https://www.reddit.com/r/androiddev/comments/p4xq64/will_taking_a_job_at_a_no_name_company_hurt_my/) +- [Ideas regarding projects](https://www.reddit.com/r/androiddev/comments/p4vzft/ideas_regarding_projects/) +- [How can i create a small server to use for a personal app?](https://www.reddit.com/r/androiddev/comments/p4unrk/how_can_i_create_a_small_server_to_use_for_a/) +- [I had a query regarding Online mobile apps](https://www.reddit.com/r/androiddev/comments/p4r1kw/i_had_a_query_regarding_online_mobile_apps/) +- [[x-post] Rant: I've had to apply to Android Senior Engineering Jobs but haven't been asked a single Android question](https://www.reddit.com/r/androiddev/comments/p4q2zo/xpost_rant_ive_had_to_apply_to_android_senior/) ### *InfoWorld posts* From a12d15cbe0192b986733cc4249aab7ab76e14ae4 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Tue, 17 Aug 2021 00:37:18 +0000 Subject: [PATCH 0702/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 58 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index fefed4fb46..9b5cbf1c74 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 25 + + 32 Performance From 70657da9918bbe4c290fa684a0d36bb570952f0d Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Tue, 17 Aug 2021 01:46:29 +0000 Subject: [PATCH 0703/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 22c4a5dfdc..74f25ee82f 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Starting out in android app development](https://www.reddit.com/r/androiddev/comments/p52nta/starting_out_in_android_app_development/) -- [What are some of your favorite Android podcasts?](https://www.reddit.com/r/androiddev/comments/p52kqw/what_are_some_of_your_favorite_android_podcasts/) -- [Android Development is a mess](https://www.reddit.com/r/androiddev/comments/p523d4/android_development_is_a_mess/) -- [Need Help! In app Architecture](https://www.reddit.com/r/androiddev/comments/p4zbwm/need_help_in_app_architecture/) -- [Udemy courses for beginners](https://www.reddit.com/r/androiddev/comments/p4yzkt/udemy_courses_for_beginners/) -- [Will taking a job at a no name company hurt my career?](https://www.reddit.com/r/androiddev/comments/p4xq64/will_taking_a_job_at_a_no_name_company_hurt_my/) -- [Ideas regarding projects](https://www.reddit.com/r/androiddev/comments/p4vzft/ideas_regarding_projects/) -- [How can i create a small server to use for a personal app?](https://www.reddit.com/r/androiddev/comments/p4unrk/how_can_i_create_a_small_server_to_use_for_a/) -- [I had a query regarding Online mobile apps](https://www.reddit.com/r/androiddev/comments/p4r1kw/i_had_a_query_regarding_online_mobile_apps/) -- [[x-post] Rant: I've had to apply to Android Senior Engineering Jobs but haven't been asked a single Android question](https://www.reddit.com/r/androiddev/comments/p4q2zo/xpost_rant_ive_had_to_apply_to_android_senior/) +- [Should I learn Java or Kotlin?](https://www.reddit.com/r/androiddev/comments/p5tple/should_i_learn_java_or_kotlin/) +- [Advantages of publishing your app in playstore instead of publishing it in your own website ?](https://www.reddit.com/r/androiddev/comments/p5sbdd/advantages_of_publishing_your_app_in_playstore/) +- [Why app module needs to know retrofit dependency? (Dagger/Hilt)](https://www.reddit.com/r/androiddev/comments/p5rfep/why_app_module_needs_to_know_retrofit_dependency/) +- [In android, is it a bad idea to inject an adapter with Hilt](https://www.reddit.com/r/androiddev/comments/p5r0qc/in_android_is_it_a_bad_idea_to_inject_an_adapter/) +- [My Take on 8 Years of Android Development](https://www.reddit.com/r/androiddev/comments/p5q1vd/my_take_on_8_years_of_android_development/) +- [How to keep code quality high?](https://www.reddit.com/r/androiddev/comments/p5ozsx/how_to_keep_code_quality_high/) +- [Honest question: Why does it seem like Android development is way more popular in areas such as India or Eastern Europe than, say, in the US?](https://www.reddit.com/r/androiddev/comments/p5macc/honest_question_why_does_it_seem_like_android/) +- [🏆 This Thursday 🏆 Android gurus face off in DevProdEng Showdown! S1E6: Android Builds and Tests at Scale](https://www.reddit.com/r/androiddev/comments/p5l171/this_thursday_android_gurus_face_off_in/) +- [If one completely migrated to pure Jetpack Compose, what are the traditional libraries that becomes absolute ?](https://www.reddit.com/r/androiddev/comments/p5konu/if_one_completely_migrated_to_pure_jetpack/) +- [Newbie Developer Looking For A Mentor](https://www.reddit.com/r/androiddev/comments/p5kfph/newbie_developer_looking_for_a_mentor/) ### *InfoWorld posts* From d14fb4b29376cee72b0806a0fdc1823f514b6e7f Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Wed, 18 Aug 2021 00:36:20 +0000 Subject: [PATCH 0704/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..9e99cf6e50 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 56 + + 58 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9b5cbf1c74..2cde1139cf 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 32 + + 27 Performance From 7cc54e2febc46d3629c9b2ac7579ef10f1052def Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Wed, 18 Aug 2021 01:46:56 +0000 Subject: [PATCH 0705/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 74f25ee82f..9b24db4958 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Should I learn Java or Kotlin?](https://www.reddit.com/r/androiddev/comments/p5tple/should_i_learn_java_or_kotlin/) -- [Advantages of publishing your app in playstore instead of publishing it in your own website ?](https://www.reddit.com/r/androiddev/comments/p5sbdd/advantages_of_publishing_your_app_in_playstore/) -- [Why app module needs to know retrofit dependency? (Dagger/Hilt)](https://www.reddit.com/r/androiddev/comments/p5rfep/why_app_module_needs_to_know_retrofit_dependency/) -- [In android, is it a bad idea to inject an adapter with Hilt](https://www.reddit.com/r/androiddev/comments/p5r0qc/in_android_is_it_a_bad_idea_to_inject_an_adapter/) -- [My Take on 8 Years of Android Development](https://www.reddit.com/r/androiddev/comments/p5q1vd/my_take_on_8_years_of_android_development/) -- [How to keep code quality high?](https://www.reddit.com/r/androiddev/comments/p5ozsx/how_to_keep_code_quality_high/) -- [Honest question: Why does it seem like Android development is way more popular in areas such as India or Eastern Europe than, say, in the US?](https://www.reddit.com/r/androiddev/comments/p5macc/honest_question_why_does_it_seem_like_android/) -- [🏆 This Thursday 🏆 Android gurus face off in DevProdEng Showdown! S1E6: Android Builds and Tests at Scale](https://www.reddit.com/r/androiddev/comments/p5l171/this_thursday_android_gurus_face_off_in/) -- [If one completely migrated to pure Jetpack Compose, what are the traditional libraries that becomes absolute ?](https://www.reddit.com/r/androiddev/comments/p5konu/if_one_completely_migrated_to_pure_jetpack/) -- [Newbie Developer Looking For A Mentor](https://www.reddit.com/r/androiddev/comments/p5kfph/newbie_developer_looking_for_a_mentor/) +- [How badly can the android vitals affect play store visibility? My app on playstore already passed the "bad behavior threshold" but i cant fix it since the stack trace is EMPTY.i just want to know how badly can the bad behavior affect my visibility.ANR Bad behavior threshold: 0.47% vs 0.64%(mine)](https://www.reddit.com/r/androiddev/comments/p6goo3/how_badly_can_the_android_vitals_affect_play/) +- [No AMA with the Android Engineering Team this year?](https://www.reddit.com/r/androiddev/comments/p69z50/no_ama_with_the_android_engineering_team_this_year/) +- [How well do emulators for older SDKs (pre 30) perform on Apple M1?](https://www.reddit.com/r/androiddev/comments/p67rxg/how_well_do_emulators_for_older_sdks_pre_30/) +- [Internal test deployment platforms](https://www.reddit.com/r/androiddev/comments/p66ufq/internal_test_deployment_platforms/) +- [Android in-app purchases: configuration and adding to the project](https://www.reddit.com/r/androiddev/comments/p65oye/android_inapp_purchases_configuration_and_adding/) +- [Question - how to let them know whether my app is a COVID-19 contact tracing or status app?](https://www.reddit.com/r/androiddev/comments/p65gzs/question_how_to_let_them_know_whether_my_app_is_a/) +- [Observing Live connectivity status in Jetpack Compose way!](https://www.reddit.com/r/androiddev/comments/p63qw5/observing_live_connectivity_status_in_jetpack/) +- [Weekly Questions Thread - August 17, 2021](https://www.reddit.com/r/androiddev/comments/p63ata/weekly_questions_thread_august_17_2021/) +- [Coroutines (Part III) – Structured Concurrency and Cancellation](https://www.reddit.com/r/androiddev/comments/p61r69/coroutines_part_iii_structured_concurrency_and/) +- [Can I post an app on Google play that is very similar with another one?](https://www.reddit.com/r/androiddev/comments/p5wi20/can_i_post_an_app_on_google_play_that_is_very/) ### *InfoWorld posts* From c5f72ee527a612d06b8f218c7d2a69b56cf0d1d0 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Thu, 19 Aug 2021 00:32:08 +0000 Subject: [PATCH 0706/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 9e99cf6e50..f735155887 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 58 + + 49 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 2cde1139cf..15c32a9358 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 27 + + 26 Performance From 706a05d8e696c8c1f005e925de66fd8e18c4ff40 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Thu, 19 Aug 2021 01:39:46 +0000 Subject: [PATCH 0707/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9b24db4958..c372c26da2 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [How badly can the android vitals affect play store visibility? My app on playstore already passed the "bad behavior threshold" but i cant fix it since the stack trace is EMPTY.i just want to know how badly can the bad behavior affect my visibility.ANR Bad behavior threshold: 0.47% vs 0.64%(mine)](https://www.reddit.com/r/androiddev/comments/p6goo3/how_badly_can_the_android_vitals_affect_play/) -- [No AMA with the Android Engineering Team this year?](https://www.reddit.com/r/androiddev/comments/p69z50/no_ama_with_the_android_engineering_team_this_year/) -- [How well do emulators for older SDKs (pre 30) perform on Apple M1?](https://www.reddit.com/r/androiddev/comments/p67rxg/how_well_do_emulators_for_older_sdks_pre_30/) -- [Internal test deployment platforms](https://www.reddit.com/r/androiddev/comments/p66ufq/internal_test_deployment_platforms/) -- [Android in-app purchases: configuration and adding to the project](https://www.reddit.com/r/androiddev/comments/p65oye/android_inapp_purchases_configuration_and_adding/) -- [Question - how to let them know whether my app is a COVID-19 contact tracing or status app?](https://www.reddit.com/r/androiddev/comments/p65gzs/question_how_to_let_them_know_whether_my_app_is_a/) -- [Observing Live connectivity status in Jetpack Compose way!](https://www.reddit.com/r/androiddev/comments/p63qw5/observing_live_connectivity_status_in_jetpack/) -- [Weekly Questions Thread - August 17, 2021](https://www.reddit.com/r/androiddev/comments/p63ata/weekly_questions_thread_august_17_2021/) -- [Coroutines (Part III) – Structured Concurrency and Cancellation](https://www.reddit.com/r/androiddev/comments/p61r69/coroutines_part_iii_structured_concurrency_and/) -- [Can I post an app on Google play that is very similar with another one?](https://www.reddit.com/r/androiddev/comments/p5wi20/can_i_post_an_app_on_google_play_that_is_very/) +- [Android 11 (API level 30) for new app updates?](https://www.reddit.com/r/androiddev/comments/p6xqma/android_11_api_level_30_for_new_app_updates/) +- [Android Studio - Arctic Fox | 2020.3.1 Patch 1 now available](https://www.reddit.com/r/androiddev/comments/p6whlj/android_studio_arctic_fox_202031_patch_1_now/) +- [Is there an alternative for Android studio for low end pc?](https://www.reddit.com/r/androiddev/comments/p6vom8/is_there_an_alternative_for_android_studio_for/) +- [What to message LinkedIn connections](https://www.reddit.com/r/androiddev/comments/p6vg6y/what_to_message_linkedin_connections/) +- [Learning Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p6t9op/learning_jetpack_compose/) +- [I want to add user friendly preset sharing in my app, what is best approach?](https://www.reddit.com/r/androiddev/comments/p6smtz/i_want_to_add_user_friendly_preset_sharing_in_my/) +- [Which kind of architecture does the Android Studio template uses?](https://www.reddit.com/r/androiddev/comments/p6rzts/which_kind_of_architecture_does_the_android/) +- [Measuring Render Performance with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p6rl1u/measuring_render_performance_with_jetpack_compose/) +- [Dagger 2 complete tutorial with detailed learning path for beginners! I appreciate any feedback, let me know what you think!](https://www.reddit.com/r/androiddev/comments/p6qu08/dagger_2_complete_tutorial_with_detailed_learning/) +- [Should you bother with alternatives to the Play Store?](https://www.reddit.com/r/androiddev/comments/p6onxh/should_you_bother_with_alternatives_to_the_play/) ### *InfoWorld posts* From b7b318b2d6e71e56364b1d814f84e700bfcdb0c7 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Fri, 20 Aug 2021 00:36:35 +0000 Subject: [PATCH 0708/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index f735155887..75acabd26d 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 49 + + 54 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 15c32a9358..9971c205c1 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 26 + + 24 Performance From dc3692920b966eb72b751c5c79600720809fa2a8 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Fri, 20 Aug 2021 01:45:15 +0000 Subject: [PATCH 0709/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c372c26da2..e0c3861ca9 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Android 11 (API level 30) for new app updates?](https://www.reddit.com/r/androiddev/comments/p6xqma/android_11_api_level_30_for_new_app_updates/) -- [Android Studio - Arctic Fox | 2020.3.1 Patch 1 now available](https://www.reddit.com/r/androiddev/comments/p6whlj/android_studio_arctic_fox_202031_patch_1_now/) -- [Is there an alternative for Android studio for low end pc?](https://www.reddit.com/r/androiddev/comments/p6vom8/is_there_an_alternative_for_android_studio_for/) -- [What to message LinkedIn connections](https://www.reddit.com/r/androiddev/comments/p6vg6y/what_to_message_linkedin_connections/) -- [Learning Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p6t9op/learning_jetpack_compose/) -- [I want to add user friendly preset sharing in my app, what is best approach?](https://www.reddit.com/r/androiddev/comments/p6smtz/i_want_to_add_user_friendly_preset_sharing_in_my/) -- [Which kind of architecture does the Android Studio template uses?](https://www.reddit.com/r/androiddev/comments/p6rzts/which_kind_of_architecture_does_the_android/) -- [Measuring Render Performance with Jetpack Compose](https://www.reddit.com/r/androiddev/comments/p6rl1u/measuring_render_performance_with_jetpack_compose/) -- [Dagger 2 complete tutorial with detailed learning path for beginners! I appreciate any feedback, let me know what you think!](https://www.reddit.com/r/androiddev/comments/p6qu08/dagger_2_complete_tutorial_with_detailed_learning/) -- [Should you bother with alternatives to the Play Store?](https://www.reddit.com/r/androiddev/comments/p6onxh/should_you_bother_with_alternatives_to_the_play/) +- [Is the Pixel 5a going to be added to the Android Beta Program?](https://www.reddit.com/r/androiddev/comments/p7q3n7/is_the_pixel_5a_going_to_be_added_to_the_android/) +- [Android development online resource suggestions for final year project](https://www.reddit.com/r/androiddev/comments/p7q1et/android_development_online_resource_suggestions/) +- [Replacing Firebase Test Lab with Unified Test Platform](https://www.reddit.com/r/androiddev/comments/p7olpi/replacing_firebase_test_lab_with_unified_test/) +- [Does LazyColumn in Compose really replace Recyclerview or am I missing something?](https://www.reddit.com/r/androiddev/comments/p7l8xy/does_lazycolumn_in_compose_really_replace/) +- [Who wants layout_marginTopAndBottom and layout_marginStartAndEnd?](https://www.reddit.com/r/androiddev/comments/p7il3c/who_wants_layout_margintopandbottom_and_layout/) +- [Question about tool for apps](https://www.reddit.com/r/androiddev/comments/p7feic/question_about_tool_for_apps/) +- [Android in-app purchases: how to process purchases with the Google Play Billing Library](https://www.reddit.com/r/androiddev/comments/p7f6kv/android_inapp_purchases_how_to_process_purchases/) +- [Up to date summary of official android development resources for different Android Topics](https://www.reddit.com/r/androiddev/comments/p7f53n/up_to_date_summary_of_official_android/) +- [freeRASP 1.0 is out! Want to be the first one to try out new free App Shielding library?](https://www.reddit.com/r/androiddev/comments/p7f32v/freerasp_10_is_out_want_to_be_the_first_one_to/) +- [Buttons shown in preview are incorrect](https://www.reddit.com/r/androiddev/comments/p7dhoc/buttons_shown_in_preview_are_incorrect/) ### *InfoWorld posts* From e79a27006fbe301eae4b22dde95d861a01f6a1d6 Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sat, 21 Aug 2021 00:36:21 +0000 Subject: [PATCH 0710/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 4 ++-- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index 75acabd26d..ef3b571b45 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -121,8 +121,8 @@ - - 54 + + 56 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index 9971c205c1..ff8a008bca 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 24 + + 30 Performance From 424f5808968570c2fd40dce062f958fa66774a3e Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sat, 21 Aug 2021 01:45:15 +0000 Subject: [PATCH 0711/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e0c3861ca9..530eec51d8 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Is the Pixel 5a going to be added to the Android Beta Program?](https://www.reddit.com/r/androiddev/comments/p7q3n7/is_the_pixel_5a_going_to_be_added_to_the_android/) -- [Android development online resource suggestions for final year project](https://www.reddit.com/r/androiddev/comments/p7q1et/android_development_online_resource_suggestions/) -- [Replacing Firebase Test Lab with Unified Test Platform](https://www.reddit.com/r/androiddev/comments/p7olpi/replacing_firebase_test_lab_with_unified_test/) -- [Does LazyColumn in Compose really replace Recyclerview or am I missing something?](https://www.reddit.com/r/androiddev/comments/p7l8xy/does_lazycolumn_in_compose_really_replace/) -- [Who wants layout_marginTopAndBottom and layout_marginStartAndEnd?](https://www.reddit.com/r/androiddev/comments/p7il3c/who_wants_layout_margintopandbottom_and_layout/) -- [Question about tool for apps](https://www.reddit.com/r/androiddev/comments/p7feic/question_about_tool_for_apps/) -- [Android in-app purchases: how to process purchases with the Google Play Billing Library](https://www.reddit.com/r/androiddev/comments/p7f6kv/android_inapp_purchases_how_to_process_purchases/) -- [Up to date summary of official android development resources for different Android Topics](https://www.reddit.com/r/androiddev/comments/p7f53n/up_to_date_summary_of_official_android/) -- [freeRASP 1.0 is out! Want to be the first one to try out new free App Shielding library?](https://www.reddit.com/r/androiddev/comments/p7f32v/freerasp_10_is_out_want_to_be_the_first_one_to/) -- [Buttons shown in preview are incorrect](https://www.reddit.com/r/androiddev/comments/p7dhoc/buttons_shown_in_preview_are_incorrect/) +- [Getting GPLv2 compliance from UMIDIGI- in person, in Shenzhen😁](https://www.reddit.com/r/androiddev/comments/p8h3l2/getting_gplv2_compliance_from_umidigi_in_person/) +- [It seems there is no way to use Android developer options with non-owner user accounts](https://www.reddit.com/r/androiddev/comments/p8goky/it_seems_there_is_no_way_to_use_android_developer/) +- [Open source, unique & mega customisable seek bar!](https://www.reddit.com/r/androiddev/comments/p8czaz/open_source_unique_mega_customisable_seek_bar/) +- [Question about a gaming app on resume?](https://www.reddit.com/r/androiddev/comments/p8chwi/question_about_a_gaming_app_on_resume/) +- [Architecture Mapping](https://www.reddit.com/r/androiddev/comments/p88dlj/architecture_mapping/) +- [Why Workflow?](https://www.reddit.com/r/androiddev/comments/p87v45/why_workflow/) +- [Need some ideas](https://www.reddit.com/r/androiddev/comments/p868p9/need_some_ideas/) +- [Video Playback in Browser vs Native App WebView](https://www.reddit.com/r/androiddev/comments/p85h0f/video_playback_in_browser_vs_native_app_webview/) +- [App rejected due to not adhering to Families policy](https://www.reddit.com/r/androiddev/comments/p84yy1/app_rejected_due_to_not_adhering_to_families/) +- [Improving the Play Store listing conversion rate](https://www.reddit.com/r/androiddev/comments/p83wbh/improving_the_play_store_listing_conversion_rate/) ### *InfoWorld posts* From bf4b43a2dac79fc30ae66552985d45851a05de6d Mon Sep 17 00:00:00 2001 From: GitHub Bot Date: Sun, 22 Aug 2021 00:36:11 +0000 Subject: [PATCH 0712/2080] docs: updates on docs page speed Added docs page speed information on news Signed-off-by: GitHub Bot --- reports/pagespeedresult.svg | 6 +++--- reports/pagespeedresultmobile.svg | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/reports/pagespeedresult.svg b/reports/pagespeedresult.svg index ef3b571b45..b74ac84bd2 100644 --- a/reports/pagespeedresult.svg +++ b/reports/pagespeedresult.svg @@ -119,10 +119,10 @@ stroke: #f5f5f566 } - + - - 56 + + 47 Performance diff --git a/reports/pagespeedresultmobile.svg b/reports/pagespeedresultmobile.svg index ff8a008bca..dd34d2c32c 100644 --- a/reports/pagespeedresultmobile.svg +++ b/reports/pagespeedresultmobile.svg @@ -121,8 +121,8 @@ - - 30 + + 36 Performance From 9215f521a6856d2852a5f270d96ab2f8ef081951 Mon Sep 17 00:00:00 2001 From: blog-post-bot Date: Sun, 22 Aug 2021 01:46:01 +0000 Subject: [PATCH 0713/2080] Updated with the latest blog posts --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 530eec51d8..1d31f2d280 100644 --- a/README.md +++ b/README.md @@ -268,16 +268,16 @@ and ***Android Patterns*** ? Consider buying me a coffee :) ### *Reddit posts* -- [Getting GPLv2 compliance from UMIDIGI- in person, in Shenzhen😁](https://www.reddit.com/r/androiddev/comments/p8h3l2/getting_gplv2_compliance_from_umidigi_in_person/) -- [It seems there is no way to use Android developer options with non-owner user accounts](https://www.reddit.com/r/androiddev/comments/p8goky/it_seems_there_is_no_way_to_use_android_developer/) -- [Open source, unique & mega customisable seek bar!](https://www.reddit.com/r/androiddev/comments/p8czaz/open_source_unique_mega_customisable_seek_bar/) -- [Question about a gaming app on resume?](https://www.reddit.com/r/androiddev/comments/p8chwi/question_about_a_gaming_app_on_resume/) -- [Architecture Mapping](https://www.reddit.com/r/androiddev/comments/p88dlj/architecture_mapping/) -- [Why Workflow?](https://www.reddit.com/r/androiddev/comments/p87v45/why_workflow/) -- [Need some ideas](https://www.reddit.com/r/androiddev/comments/p868p9/need_some_ideas/) -- [Video Playback in Browser vs Native App WebView](https://www.reddit.com/r/androiddev/comments/p85h0f/video_playback_in_browser_vs_native_app_webview/) -- [App rejected due to not adhering to Families policy](https://www.reddit.com/r/androiddev/comments/p84yy1/app_rejected_due_to_not_adhering_to_families/) -- [Improving the Play Store listing conversion rate](https://www.reddit.com/r/androiddev/comments/p83wbh/improving_the_play_store_listing_conversion_rate/) +- [Is it wise to download pre-built flutter template app, with a design that's already made, and left for to do is just the back end part?](https://www.reddit.com/r/androiddev/comments/p92x4a/is_it_wise_to_download_prebuilt_flutter_template/) +- [Any declarative based libraries](https://www.reddit.com/r/androiddev/comments/p90m89/any_declarative_based_libraries/) +- [Google Play Console analytics vs. 3rd party solutions](https://www.reddit.com/r/androiddev/comments/p8y9bc/google_play_console_analytics_vs_3rd_party/) +- [Upgrading Android Studio often breaks my project in unpredictable ways, so I created a script to clear everything and start from scratch](https://www.reddit.com/r/androiddev/comments/p8wzp8/upgrading_android_studio_often_breaks_my_project/) +- [Increasing organic downloads and the bain of ASO](https://www.reddit.com/r/androiddev/comments/p8u8ps/increasing_organic_downloads_and_the_bain_of_aso/) +- [How do package disabler apps work, and is it possible to make my own to avoid having to use shady apps on the store?](https://www.reddit.com/r/androiddev/comments/p8s7lu/how_do_package_disabler_apps_work_and_is_it/) +- [Looking for a 3D graphics framework for a mechanical engineering app](https://www.reddit.com/r/androiddev/comments/p8rmic/looking_for_a_3d_graphics_framework_for_a/) +- [App removed due to "Disruptive Ads" policy](https://www.reddit.com/r/androiddev/comments/p8rlsc/app_removed_due_to_disruptive_ads_policy/) +- [App Feedback Thread - August 21, 2021](https://www.reddit.com/r/androiddev/comments/p8r13p/app_feedback_thread_august_21_2021/) +- [Measuring the impact of the app screenshots in Google Play and how it affects the overall downloads amount](https://www.reddit.com/r/androiddev/comments/p8p3eq/measuring_the_impact_of_the_app_screenshots_in/) ### *InfoWorld posts* From 51821b24df288249cc03cd03607be97d6f6ed5de Mon Sep 17 00:00:00 2001 From: AccTextBot Date: Sun, 22 Aug 2021 23:58:24 +0000 Subject: [PATCH 0714/2080] GitHub traffic --- traffic/clones.csv | 9 ++++++++- traffic/plots.png | Bin 49356 -> 48965 bytes traffic/views.csv | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/traffic/clones.csv b/traffic/clones.csv index 908f2eba52..7deea53f9c 100644 --- a/traffic/clones.csv +++ b/traffic/clones.csv @@ -56,4 +56,11 @@ _date,total_clones,unique_clones 2021-08-12,147,29 2021-08-13,193,36 2021-08-14,153,32 -2021-08-15,145,24 +2021-08-15,155,27 +2021-08-16,98,31 +2021-08-17,145,24 +2021-08-18,195,35 +2021-08-19,148,28 +2021-08-20,90,25 +2021-08-21,144,22 +2021-08-22,137,18 diff --git a/traffic/plots.png b/traffic/plots.png index c15fbac0373e8fa18d3ab9fc1684f74e6973bf46..a0f25151e60c5a59370d9929b348ddd8342793e8 100644 GIT binary patch literal 48965 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 VB>%jKvyX(I^KvR@Gi43_`Y*h`P!0e9 literal 49356 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