From 2f9d16dab254a73e0b9c1b1c80cdd341567a04dc Mon Sep 17 00:00:00 2001 From: Alex Styl <1665273+alexstyl@users.noreply.github.com> Date: Thu, 24 Feb 2022 21:48:04 +0000 Subject: [PATCH] Initial commit --- .gitignore | 85 ++++++++ LICENSE | 201 ++++++++++++++++++ README.md | 66 ++++++ assets/banner.png | Bin 0 -> 24667 bytes build.gradle | 29 +++ gradle.properties | 23 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 ++++++++++++++++ gradlew.bat | 89 ++++++++ library/.gitignore | 1 + library/build.gradle | 53 +++++ library/consumer-rules.pro | 0 library/proguard-rules.pro | 3 + library/src/main/AndroidManifest.xml | 10 + .../java/com/alexstyl/warden/AndroidWarden.kt | 38 ++++ .../warden/PermissionResultListener.kt | 9 + .../com/alexstyl/warden/PermissionResults.kt | 12 ++ .../warden/PermissionResultsListener.kt | 38 ++++ .../com/alexstyl/warden/PermissionState.kt | 6 + .../main/java/com/alexstyl/warden/Warden.kt | 25 +++ .../com/alexstyl/warden/WardenActivity.kt | 35 +++ library/src/main/res/values/themes.xml | 16 ++ sample/.gitignore | 1 + sample/README.md | 13 ++ sample/build.gradle | 55 +++++ sample/proguard-rules.pro | 21 ++ sample/src/main/AndroidManifest.xml | 29 +++ .../alexstyl/warden/sample/DialerActivity.kt | 42 ++++ .../alexstyl/warden/sample/DialerScreen.kt | 159 ++++++++++++++ .../com/alexstyl/warden/sample/Intents.kt | 22 ++ .../com/alexstyl/warden/sample/theme/Color.kt | 5 + .../com/alexstyl/warden/sample/theme/Theme.kt | 22 ++ .../com/alexstyl/warden/sample/theme/Type.kt | 20 ++ sample/src/main/res/drawable/ic_call.xml | 10 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5550 bytes .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 841 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5227 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3253 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 449 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 2958 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7569 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 1306 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 6791 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12442 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 2938 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 12534 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17582 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 4221 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 16637 bytes sample/src/main/res/values/colors.xml | 10 + sample/src/main/res/values/strings.xml | 3 + sample/src/main/res/values/themes.xml | 3 + scripts/publish-module.gradle | 76 +++++++ scripts/publish-root.gradle | 27 +++ settings.gradle | 17 ++ versions.gradle | 32 +++ 58 files changed, 1502 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/banner.png create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 library/.gitignore create mode 100644 library/build.gradle create mode 100644 library/consumer-rules.pro create mode 100644 library/proguard-rules.pro create mode 100644 library/src/main/AndroidManifest.xml create mode 100644 library/src/main/java/com/alexstyl/warden/AndroidWarden.kt create mode 100644 library/src/main/java/com/alexstyl/warden/PermissionResultListener.kt create mode 100644 library/src/main/java/com/alexstyl/warden/PermissionResults.kt create mode 100644 library/src/main/java/com/alexstyl/warden/PermissionResultsListener.kt create mode 100644 library/src/main/java/com/alexstyl/warden/PermissionState.kt create mode 100644 library/src/main/java/com/alexstyl/warden/Warden.kt create mode 100644 library/src/main/java/com/alexstyl/warden/WardenActivity.kt create mode 100644 library/src/main/res/values/themes.xml create mode 100644 sample/.gitignore create mode 100644 sample/README.md create mode 100644 sample/build.gradle create mode 100644 sample/proguard-rules.pro create mode 100644 sample/src/main/AndroidManifest.xml create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/DialerActivity.kt create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/DialerScreen.kt create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/Intents.kt create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/theme/Color.kt create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/theme/Theme.kt create mode 100644 sample/src/main/java/com/alexstyl/warden/sample/theme/Type.kt create mode 100644 sample/src/main/res/drawable/ic_call.xml create mode 100644 sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 sample/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 sample/src/main/res/mipmap-hdpi/ic_launcher_background.png create mode 100644 sample/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 sample/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 sample/src/main/res/mipmap-mdpi/ic_launcher_background.png create mode 100644 sample/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 sample/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 sample/src/main/res/mipmap-xhdpi/ic_launcher_background.png create mode 100644 sample/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 sample/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 sample/src/main/res/mipmap-xxhdpi/ic_launcher_background.png create mode 100644 sample/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sample/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png create mode 100644 sample/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 sample/src/main/res/values/colors.xml create mode 100644 sample/src/main/res/values/strings.xml create mode 100644 sample/src/main/res/values/themes.xml create mode 100644 scripts/publish-module.gradle create mode 100644 scripts/publish-root.gradle create mode 100644 settings.gradle create mode 100644 versions.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56cc642 --- /dev/null +++ b/.gitignore @@ -0,0 +1,85 @@ +# Built application files +*.apk +*.aar +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ +# Uncomment the following line in case you need and you don't have the release build type files in your app +# release/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +# Android Studio 3 in .gitignore file. +.idea/caches +.idea/modules.xml +# Comment next line if keeping position of elements in Navigation Editor is relevant for you +.idea/navEditor.xml + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +#*.jks +#*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild +.cxx/ + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# Version control +vcs.xml + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..58fbe61 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# Warden + +![Android permissions as suspend functions](/assets/banner.png) + +Permission handling in Android can be complicated. It requires boilerplate code to setup the +permission request, receive the result and then forward the result to the place of your codebase +where the actual handling logic takes place. + +Warden removes all this boilerplate code and enables requesting permissions and receiving the result +from any coroutine in your codebase (such as your ViewModels). + +Warden suspend functions block the coroutine until the requested permission is granted or denied. + +Warden can be used in any coroutine, using any Context. + +## Quick Start + +Install Warden via Gradle by adding the dependency in your `app/build.gradle` file: + +```gradle +repositories { + ... + mavenCentral() +} + +dependencies { + implementation 'com.alexstyl:warden:1.0.0-alpha2' +} +``` + +The following example showcases how to use Warden to request the `CALL_PHONE` permission. + +```kotlin +coroutineScope.launch { + val result = Warden.with(anyContext).requestPermission(Manifest.permission.CALL_PHONE) + when (result) { + is PermissionState.Denied -> dialNumber(phoneNumber) + PermissionState.Granted -> startCall(phoneNumber) + } +} +``` + +As soon as `requestPermission()` is called, Warden will request for the requested permission and +will block the coroutine until the permission dialog has been interacted. + +You can use the `requestPermissions()` suspend function to request multiple permissions at once. + +## Sample app + +The repository comes with a [sample app](/sample) for an example of usage. + +## Getting Help + +To report a problem or request a feature, [open a new issue on Github][1]. + +## License + +Apache 2.0. See the [LICENSE](https://github.com/alexstyl/warden/blob/main/LICENSE) file for +details. + +## Author + +Made by Alex Styl. [Follow @alexstyl](https://www.twitter.com/alexstyl) on Twitter for future +updates. + +[1]: https://github.com/alexstyl/warden/issues diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..17e706c7413a40ac97ef6c2084ab86f7e9563406 GIT binary patch literal 24667 zcmeEt=UY=v_wJ?$h*S|oy6{+N3euFWQY=(SXwp$BAz*~i11KQUf(=D_krq0H-fI-4 zi6lrB5Ges7QUVDfXY;)0cfOtL`~m0vz%}gbWcJMLHM8z@uY1LsnHX}i3$X(Lzk z13*>Mi34Zw_l|#V>s^NgGOSOB58DTz#P=%xNR{H=r5pC0e7(tiyQfd*WQA)2;>Jn6 zTSAYo)V@jWTd(UKsH^Fy)c7j*^y>x}^DfRv=+QeJ!9QLaHa7#BHd6hyj2YbST8!9N zS6A8pVOdClRF^pkf4{5Ej5KX&+@HKLW*ho$%?PqTNLCp@4 zsrKaFNuTg*4B%J+n_zv$qqh1SzzjAK3CDq>&m~+Lb-@PslmhS^wO7vn_cpi;|6P{< zngeJC|J@~wy5KVW_jLIG{Zy1c7r{~5{`lrZ<->FG_LVtQ>Ou_qBVWd4&^WA#%n==3 z6AiBSC;mQ%earW0s}ep;)&~OjVhcx~4v~xvv%=1TzNW(#yAfYMd-#OWn#X*lzKm~A z|4;pXlc;OBW7JdX#_SukA7kf&3={ZO>ziPgH(ped{!V%ur&Y`%9;K47T&Ts*8-y)K ziYMsEBBqW5Pw_GZdk!PV4>8ZfXep8$M~{#Im~9_UNVh>h99`>{Ge_vke!tdRFJln} z_WLOo;7LgPT&h#>78_ zER!VE_6#$i@aZ07%DoMX&_aIrNyp}ys>xH%;6Q$x0BlAN%1kyh42+g0W;{yvuIPh! zBO(YKfa~NwdKyD3IOY5kNovfa5>td)+WA=68Nmsq9Al7BxF=^4)=ed?n(XH{6|p6( ze!if+uN(011eI6#k2}3!qkB{SOn0@X!mZ&1wxb2kzAXbheH!=Ya+gdh@9486t*x%q z>3{yASR2V#Ncy*@lhI$Q=DuLbpVf3|PU`#LVwEp9+A)DEpa4E^c#u7ZWg&iLj63{K zX5(|+ttWp&F34D2@AF#?iZRt7O=T4D&-tvK(z^V+hYCZo;R{y-@1o0`6TP> z)f_L&;*MBX8}N9O5jdNF0s}Rj_$&kf6Q%%Ly415GOb+noen}2-#LeMWVVf14){Qwk zg_Ue6kqS+>im<^^*+G<)O#`j*n%9A%_)^)(uu8#8v68FN%9J%t%6fq;v3M%YYG(;A zbi<8EX8?4m;9z{&fF;);&iW8hA}}bW*Zi>nGZ1tvLRi*BOB=ELVuubcBm*13kkYJg z&-y1f6~B>&6MBg>+Btp50Cc#3MyU|M3s~B-J|-p*%t~Rj_O8A&KFs%UR8dO*o8tiB zuEQV!l$jw#JJ^0bx`t{k-=VYD%rFVE@12Y3eS*GSsokLYE#B!jhl$Z z)0u#X-m?I6wu-<*(T)O{okuFs`}0DW(`9s40EoW{u<63&`qd+3Igdq{LmLjeJS}{2 z<~w`;xvhV6TO??H1u`awA1Mi;wcmg!sJ5b=Mb~}zh^8070OEl;P*! zcgY3;YxW*{d&EFmw+eGDxVP7izLJa?dpOOhE;MD7x00xyin%2Bz3MRQ2&@Ri13VFy z#Zq>j)p6x3DlBPstO{Kt>UerQcu4)H|Kyu0Ud-QqDgP{x1;E>t=;AN`nVA$gGiYv8 zX&DhvZ9R0%DVFKJ>ltW28V;`H=Fwv_ZgN|dFeb<}oxjmhP(n`)%Zdl@gD(M)6FYhp zzS|#8--8-Qxf@r|tzP`8-arCGYdUFs^s+Ub8ywq9aBTQuSJ961T}|f+0&*oGq8;jJ z+VbdFqzyQ_-FGJetWg!$&u_;@tvbhAEgehg^*LKAvb;|CYtwb;j8{aqM{eiJ#|lIz zo9KyQ*p{6sSir&0SKBlbM~#_%_1&*0R({PP^z6}@_~Bi| zr7tCpOZE+O=}Y%UV&>DMe!V$E)=sRGmwA~~azo6M=2;ss;`9E_*ss?0;vvTW7=bjN zVXBSVr(EVD+R=0an|#KS9^F)^;B#az7grsZl*22x)9xeZlrB; zCe)SuLuBZq$HwT4s`j@=x9O6?a0k7tR_tiqn=rF{Ee1T-(JG&EHcAE*O1}#Nc;0N| z?XVIe_>Y91plz*Wbs~|jPqp)(EGxX(E+nJfoTIlyTn%U|oAlY8ZFhS>kF9H+qXp#4 zWbXZ9O2ooNak~SiI#-q7%9eNXXH>}WH}l$lRg#M*iVdZCbbWEyY}Mxx&7^;`YNol% z$H?gGPb_9=-^1NwUQ|VgZ0~D1uGb;c^e&zrdM#t1C7i1j(B>MD?=N5P#{6{TT|8uy zvm=l>0>IuA?X-{br|P76Rt5F(M>sD|h^`Dvjj=j6meH-ER3>Nbp9d=RgMlVW9PJ&``Qm4c*uG)$^Ajuq$EcIwaR$?xGs_r+}hGC;+xQi zPGV4JBxGbD7~F}>DM;ps#!~ue!dZ-cD#u~J3qV)O3Ur(x|InJgQ(kQWdmQIx7gHox z>YGZD>u$F>X3=`du?&J*9px^M?Z>Eh&mnr1C{5(4ktT^s?~$Z=%{1@HT&-sDk7b)O zmJxPG`=`wMebK6VL{+BMm}gh=HE7@%RO=pYdr@jOP<_CHIlP9$tKWaRvH8CA?zrKG zmYal~N|D1q2%SD`UsFYQX;*YZq2%`z+|ER$P&ya;8($vSd55tT@vYLhbxua=bVa<} zpoiO%jq=?|D}onk;T4dbzna2gXBbH6Q7%E~MUPQVlpK>cFN5MJ;aj#@@{G}H zha1gJ3{x##;3}M`_d`E)pgGS-hBjeqS9;ryZd zm$!QjgXXQm;$pufC|^sv+i&nPlD+;FV!J zneMQw5a#muDLmo;zTCcPG?+ijSgL>Y8cWcL3~@-H@bJ)NPkAUV2gC44bj(wcKLqb0 z$d#no5DJO5cXJw7$sT>&U+I#%-g2q{ie|=E;0;F$DPA*d&&ro{r zSbgy^;*kB5Ex)r5M1`}zKB2Y4W>JPEc&ac#Qp`8)dn?1O`y~a>Z9YoC&5zz8BgUcR z5}trnWb2p*UGUP?o!7w2-4};}*!k@a!H-5t<0Y=Nc6HSkDXLMWd6?y4D-3Jp!i%`F z+NS0W+klonV@T>uX%u#N&hac-NBePhleJroyoL^wLOQ^ceGcNlWr;g~YP59G%JA5< zZ%CW%{)CBe!kFSkm!p`8Nu{M*d)=Ns1SH&*| z;&zr(IaWTXq=4YLQd^3ai)-Pq(p zLR_vp)%xa@uIRuzeMj5X?Z}-Bm~f5(^NEo<`1snx5&aat90X)r)DceNSr>tek)7J> z%A1aVLTd!5Y0D$OH}+C-`@JZuoyHLZ4OpAiLRjeh8}0;A0sUqi0gPDIEhX{$YcB|m zM<|t+HT^~a3b}0{p13Qg9Vl~ZsJVgcg8Q4y5|EA#d$K1*J`YUX2H|A4t>0G8-zNqE$%JM3wBl}g7ZNhe&tS`JhH!))XStO5co@ICLr+bm2(Q~2iHitc5>cmRb#Ll8 zs?&&U4E{*;1;%tc{MEE%cM_B1xQ4m@vOy*n=|8XN=gkYqvBa`YhV z(gbVvW{bw3#@3Y|gEY0rO!f0YgdnjE)50v|h|a=c3Dt(c*{R`(0T}+Bmeir?gR#nI zpN|7EAys^05Yc7B1|@Hxq4v3`M?4_EQS8dk^p&#&MoAnsT^(<2SlOZbt14tDJS!^H z-uemA_z)obT6?GCLnnd{_dacT)R8)l;?rrKr{uk>5F`6r*(5-UsT-w+#x?^{W_o|_=5v3)bs?tVk z9OF@W)}h`Dabl3r)%d~8yi9z%Ql#Xzy7Sl&R%DR&QO4V~S2}0W!qD@;LaXN6T( zixkJLCAnSd``ZwbFu^OBodHIPj!?n_mnU7%=fFd}dPB3luLtFkZSogMDEfH4%n+t93{{EUyC=p~v~@88+Tb*y); ziE1jLOF}&Uw&Z?8jNIthllX{M4O^XI6{bhXW?J!LE%|Affial*KA~sp;-Sv1jI&On zcijOqFl-rquj^UIT)q%gh4#R@%6)aj{mgfau-s{r@fQ{?00WuS>Wg!Z6>KpO#!T-m z^&9Wh?Q9pC9vVl>Jd77$#8;`>8S!U9Bg8DqN@fZ-6Q(T}{xT!u>O$)}SAK17Nq0@C zdzH>D@c=tV!J|z_P#u;W7&q-#BIp+EB}%04oG4fY&zSF<^(b0l%}n2JeSRnnFuRL`!T3uvPk*#lUKtLG+x~v{Ifpl~NKOcH{j_kT zax2%*s}|{o9vH?-bY0@^q*|fMa<08VkRd^4x7K~tQxv7ybLwwUk<>>|ThY0J7RCj) zcC%Laq%vn9el8?*+}w~p1-YrB4(x!qhDoK7OHk+Jdg$MCWA7F)Qt3i2(e z5@#aN7o-AhwT@B8TWW6qdE=Y$Txf0qL@C}DJB~*5GAZl8Fs?C=R>_Z^zB(A8>b^&c zTb{G({s}%7I}@6R?bf0+r7+8}sg*}V5wh0u))R>0k1S1ti`SYi$PF2|0)J;^ADV&P*hh-w;fK(oE$}))s~{UPjaF18<##^#gx}i z6s*=VIi}FI3d#=~&G{vCOF$Oq=_;G8Abf@?U*CeD9znw_s}dAx0eaT=aFpOkbPamJ z$8$B@ek>L~9+kU3b{`45yW?0SrRRNDC%7tq=&;V`A7!+^Pk=>{PyID`Lubhqk*+0m#SxRwy>hR3p3NiuoE{c`}r;GKgWc{hP=E zb;b@=7Zet;1R@^FF}^z^pi*X`Mru~sf8 z(fGC`VY4ybgLj1tgsN_DaKJnKk!h;Ys%JA3VP~1WES7BzRYo@7?c~+%5VJjrSXFFy z3)5cR^ko17hVKSfI2+FJGS(vg)L-Pni{#qhyBVSCU3r?&y4q1L0$64U{rE)*cP@5; zj%-G*H(OyWaS9*Q@%^w#rFvrqSPmR^a_|d90CFQU)T52TX^fiB34IG3ya2~3UBEEO z*$`Ghx3n;P=t;u>+H9;Ej_rj&@QjJPLI&o&uxcrk3f!HV{}{?6D2E67)(ly!jD)3PDJ1FSNOQGGYqcWmTfVziu-{ z3Z!JXI1zPg zanj?E&IL3cF`)6+JD(1%8yj7gY4fTxt5EkJE%Tg!3FQPsks|b0$BqM5wgNz%yivcs zD5?m~9|0$hUXP}DOfW=D$(@Thu1SqwipBhMKFhM!-dt&WlkNq4^0h4PH{@$Bz)N@X}*fj(K5 zH7#Jua$Mu)NIC)h`6 zH_P^T=|@a1dsP|gV&-kbD;O*@U;;XA3#tV)!Zm2ux4=jZp2^@O%I}AS^cgQKClrbk z_-FJUS8okYdpJl&JP2DY+Dnw_2-?l5vjjas;Q4{P#A9ec0Ze75*c$atgwr#7oOlm@ z?AHg43~sU6l$6u0QmjEAO&nNa*Y5Y;ljyoRlAG3`W|G^cf1c_lIGLV*yz+oMEm@ zA9&^*TS!Bp^QaZ$j0)kIaKaR$BjA35LBi~IDgSoQg>~=AArSYm8M?WPIa}I;%Td;- z5*q|HHduUYza(VAaTGNx9cPg0c)@dh$5G=u^tKRTtAKk}>kZH2pq*9$eS2|?-(-Vt zmMTA^z3__DpXogKh|8GeM>Zpt z0TH|N3512Tr9Nq-$z_haC1XJv!YP@}VJr+%Z{n$~m5@KV&bj=l_B1C6M5pK?LGsLa;sl@^i|S#UV`x%13(cO8rZrm|UrS zW52|*a0~yVeABnNobwTooe0hYK2O)wISe7^*UH`CWO}iGO|{zti?nJPd?MNrR7NMr zGJaYje-E!X#cS%R+Jr& z1gsuavW#gG=)|4xZem9Fy&E6>oTowc06s@vKW)NsAt}2=`!v(G@9nA5U0v?flvS8$ zWiKzkCwOF7hnNXhoId;H1vhd&GxpHeuOo)TJXwHtfnp+J%7+SeNcCDs@fUVPWEo8M zSwTb&op!Xf+P8e()tCEC)_zuS*bxU{PXV4HdoQ-?7E1UUAx=Wy`ep zLf7{$%&GeMTOY^)}dQ!v8%}>$!59QlzNP6O^M_Zn? zjtA;Xe<~D+s+svI6ylQFzf*BHii)V28F#`*g|92cBezp+VG1(vR0o`bLpz*?oOL5V zpqFOb_~-gKOcgfLN^AUB0T_sBz~7xoLUvWzvF@4|@6;wuUpRn$C@7iCbyV9IGqzF? zLp7nuu2>H*iC+%6apSQL;+`f`g_}-(QWZwsZ1cwF5sEMd%$l$s==uSqN_C0&9f3veet;dHGSgEc)ym-vp0+y9Uxsg0A2?4`h5Cq4a>rj zY;=L{cuvbk71a7sdIY4@lY14lx1WXxxI8{Q$gE)JwRL|*F?+F)-uqi08OM43h+~i! z8lwWG4?$P(NOJr|@y+&&}XyFlYt!d1?KF3yO^_Z z&ZT8kUh!wQ>tRoCJ3JgDU_BwC;>#>uzTAl^4_7e0DY9MRs#8kmGD zPGj^ux(PVkRn#tYMUbo;pk-aGxui?rDFnT4fT8x~2)cD+?l&Rs# zG#c{0TZ!Xxnwh5Tyym=3mGhT7srfDeKc2WRoT<7xFJvHiEWJK@D@L#>&)7`dlgyut0#b=Xu1 zRpac(tU2KEB{0$#+A94M+xg=NxebLmSHxu|^f*r$-r!7VGlub9`7k5#=i4Bme@ElqH2&|ad3sGC@X zCUGHBuTvc0sQcfl0{5I;p~@8r1s1a6C#%nIvX(WzsO)5Iyq!P8{ZnmY{2iXa1N5mQ z8%bej2P@BKyX zQ_z+LmT)L(N526VGFk5_D3~)lLc9F&W|HO)&NGwahLZxqBH>0b8budk8D}OlT zW-(A6H_f4Y+QNZQh1$eVX)|lBb5ywYja_M?H zGSAWxl;Hq%9gEOxWm_y9JaVa-gyUbE$Se5KrxsD6h3Jg7)A74nGy8E_KN`cc831FD zsy=a+#r}P{$yUidUO}d~o7`FDf;@IMt zSd(NKJB>94?cFZiXtx%>h~K=o4(4(@Y(arw^>FjJzua>%Xc*qKT%ZPJq}n43fGl>R71_9+-N`E&r&!2=7(SDsiaj* zzB)>jxrK?th2SRuAl~Gd#F244Fap~XuA^x9%DY(`c>tXq8_s;~UER;?rC^X~-QK=A)kJ%)bFD0XD8Zw;KZEM0N(St31IMyS7cB z5^49haC4-^U!I(sB*;`^M)qPA2*340Ico6 zII2=1SEe*eF!W6ln_mcL(}u!j-aDt~9ACUFW$S-pu3flS`4G&~f-^N@)CB}?MCnGd zjBf@IFHgPv)cxv0rZ$lr)AsklGu3NTD|v-&&VoU;OP$*qaQXXV!#?J7?F<0{}3X&j<<+nz70>HGEY3YGny2Y|`e$ChqM> zfy@(0yEXeg9T``bvZe(Ulh}A9ht)i)e9Hg#5L#>N1{sw)6{Iwyb_2gW^rRKB}hD>(?Vo8_vULCG@nBi z`h;AmccDoOao5Rd+M8`PhikKkeI!5DPZ}Fj8RZS@c;7a+^h)VAdi5Z=k4$E%YHfn; zA<-ePS6UWfycL^^E;5M!nhUI+C4!JUM{;;J*dN?}-VXXrqFS{k`VasU2 z8!&Ukp@uAX-q*zOuZNFm%&PjaZh26CS02{T1`6rIa9W~CxbV`49entqh8yh=+yxrY z2-QI)?^HLB?b?|zGZDwqfrgT;FdD^wEJT~~aKF2-T0QI%pgYYBDimz59mIFuR|G*o zhz}r`EU4H~TGAzjadUa8`+cR71lrsild8EnU^+tbK7 zVY5H}Vp=;7?j1%R){g9Y=L>oMk)#u3Kt{e z^D{{Cf7}J04ixP!Yt=R2M`GGX8cBxJ8VlQ5JcJ!L^-h~HqIx+Z3(;Gntld*wy%j({ z4BYx@oEPVx*rvF`YJiwsvztEkFeQ*KUor%1PGK4rz=OJqF>o!nkIbOR&c6zWro8LY&A=jJtrGr*yt-Q?ey9*60XEzE1vk;V>52O{W zvCp}gkC^RRhY=D>ba-nV?3(wmfNJUPhufq%4-WMLK2~Z>(nylwG#ODINg2u}B>D>p zyd87?=4OYzs~J$JRUUYlL~R{0JikKNY@&6wr`!>9e7N}(vQ4nrmIef4*ugVImc@it zu)m|emwaIeb8^aWvCjJwr1o3sK^w28Kyoy~Zt<}+ONioQ6qub&*qKqxCaIYvKK->7 z5{5l*Tl&8C+wmB7B;4;?NEpJ~Jer@>SnM|481}B7gUet6Dfu?BZaH9GvLgZ0QuNO2 zTXsY~S+kiK30fnUo|5-r_E?DO|l6NC3omGAc)erUVCo?4kW~JN- z4@6E^=f1>|yOST7T*UviSi174bSBt!5Gi~mc5a)V{0wi(rYAlPa zSd7*}u20OyN$&hGQOT6}uqz%=Bx$RPY%@U$<9@SE{2OC#{^Rtl6&BIr-(u*4gtzQ| zISx!*Ka#E`%T~Ko+GfrOGcC<95WcPEQbw8iX+7X(dKEHs<|59Cw3DAL9fksrdt<6j zv)eMPFT2K$pD%JO1x@x^X&`e4R;c%c^iB9KN_*bDiP`qwWoCTb^HocVU_ z5u*40WBnqo>b7dk3O{OnbGEtS-OB!^t?4w?Nqzg%o9SUW3T%WBT;bX%-lKGOqW0=6 z+eb%&$D0{$p1#(YLMYdV1ulE+ z)U`nd)$InZNq-VeO^_{c_PGq-JvHXbjqDot&?~ZSdyYuzp}sBYSr{^a>scJ?N=?)q zTsJtd*{*5`nAeu42m{z?=?(yk|ILsVz8%M~R&_7=mVL5aWLNt<$>p)_VRIFJOO{jD z)k%b;zZ1$j~KXza+ZA!@4|lTn`vXNU>z5KRBH2wA6l=Fq}$!uSWDIW^+ zCVlc>A+$@q{IER}w}p{C5cW6iL$1{q>mN{^`B9D}U+xOKW+|1qz0S`%3WA0{;V-DL zOyc0qWFsow&5qf3@p1FP*E0{l*K+YHzq>hWK9u)l40b@hO_*hl2m(2^;X8{@9jn^x zbQIm?SS1w`D=>%~@q22E3lmo#{6XE8E?Su$3rr`gt9PP{yNzm;9tOP>asGN0s)v|b zWC-9RuG=?Jr&fCqCFfn$f3=7TZV5J7aNd2oSb3+IO~#-s|Jtp_aKo#0oBf}=^3@AN zl7h>YC%+1X5p=iZzflo=--F%#`d3B)7JznZ~@SG;quJo@&KI^JF9@*1yev!xHHDS;D zLiWXqTFd%m#exLxlcauWLbD_rgFev(o23KFtzpsL$=4iBfd*5RZ$y^z}W5cF;zF= z#e^wsN*vs)Po50oG)ZKVn+JMyZ#CtHUSO{s2@j=zYW50=P%=66x|#vVbXfjspf;-$=U`UxX5)UyU6kH7nXJbr>cMD z#bGBt1+bP`K+1Z6VC&vKO}%_8Qb*{wI}PUx2GMzrD)u5@8u-Fa&i&Yo9iqE=zojrbEQ*!JhU;~ENN^J`i29DA^%)C`zcNXCC*+=%o9Jpdr$q3^)%l{E$AhRR&dCAE_0WtFazqF=uJ96z1N*=cwYo87%^^IJ1igy(c$mo3nb+adSW$dKpBd1)P zv^Rq7XwQ~xQn3}gldpozUXEVA8mCiZX`|7ja=AQYJCbd^Kl!Ou>lU1k^>%Nn-&qG) z%;6<^^8KNy?oGEUn|sN%_o%Te1Ct?P;zOlAp`IojOeO#puW~d*dzA`PI^G*Cb=BzT#A3z|`p4 z4b3}2HBWP|xQRp-Yz=&C!0|Xg3_^Wz7M9MNl)Jfc`@MqR2pv^7A>CQQai zzKxAgz0olP+V<$fj1YvC^r=L$xWMieTdcF@QtoW8its6u_k|w~XT<~#dx^b7f2IzT ztNcR)VHJ};k@@G1{wBm9`ok}{U$W}wxA2Zu>3%hx% z!1aF0mD8^8o#)Vq-uO zpUSqEd$QIJVH;H$nZO=IjfVI7J{Tt&Tph2Fsk_vjiO9oz$jg{GrOHilI?FhaGkZaq zHCx|{kx^InZJ}|mt@|ifx{K~qb41vS=}VL6WvX{g6+~4h9=sNfOgnjf<|fDp=Mwpx zyYs|b19Epn3i)w6prG!W1x*<(STs~~N4b3cBg*;pp9-Gq2HVYlX^LOfG*BjcR!MBZ zuE84(1o+fTwagQII(HxO^qEpX(5YXKSa07z81ES&W`W`Jpr=S_4ueWUStEv!ES{~S z%XMvYsg_)Qk}reGeajW|y@m%%dGS3H{+m8aU=AdQ?ML}CbID@uVlXnYY!IPVwSrTa zmafPO&Zf30LVXq~qBQz6*~Byv%-{!^)}o0aU{OaCR6lY;sf&=}Z@qZ}NCr*(DP>wfptaU>wsK$4 znzfP5lpgW#1J+z$C z_)@~K@p&xdJBms7{!wB0BQFTR1^~!v7736=0$IGHD*!kH!a%Um?PHDr8{nlPgTzt$ zf4g1vKXU}X^YR>j#L;*EU%&aEF1@6|QYaC4o44UnWua}8)6IX2T)>K&k6`KHKLD@_ zo{xa_f@DPVN_RlkJ}uT{Z}*6cQGr`r*lu3U@FBK^|7aW9xJ@O^z5#%u!Bb8E@aR%k zJDVsqI^3C%(L8!or~&|xLPj1S;zKi79)c`9;HoAaYJoKxrspSM)HEL>u=?;7S2%5D z8|3CvfrwpD3I`}y@QT34tDoSrGAJ{#eqQtw9{GG1_4n%Opz3D8cEc`mhR9>ljh6z%bwBwGMEFi7`66#-+X^2^ zgE(}!?sH%wgxehicA89@x7&QMD_3*n7eds$Y|iZYxMWikO|=#95tJSAHfpIv>3E_a zL_C&(`Y+Gdq%R&zUU~k3sr+ubsok5~EPtxLtdr4(zcD+QVbvuTuYweDN#DtlOgphWE*QCh))En5% zY-%HVslNf`I}rj;abCYta_~=E(GxIcapMHug2F(j-!2{X z3xlJPznxtwTZx0C41IKZ74@64OXcaao!?&ct}nDUJ^hMLu6kDQ(eqOQ{m|OoQsizr zIX{EJD~bbNvJrbdoa4|imbj~wG5jmmL_u-DDS)~$2pmoaaM0AuJNXFmXpf1yIC5hX zA6R-Sh0spZAY4|}DEemDcddf$@;t5JT46)G=*rSuXBXYiT5t>nNZx50msW8P@amTVsf zQr>|WGo_gAf;Xspk?L-DP!yzoCeMy#aH+-$zMLN3Z);1w29jqoye;c%#h%3$E#B>& z&goX|zLS-~2k>uYGDN<^-c4@LQKA8)XPYl_!ThXE1!qYlX^}UQRL#ba+oTf~< z<@0dlpLZJ0lMPEM1J{r@UkuVzWI+A*lJ7nx6T$WM{(_orNM6o~>wPf*5 zasB8GTdRytXOffWH$b`vTg{ojQ=Kcc?!JUFDYJapL+z0$-3#D-Ky&I}eeFEI_r>`- zWc5hc=7v5uu^3lBJ5ffF?)l!9au|wv>YCbDe($P~#pArV{1ky^Y?H~4^2|!53EHoy zIk??>2ZTMBR%oz&=dyTO`P4hh@>vAFU7E2bMkjE{n*Ro^>uX>ZQ`Y1p$c^=*&2FT%~V(vG~>$ujXQ!b)k!W%l!t4rNQhhep(6HdKX&<7tXEx}D(awZp8TO4ODkeZF%UhV+rMA1X%?DbNWC9aINO9*Y=Q{>&*JsMW{R1fUkq<6TwsP}0$E;`G!W6ml~rFce#;=NbaJji_Z?2W20!k*rjf_Ab+snrkJOh+0fc45e2 z@0*n&%XeB=m3v;;P~i+Y)(rODSBhe9e#~lPbW<+97yCWypv+gcW}$Uq-%7hZjHY}j zmzguFDNdbP^7ym$&$DrwRHpM{77XM8e_s0{)>EZ@@HAu)a@IiO@(ntRggBT6Q&3u5 zt#Xl2b>}(FRJ2FEU3e%kSiC2wcoEHDW5IvsZoV|E8-0#tzsedl=^ro0J-$HU6zb^9 zGCb#CG3U4`#*Lhjl2H%obqa;_x;MI9*gkPAcviM6_HRgHjetu#A$U8FHY@wAGYl2> z9lKprBx9ALiV8Q*TUJ_>nPlsUYbVk?o5SX2KeQ8T#Ad&(Zd7(}6Vo=eBQs4mwGrZa z$;(%V5-qggD9;3R09Tr%FVV_swkv>RGvDZ%A-E&bpf zJ(p)MPUPcCV7K`<>J6$eM=8z_)5w|jqWsQ%ABnH@!^QBk^H*Jj{{BPaOa3rAo%i~|fGc5m2D9{q< zKdTGbZvkBsQ4G|Q3J>0lvTR-A9W$!hav8>FZEz$ zy?)wbgs^dIA&w-v)ZzmFRGnzWHS_Z4w`n)lOvQ{RQ`C}Xu0@U#z!wqtHRBEUJN&$` ze>+YKvXMrWwH&E4-tSIA==@wMFSJ@M6uvP2QL1I{(=w8GLF{t-P?4M8wa~;Y#m&$p zx_9ayL56H;Fpc7LzMr^hY+LqsDzn1G4$9kU;8ir@qgBf`lk0h2<}13?dvEyT)mg!g zU6av-g*XP6PAY;c3VbU9f9IEjx>*FM`#G3iM)_zi? zR7uJ>DcEU;^=aqvvdEHvzs|7uGTJB=byeA*k_Rm=LYnB?$N4SHxQbdvW2?Go{3L#I zSN}8S5xC;UdEre`a6pK?(7n$#ZGCTMSmCFatQ_t*z21_giwFwDz1J5Pck|8OP(*f3 z&md_AP@r#XBko&)#U^pS3Fo`qIM^PP<9h%PYh!w;#vlPGnTzQfHyw^B6VLVjyjF1i z-D&^JdhYj_brd6D>Y?$)4-rPR0!bfh`|h&wP9=OBY(ZC%Wuz($N*es!8W*9050Ufl zOz-8BH3ge-U5`1OJhtLUoMv_N*g_KjS36f4meks=Y1nC5yUeN5vTPn4+NC&@G-z5* zm6{`xTDgssN)gQgEt_{qlYzg_ry(^vGxdg> zst&iqka>FVWl<@@Cv3mzfo!j|{SY1qcDcIGZ|aI5>%yg9R1*hNEM{sy65t`b)eqi( zz9n9R?wS~PeZ4Iv^gam{+EhwFW3KX6J6Shq@tj|JYVZ1{lGFIltFVOF_d4>=W=Y59 ztCMfGhAWDck1)admbsC z+ZNM?DO8I;SMGFAw-P>-I>C0G?mHQb&`0s3U}A&cqoD4KBORuH z3~H)++w7!Qzs&@~vbJLqd<8AX6Z88H6fi$VQ%mClsFZ$20fgWhO6_Wd^LU=b8mh)K!FbrCY7!MvMKH4_RI=!l5i>dgLFMZnd#D(m$_5%In>laUHwYtB| zvbcG&DQ48E&W+lA6_~252yD8)IAY2-l`oP()b#rGE7}|T$^!`6MOwg{T>d=JU6aUZ zo!s+=V1EvuMhvkh@wKv=&03CnGtF3YQqtboCl_BM-fw0Gc2^njQ>x1zLz4rj?@6ec zet|rJy9LWk?+$xrS{S%=Lk8f@yKskGuRENOwk<_(QI9@u`JE&FBN-Xd4!g%R11ecv zsSzMkaO^?cX&7>>e?;ord}KfyvTpexzv1^y%lT}3oa6dn|84Fr6!o|Zw+^U2C0-Eh_sZUw(>9g8phv$|lGSsg+$#X3yVm*_k2<%yE0wOI z=9nPOpb^4~sCRFw(dY;GGv(SLE)osks=HJ_i@(n-cQCT^*xseUAv^Ru;89G2CU!#^ zX-FYC4k5^9Y1_T_@y=b`#vVze$fH(uaRNVgJzvhR9&7EFR_t3scy|@_MwZpNG>-17 zZCv#OI`PFtweyA2^wID`Yhr=VuWtX@ptlBIt_e3&*EY7Eu{w)CEemA3`yh&|w}nw2 z5~HUn$CJSY@uczltDB#cdHdd$P4jO>0R8m4_=&0Wq_F%zhT=uS?*%Y7*ku2ksG80dC$=4E4 z*3Bc(!Ywn+r%cx*0AVV;Lgi;!n;tM8Ti)*K8+FkUj^`K!{JE||8QW4?nP?InmhkG> zq11hAZO5YtTi;>XTqg_*>D@y~jmJJT#ho8C1M&3gr$h-xW3M-kgb>=$I(ICkUdMCp zUcS?*x^MgTkgSMo!5-c*!1G4!C5_E# z=kZG}tmbm{(V_eYpMp2hw#K(`TVHgYW_wn0D)DQq8aA<+4Qzpcxj}xDbGnM zIcDzm{;P&%zRuBD#$7J{y7g^cXPFY5^j?|m=3P=WmHd_>lzFUz0PmzA-HDnF0fD~J z`56>ac|ZqMfLS9_(vA4AaQbqc%{ymO%zQLO`b8yxLBv;WD5+J`QfXg=uC} zbS%*%N&FP)Udh2+Va{Y(*{ASx<_1eIa5Hyk33{aBqtB9!Uh$F8B16Xz$Dndww0~w& ziSxBLyu9J5X=IQy-|%QbR8JQsz3cA?j`)k`*GQrR3<=o@X1!u-v_VcD1VXR)Ka2ML z@8XO96)XHt?f*$s_CKTcGnVaj0StsfwnlPcikz=uQh65^w*ZPo?fw1!5ADmV$?|Ee z0?NsRE#7TwMhcc5R*o}cC{nHsOeW?0mD)w9_NrNE3#C6E$z;@zX>ed8VjB)e!DSU@ zXRHLp=O9M=o#d(59M?syml8K@HmDLO9Y!Fc#e;Nmf$;Jm9OxvWKT&mGo=B6+8XsQ{ zUL6Zof`n{J!?Kp3DfvU$U~pL^TBUFjGx1@!?1++w_{;eENnEfaJ}g)uHz)Yzn#+L~ z+ADT~)f(2<%jViSe`94z{jT!)C83h8qm3ArOCzHLTerh-43xKHkf<#!DUeOfeOV?O zhDon131LyD6ShBM`$oHuHjA9(I4PY(S^T}Ne`#!1oUb z%HAC8to884g-q=HMCYAcd$Z+;I2fZo^)6AYD=)-m{c0()@>Kctq%27^=I?~YMo%CV z{h_1Ry)NT#)!p?X&$(gAQmz(t?wWa@*@*XYx&Z>&rpX;!4tdf+PDU!@Pn4VvI{|kk z85HO$EU@~eUL*qtt_BxJTT;Q%mvn25N?D<&?=>IBUDg0K^lF9Mxb${dlo`+ullpz> zaI7h2fSSG#$a?ft!8oTUCCYqzB*^$=Lrw}}?1lTBB9A$z~S;rf5 zAt|e3r_neJwP{w1lKQJ`^eo2$F^Dseye*+EW3zK%QYCP0$A}{jVpg64$2>MG$24@$ z$t7?upFXhJd@!1uvcnEUCA&bMB~I1qDh8=982UN58+*^Rl&~ZV!5ZH-I=-Be_k$CU z2ZF!+f{z7_K)x1f%cHFpncTF)+Vr<-`yCZGhRK<}uYv7}?R?)dotnGsz znSm)jU3rYH_d$P3DTGFesJ0;CZr{H*(#6K|07}jdIZEL+$|}yG%7vU31z$iAnq=o{ zo`2^Y{s|l6HZY5X<=*uNVcX!&eUW?;IJ1mVCZrnX*ye|Jz!rN&S%|1;&uhebt`_aE zA$cdzub4&AH!7yCwZ(xKBXF1x>hR*RDeDwuzlszj3mti{!*F8a4nAt;bD!xPq;9QY&Sp8fegRc)3|~smyENxnqie8o=iZNutxM7v)-VxHSf<#oG zagR6(!wTUvu*C$FVm3D)=k)S|aOP8|v_+~5?lKWA7et{)LKUAoAHuoa1`S}d5Dlxn zLmMgB-=evRDfw03mKRwWE4-jb#}%*;Q5t1kh6yJcN$a*l$1_5-C5sRI+~`QgUoAV` zs6t-gFd6Nykg9>(ki&s3&Us)L>e)W_T|f`kwn7xTKX!V9qKPCI5c9`b^3IQj&pQWa z+V~Q~Z7X(y)=q6GlPKkEn!%yYo7K)3wf)?#ww~qB|#|rn*Q)+M&*1GlW;z0 zpj6j^;y$Q=l!# zO-=4+efY=hWdh;ESTBnF8nu^Y8Z$QBk7|sNy=~%%s^TI&7a2`*j9u#F1Qsi z6`d$>j;Sey0>y+~pm5%TRuWuy$YJ-uuBL8(B}$GaNJ9m!zgkht9~uTwzwY{Wm|`j8+Az{v63|FU~5vzg;r)AB*u3Ldf7xF`P?;7ik`c$0mm=&fVt8y?p2x_CKMg+KLXLT}QIrGv zs9Mu1kev^fx_ZthlIcZHrp^ijpUe8V28btzND<-9vivHKrNG2e literal 0 HcmV?d00001 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..01bae9b --- /dev/null +++ b/build.gradle @@ -0,0 +1,29 @@ +buildscript { + repositories { + google() + mavenCentral() + maven { + url "https://plugins.gradle.org/m2/" + } + } + + apply from: 'versions.gradle' + + dependencies { + classpath "com.android.tools.build:gradle:$gradlePluginVersion" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" + classpath "io.github.gradle-nexus:publish-plugin:$gradleNexusVersion" + } +} +allprojects { + //Support @JvmDefault + tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { + kotlinOptions { + freeCompilerArgs = ["-Xjvm-default=all"] + jvmTarget = "1.8" + } + } +} +apply plugin: 'io.github.gradle-nexus.publish-plugin' + +apply from: "${rootDir}/scripts/publish-root.gradle" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..cd0519b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1d1b2a3 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Feb 22 11:22:55 GMT 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/library/.gitignore b/library/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/library/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle new file mode 100644 index 0000000..3b6ad6d --- /dev/null +++ b/library/build.gradle @@ -0,0 +1,53 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' +} + +ext { + PUBLISH_GROUP_ID = 'com.alexstyl' + PUBLISH_VERSION = libraryVersionName + PUBLISH_ARTIFACT_ID = 'warden' +} + +apply from: "${rootProject.projectDir}/scripts/publish-module.gradle" + +android { + kotlinOptions { + jvmTarget = javaVersion + useIR = true + freeCompilerArgs = [ + "-Xexplicit-api=strict" + ] + } + compileSdkVersion androidCompileSdkVersion + + defaultConfig { + minSdkVersion androidMinSdkVersion + targetSdkVersion androidCompileSdkVersion + versionCode libraryVersionCode + versionName libraryVersionName + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility javaVersion + targetCompatibility javaVersion + } + kotlinOptions { + jvmTarget = javaVersion + } +} + +dependencies { + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" + implementation "androidx.core:core-ktx:$coreVersion" + implementation 'androidx.activity:activity-ktx:1.4.0' +} \ No newline at end of file diff --git a/library/consumer-rules.pro b/library/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro new file mode 100644 index 0000000..fbff23d --- /dev/null +++ b/library/proguard-rules.pro @@ -0,0 +1,3 @@ +-keep public class * { + public protected *; +} diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5318bf4 --- /dev/null +++ b/library/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/library/src/main/java/com/alexstyl/warden/AndroidWarden.kt b/library/src/main/java/com/alexstyl/warden/AndroidWarden.kt new file mode 100644 index 0000000..041168f --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/AndroidWarden.kt @@ -0,0 +1,38 @@ +package com.alexstyl.warden + +import android.content.Context +import android.content.pm.PackageManager +import androidx.core.content.ContextCompat +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first + +public class AndroidWarden internal constructor( + private val context: Context, + private val observer: PermissionResultListener +) : Warden { + + override suspend fun requestPermission(forPermission: String): PermissionState { + return requestPermissions(arrayOf(forPermission)).value.values.first() + } + + override suspend fun requestPermissions(forPermission: Array): PermissionResults { + val allGranted = forPermission.fold(true) { acc, permission -> + acc && isPermissionGranted(permission) + } + return if (allGranted) { + PermissionResults(forPermission.associateWith { PermissionState.Granted }) + } else { + context.startActivity(WardenActivity.requestPermission(context, forPermission)) + return observeResponse(forPermission).first() + } + } + + private fun isPermissionGranted(forPermission: String): Boolean { + return ContextCompat + .checkSelfPermission(context, forPermission) == PackageManager.PERMISSION_GRANTED + } + + private fun observeResponse(forPermission: Array): Flow { + return observer.observePermissionResults(forPermission) + } +} diff --git a/library/src/main/java/com/alexstyl/warden/PermissionResultListener.kt b/library/src/main/java/com/alexstyl/warden/PermissionResultListener.kt new file mode 100644 index 0000000..9bd8a3e --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/PermissionResultListener.kt @@ -0,0 +1,9 @@ +package com.alexstyl.warden + +import android.app.Activity +import kotlinx.coroutines.flow.Flow + +internal interface PermissionResultListener { + fun processPermissionResult(activity: Activity, results: Map) + fun observePermissionResults(permissions: Array): Flow +} diff --git a/library/src/main/java/com/alexstyl/warden/PermissionResults.kt b/library/src/main/java/com/alexstyl/warden/PermissionResults.kt new file mode 100644 index 0000000..8bf2eb1 --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/PermissionResults.kt @@ -0,0 +1,12 @@ +package com.alexstyl.warden + +/** + * Class that represents a collection of permission responses + */ +public data class PermissionResults( + /** + * A map with keys representing permissions and values representing whether + * the permission is granted or not. + */ + val value: Map +) \ No newline at end of file diff --git a/library/src/main/java/com/alexstyl/warden/PermissionResultsListener.kt b/library/src/main/java/com/alexstyl/warden/PermissionResultsListener.kt new file mode 100644 index 0000000..94d7fe8 --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/PermissionResultsListener.kt @@ -0,0 +1,38 @@ +package com.alexstyl.warden + +import android.app.Activity +import androidx.core.app.ActivityCompat +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.filter + +internal object PermissionResultsListener : PermissionResultListener { + + private val onPermissionResults = MutableSharedFlow( + extraBufferCapacity = 1 + ) + + override fun processPermissionResult(activity: Activity, results: Map) { + val value = results.map { (permission, isGranted) -> + val state = if (isGranted) { + PermissionState.Granted + } else { + val shouldShowRationale = ActivityCompat.shouldShowRequestPermissionRationale( + activity, + permission + ) + PermissionState.Denied(shouldShowRationale) + } + permission to state + }.toMap() + + onPermissionResults.tryEmit(PermissionResults(value)) + } + + override fun observePermissionResults(permissions: Array): Flow { + val keys = permissions.toSet() + return onPermissionResults.filter { + it.value.keys == keys + } + } +} diff --git a/library/src/main/java/com/alexstyl/warden/PermissionState.kt b/library/src/main/java/com/alexstyl/warden/PermissionState.kt new file mode 100644 index 0000000..1b0149b --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/PermissionState.kt @@ -0,0 +1,6 @@ +package com.alexstyl.warden + +public sealed class PermissionState { + public object Granted : PermissionState() + public data class Denied(val shouldShowRationale: Boolean) : PermissionState() +} diff --git a/library/src/main/java/com/alexstyl/warden/Warden.kt b/library/src/main/java/com/alexstyl/warden/Warden.kt new file mode 100644 index 0000000..b124ed7 --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/Warden.kt @@ -0,0 +1,25 @@ +package com.alexstyl.warden + +import android.content.Context + +public interface Warden { + + /** + * Blocks the suspend function until there is a user interaction for the given permission. + */ + public suspend fun requestPermission(forPermission: String): PermissionState + + /** + * Blocks the suspend function until there is a user interaction for all given permissions. + */ + public suspend fun requestPermissions(forPermission: Array): PermissionResults + + public companion object { + public fun with(context: Context): Warden { + return AndroidWarden( + context.applicationContext, + PermissionResultsListener + ) + } + } +} diff --git a/library/src/main/java/com/alexstyl/warden/WardenActivity.kt b/library/src/main/java/com/alexstyl/warden/WardenActivity.kt new file mode 100644 index 0000000..d513e32 --- /dev/null +++ b/library/src/main/java/com/alexstyl/warden/WardenActivity.kt @@ -0,0 +1,35 @@ +package com.alexstyl.warden + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions + +internal class WardenActivity : ComponentActivity() { + + private val requestPermission = registerForActivityResult(RequestMultiplePermissions()) { + PermissionResultsListener.processPermissionResult(this, it) + finish() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val permissions: Array = requireNotNull( + intent.getStringArrayExtra(EXTRA_PERMISSIONS) + ) + requestPermission.launch(permissions) + } + + companion object { + private const val EXTRA_PERMISSIONS = "extra:permissions" + + fun requestPermission(context: Context, forPermission: Array): Intent { + return Intent(context, WardenActivity::class.java).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + putExtra(EXTRA_PERMISSIONS, forPermission) + } + } + } +} diff --git a/library/src/main/res/values/themes.xml b/library/src/main/res/values/themes.xml new file mode 100644 index 0000000..e130d46 --- /dev/null +++ b/library/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/sample/.gitignore b/sample/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/sample/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/sample/README.md b/sample/README.md new file mode 100644 index 0000000..5d75c7b --- /dev/null +++ b/sample/README.md @@ -0,0 +1,13 @@ +# Warden Sample app + +The Sample app showcases how to request and handle permission logic from a click listener using +Warden. + +As soon as the 'Call' button is clicked, the `CALL_PHONE` is requested. + +If the permission is granted, then the phone call takes place. + +If the permission is denied, the phone number is dialed instead. + +Checkout the [DialerActivity](/sample/src/main/java/com/alexstyl/warden/sample/DialerActivity.kt) to +get started. \ No newline at end of file diff --git a/sample/build.gradle b/sample/build.gradle new file mode 100644 index 0000000..cd07963 --- /dev/null +++ b/sample/build.gradle @@ -0,0 +1,55 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + compileSdk androidCompileSdkVersion + + defaultConfig { + applicationId "com.alexstyl.warden.sample" + minSdkVersion 21 + targetSdkVersion androidCompileSdkVersion + versionCode libraryVersionCode + versionName libraryVersionName + + vectorDrawables { + useSupportLibrary true + } + signingConfig signingConfigs.debug + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility javaVersion + targetCompatibility javaVersion + } + kotlinOptions { + jvmTarget = javaVersion + useIR = true + freeCompilerArgs += "-Xopt-in=androidx.compose.material.ExperimentalMaterialApi" + freeCompilerArgs += "-Xopt-in=coil.annotation.ExperimentalCoilApi" + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion composeVersion + } +} + +dependencies { + implementation project(":library") + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion" + + implementation "androidx.compose.ui:ui:$composeVersion" + implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycleViewModelComposeVersion" + implementation "androidx.compose.material:material:$composeVersion" + implementation "androidx.compose.ui:ui-tooling:$composeVersion" + implementation "androidx.activity:activity-compose:$activityComposeVersion" +} diff --git a/sample/proguard-rules.pro b/sample/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/sample/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b8c91a3 --- /dev/null +++ b/sample/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sample/src/main/java/com/alexstyl/warden/sample/DialerActivity.kt b/sample/src/main/java/com/alexstyl/warden/sample/DialerActivity.kt new file mode 100644 index 0000000..1444b29 --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/DialerActivity.kt @@ -0,0 +1,42 @@ +package com.alexstyl.warden.sample + +import android.Manifest +import android.os.Bundle +import android.view.Window +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.lifecycle.lifecycleScope +import com.alexstyl.warden.PermissionState +import com.alexstyl.warden.Warden +import com.alexstyl.warden.sample.theme.SampleAppTheme +import kotlinx.coroutines.launch + +class DialerActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + requestWindowFeature(Window.FEATURE_NO_TITLE) + + setContent { + SampleAppTheme { + DialerScreen( + onCallButtonClick = { phoneNumber -> + startPhoneCallOrDial(phoneNumber) + } + ) + } + } + } + + private fun startPhoneCallOrDial(phoneNumber: String) { + lifecycleScope.launch { + val result = + Warden.with(this@DialerActivity).requestPermission(Manifest.permission.CALL_PHONE) + when (result) { + is PermissionState.Denied -> startActivity(dialNumber(phoneNumber)) + PermissionState.Granted -> startActivity(callNumber(phoneNumber)) + } + } + } +} diff --git a/sample/src/main/java/com/alexstyl/warden/sample/DialerScreen.kt b/sample/src/main/java/com/alexstyl/warden/sample/DialerScreen.kt new file mode 100644 index 0000000..c0d3c5b --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/DialerScreen.kt @@ -0,0 +1,159 @@ +@file:OptIn(ExperimentalMaterialApi::class) + +package com.alexstyl.warden.sample + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.Icon +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Scaffold +import androidx.compose.material.Surface +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun DialerScreen( + onCallButtonClick: (String) -> Unit +) { + Scaffold { + Column( + modifier = Modifier + .fillMaxSize() + .padding(20.dp), + ) { + Spacer(Modifier.height(20.dp)) + + val numberState = remember { mutableStateOf("555") } + + CenteredRow(Modifier.weight(1f)) { + Text( + text = numberState.value, + letterSpacing = 2.sp, + modifier = Modifier.weight(1f), + style = MaterialTheme.typography.body1 + ) + } + + Row(Modifier.weight(1f)) { + DialButton(Modifier.weight(1f), "1", "abc") + DialButton(Modifier.weight(1f), "2", "def") + DialButton(Modifier.weight(1f), "3", "def") + } + + Row(Modifier.weight(1f)) { + DialButton(Modifier.weight(1f), "4", "ghi") + DialButton(Modifier.weight(1f), "5", "jkl") + DialButton(Modifier.weight(1f), "6", "mno") + } + + Row(Modifier.weight(1f)) { + DialButton(Modifier.weight(1f), "7", "pqrs") + DialButton(Modifier.weight(1f), "8", "tuv") + DialButton(Modifier.weight(1f), "9", "wxyz") + } + + Row(Modifier.weight(1f)) { + DialButton(Modifier.weight(1f), "*") + DialButton(Modifier.weight(1f), "0", "+") + DialButton(Modifier.weight(1f), "#") + } + + CenteredRow(Modifier.weight(1f)) { + CallButton(onClick = { onCallButtonClick(numberState.value) }) + } + } + } +} + +@Composable +private fun CenteredRow( + modifier: Modifier, + content: @Composable () -> Unit +) { + Row(modifier) { + Box( + modifier = Modifier.weight(1f), + contentAlignment = Alignment.Center + ) { + content() + } + } +} + +@Composable +private fun CallButton( + modifier: Modifier = Modifier, + onClick: () -> Unit +) { + Box( + modifier, + contentAlignment = Alignment.Center + ) { + Surface( + color = MaterialTheme.colors.primary, + onClick = onClick, + modifier = Modifier.size(96.dp), + shape = CircleShape, elevation = 4.dp + ) { + Box(contentAlignment = Alignment.Center) { + Icon( + painter = painterResource(R.drawable.ic_call), + contentDescription = "Call", + modifier = Modifier.size(48.dp), + tint = Color.White, + ) + } + } + } + +} + +@Composable +private fun DialButton( + modifier: Modifier = Modifier, + title: String, + subtitle: String = "", +) { + Box( + modifier, + contentAlignment = Alignment.Center + ) { + Surface( + modifier = Modifier.size(96.dp), + shape = CircleShape, elevation = 4.dp + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + Text(title, style = MaterialTheme.typography.body1) + if (subtitle.isNotEmpty()) { + Spacer(Modifier.height(2.dp)) + Text( + subtitle.uppercase(), + style = MaterialTheme.typography.body2, + letterSpacing = 2.sp + ) + } + } + } + } +} + diff --git a/sample/src/main/java/com/alexstyl/warden/sample/Intents.kt b/sample/src/main/java/com/alexstyl/warden/sample/Intents.kt new file mode 100644 index 0000000..2df0828 --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/Intents.kt @@ -0,0 +1,22 @@ +package com.alexstyl.warden.sample + +import android.content.Intent +import android.net.Uri + +fun callNumber(phoneNumber: String): Intent { + return Intent( + Intent.ACTION_CALL, + phoneUri(phoneNumber) + ) +} + +fun dialNumber(phoneNumber: String): Intent { + return Intent( + Intent.ACTION_DIAL, + phoneUri(phoneNumber) + ) +} + +fun phoneUri(phoneNumber: String): Uri { + return Uri.fromParts("tel", phoneNumber, null) +} diff --git a/sample/src/main/java/com/alexstyl/warden/sample/theme/Color.kt b/sample/src/main/java/com/alexstyl/warden/sample/theme/Color.kt new file mode 100644 index 0000000..f44b9b6 --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/theme/Color.kt @@ -0,0 +1,5 @@ +package com.alexstyl.warden.sample.theme + +import androidx.compose.ui.graphics.Color + +val Purple500 = Color(0xFF81C784) \ No newline at end of file diff --git a/sample/src/main/java/com/alexstyl/warden/sample/theme/Theme.kt b/sample/src/main/java/com/alexstyl/warden/sample/theme/Theme.kt new file mode 100644 index 0000000..b50c0eb --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/theme/Theme.kt @@ -0,0 +1,22 @@ +package com.alexstyl.warden.sample.theme + +import androidx.compose.material.MaterialTheme +import androidx.compose.material.lightColors +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +private val LightColorPalette = lightColors( + primary = Purple500, + background = Color(0xFFFAFAFA), +) + +@Composable +fun SampleAppTheme( + content: @Composable () -> Unit +) { + MaterialTheme( + colors = LightColorPalette, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/sample/src/main/java/com/alexstyl/warden/sample/theme/Type.kt b/sample/src/main/java/com/alexstyl/warden/sample/theme/Type.kt new file mode 100644 index 0000000..d5b3a45 --- /dev/null +++ b/sample/src/main/java/com/alexstyl/warden/sample/theme/Type.kt @@ -0,0 +1,20 @@ +package com.alexstyl.warden.sample.theme + +import androidx.compose.material.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +val Typography = Typography( + body1 = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.SemiBold, + fontSize = 30.sp + ), + body2 = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 14.sp + ) +) \ No newline at end of file diff --git a/sample/src/main/res/drawable/ic_call.xml b/sample/src/main/res/drawable/ic_call.xml new file mode 100644 index 0000000..e2ac7ad --- /dev/null +++ b/sample/src/main/res/drawable/ic_call.xml @@ -0,0 +1,10 @@ + + + diff --git a/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..fcd3a1e --- /dev/null +++ b/sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/sample/src/main/res/mipmap-hdpi/ic_launcher.png b/sample/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a0dbee07e8c6b88975e3f092edab1f406de812d1 GIT binary patch literal 5550 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 literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-hdpi/ic_launcher_background.png b/sample/src/main/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..4ebdff78226a6562a32f3a5bad881250e3d77465 GIT binary patch literal 841 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 literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-mdpi/ic_launcher_background.png b/sample/src/main/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..d916ad0086be6031542e1c25445cec5972d2f8ca GIT binary patch literal 449 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 TSf0Ue&jwgubFgSIM`iv8>tc3f literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b59a74c72573f640c62cae25d49879c934adb91c GIT binary patch literal 7569 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 NJYD@<);T3K0RV8op8Eg* literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/sample/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..2924c5221bf2c10e7138e2904a630f8ad3d17d1d GIT binary patch literal 6791 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 Vx5|r$JpkOL`BX=>O4<6u{{ZGSpU?mR literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png b/sample/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..78a6f31d2e1baadc3e9b0a704fffa39872a8747f GIT binary patch literal 12442 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 YKkl!K`DdxrL;wH)07*qoM6N<$f`{ef&j0`b literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/sample/src/main/res/mipmap-xxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..46fdd5df65d3334141c32010451a396899b40b52 GIT binary patch literal 2938 zcmeAS@N?(olHy`uVBq!ia0y~yU~~at4mO}j{44ik3=G_ko-U3d6>)EG8ulFu5MXuu z-Lh}Pdp1TD53yH&t{$80b2gm&#^-(Ou0QN&U}R$H3l`YR#Kgi;!@_dWTfw2>K)8c| zEh|ufW0AQ-14Cmx<9va=96)9 z97zsFP7Mdz8Wi&G+?>Y3!NTaskMJXvmDFnbF)dTF#7?z@yc{Xhk{NgcxCst48yc Y8o$`DGCcnaY*RCMy85}Sb4q9e05EG^y#N3J literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/sample/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..162e8b8ad316b6a97abbde33faaf8aa8f97446ad GIT binary patch literal 12534 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 literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c0f65ec24e28f8d9519028e1676067ed89a4a3 GIT binary patch literal 4221 zcmeAS@N?(olHy`uVBq!ia0y~yVB7%09Be?56MhC-3=9G;o-U3d6>)E`HgYm3@Gv`C zFXY}myD8cxMxA52)3Z0V)0G_>7#Nuh8x0dS9y_86s}17wv! zLLEqiWfBvcPUP$hAgdA%`~iuKI&3t=M$_16t{g2cMhn={DrvN?9Bo~Uw#P;rila^I l(ay+dFKM)2N&TL9Mbx4neCHVD^?}0*44$rjF6*2UngCB!GVTBX literal 0 HcmV?d00001 diff --git a/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/sample/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..748fc75bbfccfeabefd7541dcc6a1066a29c37e3 GIT binary patch literal 16637 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 OmXbVJu1v=4)Bge!3 + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml new file mode 100644 index 0000000..3447c0c --- /dev/null +++ b/sample/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Warden (Sample) + \ No newline at end of file diff --git a/sample/src/main/res/values/themes.xml b/sample/src/main/res/values/themes.xml new file mode 100644 index 0000000..59c55ea --- /dev/null +++ b/sample/src/main/res/values/themes.xml @@ -0,0 +1,3 @@ + +