ADB Shell screws up, what is going on?? - General Questions and Answers

So basicly im trying to follow a tutorial to get my screen working in ubuntu touch, which involves using adb shell, nano to modify a file.
the little tutorial goes like this:
thecosmicfrog said:
Sure thing. Boot up your device, then plug in a USB cable. Open a terminal and run "adb devices". Make sure that a device shows up. If not, unplug and plug in again. I find that it never works the first time for me.
Next, run "adb shell". This will connect you to your phone and open a shell session on it. Open the /etc/rc.local file in a text editor using the following command:
"nano /etc/rc.local"
Scroll down to the bottom using your keyboard's arrow keys and on the line before "exit 0", insert the following:
./system/bin/sensorservice &
Save and exit the file using Ctrl+X then reboot your phone by running the command "reboot".
This should fix the black screen problems.
Click to expand...
Click to collapse
well when im in adb shell, and type nano /etc/rc.local my adb (or cmd window) screws up completely (see attachement)
what is going on and how do i fix it?
this isn't normal i think!
j

Related

fastboot questions

I come from the world of Windows Mobile and have just recetly delved into hacking my G1. While I've had no problems installing jesusfreke's images or themes...I'm struggling with how to get fastboot to work.
Perhaps someone can give me some guidance. Anyone willing to give me some simple step by step instructions. I've searched for this and i think I have everything i need, but I'm unable to get to a point where I can type in commands. when i try to run adb, it open very briefly and closes.
What am i doing wrong?
Thanks,
Jason
Go to start -> run -> type in CMD
Navigate to the folder where adb is located.
Then type in adb devices to see if it finds ur device.
If not then make sure you have it plugged in and USB debugging is turned on in the phones settings under Development.
Also download the usb drivers/or the whole SDK if you havent yet.
nosaj13 said:
when i try to run adb, it open very briefly and closes.
Click to expand...
Click to collapse
If you try to execute a text mode executable in windows, it will close the terminal window as soon as the program finishes. If you run adb without any arguments, it will print the arguments out terminate. I could say the solution is to open run as and type cmd, but the true answer is to install Linux
nosaj13 said:
I come from the world of Windows Mobile and have just recetly delved into hacking my G1. While I've had no problems installing jesusfreke's images or themes...I'm struggling with how to get fastboot to work.
Perhaps someone can give me some guidance. Anyone willing to give me some simple step by step instructions. I've searched for this and i think I have everything i need, but I'm unable to get to a point where I can type in commands. when i try to run adb, it open very briefly and closes.
What am i doing wrong?
Thanks,
Jason
Click to expand...
Click to collapse
1. Download this
2. Extract the contents of the fastboot directory to the root of your C drive.
3. Go Start -> Run -> type 'cmd' (no quotes) and hit enter
4. Type 'c:' (no quotes) and hit enter
5. With your phone plugged in, you should be able to type 'adb devices' and it should return your phones serial number, which is usually in HTXXXXXXXX format. If it does not, make sure debugging is enabled on your phone and you have the adb drivers installed.
6. type 'adb shell reboot bootloader' and hit enter. The screen on your phone will go blank for a second and then you should be in the SPL with the skating androids. Make sure you see "FASTBOOT" at the bottom of the screen.
7. type 'fastboot devices' and hit enter. If you see your phone's serial number again, you have successfully established a fastboot connection with the phone and can run commands such as:
fastboot erase <partition> (erases the given partition)
fastboot flash <partition> <file.img> (overwrites and flashes given partition with given file. This is how one would restore from a nandroid backup)
fastboot reboot (reboots the device into user mode)
Hope that helps. Have fun
when i type adp devices i get an error that says "adp is not recognized as an internal or external command, operable program, or batch file"
what am i doing wrong?
nosaj13 said:
when i type adp devices i get an error that says "adp is not recognized as an internal or external command, operable program, or batch file"
what am i doing wrong?
Click to expand...
Click to collapse
First, the command is adb devices not adp. Second, make sure you copied the contents of the fastboot directory to the C drive. Third, make sure you that when you type 'c:' into the command line, the command prompt actually changes to "C:\>"
Datruesurfer said:
1. Download this
2. Extract the contents of the fastboot directory to the root of your C drive.
3. Go Start -> Run -> type 'cmd' (no quotes) and hit enter
4. Type 'c:' (no quotes) and hit enter
5. With your phone plugged in, you should be able to type 'adb devices' and it should return your phones serial number, which is usually in HTXXXXXXXX format. If it does not, make sure debugging is enabled on your phone and you have the adb drivers installed.
6. type 'adb shell reboot bootloader' and hit enter. The screen on your phone will go blank for a second and then you should be in the SPL with the skating androids. Make sure you see "FASTBOOT" at the bottom of the screen.
7. type 'fastboot devices' and hit enter. If you see your phone's serial number again, you have successfully established a fastboot connection with the phone and can run commands such as:
fastboot erase <partition> (erases the given partition)
fastboot flash <partition> <file.img> (overwrites and flashes given partition with given file. This is how one would restore from a nandroid backup)
fastboot reboot (reboots the device into user mode)
Hope that helps. Have fun
Click to expand...
Click to collapse
i did all the above steps with no problem at all till i got to number 7. when i typed in fastboot devices it just goes to the next prompt without my phone showing up.
If i plug in my g1 in normal mode i see it at the top under adb and in the usb section as a mass storage device.
In bootloader mode with fastboot on the screen it doesnt show up anywhere in the device manager.
Also when i follow the above quoted steps and type in the "adb shell reboot bootloader" and hit enter i hear the ding you hear when you unplug a usb device, and all instances of the phone then leave the device manager.
i have also uninstalled and reinstalled all drivers for the phone and all drivers that have to do with the usb ports on my win xp machine.
Anyone have any ideas i could try?
I think you need this program. I put it on my desktop, then just ran cmd, directed to it, and type in fastboot.
I7oobie said:
I think you need this program. I put it on my desktop, then just ran cmd, directed to it, and type in fastboot.
Click to expand...
Click to collapse
thats not it. i have that in the sys 32 folder and also on desktop
Fastboot mode not recognized
I'm having the same problem. I've installed all the correct drivers and in normal mode, I see the Android Composite Device (or something similar) in Device Manager.
As soon as I go into SPL mode (the 3 skateboarding androids screen), the device does not show up.
Anyone have any ideas? Thanks!
Datruesurfer said:
First, the command is adb devices not adp. Second, make sure you copied the contents of the fastboot directory to the C drive. Third, make sure you that when you type 'c:' into the command line, the command prompt actually changes to "C:\>"
Click to expand...
Click to collapse
When I'm in the Command Prompt and I type C:, the directory still reads C:\Documents and Setting\Reids. It won't change to only C:
Hi,
You have to do this to get back to c:
cd\
press enter
That should do it.
bestwebs said:
Hi,
You have to do this to get back to c:
cd\
press enter
That should do it.
Click to expand...
Click to collapse
Ok, thanks a lot. Got it working now.
I need help trying to flash my cupcake images that I have stored in my fastboot folder. I attached the pictures below. I will accept any help I can get.
EDIT: Doh, I thought I was in another topic.
My bad.
Are adb & adb's dll files located inside the same folder as fastboot??? They are suppose too be.
Is your usb cord directly plugged into your system or thru a hub??
Your phone, i bet is under usb mass....to check, expand your device manager window.
Expand your USB-Mass storage list.
With your phone in fastboot mode, click on the camera key and the back key. With enough time inbetween for your system to recognize that there might be a device hooked up.
Notice any change in the list??
Anyone wanting good instructions
http://androidcommunity.com/forums/f28/nandroid-v2-0-full-nand-backup-and-restore-tool-9336/
Read post 2 and go!
this seems like the most easiest thing to do but i still cant get it to work
i have downloaded everything needed and see ADB Interface on my device manager with a yellow mark on it when i try to update the dirver it fails and i got the drivers and point them to it but seems not to work
my phone is on the fastboot screen with the android skateboards guys
i dont know whats going on if someone know what am also doing wrong can tell me please...
This is what i get

