Finger print is not working after reboot - Xiaomi Redmi 4X Questions & Answers

Hello,
Whenever I'm on any custom rom my finger print sensor is not working after reboot but it works on stock rom.
I have to add another finger to make this work, but after reboot it stops again.
I tried many times to install custom roms by wiping everything including internal storage(fresh install) but problem not solved.
There is one more problem whenever I reboot device to system/recovery it asks for password, every time I have to provide my pin to go ahead. Problem is still same on any version of twrp.
My device is Redmi 4 (4gb ram)
TWRP Recovery
Please help me.

It's due to encryption bug. Go to wipe then select Format data via Recovery. Remember in this process you're whole internal will be wiped.. So better Copy all important photos and documents before doing so. This bug will occur when changing TWRP/Flasin MIUI ROMs. Better don't Flash MIUI and custom rom regularly. And if you do.. Flash Lazy flasher zip after flashing MIUI to prevent Encryption

Related

[CLOSED]TWRP 3.3.1-1 for Pixel 3A XL [OFFICIAL]

Team Win Recovery Project 3.x, or TWRP3 for short, is a custom recovery built with ease of use and customization in mind. Its a fully touch driven user interface no more volume rocker or power buttons to mash. The GUI is also fully XML driven and completely theme-able. You can change just about every aspect of the look and feel.
Code:
[I]#include <std_disclaimer.h>
/*
* Your warranty is not void.
*
* We are not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this recovery
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at us for messing up your device, we will laugh at you.
*
*/[/I]
Note: Please be aware that you cannot install this without a kernel with LZMA compression support, I believe most ROMs have included my commit for this so you should be good for all custom ROMs and kernels. If not please file a request to the maintainer.
In addition, please be aware that TWRP is currently not compatible with Android 10. If you would like to use TWRP you will need to go back to Android 9. If you would like more information you can read at the link here.
Not a huge problem, stock users can just temporarily boot TWRP if you have access to a PC.
Not compatible with Android Q.
Pixel devices have 2 "slots" for ROMs / firmware. TWRP will detect whichever slot is currently active and use that slot for backup AND restore. There are buttons on the reboot page and under backup -> options to change slots. Changing the active slot will cause TWRP to switch which slot that TWRP is backing up or restoring. You can make a backup of slot A, switch to B, then restore the backup which will restore the backup of A to slot B. Changing the slot in TWRP also tells the bootloader to boot that slot.
Installation:
If you already have TWRP installed: Download the latest zip and install the zip using TWRP.
If you do not already have TWRP installed: Download both the img and the zip. You will need to have fastboot binaries and the correct drivers installed. Power off your device completely. Hold volume down and turn on the device. Your device should now be in the bootloader. Connect the device to your PC. Open a command window and run the following command from the proper location:
fastboot boot path/to/twrp.img
This will temporarily boot TWRP on your device. Use ADB or MTP to transfer the zip onto your device.
Go to install and browse to the zip and install the zip. The zip will install TWRP to both boot slots. Installing TWRP at this time will remove root if you are currently rooted.
If you accidently flash TWRP to your device using fastboot instead of temporarily booting the image, you will need to download the latest factory image for your device and reflash the boot image.
Changelog:
[BETA]
3.3.1-0: Initial release for Pixel 3A XL devices
3.3.1-1: Fixed having to manually change slots before rebooting.
3.3.1-2: Updated to July blobs!
3.3.1-3: Can now install TWRP to boot image. ADB, MTP, LOGD, Repack Tools and Logcat have all been removed to save the necessary space for this to work. You can grab stuff while in the OS, then flash it in TWRP (Keep in mind I have only tested this on stock as of now, feel free to test it on whatever ROM you use. It should work, but let me know if it doesn't).
3.3.1-4: Changed back to LZMA compression, also added back all the features besides ADB/Logcat. As long as your kernel supports LZMA you will be able to take advantage of installing it permanently without having to worry about space restrictions.
3.3.1-5:
Add persist entry to fstab
* To allow TWRP to store a backup settings file on /persist
and also to be used as QCOM time fix source during early boot.
Revert "Don't include logcat."
Revert "Don't include repack tools."
3.3.1-6:
Revert "Revert "Don't include repack tools.""
Add haptics firmware.
* This obviously on it's own isn't enough to get haptics working for the 3A in TWRP, but its a start.
Don't include a precompiled update_engine_sideload
* This should fix the issue of flashing officials for StatiXOS
[STABLE]
3.3.1-0: Initial official release!
Download:
https://twrp.me/google/googlepixel3axl.html
XDA:DevDB Information
TWRP, Tool/Utility for the Google Pixel 3a XL
Contributors
ZVNexus, janjan
Source Code: https://github.com/TeamWin/android_device_google_bonito
Version Information
Status: Stable
Current Stable Version: 3.3.1-0
Stable Release Date: 2019-07-17
Current Beta Version: 3.3.1-6
Beta Release Date: 2019-06-27
Created 2019-06-27
Last Updated 2019-11-15
Reserved
Awesome! Thank you so much!
So as of this moment, there is only the ability to boot to twrp via fastboot?
DriveEuro said:
Awesome! Thank you so much!
So as of this moment, there is only the ability to boot to twrp via fastboot?
Click to expand...
Click to collapse
Yeah, having some issues actually installing it to the boot image. Should be fixed rather soon, just decided to post. Maybe I shoulda waited a bit longer, idk.
So does anyone know if TWRP + Magisk work on Android Q for root?
ZVNexus said:
Yeah, having some issues actually installing it to the boot image. Should be fixed rather soon, just decided to post. Maybe I shoulda waited a bit longer, idk.
Click to expand...
Click to collapse
I don't mind, I haven't flashed TWRP to a device since Treble came out, but it's easy enough to boot an image, so at least for my usage case, this is all I need
otg mounting problem
ZVNexus said:
Yeah, having some issues actually installing it to the boot image. Should be fixed rather soon, just decided to post. Maybe I shoulda waited a bit longer, idk.
Click to expand...
Click to collapse
no you shouldn't have waited!! thanks a lot specially from all of us checking if twrp came out every day!
hey maybe you can give me a tip since i have a problem mounting otg:
when i boot twrp image if i go to backup/select storage i find a storage/usb partition (0MB)
when i connect otg (and go to mount) it becomes storage/usbotg 1 (12000MB)
but the problem is that if i click it doesn’t remain selected, and the log reports “Unable to find partition for the path ‘/storage’ ”
if i go to mount or backup/select storage and click usbotg 1 storage it doesn’t remain selected and the log reports “E: unable to locate partition for ‘/storage/usbotg-1’ ”
(i’ve tried also with different keys but i don't think it's the point anyway the 1st was an 256GB usb/SD and the 2nd a 16GB usbkey but logs reports same error)
any tip?
I'm on Q DP4. Anyone having luck flashing Magisk (canary)? In B slot it fails to mount system and vendor. I change to A slot. It completes. I reboot on A slot, I get stuck at Google starting logo and the phone never boots. If I attempt to boot B slot afterwards, it boots up fine, but I obviously don't have Magisk installed, verified with the Magisk APP.
Anyone have a clue?
Just to provide feedback.
Fastboot booted the image, it prompted for my pin, mounted system, and was able to backup properly, moved backup to computer.
Wiped the phone, reboot and went through setup, everything was working.
Back to twrp, adb pushed the backup to the phone, restored the backup and everything was functioning.
Also tested and was able to sideload flash Magisk.
So everything seems to be working as intended.
Thank you so much for your hard work!
My TWRP is NOT prompting for pin/pattern. That has to be part of this...
Wiped data via google recovery. The phone booted to Pie (i had previously did the OTA from Pie to Q beta 4). So now I'm back on Pie somehow (without reflashing). I booted to TWRP, installed Magisk successfully.
So overall, I'm not sure if this was related to Q beta 4 OTA occupying B slot while Pie still was on A slot.
Thanks to all for their work with TWRP!
Antonyo13 said:
Just to provide feedback.
Fastboot booted the image, it prompted for my pin, mounted system, and was able to backup properly, moved backup to computer.
Wiped the phone, reboot and went through setup, everything was working.
Back to twrp, adb pushed the backup to the phone, restored the backup and everything was functioning.
Also tested and was able to sideload flash Magisk.
So everything seems to be working as intended.
Thank you so much for your hard work!
Click to expand...
Click to collapse
On previous devices I have run into TWRP restore issues if I had a security PIN set on the device when I backed up. During your test did you have a PIN setup on the phone?
artiemon said:
On previous devices I have run into TWRP restore issues if I had a security PIN set on the device when I backed up. During your test did you have a PIN setup on the phone?
Click to expand...
Click to collapse
I had a pattern, not sure if it makes a difference between pattern and pin.
I will say the only thing weird i noticed was when i wiped the phone (the default wipe from twrp, not a full format of data from twrp), when i booted I was prompted for my pattern on first unlock before the device setup. Even though it was wiped.
But restoring was perfectly fine.
Antonyo13 said:
I will say the only thing weird i noticed was when i wiped the phone (the default wipe from twrp, not a full format of data from twrp), when i booted I was prompted for my pattern on first unlock before the device setup. Even though it was wiped.
But restoring was perfectly fine.
Click to expand...
Click to collapse
That is normal on pixels. If you factory reset in TWRP your password still stays
spaceman860 said:
That is normal on pixels. If you factory reset in TWRP your password still stays
Click to expand...
Click to collapse
Thank then everything is working great. No issues at all with TWRP
So just confirming - I am , I assume encrypted , as I have a PIN and a pattern with DU ROM. Can i safely backup the existing ROM and flash another and then be able to restore if need be using this version of TWRP?
jcrompton said:
So just confirming - I am , I assume encrypted , as I have a PIN and a pattern with DU ROM. Can i safely backup the existing ROM and flash another and then be able to restore if need be using this version of TWRP?
Click to expand...
Click to collapse
Yes. This is how it has worked in the past. Don't see why it wouldn't work like this currently. If you flash a different vendor image or system image, you'll want to revert back before you restore your old ROM backup.
DriveEuro said:
Yes. This is how it has worked in the past. Don't see why it wouldn't work like this currently. If you flash a different vendor image or system image, you'll want to revert back before you restore your old ROM backup.
Click to expand...
Click to collapse
Revert back to what? Sorry I don't understand?
Flash back the original vendor and system images.
GQJ said:
Revert back to what? Sorry I don't understand?
Click to expand...
Click to collapse
He was answering my question about hypothetical referring back to a prior rom from a backup
neshipda said:
no you shouldn't have waited!! thanks a lot specially from all of us checking if twrp came out every day!
hey maybe you can give me a tip since i have a problem mounting otg:
when i boot twrp image if i go to backup/select storage i find a storage/usb partition (0MB)
when i connect otg (and go to mount) it becomes storage/usbotg 1 (12000MB)
but the problem is that if i click it doesn’t remain selected, and the log reports “Unable to find partition for the path ‘/storage’ ”
if i go to mount or backup/select storage and click usbotg 1 storage it doesn’t remain selected and the log reports “E: unable to locate partition for ‘/storage/usbotg-1’ ”
(i’ve tried also with different keys but i don't think it's the point anyway the 1st was an 256GB usb/SD and the 2nd a 16GB usbkey but logs reports same error)
any tip?
Click to expand...
Click to collapse
I didn't test OTG before I uploaded, didn't have an OTG cable, but now that I know its a problem I'll look into it.

Error installing rom via mi flash / error when updating phone to android 10 global st

I would like a help, so I'm trying to install the rom via mi flash, but not installing the rom, it's in 500sec and nothing to complete the installation, luckily I was able to install via TWRP, however when I try to update via Android OTA 10 I get stuck in the bootloop.
need more info.
You installed Twrp I assume over the stock rom?
if so boot into TWRP and format user data. ( note this wipe completely erase the phone. but you have no choice it must be done. if you have files that you want on the phone, see you can access them via Windows explorer and copy them over to your desktop.
Basic Instructions
FORMAT /data partition (Important Never Ever Wipe System Or Persist!)
Copy our ROM to the internal storage or use external USB drive ( must choose which device to install from in twrp)
Install ROM, and anything else depending on rom if needed such as gapps
Reboot to recovery
Reboot to system and setup
tsongming said:
need more info.
You installed Twrp I assume over the stock rom?
if so boot into TWRP and format user data. ( note this wipe completely erase the phone. but you have no choice it must be done. if you have files that you want on the phone, see you can access them via Windows explorer and copy them over to your desktop.
Basic Instructions
FORMAT /data partition (Important Never Ever Wipe System Or Persist!)
Copy our ROM to the internal storage or use external USB drive ( must choose which device to install from in twrp)
Install ROM, and anything else depending on rom if needed such as gapps
Reboot to recovery
Reboot to system and setup
Click to expand...
Click to collapse
Now I managed to install the rom with Android 10 global, but the region is only in China, I can't change it and this one without facial unlocking.
NikolasG. said:
Now I managed to install the rom with Android 10 global, but the region is only in China, I can't change it and this one without facial unlocking.
Click to expand...
Click to collapse
I believe that @Agimax has a flashable mod on his stable page for changing regions, that seems to be a bug with the latest stable version.
Check here, and maybe tried pinging Agimax, if you need assistance.
https://forum.xda-developers.com/mi-8/themes/mods-miui-global-beta-region-free-t3898459/page5
Another option is flashing the latest Xiaomi.EU, which has every available feature some of which have not yet found their way to the stable build.
For the download links check Option 2
https://forum.xda-developers.com/mi-8/how-to/miui-11-xiaomi-eu-rom-released-t3974643

Internal storage encrypted despite all 3 methods. Please help!

Hi!
My only encounter with rooting was several years back when it used to be a simple affair (one click rooting app based on exploits like framaroot etc), so please bear with me.
I'm on Stock Oreo 8.1 (Patch 1 Aug 2019) Sanders 1804 (India) version. I've followed various guides and have been successful in flashing TWRP 3.4.0 (Official Sanders version) and Magisk 20.4. But everytime the phone is rebooted, TWRP can't mount internal storage and shows 0mb.
I tried all three methods I could find:
1. dm-verity zip flashing - Log said fstab not found. Searched and found that from Oreo, Android's encryption approach has been changed. I couldn't make much sense out of those, though.
2. Manually replacing the `forceencrypt` to `encryptable` then flash stock recovery and format data. Didn't work.
3. Formatting data right after TWRP is flashed. Didn't work either.
The maximum it works is for one time when I can connect the device to laptop to add some zips to it to flash. It doesn't make sense to wipe the data when it's the data only that we want to back!
My purpose is to make flashable zip (nandroid) to revert to if anything goes wrong. It was phone's wifi frequent disconnection (or connected but no internet) issue which forced me to try root. I'm not much interested in new ROMs and am fine with stock itself but need a backup of all apps with data etc. Also, I couldn't understand clearly the FAQ on TWRP website that says TWRP doesn't backup internal storage but backup data. As I don't use SdCard, the internal storage is mounted in /sdcard folder only
I'll really appreciate if someone can help me.
Thanks
Found solution from a helpful guy in a Telegram group.
1. Use ONLY attached zip/img files and follow exact same order.
2. Flash TWRP, reboot to recovery
3. In Wipe section, choose Format data, type YES and confirm. Reboot to recovery again.
4. Flash DM-Verity-ForceEncrypt.zip file. Flash Magisk.zip file. Reboot to recovery.
5. (Optional) Make a backup if you want or Reboot to system. Done!
https://drive.google.com/drive/folders/1h8wb78wLH5_VBmkhjpDjyPyDbUG9ZBV4?usp=sharing

Keep rebooting to fastboot after rom installation!

Hello, I was tinkering for a few days to actually use lineage os in my device. I've flash multiple TWRP across these two days from xda forums, TWRP and PBRP works fine, what bothers me is everytime I install custom rom, when I reboot the system, it will go to fastboot after showing redmi logo with unlocked bootloader. I don't seem to know what's the case, but if I flash MIUI, it will work, not with other roms.
These what I've done:
Download Rom
TWRP (already installed) & vbmeta ( https://forum.xda-developers.com/t/...omi-redmi-note-9-xiaomi-redmi-10x-4g.4218909/ )
Reboot to recovery
Wipe DATA (the right button in TWRP)
Reboot to recovery again
adb push file or copy rom zip to /sdcard or internal storage
Install Rom
Wipe data and not wipe data already tested with no avail
Reboot to system
My problem is, is it really possible to install lineageos? I've tried to install lineageos17 which is fail with logs arround the line of Error 7, and then /product (no such file is found) or something like that. My device is Redmi Note 9 Helio G85, is it not compatible? or should I try using GSI treble rom?
I've also tried to downgrade to MIUI 12.0.3.0 from 12.0.6.0, I downloaded 12.0.1.0, but haven't tried it yet.
Any help is appreciated, my pc is linux based, so if possible without much tinkering to move to windows. Thank you.

ROG 2 phone soft bricked

Hello,
today I did have a strange experience with my ROG 2 and my best guess is that there is some UFS problem, but a second opinion or ideas are welcome.
During a bike ride when I was wifi scanning (apps: "Tower collector", "Radio Beacon"), navigating and listening to an audio book, the phone just went dark. I thought from previous experience on a Note 3 that it might have overheated. Pretty much stress proofed from the previous phone.
Yes - it was warm in its bike pocket but really not overly hot.
The phone is an ebay buy 2 months old and has been ever since with omnirom, stable so far. I only noticed that the RGB LED here has no blue light, but I plainly did not care.
I tried to boot it after some 10 minutes again and the phone would not go past its omnirom boot screen until it reboots after some time, boot loops.
30 Minutes later at home I wondered then what is going on, and I copied off the TWRP backup from the phone I took two days ago, just in case.
I then tried to restore the same backup, but the phone switched off during restore after ~30%. This was reproducible, so I thought this may be something with the backup, maybe I cannot restore a partition. When I restore I had all partitions marked and I tested them one by one. The restore of single partitions worked, one by one, except vendor as it was marked read only and data as it failed unpacking (my recent backup then is dead?).
I then tried formatting the partitions, so "data", originally f2fs. I lack experience with journal recovery on f2fs so went to ext4. System was ext4 and was just wiped. I lost of course other data on the internal storage so tried to restore again with my copied backup. It restores, but it cannot boot and just bootloops. I now formatted all partitions, including vendor.
Finally, I tried downloading omnirom again and installed it. It won't boot, it doesn't even get to the boot animation, but just boot loops.
I reformatted data back to f2fs. But no change here.
Trying more: lineageos won't flash for unknown reasons, it immediately dies as "Error installing zip file". Checksum of the downloaded zip is correct.
I downloaded a stock rom and installed it. This is now the best result so far - It does want to boot.
Here I get a boot animation and this incredibly lame "tching" sound (it is a phone, not a sword...). But it also stops there and never continues. Yes, first boot takes longer, but not 10 minutes.
Any ideas what else to try with this phone?
So far, I can boot twrp via sideload and interact with it fine. But that will be it; ran out of ideas.
Happy for suggestions.
Gaya
Use raw firmware to restore everything.
Install latest firmware zip on both slots.
After installing custom roms go to wipe -> format data by typing yes. Otherwise rom wont boot
thanks for getting back, If by raw firmware you meant the ASUS stock, I did. Not sure why data wipe after installation or double install to a/b partition would make a difference, but in the end I am new to this a/b concept, looks though like standard dual boot to me. Tried it, but no difference.
- installed asus firmware to inactive B
- switched to B partition
- installed asus firmware to inactive A
- wiped data
- started, so far same behaviour after 15 minutes of waiting (boot animation with sound, then it repeats boot animation until ...).
There are Two kind of rom raw firmware (used to restore bricked device) and recovery rom (zip file we use for update)
Raw firmware will flash ROM to both the slots, while recovery rom only flash to one slot. So you need to Only select reboot to recovery after flashing ROM to switch to the updated slot.
No, stock rom is not exactly raw firmware. RAW firmware uses EDL mode (in bootloader) to flash the stock rom. Download A10 raw from here version .90.
when extracting it you will see some files.
Steps To flash Raw:
* enable usb debugging in phone.
*connect the phone via side port to pc
open command prompt and run this command
adb devices
adb reboot bootloader
Now go to the folder where you extracted the raw firmware & run "flashall_AFT.cmd" as admin
wait [there will be no output]. After 15 -20 mins your device should boot. If you have any old version stock rom data the phone will carry the data to new version. If you have any custom rom/ updated version of stock rom data, it will ask to factory reset, so do that.
wiping is not exactly formatting so do it the right way
Why format: the one where you format by typing "yes" .If you switch between Roms ( stock to custom or vice versa) and go back to older versions (v .100 to .60) the old/previous rom data cant be used with new one so you must format data.
when formatting is not necessary : If you want to upgrade both stock images (version .90 to .100) & custom rom (v 1 to 1.2) i.e., flashing stock rom and then custom rom over it, you dont need to format data because you can reuse the data from custom rom to updated custom rom.
A/B device use two partition instead of one. so the upgrade can happen in the background. On restart you will switched to updated slot. So room for error is less.
The wiping here should be the same as formatting, as it is running the mke2fs (as per TWRP settings). But raw rom I do not have (I believe).
The link you have there seems broken, could you repost it again?
I did download the stock ROM earlier from ASUS directly, to not violate policies, HTTP links etc, here is only the path on asus . com
pub/ASUS/ZenFone/ZS660KL/UL-ASUS_I001_1-ASUS-17.0240.2103.75-1.1.229-user.zip
That is the one I installed via recovery. Am not sure what is in your mentioned flashall_AFT.cmd though, but suspect some adb sideload at least.
I eventually succeeded, but of course would liek to know
1) why
2) what happened?
I did follow a video about flashing the stock rom, basically as you explained (factory reset and data wipe), twice to a and b partition. That made the device bootable. Why is this needed?
I tested wiping system again (I am used to doing clean flashes) and installed omnirom again, and it failed booting.
I installed again the a/b with stocks, factory reset and data wipe and installed omnirom as dirty flash. All is well.
Now I was able to restore my backup finally without the device switching off and it did not complain about the data backup. So finally I am with my phone again rom and copy data to my fresh partition.
as to 1) why?
I understand a/b partition as sort of windows/linux dual boot with a more separate bootloader maybe. So I do not see the point in flashing the stock rom twice or in rendering the device unbootable when wiping system.
and as 2) what happened.
I may only guess: I did an omnirom upgrade 2 days earlier that worked fine and was the reason for my nandroid.
During my ride, the phone had some whateverissue and rebooted. I am unsure whether i tested booting but assume that after the upgrade it flashed to the other partition and it was not bootable. It does not make sense as this would make a/B partitions rather hard for custom rom makers, e.g. people complaining all the time.
Other guess: there was a file system issue with f2fs. Problem with data partition seems to cause bigger issues.
When I flash to ext4 after testing the bootable rom with a wiped data, it would not boot anymore. After factory reset again, it mke2fs the data partition again, back to f2fs and the device booted again happily.
Thanks for the help. Happy to know/learn more about this issue, as I would love to prevent or handle them quicker with more of I know what I'm doing.
Android Dual Partition (A/B) is made for seamless updates i.e, Dual system/vendor partition but uses same data partition. Lets say you are currently in slot A when you apply system update the slot B gets updated. As always rebooting the device switches to the B partition after update. & further update flashes the system to the A partition.
Basically there is no need to flash stock rom twice, unless you are coming from stock [one partition might be in higher firmware version than other] or there is new stock version with some minor/major upgrades to firmware files.
Our custom ROMs are not stand alone, Mostly it only replaces the system files and keep the vendor same as stock. (also this keeps the ROM update file size to be minimum)
you might even have different version of Android in A/B partition.
Here is a scenario on How A/B works:
Say you are currently using your device in B-slot and A9 so partition on slot-A will be A9 partition slot-B be A9. After that you are doing system update to A10 from System update (not via TWRP)
now you will have A10 on slot-A and A9 on slot-B.
then you want to go to custom rom, so you flashed say omni on A-slot and rebooted & it will surely work.
After that you are using inbuild system update from custom rom any applied it. now the system update will overwrite the A9's system files but (the device specifically needs A10s vendor to work properly). Now comes the fun part i.e., soft brick, boot looping, and corrupt images
That's why you have to flash latest stock to both A and B slots, and overwrite them all with system files from custom rom (also should be flashed once in slots A and B) to get neat experience from custom ROMs.
If you understand what was written above, then you will know the reason behind soft brick.
stock rom flashed only once (firmware image variation may affect stability)
custom rom only flashed in one slot (switching slot will boot loop device)
Not using Reboot to recovery to flash (you will be flashing to the same slot over and over & thus rebooting will boot loop)
Not formatting data ( Just Maybe, your custom ROM and stock uses different file system for data partition)
For Raw files search "ASUS rog 2 RAW firmware images" those files will be around 3 GB in size.

Categories

Resources