How to Bypass 'No Sim Card' locked screen on no data plan G1 - Android Software/Hacking General [Developers Only]

Hi all,
I'm trying hard to bypass the 'no sim card' locked screen that I am currently getting on my G1 Android Dev Phone 1 RC29 that I recently installed DREAIMG.nbh on. Ideally, I would like to run the android scripting environment on my phone with wireless access.
So far, my primary document that I've used to consult this matter has been this one from JesusFreke: forum.xda-developers.com/showthread.php?t=452316.
The first thing the document suggests is, "to connect to your phone with adb shell and get root access, and then type the following command:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
When I run this command, I get a 'sqlite3: permission denied' error (see below).
3.bp.blogspot.com/_scN4BTBqXiY/S-dOBTo8LiI/AAAAAAAAAfU/rtmnXywBPzI/s1600/sqlite3+permission+denied1.jpg
I recognize now that the assumption with this command is that your phone is running on RC30, as the article notes. Mine is running on RC29. In order to make this command functional, it appears as though I need to ADB push the busybox binary.
As you can see in the image above, I was able to successfully adb push the busybox binary to the /data/local of the G1.
Furthermore, I ran the wireless command in step two of the above tutorial just to see what would happen and I get this message:
3.bp.blogspot.com/_scN4BTBqXiY/S-dMU3sO2-I/AAAAAAAAAfM/Z9r_glscNvU/s1600/Wireless.jpg
With all of this being said, however, I still can't seem to bypass my original screen that says 'No Sim Card'
3.bp.blogspot.com/_scN4BTBqXiY/S-dLhIjpQ7I/AAAAAAAAAfE/JkbHfOgW3f0/s1600/DSCN5623.JPG
If someone out there knows that is going on that I should change, please let me know, because I am really running into a dead end here.
Thank you very much!

I don't remember if RC29 has this, but in the initial setup wizard you should be able to press the menu key and access a wireless setup utility to connect to wifi.
Also, after you wipe and flash (or turn the phone on the first time), and if you get the "touch the android to begin" screen you can touch each of the 4 corners of the black background in a clockwise pattern starting in the upper left to go to the home screen.
That sqlite3 command needs to be run in a root shell. Make sure you're root. The $ prompt is the regular phone user. The root prompt will be # instead. Try running "su" after connecting with "adb shell" to become root. Is the rom you're using rooted?

Related

How to register the G1 without a sim or data plan

