Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Buy OSRS Gold

Sell OSRS Gold
Sign in to follow this  
ilysmd

SCOUTING COX BOT

Recommended Posts

Array

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Optimus
      Welcome to Optimus AIO Combat & Magic Lite Edition!
      Note: Because this is the Lite Version of the script, certain features have been disabled. To unlock all features please visit the premium edition thread: 
      Glossary:
      1. Description

      2. Combat Overview
           2.1 What Can the Script Kill
           2.2 Core Combat
           2.3 Looting
           2.4 Banking
           2.5 Progressive Training
           2.6 Worldhopping
      3. Magic Overview
           3.1 Regular Spellbook
           3.2 Ancient Spellbook
           3.3 Lunar Spellbook
           3.4 Combo Alching
      4. Repository Information
      5. Testimonials
      6. Gallery
      Total Runtime Statistics:
       
      GUI Preview: 

      1. Description:
      Optimus AIO Combat & Magic is a script engineered to safely train up your Combat, Magic and Slayer skills using nearly every training method available in the game.

      Using ABC2 technology and thousands of hours of real human playing data, the script now out-performs most human players, while also avoiding bot-detection and staying under the radar from Jagex.
      2. Combat Overview:
      2.1 What Can the Script Kill?:
      The script is capable of killing every monster in the game, below are some noteworthy opponents: 
      Dragons - Including Green, Blue, Red, Black, Brutal, Adamant& Rune dragons - Amazing for goldfarming or training up your account.  Slayer monsters - Dark Beasts, Cave Krakens, Abyssal Demons, Drakes, Spiritual Mages/Warriors, Wyverns, Nechryaels, Gargoyles, Dust Devils & everything below. It will automatically use the required slayer items for finishing.  Crabs - The script can kill ALL types of crabs: Rock, Sand, Swamp and Ammonite crabs! are all supported. The script will reset the aggressiveness when they stop waking up.  Experiments - Insane XP for pures. Yaks - Insane XP for mains. Chaos druids - Good goldfarming for medium level accounts. All wilderness monsters - Good for farming emblems & wildy slayer.  Dagannoths - Insane XP, I recommend bringing a cannon for maximum gains.  Nightmare Zone Bosses - The script can kill all bosses inside NMZ and drink all the potions. It will end once the dream is complete.  Stronghold of Security and other dungeons - The script supports all of these locations.  Plus 1000's of other monsters - Literally anything you can think of, some people even use it for KBD.  2.2 Core Combat:
      Below are some of the core features that make the script so powerful. Using the features mentioned below the script can perform just as good as any player. 
      Custom fight areas - You can specify exactly where in the game you want the script to fight. Either with a polygon or a circle. Below is an example of a polygon fight area. Dwarf multicannon - The script will place, reload, pickup and stop your cannon decaying. Prayer - The script can use all prayers, including quick prayer, and even recharge your prayer at nearby altars.  Potions - Including Divine, Extended, Super, Regular, Energy, Stamina & NMZ potions.  Special Attacks - Supports every special attack weapon in the game, including weapon switching.  Guthans - The script can switch to Guthan's to heal, then switch back to your primary gear once hp is recovered.  Resetting Aggressiveness - The script can detect when monsters stop being aggressive towards you, and run away to reset the aggro.  Food - It can eat every type of food in the game. Even multiple types of food, simply seperate their names with a comma E.G Lobster, Swordfish. Bones to peaches - The script efficiently uses Bones to peach tablets if you've got them in your inventory.  Safe spotting - Safely train combat from a distance without taking any damage.  Uses slayer items to finish kills - Bags of salt, ice coolers, rock hammer etc. Detects if you've unlocked the slayer ability to auto-kill.  Bone burrying - Train up your prayer! 2.3 Looting:
      Looting by item name or ID - Simple to setup Looting by item price - E.G Loot all items over 500gp - Fetches prices from the Runescape grand exchange. Telekinetic grab support - For those hard to reach places.  High alching - Turn your loot into gold while you train! Pickup and re-equip ammo - Supports all ammo types. Ironman looting - The script will automatically detect if you're an Ironman, and loot accordingly.  Looting bag & Herb sack  - The script will automatically use them if you're carrying one. Accurate profit calculations  - Track your gains on screen or with your dynamic signature.  2.4 Banking:
      Supports every bank in the game - Can use every bank chest / booth / banker in RS. Fully customisable inventory setups. Tip 1: When withdrawing potions or charged jewellery, you can type (*) Instead of the dose number and it will withdraw whatever dose is highest in the bank. 
      For example Ring of duelling(*).  Tip 2: You can also type 0 as the quantity, and it will withdraw-all of the item instead of a specific quantity. 
      For example these settings would make it withdraw all of your cannonballs, then fill your inventory with lobsters.

      Supports all Teleports - The script can use all teleport methods including Spells, Tabs, Jewelery & Scrolls + more. Will bank for multiple conditions: 
      - Hp is below a set %.
      - Inventory is full.
      - Out of food.
      - Out of runes.
      - Out of ammo.
      - Out of all potions.
      - Out of prayer potions.
      - Out of antifire potions.
      - Out of cannonballs.
      - Before a break starts.
      - When your slayer task is complete. Heals to full HP at the bank - To save food during your trip, it'll heal up in the bank.  Logs out when you're out of supplies. 2.5 Progressive training: 
      The script can do the following when you level up, or after x amount of time:
      Upgrade equipment - E.g upgrade to Rune scimitar when you reach 40 attack. Change attack styles - E.g switch to Strength training after you reach 40 attack Change training method / location - The script can completely switch training methods, e.g Rock crabs to 60 strength, then go train magic to 70 alching, then switch back to Chaos druids after an hour. All without stopping the script.  2.6 Worldhopping: 
      The script uses both the ingame worldhopper and login screen worldhopper to find the ideal training spot. Note: All of these settings are optional. 
      Supports F2P, Members & DMM worlds  - It will automatically detect which you're in, and select worlds accordingly.  Worldhop when x players in your area - The script can count how many players are around and worldhop if it gets too busy.  Worldhop when there's a cannon in your spot - To avoid reduced XP / GP rates. Worldhop when there's a Jagex Moderator nearby - A safety precaution.  Worldhop when the break handler activated - So someone doesn't see you training for prolong periods of time. Worldhop when someone talks in your area. 3. Magic Overview:
      The script can train with pretty much every training method available, from Air strike to Ice barrage, it's all supported. 
      (The script can also loot, use cannon etc while using non-combat methods).

      3.1 Regular Spellbook
      The script can use the following regular spellbook spells, both in combat & out of combat.
      Splashing Strike spells Bolt spells Blast spells Surge spells Enchant jewelry spells Superheat items Enchant crossbow bolt spells Curse spells Alchemy spells Teleport spells 3.2 Ancient Spellbook
      The script can use the following ancient spellbook spells.
      All rush spells All burst spells All blitz spells All barrage spells 3.3 Lunar Spellbook
      The script can traing using the following lunar spellbook spells.
      Humidify Superglass Make Tan Leather Plank Make Spin Flax String Jewelry  3.4 Combo Alching
      The script can also Combo alch, meaning it will cast the high alchemy spell after using another spell to recieve rapid XP.
      It can combo alch with the following spells:
      Combat / Alch - E.G Fire surge & Alch at the same time Curse / Alch - From curse up to stun it's all supported. Earn up to 180K XP/Hour Teleport / Alch - Very fast XP.  4. Repository Information:
      To activate the script on the repository, please use the following links:
        https://tribot.org/repository/script/id/3097-optimus-combat-magic/ - Lite Version

      https://tribot.org/repository/script/id/651-optimus-combat-magic/ - Premium Version
      Note: There is a 10 hour FREE TRIAL for anybody who wants to try out the PREMIUM VERSION of the script on the repository   5. Testimonials:

       
      6. Gallery:
      Killing 15,000 abyssal demons and getting over 26 whips on one account.














       
    • By whyareyoudoingthis
      Hello, I would really appreciate some advice since it's lookin kinda hopeless.
      I'm getting consistent bans on p2p accounts with nFletcher, within 24-48 hours, even though I am botting with randomized breaks, doing some manual selling/restocking every 1-2 hours. I did not bot during the night, maybe 3 sessions for 3-4 hours per day TOPS.
      I even did some slayer in between every 1-2 hours on my semi-main and it just got banned for 2 days regardless (ty god no perma, obviously not gonna bot on a valuable account ever again, that was dumdum)
      Am I doing something wrong or what? This seems completely unprofitable and unsustainable. I am not into this as much as to create a bot farm, but I wanted to do a total of 10ish m/day on 1-2 accounts and this seems impossible. 
      Any advice? Thank you so much in advance
    • By DizFunk
      Hi guys, I just started attempting to script. I bought VIP so I could write my own scripts. I've been having the hardest time setting up my eclipse to work with TRIBot. So far I have set up my eclipse to compile with JDK/JRE 8, TRIBot is being launched with JDK 8. Everything seems to be setup correctly, however I get this odd error message in my bot debug logs. I've attached a photo of the logs. 
      Here is what my class file looks like: 
      package scripts;
      import org.tribot.script.Script;
      import org.tribot.script.ScriptManifest;
      @ScriptManifest (authors = { "DizFunk" }, category = "Test", name = "Test")
      public class Test extends Script {
          @Override
          public void run() {
              println("Hello World!1");
          }
      }
       If anyone knows whats going on here it would be a big help

    • By will6100
      I really love the process of developing a script, testing it, debugging it, etc.. So after writing my first really simple script that would tan hides, I got my first botting account banned, which is something I knew was gonna happen since my lack of scripting knowledge. Im ready to get a new one up and going and continue to develop more basic scripts to sharpen my scripting skills. Im sharing my first script here and looking to hear what I should do and should not do. Also get some tips on what to look for to reduce the banning rates of my testing accounts. The account I was using was only combat lvl 5 and didnt have any quests done, I guess that didnt help too? I was also about to introduce ABC2 into the script and learn how to use it but my account got banned right before I could implement it. So looking forward to hear your criticisms about my script and tips to not get the script bannable. Also have in mind I didnt really refactor anything, some parts may look ugly, beware!
      package scripts; import org.tribot.api.DynamicClicking; import org.tribot.api.General; import org.tribot.api.Timing; import org.tribot.api.input.Mouse; import org.tribot.api2007.*; import org.tribot.api2007.types.RSNPC; import org.tribot.api2007.types.RSObject; import org.tribot.api2007.types.RSTile; import org.tribot.api2007.util.ThreadSettings; import org.tribot.script.Script; import org.tribot.script.ScriptManifest; import java.awt.*; import java.util.function.BooleanSupplier; @ScriptManifest(category = "Moneymaking", authors = "will6100" , name = "Tanner") public class Tanner extends Script { private final static int BLACK_DHIDE_ID = 1747; private final static int TANNED_LEATHER_ID = 2509; private final static int ELLIS_ID = 3231; private final static int BANK_BOOTH_ID = 10355; private final static int COINS_ID = 995; private boolean isBankable() { RSObject[] booths = Objects.findNearest(100, BANK_BOOTH_ID); if (booths.length > 1) { return booths[0].isOnScreen(); } return false; } private boolean coinsCheck() { if (Inventory.find(COINS_ID).length < 1) { if (Banking.find(COINS_ID).length > 0) { if (!Inventory.isFull()) { return Banking.withdraw(0, COINS_ID); } else { if (Inventory.find(BLACK_DHIDE_ID).length > 0) { return Banking.deposit(1, BLACK_DHIDE_ID); } else if (Inventory.find(TANNED_LEATHER_ID).length > 0){ return Banking.depositAll() > 0; } } } } else { return true; } return false; } private boolean bank() { if (!openBank()) { General.println("Couldnt open bank"); return false; } if (!coinsCheck()) { General.println("No more gold"); return false; } if (!setupInventory()) { General.println("No more hides"); return false; } sleep(100,1000); return true; } private boolean setupInventory() { if (Inventory.find(TANNED_LEATHER_ID).length > 0) { sleep(50,1000); if (Banking.deposit(0,TANNED_LEATHER_ID)) { if (Banking.find(BLACK_DHIDE_ID).length > 0){ sleep(50,1000); Banking.withdraw(0, BLACK_DHIDE_ID); return Timing.waitCondition(this::readyToTan, General.random(3000,5000)); } } } else if (Inventory.find(TANNED_LEATHER_ID).length < 1) { sleep(50,1000); if (Banking.find(BLACK_DHIDE_ID).length > 0){ Banking.withdraw(0, BLACK_DHIDE_ID); return Timing.waitCondition(this::readyToTan, General.random(3000,5000)); } } return false; } private boolean openBank() { if (!Banking.isBankScreenOpen()) { if (!isBankable()){ if(!walkToDestCondition(this::isBankable)) { return false; } } return clickBankBooth(); } return true; } private boolean clickBankBooth() { RSObject[] bankBooths = Objects.findNearest(40, BANK_BOOTH_ID); RSObject booth; if(bankBooths.length > 1) { do { sleep(50); booth = bankBooths[General.random(0, bankBooths.length - 2)]; } while (!booth.isOnScreen() && !booth.isClickable()); booth.hover(); if (isHoverRendered(Mouse.getPos())){ Mouse.click(1); }else { clickBankBooth(); } return Timing.waitCondition(Banking::isBankScreenOpen, General.random(25000,27000)); } return false; } private boolean isHoverRendered (Point toHover) { return !Screen.getColorAt(Mouse.getPos()).equals(new Color(0, 0, 0)); } private boolean isTannable() { RSNPC[] ellis = NPCs.find(ELLIS_ID); if (ellis.length < 1) { return false; } else if (isTanningWindowOpen()){ return true; } return ellis[0].isOnScreen(); } private boolean tanLeather() { RSNPC ellis; if (isTannable()) { sleep(100,200); ellis = NPCs.find(ELLIS_ID)[0]; while (!isTanningWindowOpen()) { Mouse.setSpeed(190); sleep(300,500); if (DynamicClicking.clickRSNPC(ellis,"Trade " + ellis.getName())){ Mouse.setSpeed(115); Timing.waitCondition(this::isTanningWindowOpen, General.random(15000, 17000)); sleep(200,500); Interfaces.get(324,107).click("Tan all"); return Timing.waitCondition(() -> !isTanningWindowOpen(), General.random(3000,5000)); } } } else { return walkToDestCondition(this::isTannable); } return false; } private boolean walkToDestCondition(BooleanSupplier waitCondition) { Walking.blindWalkTo(new RSTile(3278 + General.random(-2,2), 3180 + General.random(-1, 1))); return Timing.waitCondition(waitCondition, General.random(11000,12000)); } private boolean isTanningWindowOpen() { return Interfaces.isInterfaceValid(324); } private boolean readyToTan() { return Inventory.find(BLACK_DHIDE_ID).length > 0 && Inventory.find(COINS_ID).length > 0 ; } @Override public void run() { Mouse.setSpeed(115); ThreadSettings ts = new ThreadSettings(); ts.setClickingAPIUseDynamic(true); while (true) { sleep(50); if (isTannable()) { if (readyToTan()) { if(!tanLeather()){ General.println("1"); break; } } else { if(!bank()) { General.println("2"); break; } } } else if (isBankable()) { if (readyToTan()) { if(!tanLeather()){ General.println("3"); break; } } else { if(!bank()) { General.println("4"); break; } } } else if (readyToTan()) { if(!tanLeather()){ General.println("5"); break; } } else { if(!bank()) { General.println("6"); break; } } } } }  
    • By rs06botHein
      Hey Tribot Scripters,
       
      I am looking for a small private script. 
      If possible I want to buy the source code too.
      Private message or skype (below).
       
      Thx in advance!
    • By syhler
      I'm trying to add a JSON library by adding every java file from https://github.com/stleary/JSON-java to my project. But it keeps giving me the error
      java.lang.NoClassDefFoundError: scripts/JSONObject Which makes sense because it fails to load the JSONObject. But why?
       Error Loading Local Script: JSONObject! I have tried to make a package inside the scripts package called "org.json" without any luck, I have also tried to put the files directly into scripts package.(Check picture for reference)

      I don't think the run method has anything to do with it, but it looks like this
      @Override public void run() { println("Hey Test"); JSONObject json = null; try { json = JsonParser.readJsonFromUrl("url"); } catch (IOException e) { e.printStackTrace(); } assert json != null; println(json.toString()); } JsonParser.readJsonFromUrl Comes from a class which is taken from StackOverflow - https://stackoverflow.com/questions/4308554/simplest-way-to-read-json-from-a-url-in-java- 
      And looks something like that
      public class JsonParser{ private static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { InputStream is = new URL(url).openStream(); try { BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); String jsonText = readAll(rd); JSONObject json = new JSONObject(jsonText); return json; } finally { is.close(); } } } Yes, I do have VIP (at least for 2 days) and I'm using IntelliJ Idea. To set my project up I have used the guide from here.
      Thank you for your time  
       
    • By Starfox
      Hello everyone,
       
      I am posting this to let anyone who wants to join know that I am now hosting a Discord chat for TRiBot users. You can use this chat to talk to other users, ask questions, or simply hang out in the chat. We are the most active botting chat so far with over 40 users online at all times of day.
       
      You can use Discord on the web, or download the application for Windows, Mac OS, or Linux if you prefer. You can find the Discord site here.
       
      To join the chat, simply follow this link and you will automatically join the chat once you accept the invite. All members are welcome, and even if you don't have anything to say you are welcome to afk in the Discord chat. It is required that you make your Discord chat username the same as your TRiBot username so it is easier for other members to identify you. You also must register an e-mail with discord; this is to prevent spam accounts from joining (sorry).
       
       
      I reserve the right to permanently ban anyone from this unofficial chat for any reason. 


      TRiBot Discord Chat Roles:
      @administrator - All tribot admins get this role Your username separated from other members in a nice and shiny red color Ability to do any action in the discord chat except manage the server @moderator - All tribot mods get this role Your username separated from other members in a beautiful green color Kick and ban members Remove messages Move members between channels Create an instant invite to the discord chat Mute members Deafen members Ability to use the @everyone mention to notify all users in the chat of a message @user_moderator Kick members Remove messages Create an instant invite to the discord chat Move members between channels @scripter - All tribot scripters get this role This role is given to people who have the scripter role on TRiBot. You can ask these members questions about programming and script writing. @verified - This role is given out to people who have confirmed their identity on TRiBot. @market_banned - These members are banned from the black market on the TRiBot forums. @trade_with_caution - These members have the TWC pip on the TRiBot forums. @everyone - The default role for anyone in the chat. If you would like to become @verified, simply private message @Starfox or @TacoManStan on TRiBot and discord stating that you would like to be verified.
       
      Moderators and User Moderators, you have the ability to create instant invites to the TRiBot Chat. To create one, click the symbol next to the cog on the #tribotchat text channel. You can replace my global invite link with your own in your signature. I can use this as a metric to see how many people are using your link to join. Who knows, maybe I will reward the users who are getting more people to join =^).
       
      Moderator Application Format:
      Link to your tribot profile List past experiences moderating other forums (with sources) A brief description of your character as a person Send your application to Starfox on discord through a private message.
       
      TRiBot Discord Chat Channels:
      #tribotchat1 The main chat channel for general discussion #tribotchat2 The second chat channel for general discussion overflow #tribotscripting The chat channel to talk about scripting, ask questions, or get help with scripting #oldschoolchat Talk about anything old school runescape related here  
       
      TRiBot Discord Chat Rules:
      You must make your Discord chat username the same as your TRiBot forum username. Do not impersonate any TRiBot member. Do not spam the text channel with tons of the same message or similar messages. If you are purposefully annoying or otherwise unnecessarily argumentative, expect a ban. Do not flame other members of the chat. Arguing is allowed. General in-good-taste banter and harmless comments are also allowed. No Black Market transactions are allowed to take place on Discord. You must conduct them on the forums or elsewhere. Do not purposefully start arguments for the sake of trolling and/or provoke people in the chat. No doxing/hacking/phishing. Do not brag or talk about hacking/doxing other users. You cannot advertise anything of your own such as a website or service. If you break any of the above rules, you will be immediately un-verified and removed from the discord chat.
       
       
       
      If you'd like to support the TRiBot Discord Chat, copy this text into your signature (credits to @Encoded for the image):
        [url][img=http://i.imgur.com/YDz8pP0.png][/img]https://discord.gg/2bYcdjB[/url]  
      I hope to see you in the chat soon!
    • By duk151
      Request: Alching on charged bracelets of ethereum
      Description:   Starting with some gold and nature rune in your inventory and have revenant ethers in your bank. Buying 26 uncharged bracelets of ethereum from grand exchange and charge each bracelet with 1 revenant ether. After 26 bracelets are charged it is now time for high alching all of them from your inventory and now profits are made and should go on repeat.  If it possible to set max buying price for uncharged bracelets it would be great. Sorry for my bad English, I can record all the process and send it to you, to understand me more.
      Please add me on Discord if you are willing to write this script for me. Thank you,
      Discord  duk151#5871

      Payment Amount: $110  If all works fine.
      Time:  As soon as possible
    • By Wormsarecool
      New To TriBot!
      Quick, possibly stupid, question for y'all.
      Say I bought the Auto Tithe Farm and Auto Wintertodt scrips; do those scripts activate the second I purchase them and add them to my client, or do they activate the first time I run them in the client?
      Thanks all!!!
      edit; only reason I ask is because I'm trying to purchase credits and it continues to say something in the lines of "Your card is not made for purchases like this." So was going to attempt to purchase the scripts I want ahead of time.. unless someone can help me out with my situation. Attempting to purchase 25 credits for $25 with my Prepaid Visa Debit Card.
    • By agro36
      All of the current ones are broken / not working at all.
       
      Anyone that can do one that works? 
  • Our picks

    • Over the past few months, I’ve been working diligently on a new project - TRiBot X. Everything has been written from the ground up, with all of the best practices of software engineering. Every aspect of TRiBot has been re-imagined to support three main goals: flexibility, useability, and reliability.
        • Like
      • 50 replies
    • Come give us feedback on the next version of TRiBot!
        • Thanks
        • Like
      • 86 replies
    • TRiBot is looking to improve a lot of its customer relationship management, customer on boarding process, customer experience, design elements, community engagement and pretty much everything else you can imagine when it comes to marketing.

      Our goal: To ensure that the marketing done TRULY reflects the experience and does not shine an inaccurate light on what TRiBot is lacking in.

      So I ask, what do you love about TRiBot and what do you hate about TRiBot? What does O S Bot, Rune M8, PowR Bot and Dre amBot do better? (yes I purposely didn't spell it right 😂).

      Love, 

      RileyZ
        • Like
      • 25 replies
    • Over the last three weeks, I've been working on upgrading our server infrastructure. It's finally ready and is now live!

      Why?

      Increased reliability - less server errors


      Increased availability - less downtime


      Increased security - keeping us and you secure


      Increased capacity - ability to serve you better


      Increased speed - less waiting for things to load


      Faster development - server and service updates will come faster


      What are the changes?

      Move from a single AWS EC2 instance to AWS ECS (Elastic Container Service)


      Distributed computing


      Load balancing


      Git management of server files and filesystem


      Redis caching


      How?

      AWS ECS (with 10 EC2 instances)


      AWS ElastiCache (Redis)


      AWS Load Balancing


      AWS EFS (Elastic file system)


      Please bare with us as I continue to tune the server for maximum performance. Slow loading speeds may occur temporarily. I thank everyone for their patience.

      Please post on this thread if you experience any issues other than slow loading times.
        • Like
      • 51 replies
    • This release will:

      Fix prayers and world hopper API (Thanks @JoeDezzy1 and @erickho123)


      Improve banking API (Thanks @Encoded)


      Adds methods for returning and using Java Lists, rather than arrays


      Slightly randomizes some hardcoded behaviour


      Removes sleeps from waitConditions; the efficiency saving potential is negligible in these use-cases, therefore cleaner code is preferable


      Other back-end improvements





      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Sad
        • Haha
        • Thanks
        • Like
      • 90 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...