Completely unable to boot into download mode

As the title says i am completely unable to boot into download mode. I gave tried every method other than adb (I can't for the life of me figure out how to use adb) and my device simply WILL NOT boot into download mode. This is a rather discouraging issue for me, since it disables me from flashing kernels with odin3...
I have tried booting while plugged in and turned off with Odin open, tried with the phone unplugged and turned off (volume down + power) and every method simply starts the phone as normal, or loops boot animations until I release the buttons. And both volume buttos +power simply leads to recovery mode.
Please help >.
you aren't /completely/ unable. You just refuse to use the easiest way. ADB is ridiculously easy to use, you plug your phone in and type stuff into the command prompt. If you aren't able to use a computer, I'm not too sure you should be messing with your phone anyway.
1.Remove the battery, sim card, sdcard if you have one
2.Insert the battery
3.Hold both Volume buttons
4.Plug in the USB cable and continue holding both Volume buttons
Even easier than navigating is shift clicking on the tools folder and opening the prompt that way.
Sent from my SAMSUNG-SGH-I897 using XDA App
masterofthebass said:
you aren't /completely/ unable. You just refuse to use the easiest way. ADB is ridiculously easy to use, you plug your phone in and type stuff into the command prompt. If you aren't able to use a computer, I'm not too sure you should be messing with your phone anyway.
Click to expand...
Click to collapse
I don't refuse, I just don't know how. Almost every tutorial takes for granted you know how to use adb pretty well...
Sent from my SAMSUNG-SGH-I897 using XDA App
rkorzuch said:
1.Remove the battery, sim card, sdcard if you have one
2.Insert the battery
3.Hold both Volume buttons
4.Plug in the USB cable and continue holding both Volume buttons
Click to expand...
Click to collapse
You're my hero. Thank you.
djgleebs said:
I don't refuse, I just don't know how. Almost every tutorial takes for granted you know how to use adb pretty well...
Sent from my SAMSUNG-SGH-I897 using XDA App
Click to expand...
Click to collapse
I'm going to guess you are using windows.
1. download android sdk (google it)
2. open up a command prompt (windows+r cmd)
3. navigate to the sdk tools folder (using cd to change directories)
4. type whatever adb command you are supposed to. (adb reboot download in this case)
Please next time when you have questions, post in the general. Unless you are helping with development, post it in the general with all your questions. Please also learn how to read and learn how to use the search button.
Sent from my GT-I9000 using XDA App
Why doesnt anyone read the stickies anymore??
I think the easiest way is (from rooted phone):
Open Terminal Emulator
>su <ENTER>
>reboot download <ENTER>
Easiset way is to google Android SDK. Open the folder, then open the tools folder. In there you will see adb. Drag adb onto your command window that you've opened to run commnads and then type in what you want it to do, ie: reboot recovery, reboot download then hit enter.
masterofthebass said:
I'm going to guess you are using windows.
1. download android sdk (google it)
2. open up a command prompt (windows+r cmd)
3. navigate to the sdk tools folder (using cd to change directories)
4. type whatever adb command you are supposed to. (adb reboot download in this case)
Click to expand...
Click to collapse
Step 3 is not necessary unless you are using adb push or adb pull.
Open command prompt, type command. Using ADB is not a skill. There are a whole 5 commands. adb shell, adb pull, adb push, adb reboot, and adb remount.

Cannot find run command line in ADB.

Hello iam using windows vista and xp and I had the same.problems on both. I downloaded the ADB program which gave me 5 seperate files. and downloaded thedrivers for my moto Atrix. But I was told not to run the adb.exe but to look for a run command line prompt. Where and how do I find this. And where do I go to run the commands?
Sent from my MB860 using XDA App
RPK925 said:
Hello iam using windows vista and xp and I had the same.problems on both. I downloaded the ADB program which gave me 5 seperate files. and downloaded thedrivers for my moto Atrix. But I was told not to run the adb.exe but to look for a run command line prompt. Where and how do I find this. And where do I go to run the commands?
Sent from my MB860 using XDA App
Click to expand...
Click to collapse
Hey
press the start button (bottom left), on start menu you should see "run" with a small icon looks like a dialogue box (might be below search), press this. in the dialogue pop up type CMD.
Tho you will prob need to set up Environment Variables before you can use ADB.
kam333 said:
Hey
press the start button (bottom left), on start menu you should see "run" with a small icon looks like a dialogue box (might be below search), press this. in the dialogue pop up type CMD.
Tho you will prob need to set up Environment Variables before you can use ADB.
Click to expand...
Click to collapse
Then you have to go to folder where "adb.exe" is...
For example if you have it in "c:\adb_folder" you have to type "cd adb_folder".......
Then your command line will be like this → C:\adb_folder>
Then, if you want to test if your device is connected properly you have to type "adb devices" and you will see your device listed....
If not, there is a problem.....
(don't forget to enable "USB debugging" at your phone through Applications→Development)
I
pigeonaras said:
Then you have to where "adb.exe" is...
For example if you have it in "c:\adb_folder" you have to type "cd adb_folder".......
Then your command line line will be like this → C:\adb_folder>
Then, if you want to test if your device is connected properly you have to type "adb devices" and you will see your device listed....
If not, there is a problem.....
(don't forget to enable "USB debugging" at your phone through Applications→Development)
Click to expand...
Click to collapse
I was.able.to open up the command.prompt, but when I run adb devices it just says "adb is not a recgonized as an internal or external....." . It is.like its not connecting for somereason ? Iam a complete noon so any help would be great. Thanks
Sent from my MB860 using XDA App
pigeonaras said:
(don't forget to enable "USB debugging" at your phone through Applications→Development)
Click to expand...
Click to collapse
Have you done this .....??????
RPK925 said:
I
I was.able.to open up the command.prompt, but when I run adb devices it just says "adb is not a recgonized as an internal or external....." . It is.like its not connecting for somereason ? Iam a complete noon so any help would be great. Thanks
Sent from my MB860 using XDA App
Click to expand...
Click to collapse
Before you can use adb command, you have to direct the terminal to the location of the folder where adb is located.
If the location of the file adb is at C:\\windows\androidsdktools\tools\adb
In your terminal type
cd \
Press enter, then type,
cd windows\androidsdktools\tools
Now the terminal should be in the folder where adb is located.
adb devices
A better way in my opinion to use adb is to set the path so it is usable from anywhere, simple easy and no need to always cd the path
directly quoted from dreamsforgotten's tutorial on theming for the epic
http://forum.xda-developers.com/showthread.php?t=821638
"On Windows, right-click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path (under System Variables). Add the full path to the tools/ directory to the path."
Click to expand...
Click to collapse
tmspyder said:
A better way in my opinion to use adb is to set the path so it is usable from anywhere, simple easy and no need to always cd the path
directly quoted from dreamsforgotten's tutorial on theming for the epic
http://forum.xda-developers.com/showthread.php?t=821638
Click to expand...
Click to collapse
This Works!
install adb driver first£¬turn your phone in ¡°charge only mode¡±£¬then find the adb floder£¬hold ¡°shift¡±and right click the floder.choose ¡°run in cmd line mode¡±£¬yeah£¬you done it

[Q] ADB Push not working

My "adb push" command is not working. When I type it in, the command prompt seems to run "adb help". No error message, just the list of possible commands. See the attached screenshot.
Does anybody know what's happening?
Computer: Windows 7
Device: Verizon Galaxy Nexus (toro)
Version: 4.2.2​Kernel Version: 3.0.85-franco.Kernel-nightly​Build: JDQ39​
The "adb push" command is used to push files to your device.
Typing "adb push" won't do anything besides displaying all the adb functions.
To push something, your command must be something like "adb push whateverthefileis system/bin" the "system/bin" is the destination where it is to be pushed, for example if you want to push an app you do, "adb push android.apk system/app"
Make sure your drivers for phone is installed properly.
IF I HELPED HIT THANKS
Click to expand...
Click to collapse
Sent from my Nexus F...Fi...Fii...Ahem...*clears throat*... Five.
solution???
Did you put your phone in recovery mode first?
krishneelg3 said:
The "adb push" command is used to push files to your device.
Typing "adb push" won't do anything besides displaying all the adb functions.
To push something, your command must be something like "adb push whateverthefileis system/bin" the "system/bin" is the destination where it is to be pushed, for example if you want to push an app you do, "adb push android.apk system/app"
Make sure your drivers for phone is installed properly.
Sent from my Nexus F...Fi...Fii...Ahem...*clears throat*... Five.
Click to expand...
Click to collapse
I had typed in the correct syntax for the command, but will try updating drivers. Thanks!
ADB push just scrolls commands
I am trying to use ADB with telnet to root my Droid Maxx. I have been desperately trying to use Jcase's method. All my commands work, except the push command. I can telnet, my drivers are all up to date, my phone is on debug, install unknown sources etc...Everything seems to be in order, but the su and RockMyMoto.jar will not push, just a scrolling of commands. Any help would be most appreciated.
Thank you

Top cmds that you need to know

There are servel cmds which we can use
But I post only top 10 cmds to help that ones who need
###############
If I make a mistake so please reply with your suggestions
And if you want a cmd in the list .submit your reply with cmd and features ( full detail as you know.).
########cmds###########
For a lot of us, the fact that we can plug our Android phone or tablet into our computer and interact with it is a big plus. Besides the times when we've broken something and need to fix it, there are plenty of reasons why an advanced Android user would want to talk to his or her device. To do that, you need to have a few tools and know a few commands. That's what we're going to talk about today. Granted, this won't be the end-all be-all discussion of adb commands, but there are 10 basic commands everyone should know if they plan to get down and dirty with the command line.
The tools are easy. If you're a Mac or Linux user, you'll want to install the SDK as explained at the Android developers site. It's not hard, and you don't have the whole driver mess that Windows users do. Follow the directions and get things set up while I talk to the Windows using folks for a minute.
If you're using Windows, things are easier and harder at the same time. The tools themselves are the easy part. Download this file. Open the zip file and you'll see a folder named android-tools. Drag that folder somewhere easy to get to. Next, visit the manufacturers page for your device and install the adb and fastboot drivers for Windows. You'll need this so that your computer can talk to your Android device. If you hit a snag, visit the forums and somebody is bound to be able to help you through it.
Now that we're all on the same page, enable USB debugging on your device (see your devices manual if you need help finding it, and remember it was hidden in Android 4.2), and plug it in to your computer. Now skip past the break and let's begin!
1. The adb devices command
The adb devices command is the most important one of the bunch, as it's what is used to make sure your computer and Android device are communicating. That's why we're covering it first.
If you're a pro at the operating system on your computer, you'll want to add the directory with the Android tools to your path. If you're not, no worries. Just start up your terminal or command console and point it at the folder with the tools in it. This will be the file you downloaded earlier if you use Windows, or the platform-tools folder in the fully installed Android SDK. Windows users have another easy shortcut here, and can simply Shift + right click on the folder itself to open a console in the right spot. Mac and Linux users need to navigate there once the terminal is open, or install an extension for your file manager to do the same right click magic that's in Windows by default.
Once you're sure that you are in the right folder, type "adb devices" (without the quotes) at the command prompt. If you get a serial number, you're good to go! If you don't, make sure you're in the right folder and that you have the device driver installed correctly if you're using Windows. And be sure you have USB debugging turned on!
Now that we have everything set up, let's look at a few more commands.
2. The adb push command
If you want to move a file onto your Android device programmatically, you want to use the adb push command. You'll need to know a few parameters, namely the full path of the file you're pushing, and the full path to where you want to put it. Let's practice by placing a short video (in my case it's a poorly done cover of the Rick James tune Superfreak) into the Movies folder on your device storage.
I copied the superfreak.mp4 file into the android-tools folder so I didn't need to type out a long path to my desktop. I suggest you do the same. I jumped back to the command line and typed "adb push superfreak.mp4 /sdcard/Movies/" and the file copied itself to my Nexus 4, right in the Movies folder. If I hadn't dropped the file into my tools folder, I would have had to specify the full path to it -- something like C:\Users\Jerry\Desktop\superfreak.mp4. Either way works, but it's always easier to just drop the file into your tools folder and save the typing.
3. The adb pull command
If adb push sends files to your Android device, it stands to reason the adb pull command gets them out. That's exactly what it does, and it works the same way as the adb push command did. You need to know both the path of the file you want to pull off, as well as the path you want it placed into. You can leave the destination path blank and it will drop the file into your tools folder to make things easy.
In this example, I did it the hard way so you can see what it looks like. The path of the file on the device is "/sdcard/Movies/superfreak.mp4" and I put it on my Windows 8 desktop at "C:\Users\Jerry\Desktop". Again, the easy way it to just let it drop into your tools folder by not giving a destination, which would have been "adb pull /sdcard/Movies/superfreak.mp4". Remember your forwards slash for the Android side, and you'll have no problems here.
5. The adb reboot-bootloader and adb reboot recovery commands
Not only can you reboot your device, you can specify that it reboots to the bootloader. This is awfully handy, as sometimes those button combos are touchy, and if you have a lot of devices you can never remember them all. Some devices (the LG Optimus Black comes to mind) don't even a way to boot to the bootloader without this command. And once again, being able to use this command in a script is priceless. Doing it is easy, just type "adb reboot-bootloader" and hit the enter key.
Most devices can also boot to the recovery directly with the "adb reboot recovery" (note there is no hyphen in this one) and some can't. It won't hurt anything to try, and if yours can't nothing will happen.
6. The fastboot devices command
When you're working in the bootloader, adb no longer works. You're not yet booted into Android, and the debugging tools aren't active to communicate with. We use the fastboot command in it's place.
Fastboot is probably the most powerful tool available, and many devices don't have it enabled. If you're does, you need to be sure things are communicating. That's where the fastboot devices command comes into play. At the prompt, just type in "fastboot devices" and you should see a serial number, just like the adb devices command we looked at earlier.
If things aren't working and you are using Windows, you likely have a driver issue. Hit those forums for the answer.
7. The fastboot oem unlock command
The holy grail of Android commands, fastboot oem unlock does one thing, and one thing only -- unlocks your Nexus device (or an HTC device using their official tool). If you're using a phone from a different manufacturer, you have a different method of unlocking things -- maybe with ODIN or .sbf files -- and this won't apply to you. We're including it because even if you don't need it, it's an important part of Android's openness. Google doesn't care what we do with phones or tablets that we've bought, and include this easy way to crack them open. That's something you usually don't see from any tech company, and a big part of the reason why many of us choose Android.
Using it is easy enough. Once you've used fastboot devices to make sure everything is communicating, just type "fastboot oem unlock" at the prompt and hit enter. Look at your device, read carefully, and choose wisely.
Protip: Using "fastboot oem unlock" will erase everything on your device
8. The adb shell command
The adb shell command confuses a lot of folks. There are two ways to use it, one where you send a command to the device to run in its own command line shell, and one where you actually enter the device's command shell from your terminal. In the image above, I'm inside the device shell, listing the flies and folders on the device. Getting there is easy enough, just type "adb shell" and enter. Once inside, you can escalate yourself to root if you need to. I'll warn you, unless you're familiar with an ash or bash shell, you need to be careful here -- especially if you're root. Things can turn south quickly if you're not careful. If you're not familiar, ash and bash are command shells that a lot of folks use on their Linux or Mac computers. It's nothing like DOS.
The other method of using the adb shell command is in conjunction with one of those Ash commands your Android device can run. You'll often use it for more advanced tasks like changing permissions of files or folders, or running a script. Using it is easy -- "adb shell <command>". An example would be changing permissions on a file like so: "adb shell chmod 666 /data/somefile". As mentioned, be very careful running direct commands using these methods.
9. The adb install command
While adb push can copy files to our Android devices, adb install can actually install .apk files. Using it is similar to use the push command, because we need to provide the path to the file we're installing. That means it's always easier to just drop the app you're installing into your tools folder. Once you've got that path, you tell your device to sideload it like this: "adb install TheAppName.apk".
If you're updating an app, you use the -r switch: "adb install -r TheAppName.apk". There is also a -s switch which tries to install on the SD card if your ROM supports it, and the -l switch will forward lock the app (install it to /data/app-private). there are also some very advanced encryption switches, but those are best left for another article.
And finally, you can uninstall apps by their package name with "adb uninstall TheAppName.apk". Uninstall has a switch, too. The -k switch will uninstall the app but leave all the app data and cache in place.
10. The adb logcat command
The adb logcat command is one of the most useful commands for some folks, but just prints a bunch of gibberish unless you understand what you're seeing. It returns the events written to the various logs in the running Android system, providing invaluable information for app developers and system debuggers. Most of us will only run this one when asked by one of those developers, but it's very important that we know how to use it correctly.
To see the log output on your computer screen, just type "adb logcat" and hit enter. Things can scroll by pretty fast, and chances are you won't find what you're looking for. There are two ways to handle this one -- filters, or text output.
You also have to specify the cmds properly.
Hope it help you .
Like my work hit thanks button.
$$$$$$$$$$$$$$$$$$$$$$$$
Any suggestions most welcome.
$$$$$$$$$$$$$$$$$$$$$$$$$

Categories

Resources