I've found a way to register the G1 in the initial registration screen that comes up the first time you boot the phone (or after you wipe the phone). It will allow you to register if you don't have a sim card at all, or if you have a sim card but no data plan.
First, You must have either RC29 or earlier, or modded RC30. It won't work with official RC30, sorry. If you don't know for sure what version you have, but you know you haven't installed a modified RC30 build, then the easiest way to check is to reboot the phone, and once it starts up and is showing the "click the android to begin" screen, or the "no sim card" screen, then type the following on the phone keyboard
<enter>reboot<enter>
If it reboots, then you have RC29 or ealier. Otherwise you have RC30.
Second, you must have adb installed on your computer, and have the USB drivers installed, or at least ready to install when it asks for the driver when you connect the G1. See this page for details on how to get adb working: http://code.google.com/android/intro/develop-and-debug.html#developingondevicehardware
Third, you must have a wifi network that you can connect to.
There are too many possibilities to write specific step-by-step instructions for every case. So I will give an overview of the process instead. If someone else wants to write some specific instructions, that would be welcome
-----------
When you start up the phone without a sim card, it goes into a locked screen that says "no sim card found", and you can't even get into the registration app. So the first step is to get around that screen. You have to connect to your phone with adb shell and get root access, and then type the following command:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
And then reboot the phone. When it starts up again it will go into the registration screen instead of the locked "no sim card" screen.
This assumes that you have the sqlite3 binary on your phone. This binary is provided in RC30 v1.2. Alternatively, you could manually copy the binary to your phone with adb push, or put it on the sdcard and copy it to your phone. I can post a copy of just the sqlite3 binary if needed.
-----------
The second step is to enable and configure wifi, so that the registration process can connect to the google servers. In an adb shell session, type the following command:
am start -a android.intent.action.MAIN -n com.android.settings/.Settings
This doesn't have to have root access to work. It works fine with the "shell" user that adb on non-modded phones runs as.
That command will bring up the settings page on your phone. From there, you can enable wifi and connect to your wifi network, and then proceed with registration as per normal
------------
A few tips and tricks:
- If you have an official RC29 or lower phone, type the following command on the phone keyboard to enable adb:
<enter>setprop persist.service.adb.enable 1<enter>
- If you need to get root access on an official RC29 or lower phone, while it's at the registration screen, or the "no sim card" screen, enable adb (see first tip), and then type the following command on the phone keyboard:
<enter>telnetd<enter>
Now, copy a busybox binary to /data/local/busybox with adb push, and then connect to your phone with adb shell, and give the busybox binary execute permissions (i.e. chmod 755 /data/local/busybox)
busybox has a telnet applet, so you can do:
busybox telnet 127.0.0.1
to get a telnet session with root access.
- If you don't want to register the phone at all, you can set the app.setupwizard.disable property to 0 to prevent registration. Once you have an adb shell session open, type the following:
setprop app.setupwizard.disable 1
and then reboot. once it loads back up, it should bypass the registration screen all-together.
But beware, the phone seems a bit glitchy if you don't have it registered. For example, the home button doesn't seem to work. And you can't access the market or any of the google apps of course.
(Note: the following was the previous way to skip registration. I'll keep it here for informational purposes, but its easier to use the app.setupwizard.disable method instead of this)
- If you don't want to register the phone at all, you can edit /data/system/packages.xml and disable the registration screen. Add the following to the end of the <package> section for com.android.setupwizard, and then reboot:
<disabled-components>
<item name="com.android.setupwizard.SetupWizardActivity" />
</disabled-components>
so the full <package> would look something like below after the modification:
<package name="com.android.setupwizard" codePath="/system/app/SetupWizard.apk" system="true" ts="1217592000000" userId="10010">
<sigs count="1">
<cert index="0" />
</sigs>
<disabled-components>
<item name="com.android.setupwizard.SetupWizardActivity" />
</disabled-components>
</package>
He worked on this for a very long time with me and walked me through all the steps when testing this out. Great person.
Really nice...
I'll try to do it.
I have to study though...
I'll be in touch.
Thanks
thanks JF you are good in this thing.
My case i have sim card without data plan, when turn on phone show me screen for register email account with google.
c:\adb shell
show me # simbol
am start -a android.intent.action.MAIN -n com.android.settings/.Settings
and in the phone show me the menu for connect to my wireless
conected, registered, go ahead.
thanks
satru, in what screen are you typing "c:\adb shell"?
1. Before you click "the android"
2. while reading the agreement
3. When you can select "create" or "sign in" to a google account
4. Or later ? (where?)
Thanks
EDIT:
Ok, I hate to do that but:
I am completely stupid. I've been reading around xda-dev for hours and still can't find how to check what software I'm running. (prior or post RC30...)
In boot loader it says:
"DREA100 PVT 32B
HBOOT-0.95.0000
CPLD-4
RADIO-1.22.12.28
Sep 2 2008
Serial0"
Do I have RC30?
I couldn't get it out of bootloader mode, so I pulled the battery out.
Ok, my device was recognised and "installed" but no driver was requested.
I have read I need to do some settings from within the g1, but I can't, since it's not activated! (http://forum.xda-developers.com/showthread.php?t=443797&highlight=info)
When I issue the "adb devices" command, I get no recognised devices...
To cmavr, try entering the restore mode and see if the computer will detect it then. Is it automatically mounting the SD card onto the computer? If it is then you probably have RC19 which is good. Try removing the SD card and plugging the phone into the computer.
cmavr8 said:
satru, in what screen are you typing "c:\adb shell"?
1. Before you click "the android"
2. while reading the agreement
3. When you can select "create" or "sign in" to a google account
4. Or later ? (where?)
Thanks
EDIT:
Ok, I hate to do that but:
I am completely stupid. I've been reading around xda-dev for hours and still can't find how to check what software I'm running. (prior or post RC30...)
In boot loader it says:
"DREA100 PVT 32B
HBOOT-0.95.0000
CPLD-4
RADIO-1.22.12.28
Sep 2 2008
Serial0"
Do I have RC30?
I couldn't get it out of bootloader mode, so I pulled the battery out.
Click to expand...
Click to collapse
A quick way to check if you have RC30 is to reboot the phone, and then once it starts up and it shows the "click the android to begin" screen, type
<enter>reboot<enter> on the phone keyboard.
If it reboots, you have RC29 or lower. Otherwise you have RC30.
If you do have RC29 or lower, then you can use the first tip I posted to enable adb. Once adb is enabled it should ask you to install the drivers when you plug it in.
satru said:
conected, registered, go ahead.
thanks
Click to expand...
Click to collapse
Great! Glad it worked for you
Hi again, thanks for your reply.
I rebooted without sim card, no "click here to begin" appeared, just the "no sim card" notice.
I entered reboot and it rebooted! So this is good.
Now, with the phone connected, I type in terminal:
"[email protected]:/media/Docs/Android/tools$ ./adb shell
error: device not found
[email protected]:/media/Docs/Android/tools$ ./adb devices
List of devices attached
[email protected]:/media/Docs/Android/tools$ "
This is not normal, is it?
What should I do now?
(I also have a t-mobile sim card, not activated. It just came with the phone. I can go through the activation proccess (gmail account etc) but it can't complete as it's disabled)
cmavr8 said:
Hi again, thanks for your reply.
I rebooted without sim card, no "click here to begin" appeared, just the "no sim card" notice.
I entered reboot and it rebooted! So this is good.
Now, with the phone connected, I type in terminal:
"[email protected]:/media/Docs/Android/tools$ ./adb shell
error: device not found
[email protected]:/media/Docs/Android/tools$ ./adb devices
List of devices attached
[email protected]:/media/Docs/Android/tools$ "
This is not normal, is it?
What should I do now?
(I also have a t-mobile sim card, not activated. It just came with the phone. I can go through the activation proccess (gmail account etc) but it can't complete as it's disabled)
Click to expand...
Click to collapse
Did you try my first tip to enable adb?
johnny13oi said:
To cmavr, try entering the restore mode and see if the computer will detect it then. Is it automatically mounting the SD card onto the computer? If it is then you probably have RC19 which is good. Try removing the SD card and plugging the phone into the computer.
Click to expand...
Click to collapse
Thanks for your reply.
SD mounting works fine.
In recovery mode nothing is better... (tried recovery without sd only)
Is there anything else I should try?
JesusFreke said:
Did you try my first tip to enable adb?
Click to expand...
Click to collapse
What do you mean enable?
I should enable it on the g1 but it's locked, no menus available.
I thought the first step was to enter the "adb shell" command in the PC, then pass this through the pc to the G1:
"sqlite3 /data/data/com.android.providers.settings/settings.db INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
Am I missing something?
cmavr8 said:
What do you mean enable?
I should enable it on the g1 but it's locked, no menus available.
I thought the first step was to enter the "adb shell" command in the PC, then pass this through the pc to the G1:
"sqlite3 /data/data/com.android.providers.settings/settings.db INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
Am I missing something?
Click to expand...
Click to collapse
A couple of things:
- Look further down the post, there's a "tips and tricks" section. The first tip is how to enable adb.
- second, I don't think you need to go through the first step (the sqlite3 command). The first step is to get past the "no sim card" screen. You said you have a sim card, just no data plan, right? So you don't need to get past the "no sim card" screen . You can skip to the second step (once you get adb working, of course)
DID IT!
Thanks so much!!
I now have to wait for the unlock code so that I can also use my sim card...
Thanks both of you!
EDIT:
T-mobile sent me the unlock code although I was not a customer for even one day!
That's great...
Great! Glad you got it working
cmavr8 said:
EDIT:
T-mobile sent me the unlock code although I was not a customer for even one day!
That's great...
Click to expand...
Click to collapse
how?
thanks
xaxis said:
how?
thanks
Click to expand...
Click to collapse
Probably by getting lucky and getting a nice CSR
JesusFreke said:
Probably by getting lucky and getting a nice CSR
Click to expand...
Click to collapse
man thank god you are here,
do i need the SDK installed to get the adb?
thank you
Yes, adb is included in the sdk

adb help for noob

I posted this in another thread but got no response, this thread (http://forum.xda-developers.com/showthread.php?t=502010&page=35)
maybe a new thread will help.
So this is my first venture into the whole ABD thing. I am trying to install the framework mod from Tazz for the HTC music player (as listed here: http://forum.xda-developers.com/show...5594&page=1277 post 12768).
Tazz mentions to “push this http://www.multiupload.com/1WWHXAUN6W
to system/ect/permissions then download and install htc music”
So, running my trusty Win7 machine I downloaded the SDK from the android development site, inserted the correct line in the path and viola, I can enter the CMD prompt and run the adb command successfully. Adb and adb shell both seem to work.
I followed the instructions from here: http://androidforums.com/developer-1...-commands.html and here: http://forum.xda-developers.com/showthread.php?t=502010 for the install.
My problem comes in when I try to push the file to the phone.
Fisrt dumb question is: what phone mode should I be in when running the adb? Standard running mode or booted to recovery? (I thought I read something about being in recovery but at that point it was all a blur).
I have the USB Debugging turned on so I think I am ok there.
I installed the SDK to my C:\Android directory.
I saved Tazz’s file to my C:\Android\Tools directory.
Here is my cmd text (maybe this is where I went wrong):
In the cmd window I CD’d to the C:\Android\Tools directory
adb push com.framework.htc.xml system/ect/permissions
After making sure that I was in the correct dir and all files were also located in the correct dir I am still getting an error, file or directory not found, or something like that.
Sorry for the long post. I figured this would be a good first step (my first adb experience) as it seems pretty benign in terms of me bricking anything but offering a good learning opportunity.
I am running a rooted Eris (KaosFroyo v36).
In looking things thru maybe I need a USB driver for the Eris?
any help is appreciated,
oh, my cmd prompt looks like sh-2# (or something like that)
Thanks
While it may be that you still need to download the appropriate drivers, it seems you are able to get root access so, this is likely not the case.
There are two things which stand out as potential issues in the steps you described. Fortunately, both are super easy.
First and foremost, make sure you have mounted the phone as "read-write."After you have cd'd to the tools folder type "adb remount" (without the quotes) and press enter. If successful, it should respond with "remount succeeded." Congrats, you have now mounted the phone as read-write.
Next, I see errors with your command. There should be a "/" before "system" and it should be "etc" not "ect." Specifically, your command should be:
adb push com.framework.htc.xml /system/etc/permissions/
[The above command of course, assumes that the name of the file you are pushing is indeed named "com.framework.htc.xml" and is in your tools folder.] You'll know it worked if the response in your command prompt indicates the speed and time it took for the push to take. For example, "1234kbps in 3.4 seconds". If you see something resembling that you should be all set. At this point you can reboot your phone and your changes should be in effect. Either unplug and reboot manually or just type "adb reboot" (without the quotes) and press enter.
In regard to your question about whether the phone can be in standard running mode or recovery... It depends on the level of root of the phone but, fully rooted and nand unlocked phones can be adb'd while in standard running mode. My EVO can and it is very likely your Eris can too.
I see
thanks OK.
typo's aside in the thread, my command was missing the / as you have described it. I also did not know about the remount thing. In my reading I thought that was just for the sd card. I will try and put all the pieces together when I get home tonight.
You are correct in that is the name of the file and I do have it in the /tools directory.
Thanks for the help, baby steps (I am learning)
No problem. We are/were all noobs at one point in our lives.
The term "mounting" has slightly different contextual meanings which can be confusing. First off, the /system/ folder is already "mounted" while using adb, however, it is mounted as read-only. So, if you are ever trying to push something to the phone and get an error back that says "mounted as read-only" you'll now know what went wrong. Simply type "adb remount"
and it puts the /system/ folder into read-write mode.
Bear in mind that upon phone reboot the /system/ folder automatically remounts into read-only mode so if you reboot and try to push another file you'll need to remember to "adb remount" again.
With regard to the sdcard "mounting" refers to whether the phone (sdcard) is mounted as a disk drive on your computer. You'll find that if this is the case many adb commands won't work because the sdcard can't be accessed by the phone while mounted on the computer. Therefore, always remember to connect your phone as "Charge Only" when adb'ing.
got it
That did the trick, worked like a charm. Thanks for the help and pointers. I have now pushed my first file...yeah for me!!
Thanks for your help and time.
glad your push worked
I am still trying to get SDK/ADB to connect to my Milestone XT720 phone. Have no idea of why they won't. Have tried all the usual suspects but nothing as of yet. NEED HELP!

[Q] How to gain root with superuser without access to device screen

I have a Japanese Sharp 005SH Android phone. Currently, the phone had been locked up at the start screen due to the phone being out of network service for a long time.
I have rooted the phone before, and have SuperUser installed.
Currently, I am trying to get rid of the screen-lock service by the publisher by using the command "adb shell am start -a android.intent.action.DELETE -d jp.co.sharp.android.secure.StrongBox"
The problem now is. whenever I enter adb shell, the prompt is $ sign. When I type "su", nothing happens, and the cursor just blinks. I guess that this means the SuperUser app on the android phone has come out with a prompt which I need to touch to grant access. However, this is not possible as the screen is locked by the aforementioned publisher service.
Question
1. Is it possible to gain root access through ADB with the device screen locked?
2. Is it possible to remove the publisher's service without root access (and with the screen locked)?
Thank you for your time in reading this post.
Warmest Regards

[APP]MTK ADB, Use ADB directly on your device

MTK ADB gets you a privileged shell at the push of a button, allowing you to run commands directly on your MediaTek device. Some might wonder if rooting hasn't already solved this. Firstly, root access is persisted by modifying system files. When the real binary gets substituted by that of the root app's, if the device is rebooted, the init daemon running as root runs the binary giving the app root. What's wrong with this? If you have “purist” tendencies, you probably would want your phone as stock as possible, or at least with your permission. Sadly, not only binaries are dumped. Extra temp files, logs and helper binaries too, that manually removing them is like dancing on floor of pins and a prick means a brick. Not only that, consider yourself blocked from updates. If you're unfortunate enough, an update could result in bricking your phone as the files supposed to be present had been changed. This is more common than you think. MTK ADB makes no changes to your files whatsoever. Also, there's the matter of security/privacy. Root apps tend to always do something in the background. Either sneaking in a new app, or phoning home with your private data, or both. MTK ADB doesn't steal your data. The Internet permission is for Telnet, etc. On some devices, MTK ADB can get root access (depending on manufacturer) while all devices can get shell access. You just have to check which yours belongs.
IMPORTANT
•Refresh before (and after) clicking Start to check ADB status.
•Supports all ADB functionality. Just run "adb <command>" eg "adb pull" (without quotes).
•The minimalist terminal is for those who haven't any. Feel free to use your regular terminal (I use Terminal IDE) and keyboard (Hacker's Keyboard is really good). Just run "adb shell" on it.
•You can connect to your device using another phone, PC, or anything with a terminal and in the same network by running "adb connect IP_address".
•If you get a " device offline" error, disable and enable USB debugging. Next time connect to the network before running the app.
http://www.youtube.com/watch?v=_bt8BVaDCf0
http://slaycode.WordPress.com
Bump
Proof:
http://forum.xda-developers.com/gen...iled-error-t3191150/post62611445#post62611445
More Proof:
http://forum.xda-developers.com/fire-phone/general/root-fire-phone-supersu-t3105546/page10
Proof:
http://forum.xda-developers.com/gen...iled-error-t3191150/post62611445#post62611445
More Proof:
http://forum.xda-developers.com/fire-phone/general/root-fire-phone-supersu-t3105546/page10
When I open the app it opens but it doesn't work when I enter the commands and moreover the app when I try to start the adb it says unsupported device
Am using infinix hot 4 pro running NOUGAT xos 2.2
LordFME said:
MTK ADB gets you a privileged shell at the push of a button, allowing you to run commands directly on your MediaTek device. Some might wonder if rooting hasn't already solved this. Firstly, root access is persisted by modifying system files. When the real binary gets substituted by that of the root app's, if the device is rebooted, the init daemon running as root runs the binary giving the app root. What's wrong with this? If you have “purist” tendencies, you probably would want your phone as stock as possible, or at least with your permission. Sadly, not only binaries are dumped. Extra temp files, logs and helper binaries too, that manually removing them is like dancing on floor of pins and a prick means a brick. Not only that, consider yourself blocked from updates. If you're unfortunate enough, an update could result in bricking your phone as the files supposed to be present had been changed. This is more common than you think. MTK ADB makes no changes to your files whatsoever. Also, there's the matter of security/privacy. Root apps tend to always do something in the background. Either sneaking in a new app, or phoning home with your private data, or both. MTK ADB doesn't steal your data. The Internet permission is for Telnet, etc. On some devices, MTK ADB can get root access (depending on manufacturer) while all devices can get shell access. You just have to check which yours belongs.
IMPORTANT
•Refresh before (and after) clicking Start to check ADB status.
•Supports all ADB functionality. Just run "adb <command>" eg "adb pull" (without quotes).
•The minimalist terminal is for those who haven't any. Feel free to use your regular terminal (I use Terminal IDE) and keyboard (Hacker's Keyboard is really good). Just run "adb shell" on it.
•You can connect to your device using another phone, PC, or anything with a terminal and in the same network by running "adb connect IP_address".
•If you get a " device offline" error, disable and enable USB debugging. Next time connect to the network before running the app.
http://slaycode.WordPress.com
Click to expand...
Click to collapse
Are you familiar with an APK that utilizes mtk_bypass to directly flash firmware to device.
I'm looking for an APK that basically does what sp flash tool does because I don't have a computer.

How to remove SuperSU on unrooted phone? - "there is no SU binary installed..."

How to remove SuperSU on unrooted phone? - "there is no SU binary installed..."
Hi,
I lost some SMS data. I tired to use data recovery software. One of the programs was Fonepaw. Apparently fonepaw tried to root my device and failed; or did something else. Yet, somehow fonepaw installed SuperSU as a system application. This is causing problems with the device, a Galaxy S5 (SM-G900V) running Android 6.0.1.
When I run the SuperSU application it reports:
"There is no SU binary installed, and SuperSU cannot install it. This is a problem!"
My only option is to select 'OK'. Which closes the app.
SuperSU won't uninstall via application manager due to being a system application.
The "adb backup" command no longer works since my attempts at using Fonepaw and a few other applications.
ADB see's my device via "adb devices". I can explore directories. If I enter "adb shell su" I get "[email protected]:/ #".
But when I try to run "adb backup" the phone doesn't go into the prompt where you say 'okay' and set a password. Adb backup has worked just fine in the past. It's been useful, and I need to use it again as part of changing to a new phone.
Android also is showing in notification a "Security notice" stating "Unauthorized actions have been detected. Restart your phone to undo any unauthorized changes."
Restarting does nothing. Even booting to safe mode doesn't stop the security notice. SuperSU being a system app runs in safe mode.
Root Checker app comfirms the phone isn't rooted.
I have never attempted to root the phone and have been the only owner/operator.
I would like to uninstall the SuperSU application and any data it stored on the phone without losing any data on the phone. Since the phone is not rooted and no SuperSU binary was installed, I'm hoping this is possible.
My search for information has provided limited insight.
I'm hoping someone on XDA might know what to do.
Edit: Additional info.
https://android.stackexchange.com/questions/103611/remove-su-after-unroot
I do the following:
"[email protected]:/ # cd system/xbin"
"[email protected]:/systems/xbin # ls"
output:
"Dexdump
dexdump
jack_connect
jack_disconnect
jack_lsp
jack_showtime
jack_simple_client
jack_transport
jackc
su"
The commenter at stack exchange would suggest the phone I have has root, but root check says otherwise.
Another edit:
I'm not sure, but it looks like a Custom Recovery was installed on the phone. Unsure if that's what came with phone or not, vol down+home+power brings me to a screen without the "Android" icon/statute/person thingy. Same for booting into vol up+home+power. However, in the recovery I get 'reboot to bootloader' and when I select that I go to stock android download mode/odin mode. And when I boot the system, boot/splash screen "Samsung Galaxy S5" on top, a lock icon that is unlocked with "Custom" in the middle, and "powered by Android" at the bottom.
command "adb root" returns "adbd is already running as root".
So, I'm not sure what's going on here. Found a post stating you can have adb root without root in androids system. So...I'm a noob at all this. *CONFUSED*. Hoping for someone to help.
Fonepaw support has not been helpful at all.

Categories

Resources