Results 1 to 25 of 25

Thread: [#38] RandomTool

  1. #1
    Join Date
    Mar 2007
    Location
    <3
    Posts
    2,683
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default [#38] RandomTool

    Many people have been asking about a way to play a sound when a random
    appears, or even make it able to manually solve the random..
    Well, do not fear, N1ke! is here! (rhymes )

    RandomTool does all the above, with only one line of code.

    [Form picture got taken away, you'll understand when you see the form.]
    This form, will appear(If setup has been done), and you'll be able to choose
    what to do. If the time runs out, SRL will try to solve it.
    If SRL can't solve the random, the "Let SRL solve it" option won't be enabled.

    The setup looks like this..
    SCAR Code:
    {*******************************************************************************
    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Sets up RandomTool so it can be used.

    TimeOutWait: Time until SRL will try to solve itself, before this you
    have the option to solve it yourself. (In MS).

    FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

    t_SoundPath: The path for a sound you wish to play, if random detected.
    Leave blank if you don't wish to have any sound.
    *******************************************************************************}

    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);

    Note: SetupRandomTool has to be set AFTER DeclarePlayers.


    t_SoundPath only takes .wav(I think?, Freddy please confirm what SCARs
    PlaySound can handle and not..).


    A correct setup would look like this:
    SCAR Code:
    Program New;
    {.include srl/srl.scar}

    procedure DeclarePlayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;

      Players[0].Name :='';
      Players[0].Pass :='';
      Players[0].Nick :='';
      Players[0].Active := True;

      Writeln(IntToStr(HowManyPlayers) + ' Players');
    end;

    begin
      SetupSRL;
      DeclarePlayers;
      SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
      LoginPlayer;
    end.

    This is new in Rev 38, and I hope you enjoy it

    ~ N1ke!
    Last edited by Naike; 08-06-2009 at 02:25 AM.

  2. #2
    Join Date
    May 2007
    Location
    Netherlands, Amersfoort
    Posts
    2,701
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    nice!

    Maybe add a TProgressBar so you can see how many time you have left to decide

  3. #3
    Join Date
    Dec 2008
    Location
    In a galaxy far, far away...
    Posts
    584
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Nice job



    ~NS

  4. #4
    Join Date
    Sep 2008
    Location
    Sweden
    Posts
    70
    Mentioned
    1 Post(s)
    Quoted
    3 Post(s)

    Default

    Nice! looks fancy... the script will pause when you press "Solve it yourself" right (as the opposite from closing the whole script down)? keep up the good work n1ke, you're great
    Quote Originally Posted by #SRL
    * Gurkan` performs brain surgery on Wizzup
    <Wizzup> wat!
    <Gurkan`> now he believes everything you say
    <Gurkan`> Wizzup, im way cooler than you
    <Wizzup> k

  5. #5
    Join Date
    Mar 2007
    Location
    <3
    Posts
    2,683
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by MasterKill View Post
    nice!

    Maybe add a TProgressBar so you can see how many time you have left to decide
    The timer counts down...
    No need for a progressbar ^^


    Quote Originally Posted by Gurkan View Post
    Nice! looks fancy... the script will pause when you press "Solve it yourself" right (as the opposite from closing the whole script down)? keep up the good work n1ke, you're great
    Ohh, yeah. Maybe I was a bit unclear about that part..
    The script will pause, until you press the FKey given in the setup.

  6. #6
    Join Date
    May 2007
    Location
    Netherlands, Amersfoort
    Posts
    2,701
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by N1ke! View Post
    The timer counts down...
    No need for a progressbar ^^
    oh yes.......................... well it looks nice! !





    !

  7. #7
    Join Date
    Mar 2007
    Posts
    4,810
    Mentioned
    3 Post(s)
    Quoted
    3 Post(s)

    Default

    Quote Originally Posted by Freddy1990 View Post
    Hmm, gave me out of range error at some point... Btw, SCAR 3.20 can play wav, mp3, mp2, mp1, ogg, aiff, flac, ...
    Anyway, whereabouts in the SRL include is it placed in?

  8. #8
    Join Date
    Mar 2007
    Location
    <3
    Posts
    2,683
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    /core/AntiRandoms...

  9. #9
    Join Date
    Dec 2007
    Location
    192.168.1.73
    Posts
    2,439
    Mentioned
    6 Post(s)
    Quoted
    119 Post(s)

    Default

    Personally, I think it would work better if it was defined inside DeclarePlayers, after player setup of course. In other words, it would be variables, not a whole function, so you could have defaults if they weren't entered. Similar to how it works for SMART. Nice job and idea

    EDIT: Slight variation that will slightly increase efficiency, and shortened the code:
    SCAR Code:
    //-----------------------------------------------------------------//
    //--               Scar Standard Resource Library                --//
    //--               » AntiRandom Routines                         --//
    //-----------------------------------------------------------------//
    // * procedure r_ItemClick(sender: TObject)    //* by Richard
    // * Procedure r_InitForm;                            // * by N1ke! and Richard
    // * Procedure r_SafeInitForm;                        // * by N1ke!
    // * procedure r_ShowFormModal;                       // * by N1ke!
    // * procedure r_SafeShowFormModal;                   // * by N1ke!
    // * procedure r_RunAlert;                            // * by N1ke!
    // * function r_CheckAction: Boolean;                 // * by N1ke!
    // * Procedure r_ResetAll;                            // * by N1ke!
    // * Procedure r_ResetAll;                            // * by N1ke!
    //-----------------------------------------------------------------//

    var
      RandomTool : TForm;
      InfoTxt: Array [0..3] of TLabel;
      BChoice: Array [0..1] of TButton;
      TimeUntilClose, CountDown: TTimer;
      UseBox: TCheckBox;
      r_WaitTimeout, r_CountMS, r_FKeyFinish: Integer;
      r_SelfSolve: Boolean;
      r_SolveAble: TIntegerArray;

    {*******************************************************************************
    procedure r_ItemClicked(sender: TObject);
    by: Richard
    TimeStamp: 5 Aug, 2009
    Description: Performs the desired action
    *******************************************************************************}

    procedure r_ItemClicked(sender: TObject);
    Begin
      Case sender of
        BChoice[0]: RandomTool.ModalResult := mrOk; //may have got these buttons mixed up
        BChoice[1]: Begin
                      RandomTool.ModalResult:= mrOk;
                      r_SelfSolve := True;
                    end;
        TimeUntilClose: RandomTool.ModalResult := mrOk;
        CountDown: begin
                     Inc(r_CountMS);
                     InfoTxt[3].Caption := 'Timeout in: ' + MsToTime(r_WaitTimeOut-(r_CountMS*1000), 1);
                   end;
      end;
    end;

    {*******************************************************************************
    Procedure r_InitForm;
    by: N1ke! and Richard
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    Procedure r_InitForm;
    var
      I: Integer;
      InfoTxtCap: TStringArray;
    begin
      RandomTool := CreateForm;
      With RandomTool do
      Begin
        With Font do
        Begin
          Height := -11;
          Name := 'MS Sans Serif';
        end;
        Visible := False;
        SetBounds(0, 0, 160, 210);
        Position := poScreenCenter;
        FormStyle := fsStayOnTop;
        BorderIcons := [biSystemMenu];
        BorderStyle := bsSingle;
      end;
     
      InfoTxt[0] := TLabel.Create(RandomTool);
      With InfoTxt[0] do
      Begin
        Parent := RandomTool;
        Left := 30;
        Top := 10;
        Width := 46;
        Height := 13;
        Font.Height := -14;
        Font.Style := [fsBold];
        Caption := 'Random found!';
      end;
     
      InfoTxtCap := ['Random: ' + Players[CurrentPlayer].Rand,
                     'Player stuck: ' + Players[CurrentPlayer].Name,
                     'Timeout in: ' + MsToTime(r_WaitTimeOut, 1)];
                     
      For I:=1 to 3 do
      begin
        InfoTxt[i] := TLabel.Create(RandomTool);
        With InfoTxt[i] do
        Begin
          Parent := RandomTool;
          Left := 10;
          Top := 25+I*14;
          Width := 46;
          Height := 13;
          Font.Height := -12;
          Caption := InfoTxtCap[I-1];
        end;
      end;
     
      InfoTxtCap := ['Solve it yourself',
                     'Let SRL solve it'];
                     
      For I:=0 to 1 do
      begin
        BChoice[I] := TButton.Create(RandomTool);
        With BChoice[I] do
        Begin
          Parent := RandomTool;
          Width := 130;
          Height := 28;
          Left := 10;
          Top := 110+(I*30);
          Caption := InfoTxtCap[I];
          Font.Height := -11;
          OnClick := @r_ItemClicked;
        end;
      end;

      BChoice[1].Enabled :=  InIntArray(r_SolveAble, CurRandom);

      TimeUntilClose := TTimer.Create(RandomTool);
      With TimeUntilClose do
      Begin
        Interval := r_WaitTimeOut;
        Enabled := True;
        OnTimer := @r_ItemClicked;
      end;

      CountDown := TTimer.Create(RandomTool);
      With CountDown do
      Begin
        Interval := 1000;
        Enabled := True;
        OnTimer := @r_ItemClicked;
      end;

      UseBox := TCheckBox.Create(RandomTool);
      With UseBox do
      Begin
        Parent := RandomTool;
        Left := 8;
        Top := 95;
        Width := 200;
        Height := 13;
        Caption := 'Stop using RandomTool?';
      end;
    end;

    {*******************************************************************************
    procedure r_SafeInitForm;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_SafeInitForm;
    var v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('r_InitForm', v);
    end;

    {*******************************************************************************
    procedure r_ShowFormModal;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_ShowFormModal;
    begin
      RandomTool.ShowModal;
    end;

    {*******************************************************************************
    procedure r_SafeShowFormModal;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_SafeShowFormModal;
    var v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('r_ShowFormModal', v);
    end;

    {*******************************************************************************
    Procedure r_ResetAll;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Resets all vars.
    *******************************************************************************}

    Procedure r_ResetAll;
    begin
      r_UseRandomTool := not(UseBox.Checked);
      TimeUntilClose.Enabled := False;
      CountDown.Enabled := False;
      r_CountMS := 0;
      CurRandom := 0;
      r_SelfSolve := False;
      Freeform(RandomTool);
    end;

    {*******************************************************************************
    procedure r_RunAlert;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Runs the form.
    *******************************************************************************}

    procedure r_RunAlert;
    begin
      r_SafeInitForm;
      r_SafeShowFormModal;
    end;

    {*******************************************************************************
    Function r_CheckAction: Boolean;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Checks if r_SelfSolve is True.
    If so it waits for the player to solve the random.
    *******************************************************************************}

    Function r_CheckAction: Boolean;
    begin
      Result := r_SelfSolve;
      If Not Result then
        Exit;

      Writeln('** Press F' + IntToStr(r_FKeyFinish) + ' when you wish to continue. **');
      While not IsFKeyDown(r_FKeyFinish)do
        Wait(150);
    end;

    {*******************************************************************************
    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Sets up RandomTool so it can be used.

    TimeOutWait: Time until SRL will try to solve itself, before this you
    have the option to solve it yourself.

    FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

    t_SoundPath: The path for a sound you wish to play, if random detected.
    Leave blank if you don't wish to have any sound.
    *******************************************************************************}

    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
    var
      I, H, ArrC: Integer;
    begin
      r_WaitTimeout := TimeOutWait;
      If Not InRange(FKeyForFinish, 1, 12) then
      begin
        srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
        srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
        r_FKeyFinish := 2;
      end else r_FKeyFinish := FKeyForFinish;
      r_UseRandomTool := True;
      SoundPath := t_SoundPath;

      H := High(TeleRandoms);
      SetArrayLength(r_SolveAble, H+1);
      For I:=0 to H do
        If (TeleRandoms[I].SolveRandom <> nil) then
        begin
          Inc(ArrC);
          r_SolveAble[ArrC-1] := I;
        end;
      SetArrayLength(r_SolveAble, ArrC);
    end;

    Not sure if it works properly, and I may have got the 2 buttons the wrong way round, I've marked where.
    Last edited by Richard; 08-06-2009 at 06:46 AM.

  10. #10
    Join Date
    Sep 2007
    Posts
    118
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Personally, I would have thought of using the event hooks in SRL (SRL_Procs) for doing something like this.
    Although: this seems well done, I will try it out for sure. Nice work!

    Edit: Tried it out and it worked perfectly!

  11. #11
    Join Date
    Mar 2007
    Location
    <3
    Posts
    2,683
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Richard, Ahh ofc.. I forgot senders could do that way ^^

    If you test it, and make sure it works, then I be happy to update it.

  12. #12
    Join Date
    Dec 2007
    Location
    192.168.1.73
    Posts
    2,439
    Mentioned
    6 Post(s)
    Quoted
    119 Post(s)

    Default

    How would I go about tricking the system into thinking I've got a random?

    EDIT: You forgot to add the include to SRL.scar
    Last edited by Richard; 08-06-2009 at 09:40 PM.

  13. #13
    Join Date
    Mar 2007
    Location
    <3
    Posts
    2,683
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Just ask around for a account in a random?

  14. #14
    Join Date
    Dec 2007
    Location
    192.168.1.73
    Posts
    2,439
    Mentioned
    6 Post(s)
    Quoted
    119 Post(s)

    Default

    SCAR Code:
    //-----------------------------------------------------------------//
    //--               Scar Standard Resource Library                --//
    //--               » AntiRandom Routines                         --//
    //-----------------------------------------------------------------//
    // * procedure ExitOut(sender: TObject);              // * by N1ke!
    // * procedure SolveItYourSelf(sender: TObject);      // * by N1ke!
    // * procedure LabelChange(sender: TObject);          // * by N1ke!
    // * Procedure r_InitForm;                            // * by N1ke!
    // * Procedure r_SafeInitForm;                        // * by N1ke!
    // * procedure r_ShowFormModal;                       // * by N1ke!
    // * procedure r_SafeShowFormModal;                   // * by N1ke!
    // * procedure r_RunAlert;                            // * by N1ke!
    // * function r_CheckAction: Boolean;                 // * by N1ke!
    // * Procedure r_ResetAll;                            // * by N1ke!
    // * Procedure r_ResetAll;                            // * by N1ke!
    //-----------------------------------------------------------------//

    var
      RandomTool : TForm;
      InfoTxt: Array [0..3] of TLabel;
      BChoice: Array [0..1] of TButton;
      TimeUntilClose, CountDown: TTimer;
      UseBox: TCheckBox;
      r_WaitTimeout, r_CountMS, r_FKeyFinish: Integer;
      r_SelfSolve: Boolean;
      r_SolveAble: TIntegerArray;

    {*******************************************************************************
    procedure r_ItemClicked(sender: TObject);
    by: Richard
    TimeStamp: 5 Aug, 2009
    Description: Performs the desired action
    *******************************************************************************}

    procedure r_ItemClicked(sender: TObject);
    Begin
      Case sender of
        BChoice[0]: Begin
                      RandomTool.ModalResult:= mrOk;
                      r_SelfSolve := True;
                    end;
        BChoice[1]: RandomTool.ModalResult := mrOk;
        TimeUntilClose: RandomTool.ModalResult := mrOk;
        CountDown: begin
                     Inc(r_CountMS);
                     InfoTxt[3].Caption := 'Timeout in: ' + MsToTime(r_WaitTimeOut-(r_CountMS*1000), 1);
                   end;
      end;
    end;

    {*******************************************************************************
    Procedure r_InitForm;
    by: N1ke! and Richard
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    Procedure r_InitForm;
    var
      I: Integer;
      InfoTxtCap: TStringArray;
    begin
      RandomTool := CreateForm;
      With RandomTool do
      Begin
        With Font do
        Begin
          Height := -11;
          Name := 'MS Sans Serif';
        end;
        Visible := False;
        SetBounds(0, 0, 160, 210);
        Position := poScreenCenter;
        FormStyle := fsStayOnTop;
        BorderIcons := [biSystemMenu];
        BorderStyle := bsSingle;
      end;
     
      InfoTxt[0] := TLabel.Create(RandomTool);
      With InfoTxt[0] do
      Begin
        Parent := RandomTool;
        Left := 30;
        Top := 10;
        Width := 46;
        Height := 13;
        Font.Height := -14;
        Font.Style := [fsBold];
        Caption := 'Random found!';
      end;
     
      InfoTxtCap := ['Random: ' + Players[CurrentPlayer].Rand,
                     'Player stuck: ' + Players[CurrentPlayer].Name,
                     'Timeout in: ' + MsToTime(r_WaitTimeOut, 1)];
                     
      For I:=1 to 3 do
      begin
        InfoTxt[i] := TLabel.Create(RandomTool);
        With InfoTxt[i] do
        Begin
          Parent := RandomTool;
          Left := 10;
          Top := 25+I*14;
          Width := 46;
          Height := 13;
          Font.Height := -12;
          Caption := InfoTxtCap[I-1];
        end;
      end;
     
      InfoTxtCap := ['Solve it yourself',
                     'Let SRL solve it'];
                     
      For I:=0 to 1 do
      begin
        BChoice[I] := TButton.Create(RandomTool);
        With BChoice[I] do
        Begin
          Parent := RandomTool;
          Width := 130;
          Height := 28;
          Left := 10;
          Top := 110+(I*30);
          Caption := InfoTxtCap[I];
          Font.Height := -11;
          OnClick := @r_ItemClicked;
        end;
      end;

      BChoice[1].Enabled :=  InIntArray(r_SolveAble, CurRandom);

      TimeUntilClose := TTimer.Create(RandomTool);
      With TimeUntilClose do
      Begin
        Interval := r_WaitTimeOut;
        Enabled := True;
        OnTimer := @r_ItemClicked;
      end;

      CountDown := TTimer.Create(RandomTool);
      With CountDown do
      Begin
        Interval := 1000;
        Enabled := True;
        OnTimer := @r_ItemClicked;
      end;

      UseBox := TCheckBox.Create(RandomTool);
      With UseBox do
      Begin
        Parent := RandomTool;
        Left := 8;
        Top := 95;
        Width := 200;
        Height := 13;
        Caption := 'Stop using RandomTool?';
      end;
    end;

    {*******************************************************************************
    procedure r_SafeInitForm;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_SafeInitForm;
    var v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('r_InitForm', v);
    end;

    {*******************************************************************************
    procedure r_ShowFormModal;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_ShowFormModal;
    begin
      RandomTool.ShowModal;
    end;

    {*******************************************************************************
    procedure r_SafeShowFormModal;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description:
    *******************************************************************************}

    procedure r_SafeShowFormModal;
    var v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('r_ShowFormModal', v);
    end;

    {*******************************************************************************
    Procedure r_ResetAll;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Resets all vars.
    *******************************************************************************}

    Procedure r_ResetAll;
    begin
      r_UseRandomTool := not(UseBox.Checked);
      TimeUntilClose.Enabled := False;
      CountDown.Enabled := False;
      r_CountMS := 0;
      CurRandom := 0;
      r_SelfSolve := False;
      Freeform(RandomTool);
    end;

    {*******************************************************************************
    procedure r_RunAlert;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Runs the form.
    *******************************************************************************}

    procedure r_RunAlert;
    begin
      r_SafeInitForm;
      r_SafeShowFormModal;
    end;

    {*******************************************************************************
    Function r_CheckAction: Boolean;
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Checks if r_SelfSolve is True.
    If so it waits for the player to solve the random.
    *******************************************************************************}

    Function r_CheckAction: Boolean;
    begin
      Result := r_SelfSolve;
      If Not Result then
        Exit;

      Writeln('** Press F' + IntToStr(r_FKeyFinish) + ' when you wish to continue. **');
      While not IsFKeyDown(r_FKeyFinish)do
        Wait(150);
    end;

    {*******************************************************************************
    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
    by: N1ke!
    TimeStamp: 5 Aug, 2009
    Description: Sets up RandomTool so it can be used.

    TimeOutWait: Time until SRL will try to solve itself, before this you
    have the option to solve it yourself.

    FKeyForFinish: The FKey to break out of the "Solve it yourself" loop.

    t_SoundPath: The path for a sound you wish to play, if random detected.
    Leave blank if you don't wish to have any sound.
    *******************************************************************************}

    Procedure SetupRandomTool(TimeOutWait, FKeyForFinish: Integer; t_SoundPath: String);
    var
      I, H, ArrC: Integer;
    begin
      r_WaitTimeout := TimeOutWait;
      If Not InRange(FKeyForFinish, 1, 12) then
      begin
        srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
        srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
        r_FKeyFinish := 2;
      end else r_FKeyFinish := FKeyForFinish;
      r_UseRandomTool := True;
      SoundPath := t_SoundPath;

      H := High(TeleRandoms);
      SetArrayLength(r_SolveAble, H+1);
      For I:=0 to H do
        If (TeleRandoms[I].SolveRandom <> nil) then
        begin
          Inc(ArrC);
          r_SolveAble[ArrC-1] := I;
        end;
      SetArrayLength(r_SolveAble, ArrC);
    end;

    Working version.

  15. #15
    Join Date
    Nov 2006
    Posts
    2,369
    Mentioned
    4 Post(s)
    Quoted
    78 Post(s)

    Default

    Awsome work
    Quote Originally Posted by DeSnob View Post
    ETA's don't exist in SRL like they did in other communities. Want a faster update? Help out with updating, otherwise just gotta wait it out.

  16. #16
    Join Date
    Feb 2012
    Posts
    35
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hey! When im trying to start script it says

    [Error] (41:11): Duplicate identifier 'SETUPRANDOMTOOL' at line 40
    Compiling failed.

    Code i use:

    Code:
    program HeavyRodder;
    
      {$DEFINE SRL5}
      {$DEFINE SMART}
    
      {$i SRL/srl.simba}
      {$i SRL/SRL/misc/paintsmart.simba}
    
    Const
    
    //SRL Stats
      SRLStats_Username = '';
      SRLStats_Password = '';
    
    //General settings
      AlchFish      = False;  //Fish 'n alch method? (False for standard fish 'n drop)
      SwitchWorlds  = True;   //Switch worlds after break?
    
    //Break settings
      BreakIn      = 130;     //How long before we take a break? (minutes)
      BreakFor     = 10;      //How long will we break for? (minutes)
      Bir          = 13;      //Random minutes to add/subtract from how long until we break
      Bfr          = 7;       //Random minutes to add/subjtract from break duraction
    
      Procedure DeclarePlayers;
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        with Players[0] do
        begin
          Name         := '';
          Pass         := '';
          BoxRewards   := ['XP','xp','lamp'];
          LampSkill    := Skill_Fishing
          Active       := True;
        end;
      end;
    
    Procedure SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
    var
      I, H, ArrC: Integer;
    begin
      r_WaitTimeout := TimeOutWait, 60000;
      If Not InRange(FKeyForFinish, 1, 12) then
      begin
        srl_Warn('SetupRandomTool', 'Incorrect parameter FKeyForFinish [1..12] only.', warn_AllVersions);
        srl_Warn('SetupRandomTool', 'FKeyForFinish is now set to 2.', warn_AllVersions);
        r_FKeyFinish := 2;
      end else r_FKeyFinish := FKeyForFinish, 2;
      r_UseRandomTool := True;
      SoundPath := t_SoundPath; AppPath + 'AlertSounds\SmallBeat.wav');
    
      H := High(TeleRandoms);
      SetArrayLength(r_SolveAble, H+1);
      For I:=0 to H do
        If (TeleRandoms[I].SolveRandom <> nil) then
        begin
          Inc(ArrC);
          r_SolveAble[ArrC-1] := I;
        end;
      SetArrayLength(r_SolveAble, ArrC);
    end;
    
    
    Var
      Version: String;
      ReportTime,CommitTime,PostID: Integer;
      Trout_Caught,Trout_Ca,
      Salmon_Caught,Salmon_Ca,
      Sturgeon_Caught,Sturgeon_Ca,
      FishXP,Fish_XP,MagicXP,Magic_XP: Integer;
    
    //Break variables
      w,x,y,z,RealBTime,CurrentBTime,
      BreakRounds,TotalBreaks: Integer;
    
    
      Procedure Loadvars;
      begin
        Version := '1.35';
        PostID := 841068;
        MarkTime(CommitTime);
        MarkTime(ReportTime);
        MouseSpeed := RandomRange(17,19);
    
        w := (BreakIn * 60000);
        x := (BreakFor * 60000);
        y := RandomRange(-Bir * 60000, Bir * 60000);
        z := RandomRange(-Bfr * 60000, Bfr * 60000);
    
      end;
    
      Procedure CheckVersion;
      var
        Page,NewVer: String;
      begin
        Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
        NewVer := Between('Current version: ', '<br />', Page);
    
        if Version <> NewVer then
          ShowMessage('Your script is out of date!')
        else
          Exit;
    
      end;
    
      Procedure Report;
      begin
        WriteLn('=-=-=-=-=-=-=-= Heavy-rodder '+Version+' by Flight =-=-=-=-=-=-=-=');
        WriteLn('Time Running: '+TimeRunning);
        WriteLn('Trout caught: '+IntToStr(Trout_Caught));
        WriteLn('Salmon caught: '+IntToStr(Salmon_Caught));
        WriteLn('Sturgeon caught '+IntToStr(Sturgeon_Caught));
        WriteLn('Fishing XP '+IntToStr(FishXP));
        WriteLn('Breaks: '+IntToStr(TotalBreaks));
        WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
    
        MarkTime(ReportTime);
      end;
    
      Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
      var
        mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
        TTP: TPointArray;
        Canvas: TCanvas;
      begin
        SmartSetDebug(True);
        GetClientDimensions(mx, my);
        Pic := BitmapFromString(mx, my, '');
        Pic2 := BitmapFromString(360, 71, 'meJztfQV4k9f7dtt44+5aiTRt0' +
            'zT1tNGmblShBaq4uwyXsQEDtsFgQ8eQMcY2nCHD3Snu7m4Dtt/3PW' +
            '/DWNeWUkbLgH/uq9cE0pNz3vPIfR95Xjc3F1xwoX7gDj/u702zLrj' +
            'gwn8ODw93CslTwsBhUPXp5A3UrAsuuPAugIDHR4SGdLTwu5dkknGo' +
            '+mIIDdTsuwYYl4e72wc6OBfqDe7u7igPDwwahUa5fwAGA6xAKBCUx' +
            'Os6WvmbN6wrbpzBJKLf2WbfNYAxED0JEh6TTcKgPN53W3ChoQB2gs' +
            'fjZFJJRHh4uEGn9ZFKOFQKHvX+ZlMcFhsRERGlIE8u8Cr/aVSPWIF' +
            'SJnxzD2igZt8OICnAnKLrIK9gmEG6wBZmychBvVunGDR8git6uFAF' +
            'SHIheur1+lKrN9hVuIzUP1HUs1l848zkAKEn6T2k4jAiLoeTHx/mx' +
            'cIdHp+/rZdOwcIFB/p7vNlIGqjZtwMUykPA56WnpaYECzEwpS/vsn' +
            'OYTZOjByWLz509802Rf2ZKPBmPeouddeFdh4eHB4VCjoyMaBPDsyo' +
            'pk/O9Dn1dcmzZpB1zhi0e3nRS76YtM6JxaI/3K9tg0OigIF2chtY4' +
            'hPn4+tludqGMiQvWB72hgzdQs28B0EGip6fdZmkaxl72/eRubUtAX' +
            'r2s0zDMwICA1jG8raPyjv8wMFlLt1vNBBzmrfbYhXcYEDSoVEpMTE' +
            'wbE29Iivj82ulXN848OCbz9ILBD6+fv3/17KVDW/fv2vrN+HFWJZW' +
            'A8fiv+1snQLqk02hZCWYWEb2yg/rM972CJSSHmqpWq97EwRuo2bcD' +
            'iPtikahFrHpwivjy8X2944QBvpIacwEMk0ImpyXYU/xp1w6un1fqm' +
            '2dgBvhrUR7vx+y70NBALIRCNptMLaK53xV637txcc9Qc3ogw1/o2c' +
            'Mh3DR/wrWrV548fnjv/KGNw9LamXi28EDcS3PUOwQ0CqXRaPJD2Wk' +
            'B9NuHfhuXKweOXWKSCPm82tj5f9Ts2wFQiGC9PklL29gr9Nic3uFy' +
            'UoheV2O4gwijkMvbx8rH5cjvnNgBQaPM7vtejNGFtwAwAzKZZDQaW' +
            'xi5U5t5P3pwf10XLZhTsIRYlmGKjwrwFxC+mzrx+Nrv/3jyqPyzdK' +
            'MXuTQugMsgvePWg4yLREpyWL1Y+G299Wfn94tQkIk4D4fVRCQQ3rV' +
            'm3w7A40kkYrLDrBN5nv5p6LL2apMPJUgXWGPcwONwJlMMKNb9E8vK' +
            'v2is4RFS4iwkT8+3320X3jWAF3h6EkIMBtCwozNl96+f39RNGyolg' +
            'ZKNj3MIeBw8xp2E80iL9h+RLrm46qvj09qAmzSP4CjEgnc8bqBQHl' +
            '4KRTubpJ2Z9/jmxU8aSakEVGkUx0shfxM10UDNvh1AB/k8bmFsQIa' +
            'O8eDKqc5Wfq6BpfL1qU4hgGzwuNxmCaHZesa9C0dHZUotvpRgfRBw' +
            'rf+k5y68OwBrweGwfn6aNrHenW3864c37h4YGaUgx6ppNquVSiY5H' +
            'QGN8jBGhsmYuN86a87/MixURsoNZvooZO/4AqkngWC3WRP8aOVT2h' +
            '2f0iJUTgbiZIqJ9iTg36TjDdTs2wFEA18fnzIjd1Qj6Y3dS+xKagu' +
            'LTCzkV48bIGd0gYGgTeaW+l7ZOCtWRWtpEktEQpdIcQGNRkml0sIE' +
            'A8SK4/OHHplY6FDTQJ7Ex9poFPILC4G4ERUVicd4TGvqdeb7XloBo' +
            'YmB5a2Qvssm5Fz9a50eMbnA69GtSwOSRFwyJjfJwmYx36TbDdTsWw' +
            'OwBUOwPiOQsWdsk/IxjXy5hBy7gUGjVvkYjIVKoaTFW/US4qkFQ3f' +
            '01onp2LQ4M4VE/E+67cK7A3ABFovZKNEqZeAm5Stula8qjuRo+ISM' +
            'JAeLQa9MucHYjFGRBIzHTy2Vh8ZmimnY4gi2TCJ6lx0FtHlkRHhXm' +
            '+DEyqnln+eGSIktbD7eXgoM6o32Ahqo2bcGIEXxjtiUAPqtY1u+yZ' +
            'dLGDiLKRqPw1b5GMoD0WJtzXzQYk8fP2hr4sV4k10ixQXnsgZEgzA' +
            'ZCcjqlXVTF7ZRQeosSw6BfIr+pwKpiBtRoOJ39w3a0l0L/1Fo8eFx' +
            '2O+sTnFq8+KshPkt/e6cPTgoWZStZ4aGhlR3kHeh2bcGmHQOm9U83' +
            'fJlnvzO6X35oawWUVwIetWXZZAV0Zhog4S4rV/kye+66sTEUrNcLB' +
            'S8F5zq3wFGBmb/4Y6vfgAKxcfHp5VJyCKigUVcWjXB6kuBgGCzmgl' +
            '4XJUPgxXF2u0KFu74jPbTm3mDYGkUG0Elk/6TntcFWAxGrw/qFSc8' +
            'tHDc/kllDjU1LSmBRqG8oVE0ULNvDcAilL4+vdL8to5veWx2L0gZa' +
            'Ql2CrnqvpgzPDaPN8AAb+xdNiXfi+GJTnJYP+CdFBTKg0omghbz4e' +
            'DR7/7q9n8EiKoMBj093kzGeTTSMW7vXzGpiYJGQOUEM8Guqjw2sCI' +
            'ul1OYZkrS0u4c29wnTkT3RMfExGAx7+gdLmR0dHpuqqObnf/wwf3P' +
            'c+Qd4n0hq77haaUGavZtgoDHW8zmltHcqwc3Lm2rLoxgB/hrq0sP5' +
            '4poZhDzq8bym3uWJGvpyf50f63fWx5pxSVcd5QH8lNHT/7786/zRR' +
            'gMmsflOKINY0aPnPXttPRI5ftyrPEtA/KmTqdL0tIldCzojguLRsT' +
            '4kNEebnnxUQwatcozB7IRERERq6Z+W+h9Y9fCeA0tM4ihUvq+s1EZ' +
            'qJSfRtM6hreyvebC+plxGlp6UhyZRHzD7jZQs28N4HvAIorSzRMaK' +
            '0BktYrmNk8K47JZ7tU+RqVQ0hOsAULP47N77vrIAEbS1KHnsJhvba' +
            'TQBzBRFpPh4+2l1wUYAjR+UhbktdotDofFCgWCAI0yUEIj4urq+Fg' +
            'sRiIWN87J+qJFzNH9O5aMad80J51OwtfDMD4swKSwWay8eGR/pGkY' +
            '+96JrRObKBhElL+AAFIdck3lDwN/E4tFJQl6u4p6cd303zr7iWjYf' +
            'IeBzWT85/7izEcVPxXVISr+CewIzD41wW70Ip/4YeCW/saMQIYhWF' +
            '/3Bb0GavY/B3Q1MCCgnZm344vio7N6WnwpoD1ftiLazszvYOE9/f1' +
            'hBzPPi40DeonDvo07KfCcwf35fF5YWFiuIyw/hB2pIEfIyX3ihf16' +
            'dqYQUOiXrKnBL4pEwrwoeYwP5etC7aypE5ulRNdOG5yHEGCwzRvF9' +
            'XIITmz66dCs3u0tfJvZRHhPFqzeJpwXsmwqqoKJ3d0n8NLysbEqKp' +
            'CNEquPQPCPfXznOVKH3RIiJS5tp766aVZ6IMOPT4iMjHxzK3qTsOO' +
            '0LgadJhEJvBUyXy+Zt0wsE/NFAq6Azw/WB3WJk0/Ikz+6caFtDK80' +
            'igtyoi5Mt4GarXfAdwIVh946w1odf4VCJqfE2+I01Kv7Vv7YQtkii' +
            'qNRK6uTRtAyZpMpQk7aOcxxfHr7IAkRmIlMKmnokUL7oBdYLGZISE' +
            'iz+JBwOcmbjcvQMb7Mle8eaj0yf+jh/bvGtUuyBIhqvOAA4c4QHIx' +
            'yd0vxp1/aumB5B/++mToFn15Lp4FpeHkpijKsrWO4x5dPOjG3T1kU' +
            't62J916c33vLcNpPqi0Cg3JvEsK6c2jN9yU+PAqG7omuviIK86jRa' +
            'EAOF4Wz757aPbO5D5eMKbL7VQkvrwWwdkh88EUMChG+9HUrOXh4eH' +
            'gSCFKJxGiMyo4NbWmRtYrhdrLyuyfIuqbr22dGt8yy921TAAZwetk' +
            'XB0an+guJBWFskeAVVyoaqNk3BxgwuAn6L42PlEbB4bgcjtLHy1/t' +
            'q/GWyQQsBvHV5XTgscuk0tYWSbMw1v0Lh2cU+rQtzOExKFW6/3xFN' +
            'CEkR8+AGf8yV8EkopPjrGRiw8ox+F4i0VOlUuUkWkAI25SUqU29ys' +
            'dknlsw8ObOnx5eOPjnsycn5/bOD2UVhnO8BIzqTx05YhQZAfyil0M' +
            'In881sPJDWEov+csmCIKGXCYrzLAVRbCPLxpz+seBEB4DBJ6xNuQg' +
            'feXfeUciiPtz6ou4Dzgm/MCQK//UfRXoXwDahtRZbIUIgP65lfLmj' +
            'h8b6RhYlFtxZNVj0uBKXC6ncYo1REIsn1h8fGqrKC9yoJAIZOPfbT' +
            'uCbYBvggLVBwXF2cyNk6LbFDVOChbXvZ4YPCvokikmuoVFbpASs/T' +
            'M8bnylZ381/YKX9vf/tuAuBW9YhZ1DFrYWrXz44Rnz55OaiI3+1Is' +
            'MUYioTa52kDNvjmclw2D1fIUh1nKAu6MgZhvMBjyrdrMIEaSlt4mh' +
            'tsjN6q0sMCXi689cgCPgolT8Qjwi2eXfrZm9jijN9lpaR4ezrVEMD' +
            'wP4O0wO+Cev7bXXF47FVw4J5ipUatqWRH9a/XSw7kg+S+qwyErKlS' +
            'KMSoSMpQ3Gz+qkfTqrsXnfhl+bFLRvbP7nz198r///e/J7cun53TP' +
            'CWYJqJhgnX/1OIkcaY6KhGw4JEV8c/ciUGHIIr+PokZfApcD9V2Q7' +
            'iiMYB+ZP+zswhEtjVw5C5edaOGwWFUoNxGPJeHeqhp9oZSdkwIRgk' +
            'DA06gUPo/n4+0FvNcUHWU2m6KNUVGR4RAt4Z+RYSFhOo1GRGugrjq' +
            'PGTcLY+tEnqdmdtw/IFTGxKE83FLjLBTS3/tx8LhIJKLVYrarqPPK' +
            'fO+d2tnOxIMuNUk0stms141rziwJ8tNsiim2KkGBwhzFqWkTGisWz' +
            '5ncxKSke76i7JRTiioUitxEE3LK3cDcPjT298cPT83tc3J2T7Cuh9' +
            'fPP7x09MH58nund989vgX5j5Pbx2XLO7QuEwv5L0vHDdTsX42/qUN' +
            'BoNDrg4Crg7OXNGsi59GMYcEJfjQlF/9xhnTXuIITq789tmP1/j27' +
            'Fn43Yeig/gIqtsalQxgmi8nMiwv3xHpAgjj109BNqxYDh6HgUf4yl' +
            'j7ALzgoMDhIBwYJhtiyeV4yUP0t81d10ghp2Oz4GDq16lL5i2bBpM' +
            'GeQcX4a/0M+kBDoFbjLZEwcNjXqdKMx+PCwkJDpCQI2tv6hDy8eHh' +
            'eqS+ErAHJ4tUzRx3Yv+/OrRvAN65v/f6LHFlJJEcXoK2uI5xHEyFu' +
            'jEiXXN/2g8mHkq2vOW6gUB48HjcnNR749oEZ3c//+mVHC19CxzZJM' +
            'omFgipzCvFWp5T069a+JNGAb+BNFnf351ScyaCLRUJfH+8Af3+DIT' +
            'g62hhvt2YnxJQk6Dvb+KkBDIOUlOhHyw9lQyBtFMQAaQY/WUGMz3J' +
            '9e5Rk/gsa/0pUHDMONkiI2XrGo8vHBiSJCFiP9EC6n0b9Iqc4vQn6' +
            '3N7M7+EQPLh0bEFLpZiOLQhlwcew6NcLaDBNNBoVsmRxgh4MQy8hl' +
            'hm5y9qpT8zo8OjGhe3DE/MMzNQ4KxFbS0ZD6hYCiS1KDIFwN6XA69' +
            '658sPjsjpaeMESIjzABR0MBzYsvXvn9h9PHv3vzz/g5//9789b+38' +
            'dn6foXuDQqrxrNOMGatatnhwK7J1GpWbYQsl4jyYhzMm9G0O8HdG1' +
            'GNLonqG2O0fWb+im/SRD2tMhBEkOEQ8yLDxhHhVX/QtgCtRqFfiRm' +
            'IYB/n99x09XLl1YPvfrBXNmfNk8sL2J1yKaWxrFLY3klBk5feNFez' +
            '5vdnnd9Fw9M9GPrgsMxNQ045Cy6XRaQIB/uiOmhZELn4xUkG0qyvB' +
            's1Yj+3ZvHyITUOo0V+iaVSkoTgkJkpL0jEi+tmgDyEOKVDwc/uG93' +
            'cAEuBbNhzmc39y774/cH+75p81ljNTzM6qdzoZPI4i3afSTQlfXTg' +
            'BvDeH29q+oUYNEMBj05wQF/u21U7tWt8/rGC6UMXEFyjFQsQv+z2Y' +
            'paZ+zS4sLFXw/5durXKp7nK93RmSNePex/AvE4LBbkp9bPz241Q4R' +
            'vaZW3N/MgyDcL4+QZWG1ieMPSJLOKfX7rZz0wteOlTXPAd36/f+vp' +
            '4wfwH7ePbbm2c+HlzXMvlW/c9uP44cXmIAnlZQvI/w6eBHyc3ULAe' +
            'IzNll3b9B0YG9rDLTcxuvL2a8WlFUlxuqmJgXlu9eSDo9MivUigUC' +
            'xmE9GT8No74zxugsMO1LdxCGt1R83BcdnnF31y59CaZw9vX137DTg' +
            'plYByqKkiDu1lSQ2CmFKpLE0MjvEm7xhih9Q/rZmXVuCJx7hD5m2X' +
            'FpIRpQQ3X/3zd5f3rX5y9yo4+J9PH8PoBiWLQZ5nWvQ0QtWjJg3Ur' +
            'Fv9ORSkVEg6ZRY5j4weky3d/8vniycO3P7D2LMrJlxeM6mtmcejYG' +
            'AewVMgD8IPZMyMEBGPVXUl0Fndy2GzkHEeZh/KkbHpv9849/Dq6Wu' +
            'HNlw/tvPurWs3Tx+4Wr7h9KrJR38YdPzHYbdP7zv5XZcuNgGLhG6c' +
            'GM1iVN04c8ZbuVyeGmcCZsIjY2wqKjyTrT0CyieVHJo35OSutUvHd' +
            'uzXoxPwn1fSSIiNyYnxQKK2DTSBvmgVw6V5oiButCpuyiFhMB7uDn' +
            '8ueNCSNiqwmdsndv7Q1do0N4NJrmqHWAwalCY8h/F58osrxoVIiUA' +
            'nfLxk1df5TaaYrCDmwlYqSBNjsmViBq4wKVIhk1YPjxW1zrSDc3VH' +
            'Ni+d0SsTBGPtO8FA5hlUkk5KQwZeZz9BKhsQPXWBAQWJkc3D2THeF' +
            'HgIkMU2DI4/9OOIa0e2PLx1+dr2Bafm9S8fk7m9p//cEt9PG0k7Wf' +
            'gQVTpbBd82994z1HJiVrcLy8ee/r7PkrZqsLfS9GgO9fVctdYeIvG' +
            'zqSOIT8Hs/9i29yM92B484RBD8IuHBgGZw2Fnp8ZDQC6f1gWkX2MD' +
            'U0jFZCRYEBN6HYUCQUMiEeek2JO1tNnFPrdO7bm0euLlbQtuX7/88' +
            'MH9Z78/vLxqPGQ6MP78WAOLQX9ZI3K5rDAlKlZF3fd506sbZ0KG5Z' +
            'IxLCK6zOEfbYwUcZkEjDvM1JCPeoAxXFk3FSLSk1sXT83skKVn4tH' +
            'uTew6Jq3q0daGaLYeHcqtYoPAT6PJDGL68Qkbu/vfPrrp9sWTl9bN' +
            'KP/E0TSMxfBEQUYuzrDEOWIjgwNCA3wDfKUCNr06G0Q2KIXCEhsiB' +
            'gcni+8eWXdz1y8nvine3E07qYlicIoYOOfiNqpLa6c9/f3Rk/s3T3' +
            '3XqSSSDYHRoqQE6XRV9uVhjKC1tVptUaw/BLQ4DXVFB/Xpub1AGtw' +
            '/tePJzfPACkDVburuD/IqXKepJUQ6mwJx1CdRurpn5P2LR0dnysAg' +
            'g8TE7MwMfsUj4lBwbQrS5EwcZNsb2+cD8TuydOLIJgGWUP8qe6xYD' +
            'MZmMcEfziz0OTW7Ozw08EGFTPzCYJ1fB7wXRHobE+/ehaPgYvAMW9' +
            'qVSl+f6ocYnSXdstOTBiWJ7ty8NjhZEqoPqHWdxx3iszEitHdGQP8' +
            'urUAD1jHhQw+lXFo7m6R3vHDDoNgre1fcOb71+PT2O3r5T8736uUQ' +
            'Ng1j21XUAKEnPAcwURoBRcQh+YJOQKl4BLMvBcwM7A38FKQKSBj4a' +
            'quS6iUV1lfcqDhm7AupH5zl9v4VMBeQW4vtaj6P43y8YGOQKxPi40' +
            'qjOFs/zb6+c2GvOCEEmaZJUSJE+r2GvgPHBNKSn2qFlL15SPzd03t' +
            '/KPWFFDClqff8iR/v3fjr/dvXIYN8kSsDKQpMpsaNXQhiQFfyUmMT' +
            '/KhAnq9s+BakE5h0kpaWmuiQiYU4LLInBz8sGqkwKxHy6d6BkY8uH' +
            'oLRgRQC44G5S7EZyUTPhmn27yo99ehQTjhr5kAcsympR8c3/uPRHU' +
            'ijU5t6RypIYDZKLiE9MVYk4OGxCLl2bsjW2CI4PqKRvckwEWfn9z+' +
            '3YOBnWbK0AHqgyBNmFsgem4QGy1w0rtuu7ZtPbV+xoYsW/gqFsNAY' +
            'ENr/2FmoGGNgYGCLaD4J5wHh68y8vvdPbrt9YCUEnD//eAY6DijZr' +
            'd0LIQkC/8mKj6aQXlrICIiZQi5r1zR9Qafwh/fu/NpeDYNKC2TE2u' +
            '0MMvJbWLRHcKBfrJqm4uJXdNDcPboB2r++e+mEPEUbE9dPyqnsmXg' +
            'cNtZqgl6t7KA5ODpVTMeVRXEkIv6LuIHFYoBetrL7wKM4PrvXoc/z' +
            'IhSklAB6SIihxnV+EFAqpbKrQ7q6j+nMqinNwtmGl1RFe9G+RqNuH' +
            '68clyNbs3JZcqiCQcTUxXPhM+Dp48eNPn1oz8Gp7YBLwEPQCgiQd8' +
            'h4FDAoEg4FwjlHz2xnFZemhOdnxKenpZmjQsMCVcF+Xnq1PEavLC4' +
            'u6tXECkNGwgsL2b8W8Tn1pVRAQxmNRhkD+1GC8M7htUlaOuhHR6yd' +
            'gEWSlLOYpNlk6mzjr+lnv3Nqz1eN5WI6tjg+yEshr1HkvgxOpgFBA' +
            'wTIjlE513f8PDRVImVg4zW0ovxsFhHzzZih++cMevrg1u4h5mgvck' +
            'xMNBZdQ8CnUinxDhvQlU0DrDf2LOsTJwIjL4pgR0SEUymkF5MI/2L' +
            'SaU0SI8FW5xb7AA8/MbkUYhRYkYZPAK+pfDqrXpv9e0WoHh3K7a+V' +
            'zMYVK5kgdq789jXEWAhZQA6BBUHeSU90cFjMV6Y05yJJo0Qr2OHeY' +
            'bYLiz+FYQJ7hGwFfYfpaOFQN85uZPShw/8qeYS5w1ps7hsKDgVsUx' +
            '+kqzzpTmWn0WhamCVErEdqAO3o+CYPzu49+/Pws9sXHzu079KlS48' +
            'fPXx85fjJ6a3By+A5FBilXFbNNBLZreOwC/IbT20VevPK+V2fJAE/' +
            'BxUfFhpC9kTKmMDIYIAFSUZwHOjMyWkt4fk/u3/94pKR3WMFHBI6O' +
            '8FE9fw714AAT4w1c8iYfcPMG7ohVy+L7Boei+H8W+cGStPkKFCg2/' +
            'qEXFk7GVQz5Ov0RDuNWsP1ImRfgEhMcNggaJ/5deKG3qHAXvxeXjw' +
            'WhUKJRMJmqSaHmnZyydj1Q5PABkL0urq8ZsIJiGbTxg4amyVL8acD' +
            'yQSp0jrBv1maLS01xRiqC1QpfKV8MYfGpuCpBDTQKgzq+ekd5DCPu' +
            'xtMKAxZwsD5i8haOUfEpeMw9bOxAu0z6LSsuCiguBu7+h0clSRj4k' +
            'Ai+Uq4ztxKJhEjI8J7JsqXdgm7d+XsD2W+Sg6hZaxKrVK+1ikvCNR' +
            '8Pi8vxQ5BY+sg243dSz6KFwH/bB7GjokxsqjI4lLHti37xAvP/Djw' +
            '3OKRQLSykqxUUtU7U8D5g/X6VtHc2cXej29f/ipPIaJhW5tFel2gJ' +
            'x73zzyI1LAqsiNnWZe3Vz88f2BstgzcEz5TaNMIeP84ZVFfzfKRZp' +
            '9/rB4d6sUzVKmU+aFsMQ0zp8T36b1rh0YlgkVBGCHjPXKTrRWXket' +
            '0kg1yeqcE5XdF3o9vnId8QfNEgY0VhrMzkuIC/FRCLgN5t4WbGxGH' +
            'jtF5Te8Ue2nX0tbRvJZJQVXqiDpLtTSPDwZHtvpSdvUOuHdi66PLx' +
            'y4d3r78h+m+HPzkEt2Na5cvr5n0Ra4cIhvMco5JzaJXrezh9tdR9l' +
            'hL9NiymDN715VP75wTzGydEBDgr30xBcABwsPCQqUkLxZuVrEvaCs' +
            'IvNe3zFnVUQPBE3wiL0rBolOeN4hYr2e6I0Yr8Dy36JOJTRTQyaw4' +
            'I9UTOY8ED4rFYqYnwJwR4K8g/vRLEDGIaBAsvj7eNbJo+EO5TNbaK' +
            'u1g4f9+/1abGG4bs0AmEdeo0yEGMpmMtMRYoxd5Y0/D1c1zm0dwdC' +
            'KiLqCG9dtaAH1WsHB+Mo5SypPz6XwGERgLzDj6rwN+dWQv7vV65gR' +
            'MyEuhKDNydWLi2QWDvi309mLjW5UWkrCIAZI8CRHhYT2SfH5pH3T/' +
            'zo3VnTQgM1tZpVo/DR77Gqc1nEonKc6OlL3tbwFV/nG6FIJGO4sQl' +
            'CyRgHeviI2JDpuKS9jcXXv78DpgZa1NAjGfU3mwYKUymbQsOayjlX' +
            '/rxI5tPbSgDkA9BekCCbiqWwYwAPhw6xgeDO34tDZHPs8KlZGAQ4H' +
            'WCwsLqxz0GqLZenSoF/AkEGJtFlCyIJGA5FzfPKt7rJBFQtRTSWKI' +
            'TCpB180gQfWHh4V0tPDObZi7Z4jZX+gJQ8hJsat8vYHwvLj4iSgyJ' +
            'r15VuK0pl7wWJqGshvFmyrfdwZ/AddA1riIaJ3I86dWKujSH4/vPX' +
            'v65Oyp4+mBjDGFoXs3/frwwb3yj60xPmSYYnABSEPVJcDzdYaggEF' +
            'F9j0LJ55a/lU3O79tarBWo35hadAvEJLNHDrwmsYGFsRb+K7rW79f' +
            '18XPrqRA4IVs6zBHgdG6/dV/OpWSHW/M0NF/v3OlnYnHJmFMEQbnA' +
            'MkkktVigoQOU3nvzN4fW/hC8AfmH/PyEm3IoVmzSS8mbukVfHJOTx' +
            'hyXmwYkM8amQmFQob27chalujZ06df5im4ZEzT+DCI7f/iJJZ7A/j' +
            '+mwAxofBwFY9QEMp6cvsy2HBbEw/UEPwVCY+ODAnqkeT1cxstKE1g' +
            'IxDngTQGBgSAN9X9K5zvbIqKjMwMYkxv7v3oxoXxuQqYo/RAeoghm' +
            'PBXKgGbDwnWRSnIX+TI7xxZD2kUNLtW/fc9XAg+YKWNkhyJWtqhmd' +
            '1PzOqW5EcH9hJtNBIJNawSQ3bQ+vll6xktjJxnj+/3SxACZwOnS0+' +
            'wMmh/z3U9Nkv/q9l6dKgXcL4+stiuBnn7Ubzw92unVnfyg/iG7HwF' +
            'MwMD/Ot4E7lCpFCy0xJhru9eOQsED/oDspTNpFcJO8jCl9K3V6Ji6' +
            '+clR+d+ZIdnEh1d+VvA00HERSrIwH8+yZCAWHh65wqIrz+ePb125u' +
            'jxg3uOb1t+acv8AyMceQYWPCUfDj7VYWIx6DWUH8SgIct3LEhaNqL' +
            'gavn6SU28OsfJgwL9Kz8Q6F6gP8IrfNi4X1qr7h7dcHvfsi3d/WNV' +
            'VBISd92KLD4QPP8+OQBxj0ErSIjoYObfPbM/R89sHcP14iClyfBYD' +
            'CQs6FWCH+3s0jEHhltgmmCyMhJtTHoN3XPOKZDJQkcg8IfLm2bPKv' +
            'IFwmm1mKuzbucxp8jIiCw9E4z80sZZu/oEAquB79Lrg97ZC+N1Bzw' +
            'eOo2aGRcNAXxoqgTixpYB5m8njMKikF286CBln3jJwjb+D+7eXt9F' +
            'GyYjAS0JDtJV4e2vBJiESqVqYxbmh7Kul69Z20ULkrlVDA/chEz8+' +
            '+wuTLe/1g9c4Ot8r4tLR0coyBS8R3ClktpIQSFjVCMd45fWyjvHt/' +
            'Z0CNU8QkqC42WVLvA4nMVsNkiI2/uFn5zRVi8hgm0VxwdJJOLKLLR' +
            'em33+G8h7pevJoV4Ah8VChIeECLHiwHDr5dVfgcCHiQNdiZyCJnrW' +
            'cVIqzpZLOmVGrBvZ5MSiMZAvQCwjg62pSg+MtCiCc/XghoWtlS2MX' +
            'BCnL6YDRJNcLiuzeTOJ6M5W/ulZnYHq/++Pp88e3n506ci17QuOTW' +
            'u9qI2qq40PZAb8Ol5Di3cg0an68ovzEHJ+ZvLIRtLbVy+u7xNZFMk' +
            'xm2KqxG08BmWOicKi3ZO1tJPftoevOzA0Oi2ADnYCTZY5NFW0M/SU' +
            'x2EVxek6mHnAl0oiOfnpcWDbwDd8FZJWdh+IFfvHZJ2Z18ehpkHoL' +
            'orXV7GNykCjUEFBOosvpYuN/+B8eWYQMyWADsS7ijB0ZsnQ0NCCUH' +
            'aQ2PPglwXQVYuSyvREpyXY36OqLLUAHjfoNbAHPgUzt8TnjyePjq5' +
            'fMKAgGvgeRIlhOdrlXYLv37y0sgMS5MF+gB544l+vyi58BYfDzku2' +
            '+gsIez/LPjW7u1VJNflSgA0Cn6xsQTBfwGRgcjcPsh4cnQpMXsXFQ' +
            'yRxzgv8rUIub2kWgaPdPLLx1w4aZB0mPlgkEr7kHR/IckpRajRyie' +
            'bM/s9z5XRPVJMQFojlyqbVEM3Wo0O9QEVJLnZ+fBjE85bR3Ifn9v3' +
            'YQulcVGmeFCHg8ep+5Qqxf11AnwTRqU0L1vaO6GITaFTK6s4C7bGY' +
            'jII0+6QmirvnDoGRFMYHIxz7r/5QKZTkOKSYZK844bXNs+8d33x1w' +
            '4yr66ZcWPwpaLe5Jcg2GUwiEecBrtrKJAwLNVDIxOr9dDqayRSTE8' +
            'zcN6PHiR8GZQQymmTEsZlVS7PCEwZG2j1WUBbFub7thzPf94JHwSQ' +
            'i6zAt7d5qtapK6kfOuggFLa2K4gj2g/v3ZvdKkVboQQGDWJzp8GLh' +
            '1nX2u7nrlzIjByhcszA2GNvLyAB0hIy8J8JCJXj82kF9dEIB/Hqpr' +
            'epbY5xjCQkJATOWMXDru/jBk2kayoLwXmbzkcuk71FVllqAQaNDQ0' +
            'MCBAS92HP/4MiHl4+fP3OyV5zAqqRMG1Cyqrvh8YM7EDSCRER4qvD' +
            'J1w0abhWZNyoyAqjd0FQxaMwesUIKHpWXZAIaX8UqnDXoiiM4Z9dM' +
            'W95OzaVgmscFcTmcFwtiMVERMiZ220dhZxcMsvpSE/zoBkNwjWuzf' +
            '5miCaLB9hFp5xaPBJkJmdpiMVc5olbvzdajQ1WGs6SYTUUFc93bP+' +
            'TS8rGQcyFFQqIM0gW+FvVFzvjFOYaniu/fuTUwWVSYWEO1DbeKgO/' +
            'tpejRKHjrV22Pze1r8qE47NYXNxzBcjQaDaSSwgj2jT3L9g0Ia2Pi' +
            'FUWwS6I4MDpIyt5sHDgLOKleTMxLMvt4yfEveQsk8v4IL0Vrq6ydm' +
            'ffk98efZUpLozgvKxwEmaV3nKg4kn332KZFbdQyBha+AvqgCwyoLv' +
            'HgkSrk0lIj1ylGVs2fBvGBjPNonJnqL/T8Mlf+9N61IaliBhENozM' +
            'ajbVUnkcucAn4xRZvJQd/Ykb7H8p8IeCnx5kqb+U75UlYWFizcDaX' +
            'jJlcoHh8/SzIWIYnKsqLDFzxfakbWTvATqkUclqcGawXpN+ZOd1Ap' +
            '9y5fWvN5P67flu856uWJ2d3u7Zr6eAUcVe7IDzEQHz9ev7PTwvblE' +
            'BXTv04eHc/g4KFByUC7K6KVcAnRUJhWU7i+Dz5o1uXejkESX7I6of' +
            'TI5yrWOnxyAbuzfI1E/IUwO1zkyyIFK1hXM9f4tDOgbzE4dG9mzCD' +
            'kGiyk+1VghWSRMj13Gw9OlTlr2YxmbkJyHnp5uHs+6d2zCryAYqIQ' +
            'bllJVrp1Uoq1dqUG5vFLMpNWTog7fzG79MCGXEOu2dNF/FgICHBQR' +
            'BYLh3aurK9uq2JV3GRzd3tubylNUqwgPeVTyw+MbVFjA+FgPGAIYN' +
            '845AwwMHAcYDGF8SHh+gDmXTKyxZsK05FEuNsZjkTt7az5tQP/UJk' +
            'pPykaBaj+gFXZKMc9KOIhu2XKHp05URJJBseCBBjiOQ1rkSBs6uUv' +
            'kBjwG3LP0vfvXElcADoIfz6oGQxtAAcGzgbfHWiw1ajUqvcFIigzC' +
            'CGQ0W9tf/XAUliDhljjIzAoJ+Py/k6VGNUVOMQFvBMCEdP7l6dnK/' +
            'gVRyGyUi0vdY0vcuoOLEsKjOJWUQ0aPDrW+b8+fTxs2fPHj18cP/q' +
            '2Zt7ltw7sfX6yf3LFv+SEMhjUQive1zEeZLZbjVDihyaKrl7fEuug' +
            'UX3RKfEV61d6bwdkJqcCBT0+NLxh6e0jJCTgZO/qCWFCFUupyg54q' +
            'NE4f3zB3P1zAQtckWiekp6cbukNCnEj++5//P8Y9PaQGttrFIfb68' +
            'qLLGi1FV9NluPDlUZSJ4NDEjS0hVM7K7eAReXjIxVUbEot4JQFhjz' +
            'a9UIcqbg3s0c+5dN2zK2KQTAyleQKo0XeX1bRnrat829b58/0sXGa' +
            '5pielGUCRrx9fHO0DEgHv7xxx89Kzhk62R9dFSEXusb5iePDPQNVs' +
            't9pHwWjYSp9UaE89h8qUmqFRAgTy1uo/Zi4c3mqouNYCEQ4aOiohr' +
            'pmJDxD32Re2C4BSIwGe+RmRzLoNNqdHlkxcxfC7o4xpt8aGzmufKt' +
            'cwYXr16xZPPInLsnd2zr4a/mEZD96yTzK/evoalgfZCKR8gPZQFLg' +
            'SiarKX7KxXOX4KsB7nDZjEl+tHYJHTvOAHQoXVd/JQV95FLYzWVV2' +
            'vfd8BAAvz9gWkbpMQDw8yPrxwHDf7//vfn/wDPfv/j0R0II48f3t+' +
            '/d3eX1EDn+djX2j6CiZCIRaVGPsTz8jGN9vQzCGlYkMlV/Ne5Y2Wz' +
            'WiEvb/w48+rOhb3jhWAelVeenYVzu8cK1/SKOP3zx+GQkhKN1WuLg' +
            'XWBtet0ujKHhkZA9YkX/vHkUe84oRcb77Dbql+iqfdm69GhKj8fBp' +
            '2elWB2ko0HZ3ZPKfDikNAgc5AITHq9t2oik+6nGtPSeuXi2dnFPiW' +
            'NbDWLFGTvgNsmP3XdV52P/jIyP4QVbYz6ewHHw90QHATpBrL2jZ0/' +
            '29W0jlahv9aPUHE/z+Ovn7pYS8XmlCZCQbYpqde3/TAhVwHUN0Dzd' +
            '7VJ5DYoGsViMUHD5oey4UvHZEl/v36mzIi8MbBVdFVzqtK4IThYK/' +
            'CMU1Mhhj+4curu7Zu3L568vvMX4DYQyYGwFcXp5DLpK6M3fADkJA1' +
            '5AR/7z2dPwAYGN1LKWYhqw6BRQoEgNd4WISeJaJi+CaIbOxYcHGFz' +
            '7s4naGjBwfq3UxXt7QDUlsVsAhLV3c6Hibi28VvgGI8uHfnj8T3kj' +
            'mcFIIQA+zh65PC8Od81t6rEdCxkzzpGj4q4pAU2Dury9oGVQ1IleI' +
            'xHeqKdVKn2pnPFIDwstKOVv6SN+v6V05DgYKIRXlfpmjYOi42Ojk7' +
            '2p51YNHrrR2GRCrLRGFVZ1DurQnHYbIvFUhzJoXmi0gLoJ6a2PDqh' +
            'QCfyhGAF7ly93/XebD061AsA2dBq/TKDmKDl93ykP/djf1NF0VcQP' +
            'v+i+jEYcHSYfkZ70+Wju3rFCa0WU42iG3SU0lsxpEXK8V2/rf7I1j' +
            'k1UCH7+3VaMMywYJ0n1h3k5MOrp7vZBdmN0qvXP68LkCcWFABPLD2' +
            'QcWP7/E2D4z5pGe/NRnSTe8XYqRSKWq3OSnGYfSngle1N3Kvrp23s' +
            'ppUysKDUYu3WWu5UgkfDhFLwSJFteG6QCh+cLz8xrVX/RJEPRB2UW' +
            '6toHnKVuw6rQ8iQDUEQqyEjPLp8bNNAy9ejB0Mkx6LdFRJBk2STgo' +
            'UDdvFpIynwdohRyVoaqFERHZsQa6WSyR+GQnH7awc22xEOHGDfkOi' +
            'j4xvD7H+T77VrVKMLqyeBQnly6yLwDeSeOLCPp09uXDqzdfn306ZO' +
            'bhQmgV/B1aEoPDzqEL0OZq1ZGOvpg1udrXyLL9WAHLL9xzFsXWBAx' +
            '0TV+MaK+7evrevsB0Gj1OEnl8sqk38gojnxxoxA+r1LJweniDta+N' +
            '4yscdfxzKBJZJJJGDsBbmZbWN4GTp6j1hB+cfWZw9ubumuBVZQVHO' +
            'h3fpvth4d6sUjQqoBx1shXIPFAiccnSllEFGgoB02y+teQ4YPQ2dy' +
            'srMXf1pavuSbAXmhamXVMvVOgPYJDlB/3S3jyrkTozJl2ekp1Eqjg' +
            'EekUyk0fEJRJPvmgZWrxndrZFQxSK++lFcd0FSQxltEw+boGZdXf3' +
            'WxfNN3k8bikcu87hwmLTDAPz0xFoioLxcPcmNMtuzc/I+ub/0eeJe' +
            'TbCjksloMEY/DOawmDAo5B3tlzcQnty+fmdMNgoaEjoXAC8EkJMRA' +
            'qNuhAvgWvb8aAlp+CPPalrlXDm2eP/MbaBnCRYeCJNAm4XLSzObeN' +
            '7bNu7BweMtoLqRjGFpBkpHH435I1QVhLCKhoIXNJ9fAvHd696AUZF' +
            'V5eJqk1Mjpnyhe2zv86Kye17bOu39619M7V5wB5MnjhxdPlK+Z//W' +
            'XY0cnBvJgrmvnHvDcgv1VAioG4gaE6CXt1B/nBaqk7Bd35YBpBAYE' +
            'tM80DksV3zy5e+9QS4wXpYmBpQ/SVU6CFZJc1gqpBcH5/cGdMVmyF' +
            'qXFdE+0868IeLxMKk1IiO+Ra5xeqDy0cNzlbQsubph15+ROZH//04' +
            'RgCRHSAbPaKwsbotl6dCgnIHYplb7NwtiQXvcNNp6c3jpEihwXKbN' +
            '6SSXi1zVI+DgEulZNMzfNGbXmi7atC9L5XHbNByMJ+DhL1IKPS4+t' +
            'nTc8Q6EP9P/HXR43Nznbs4tNkBPMPLNg8OWL5yeNGsijYPBo5MTma' +
            '3UKPuzNIwOXyw1mnftl+KN7t/bv2QUebZCQ2hQXwOw41LTxuYq9I1' +
            'OOfV0CTOOP3x+UD4sJkZHgIaQl2GupGw9/DrEuwxEFJKFnrODukXU' +
            'Xl4z8LEvmw4ak5wbKyGw2VSn9V3s/lVJeVhAjHajLT4Mf37+9d/dO' +
            'FZcw4YsxTUJYeQbmxu7+t/YsBtL+SYYUXAO6B51XKX1f6wLXuw8wO' +
            'R8veZ801foBtosrxtlUVC4Zk5OVGR1hKGmeP6JtZr9E8eQCr80DYk' +
            '7O7Q0B5MHpnRCunSsep8t3LJ8xevSnwxP0Eki7ZDyqxjdTwB/5Sjh' +
            'gA5l65uU1ky7uXjFv5lSIw2BZeCwG5DNyVy5VNyJdcvXwlgNjsxL8' +
            '6BYlxWSqOpvQeIC/n7PiyvmVX62c+VmACNn8AurPYTEjI8LbZFn6J' +
            '4m3TOl1/fjO3R/H/dRSuXLK0IM71t88XX706+IYb0pxYgj3r6tMDd' +
            'psPTqU2197DUB0IZq1juGCfuyXICThPFQ8Asir6q/BeiWQE/ISUbd' +
            '8+55lM37sEZudnV3lRvCL72Ux6SXN8tfPGrVhcu8OzdKrV0wFydk4' +
            'DbkfvX9c7t3zh8+fPf3jzMmFNrVBTpPzGSwaiUjAgcs4S1zCf2DRK' +
            'HDXGlkq8PnSwqZtTdwj0zuAjd27de3IgT3bt2xcPaZs27hmt8/sP7' +
            '9szNFvyu5dOHL/7u2bB1bNK/WVM3ERcjLkl1rWhJHDonRK0/hQeP6' +
            'zi31Aic8s9PEXIJc1gTYkOkAI17aBUh3gIG3zHGmBjGNT2/z57Mnl' +
            '8g3lW1ad2rN+zxDzkS/z7h7dcOfAr2AkAUJPiEvR3uTIyMg6kpn3C' +
            'JDu1RLmV31Lrpw5sraTn5yFK40WyGVSmG2wTIYnOsab/FHfviNzVT' +
            '0cgq/yFFv6hh3/ruuVDd/ePbbp0dVTjx89PLlv85Ipwz8fMzIvISp' +
            'QyuBR8UA/Kle9QyaOhG6VEwcp48jEwgfXzu3avlnGwEkZOFOItiQz' +
            'tp2Zv7Ct/71b1/d+HJvsz4hSkKu8t/p5V93dDYEaaApC0PE5vbas/' +
            'RWEDt0TFaYWFednd7ULFnaNunH5zOHJZX0ThH58T5Ab+UkxQ3u02b' +
            '5kxu6hyPIU5GtvqajqamfDNFuPDuUsGtzSLAExfnBM+qHRyRAx4GM' +
            'FCeHIsZbXZ78wO75ycf9cw9GNP88s8bOaomouU+DuLhUJupdm71v7' +
            '04+9k1Li7URC1Vu68N1AUEcM6Ln6k4L718/fv3j0+vkT+7etnzN+2' +
            'PD+vVq2KEuOtxtDdaGB6hCtd6hSAI8L5D9MvRcLB7nD/Z9NAc8fPa' +
            'jnjllD7108dvHXL058237/yKQ9AyOXtVf3ihOafSjA/Jd9PXDex62' +
            'PrZn9VWNkc7OtiSd/VTV1NhlT1shs8qEcn9Hu8Jg0kBI4tDuXjG6U' +
            'aIPU8LpsDebIpOZ8lik9tXTc1Q0z9g2K2D0g4uqWeQ8uHXt87fSDM' +
            '7v3D46MU1MJGHcYTkr8a8el9wIwHhoB/fPPPx9eO6+nQ5CjZ4aGhF' +
            'ROYWBjEAeEVGxyuO9HnVsOTRHDTI1Ik6zp5Hf4q8KLK8ff3Lvszrn' +
            'D54+Xr/n202+Gde7RtbMjwt9PxhUwKWQC2vlKTTTKPUKJ1GXaOiDm' +
            '/tl9kC727tqxcsWy2Z0sv3QIOrZiysUN380q8oHcESYjQQpg1rShB' +
            'n/gJ2EkaWldbHz43isXz/06f/rPP8ydPbTlor4JZ3atPL/6m++KfI' +
            'EABAqJzZKN/n5qNp3sL/ScOOHLFX2sVl+qkIbVVBPyDdVs/TkUiDV' +
            'jRJjFlzImW/r7zQutYrgg6lMD6CDuMNXKC9Rp0t3dfLikT1slnju6' +
            'f3SmzBIdWeOSIMJFxdwxQ3qfP39+WnNlZEjNaR1ZIvNEj+7XceeyW' +
            'Yendzw2vd2pHwefWj39xJ6N+7ZvWDP3y0UTPlo0+ZPlC2atXfvbiu' +
            '+/mf95n7Fdm7RqUcqnVK13Cv/HJKLHD+n26/C8ISmSzCAm6Ah4IPA' +
            'k8Wh3MR3bI9+mExFJONSunTt29o9A9kORl/XU9joDN6RSh3t2fPS0' +
            '5j73bl93XiMCzdI42Szk8/5duTwIO50b27etWfxLKyVoqx/KlHsXT' +
            'TpycP+5QzuPTGkFwc1ZEbd5YphQIPiQljUqA4b16YhhU8aPaVeSr9' +
            'f5v2yRDfg8EYeSMnGpUX59OpQMT5UUhrO72QXTmnntHmI+MafX+TV' +
            'TzmxfenjfjlULZk6d/HW31s2S9CLkkmbFxgHMdfv8pJVj2z68f+fK' +
            'pjnnVnx58qfhJ+b0PjAibkITRWogQ0jFJGjpsXYbg0Z9Wb01aGRQv' +
            'z7L+9ge3r56af2MY7N67p9QtG9c3vZegWOz5clauoCCKQznxNrtfA' +
            '4Lg0LmDnQB2MmQXh3bmnnNEiP43BoSdAM1Wy8OBf9ikgllRc3mFPt' +
            'c271kYzctUDWkiJDD8ibr85AL+rYp2LlqQe84od1uw2Fq5hsSBm72' +
            't1MPb1oEbFMf6Ofx8l0bSA3dmyd+U2boZOU3DmGB2AeHAm42IEn8a' +
            'YZkcIqkq50P7AuEG/yzZdMsf28RCV9z4RoQLJ2apXya5xchJ2n4BK' +
            'M3uczIbZIUHR0RImEjr2YAUbxgaPNLm+Ygb+CNt7y491oLgP51zAj' +
            '5dULPkigOnYBqnhgulYjreGu4RkC8aZ1i+KK1fWQj6eQvR7eziQNF' +
            'xJ++6A351KakELAexRFsP436A1vWqALkHCYOxaUAXX3FMN0rAgg4G' +
            'gT/2CBpt45th+bpmoWxgKsXVhyGbB3DA1MckyWbUegzt03wlK4pow' +
            'b2yEmJBWMAZxjcvvHSz7uMz5WB8UA2MXqRFUwcGY9cIy2zKEJDDGS' +
            'SZy2kzpnExw7ssnJcu1GZUrBP4K5+fAKfgiHhUUBE85ItaqU3iVC1' +
            '7D+kFUjlfBq+xrLJDdTs88+8sUPBo+vbqax856Z9M3qkBDCQ8xuOo' +
            'JddnKk7YMY/HtCze6pfSLC+Rr7hXkE153w3Y+Hsye0KUiuqY9V+Js' +
            'pdzsQXZif2ap7YycZHKqvzCMDV2SSMkkuIU9PamXiNU6xh+gA+6xV' +
            '1Y6ApiI0wBYFeXI1CIOUx6SQ8roIcwI8PG//DJ20vbV+UEkCzW2u4' +
            'iFojEE9PCx+YE1icFe+tkL75dVR4GJiK+A7uwCJhQJts+W35/nGNw' +
            'QtsSqrJZKrlvPqHhNc+Pe7hDnGVS8aEychF+dl9msU2DWP5cgjwJ5' +
            'CL6Uh9ISywyjwDMyU5kU7CQswnYj0yglhDuxQVR7KBZMIn4Z8tjdy' +
            'k+FiZWEh41UFrJyD+lCWHfVJqidNQgf/oxMRm4ezcRLM+wI9Jq+3g' +
            '5SvYbMM061YfDpXoR/vmy8/GdW3cPV2XFylXeSvq5RY2OCLDE03Gv' +
            '5Stg6v26NIhUUvzEjAgOL6ywedMDI+kFY2AqFOwg5XiYLVMp5Kp5Q' +
            'IJl04j4jCveI/rP1p78VMZEEinTfxi6/dj4EkG64PqflAWhknBI5v' +
            'XL46FvyHcK16NRyTgwtTir4Z0vnL58o5P00DzZqbEvewavgsvANOB' +
            'reDtMnA3CcWgFIVqvcL8veFHr5arZHwmlYj+60aDR4VmQT4ppel9h' +
            'ZBeJTwmiYB9rfrwIBVoBDTEHLBMrZdQxmfRwPpf560cb7NZt/pwKH' +
            'Bh+F0ph8KmemLryezr1HOkkpLHv1gHcHd7XqfOWYqquvu/CUJlpGF' +
            'DBjdKtHKY/7F7InVQZZIe7Uo3zBh8fuP3fROEZWlG6cuv4btQI/5h' +
            'LbWWL3v+yTcwpzdv4W02W7X9f+VQDder9w6Qqkg4j3p/hdBroeLwP' +
            'y0jOW5m78zrl84u7xLc3SEKCgz4kM6Tu+CCC/ULPA6n91d/2qXg+O' +
            '51e6f1AL2ZkJBAefkhNBdccOH/OFAoD7FQ0LljhzXTh57djNTkL8x' +
            'J4XM5H+rGqwsuuPCGqHgtCCnOHDG9X7MrF88u6xnTNTNcrfT5sDde' +
            'XXDBhTcBBoPW+HoN7dn24Kal+2YP7JsgMkXXXL/aBRdccMHteeE1R' +
            'kFe1sLPOpzft/bLXHnTvEZIdSmXQnHBBRdeAhwWG+yvGtuj+fkTh9' +
            'aOzO+ZE6FR+b5WvTUXXHDh/xQ8PNy5HFbrVi3XzBh+Yu3coSnihPg' +
            '4MtG1h+KCCy68FEA2DP7K8X1KLl28sLRvXPsm8VKxyLWH4oILLrwM' +
            '7u7ubBazuFn+qhkjjqz89tMsH2NE6IfxXgMXXHChgYBUeVV6jR3U7' +
            'eypY4v7pbZqmlXjVWgXXHDBBScgPtBo1Kzk2EVf9jq28afRTbSRIR' +
            '9UiXIXXHCh3oFGoVQ+8o97tz22Z/OqkUXtCrOFfK6LbLjgggsvQ0V' +
            'JeXJqQuy8QU3P7NswvkBtivpA3tjoggsuNBBQKA9vhfyjltn7V83Z' +
            '/HW3ngU2hVzq2kZxwQUXXoaKd5USHDbLpELtzetXJxd45WSmU9/gh' +
            'TguuODCBw/na+hb58at/qzk2IopA5PFBr3OdYXNBRdcqAUoDw+10n' +
            'tIru7EtqWr+8V2zgiRS8WuFVEXXHChFqA83AO9hZO7JF8/f3x4mqR' +
            'xaiyDRnVFDRdccKEWALMQ03ELZk46vHJmszC2MSqqXupCu+CCCx82' +
            'MCj3IR2afDeqR+uS5q5jGy644EIdoWDhHf4cOZuI/VevyXPBBRf+b' +
            '8LD3a3Or39xwYUPCv8fBu29Yg==');
    
        TPH := High(TP);
        for I := 0 to TPH do
        begin
          TTP := LoadTextTPA(TP[i], SmallChars, H);
          for B := 0 to High(TTP) do
          begin
            Numb := ((I + 1) * 13);
            FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
            FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
          end;
        end;
        Canvas := TCANVAS.Create;
        Canvas.Handle := SmartGetDebugDC;
        DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
        DrawBitmap(Pic2, Canvas, 100,10);
        FreeBitmap(Pic);
        FreeBitmap(Pic2);
      end;
    
      Procedure OnScreen;
      Var
        XPH_F,XPH_M,TTB: Integer;
      begin
        XPH_F := Round((FishXP * 3600) / (GetTimeRunning / 1000));
        XPH_M := Round((MagicXP * 3600) / (GetTimeRunning / 1000));
        TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);
    
        PrintOnSmart(['Version: '+Version+' (by Flight)',
        ''+MsToTime(GetTimeRunning, Time_Abbrev),
        'Fishing XP: '+IntToStr(FishXP)+' ('+IntToStr(XPH_F)+' / hour)',
        'Magic XP: '+IntToStr(MagicXP)+' ('+IntToStr(XPH_M)+' / hour)'
        ],Point(15,236),16777215);
        PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
      end;
    
      Procedure Commit;
      begin
    
        stats_IncVariable('Leaping Trout (Caught)',(Trout_Caught-Trout_Ca));
        stats_IncVariable('Leaping Salmon (Caught)',(Salmon_Caught-Salmon_Ca));
        stats_IncVariable('Leaping Sturgeon (Caught)',(Sturgeon_Caught-Sturgeon_Ca));
        stats_IncVariable('Fishing EXP (Gained)',(FishXP-Fish_XP));
        stats_IncVariable('Magic EXP (Gained)',(MagicXP-Magic_XP));
        Stats_Commit;
    
        Trout_Ca := Trout_Caught;
        Salmon_Ca := Salmon_Caught;
        Sturgeon_Ca := Sturgeon_Caught;
        Fish_XP := FishXP;
        Magic_XP := MagicXP;
    
        MarkTime(CommitTime);
    
      end;
    
      Function IsMoving_F: Boolean;
      begin
        Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
      end;
    
      //By Benland100, modified to paint mouse movements
      procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
      var
        veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
        lastX, lastY: integer;
        sqrt2, sqrt3, sqrt5: extended;
      begin
        sqrt2:= sqrt(2);
        sqrt3:= sqrt(3);
        sqrt5:= sqrt(5);
        while hypot(xs - xe, ys - ye) > 1 do
        begin
          dist:= hypot(xs - xe, ys - ye);
          wind:= minE(wind, dist);
          if dist >= targetArea then
          begin
            windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
            windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
          end else
          begin
            windX:= windX / sqrt2;
            windY:= windY / sqrt2;
            if (maxStep < 3) then
            begin
              maxStep:= random(3) + 3.0;
            end else
            begin
              maxStep:= maxStep / sqrt5;
            end;
          end;
          veloX:= veloX + windX;
          veloY:= veloY + windY;
          veloX:= veloX + gravity * (xe - xs) / dist;
          veloY:= veloY + gravity * (ye - ys) / dist;
          if hypot(veloX, veloY) > maxStep then
          begin
            randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
            veloMag:= sqrt(veloX * veloX + veloY * veloY);
            veloX:= (veloX / veloMag) * randomDist;
            veloY:= (veloY / veloMag) * randomDist;
          end;
          lastX:= Round(xs);
          lastY:= Round(ys);
          xs:= xs + veloX;
          ys:= ys + veloY;
          if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
            MoveMouse(Round(xs), Round(ys));
          step:= hypot(xs - lastX, ys - lastY);
          wait(round((maxWait - minWait) * (step / maxStep) + minWait));
          lastdist:= dist;
          SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
        end;
        if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
          MoveMouse(Round(xe), Round(ye));
    
      end;
    
    {*******************************************************************************
    Procedure HumanMMouse(eX, eY: Integer);
    By: Flight
    Description: Human-like miss-and-correct mouse movement
    *******************************************************************************}
      Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
      var
        randSpeed: extended;
        X,Y,X2,Y2,A,Dist,MP: integer;
      begin
        A := MouseSpeed;
        GetMousePos(X, Y);
        Dist := Distance(X, Y, eX, eY);
        MP := Round(Dist/150);
        if MP < 0 then
          MP := 1;
    
        randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
        X2 := RandomRange(eX-(A*MP), eX+(A*MP));
        Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
        WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
        GetMousePos(X, Y);
        MMouse(eX, eY, ranX, ranY);
        MouseSpeed := A;
      end;
    
      Function AddToBelt(What: String): Boolean;
      var
        X,Y,Slot,T,Tool: Integer;
      begin
        Result := False;
        case What of
          'Tinderbox':
            Tool := DTMFromString('mggAAAHicY2NgYDjMxMBwAojPAPFpID4IxDuA+CVQ7hkQPwLiN0D8AYpNdNgZoiPDgSwmFMwFJEEYHTDiwBAAAIohC78=');
          'Barbarian rod':
            Tool := DTMFromString('mggAAAHicY2NgYChlYmDIAOJKIC4C4hwgzgXi+0C5d0B8D4ifAfFbIH4IxDaB0Qy6hiZAFhMK5gKSIIwOGHFgCAAAnhsJrw==');
          'Knife':
            Tool := DTMFromString('mbQAAAHicY2VgYHBkYmBwAGJzILYBYk8g5mJkYOAFYjEgFgZiBiBurK5miLfjBXKY4JgLSIIwMmDEgsEAAB4RA9I=');
          'Hammer':
            Tool := DTMFromString('mggAAAHicY2NgYLBnYmCwBmIPIDYHYisg9gXiUEYGhhAg9gTiWCCOA2IvILbT5GTw0Odi8PfxAepmgmMuIAnDyIARB4YAAPp7BZI=');
          'Chisel':
            Tool := DTMFromString('mbQAAAHicY2VgYNjNxMBwCIi3A/E+IN4BxCKMDAzsQCwIxSB+iDkPg56ODlAHExxzAUkQRgaMWDAYAADN9QVM');
          'Small fishing net':
            Tool := DTMFromString('mbQAAAHicY2VgYDjCxMBwGIjPAvFJIN4HxAaMDAwmQKwDxBZQtqOxKoORugxQBxMccwFJEEYGjFgwGAAAEFgGGQ==');
          'Fishing rod':
            Tool := DTMFromString('mbQAAAHicY2VgYOhjYmCYCMQLgHg2EE8FYl5GBgY+IGYCYi4gFgZiPR0dhjB7HqAOJjjmApIgjAwYsWAwAACBxQSE');
          'Harpoon':
            Tool := DTMFromString('mggAAAHicY2NgYMhmYmAoBuIKIE4G4iwgLgViLkYGhv9A+T9ALA5k8zFC2Gbq7Awerq4M/j4+QB4THHMBSRhGBow4MAQAAPbNCBs=');
          'Lobster pot':
            Tool := DTMFromString('mrAAAAHic42BgYJjFBMETgXgaEM8D4iVAPAXKfg5U8xGIPwDxJyB+C8RPgfgdEL8E4jALHjBmYGBCwcnx8WDMBeSBMDqAiTMSwDAAAK4jD/k=');
        end;
    
        if ExistsItemDTM(Tool, X, Y) then
        begin
          Slot := CoordsToItem(X, Y);
          MouseItem(Slot, mouse_right);
          Wait(RandomRange(20, 75));
          WaitOption('toolbelt', 300);
        end else
          Result := False;
    
        MarkTime(T);
        repeat
          if (TimeFromMark(T) > 3000) then
            break;
          if not ExistsItemDTM(Tool, X, Y) then
            break;
          if FindBlackChatMessage('already on') then
            break;
        until(false)
    
        Result := not ExistsItemDTM(Tool, X, Y);
    
        FreeDTM(Tool);
      end;
    
      Function FindFishSymbols: TPointArray;
      var
        B: TBox;
        TPA,TPA2: TPointArray;
        A,L,i,CTS,Cx,Cy: Integer;
        ATPA,ATPA2: T2DPointArray;
      begin
    
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
    
        FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
        ColorToleranceSpeed(CTS);
    
        if Length(TPA) < 1 then
          Exit;
    
        ATPA := TPAtoATPAEx(TPA, 13, 13);
        L := High(ATPA);
        SetArrayLength(ATPA2, L+1);
    
        for i := 0 to L do
        begin
          B := GetTPABounds(ATPA[i]);
    
          with B do
          begin
            FindColorsTolerance(ATPA2[i], 16279077, B.X1, B.Y1, B.X2, B.Y2, 1);
    
            if (Length(ATPA2[i]) > 0) then
            begin
              SetArrayLength(TPA2, (Length(TPA2)+1));
              MiddleTPAEx(ATPA2[i], Cx, Cy);
              TPA2[A] := Point(Cx, Cy);
              Inc(A);
            end;
          end;
    
        end;
    
        SortTPAFrom(TPA2, Point(MMCX, MMCY));
        Result := TPA2;
      end;
    
      Procedure NextSpot;
      var
        TP: TPoint;
        TPA: TPointArray;
      begin
        FindNormalRandoms;
    
        TPA := FindFishSymbols;
    
        if (Length(TPA) = 1) then
        begin
          Writeln('Only 1 spot found, relocating...');
          HumanMMouse(TPA[0].X, TPA[0].X-5, 1, 1);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;
    
          FFlag(0);
          While IsMoving_F do
            Wait(1);
    
          Wait(randomrange(1500, 2875));
          Exit;
        end else if (Length(TPA) > 1) then
        begin
          TP := Point(TPA[1].X, TPA[1].Y);
    
          HumanMMouse(TP.X, TP.Y, 4, 4);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;
    
          FFlag(0);
          While IsMoving_F do
            Wait(1);
    
          Wait(randomrange(900,1500));
        end;
      end;
    
      Function InFishingArea: Boolean;
      begin
        Result := (Length(FindFishsymbols) > 0);
      end;
    
      Procedure AreaCheck;
      begin
        if not InFishingArea then
          FindNormalRandoms;
      end;
    
      Function Antiban: Boolean;
      var
        i: Integer;
      begin
        if not LoggedIn then Exit;
        AreaCheck;
        i := Random(40)
        case i of
          1,2:
            begin
              RandomRClick;
              Result := True;
            end;
          3,4:
            begin
              RandomMovement;
              Result := True;
            end;
          5:
            begin
              HoverSkill('Fishing', False);
              Result := True;
            end;
        end;
    
        Wait(RandomRange(250,350));
      end;
    
      Procedure GetFishType;
      var
        A,B,C,X,Y: Integer;
      begin
        A := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
        B := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
        C := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');
    
        if FindDTM(A, X, Y, 564,250,598,280) then
        begin
          Inc(Trout_Caught);
          IncEx(FishXP, 50);
        end else if FindDTM(B, X, Y, 564,250,598,280) then
        begin
          Inc(Salmon_Caught);
          IncEx(FishXP, 70);
        end else if FindDTM(C, X, Y, 564,250,598,280) then
        begin
          Inc(Sturgeon_Caught);
          IncEx(FishXP, 80);
        end;
    
        FreeDTM(A);
        FreeDTM(B);
        FreeDTM(C);
      end;
    
    Procedure FastDropSlot(Slot: Integer);
      Var
        TB: TBox;
      begin
        Case Slot of
          1: TB := IntToBox(564,214,598,244);
          2: TB := IntToBox(606,214,640,244);
          3: TB := IntToBox(648,214,682,244);
          4: TB := IntToBox(690,214,724,244);
    
          5: TB := IntToBox(564,250,598,280);
          6: TB := IntToBox(606,250,640,280);
          7: TB := IntToBox(648,250,682,280);
          8: TB := IntToBox(690,250,724,280);
    
          9: TB := IntToBox(564,286,598,316);
          10: TB := IntToBox(606,286,640,316);
          11: TB := IntToBox(648,286,682,316);
          12: TB := IntToBox(690,286,724,316);
    
          13: TB := IntToBox(564,322,598,352);
          14: TB := IntToBox(606,322,640,352);
          15: TB := IntToBox(648,322,682,352);
          16: TB := IntToBox(690,322,724,352);
    
          17: TB := IntToBox(564,358,598,388);
          18: TB := IntToBox(606,358,640,388);
          19: TB := IntToBox(648,358,682,388);
          20: TB := IntToBox(690,358,724,388);
    
          21: TB := IntToBox(564,394,598,424);
          22: TB := IntToBox(606,394,640,424);
          23: TB := IntToBox(648,394,682,424);
          24: TB := IntToBox(690,394,724,424);
    
          25: TB := IntToBox(564,430,598,460);
          26: TB := IntToBox(606,430,640,460);
          27: TB := IntToBox(648,430,682,460);
          28: TB := IntToBox(690,430,724,460);
        end;
    
        MouseSpeed := RandomRange(26,39);
        MouseBox(TB.X1, TB.Y1, TB.X2, TB.Y2, mouse_right);
        WaitOptionMulti(['Drop', 'rop R', 'op R'], 400);
      end;
    
      Procedure DropRemaining;
      Var
        I,MS,T: Integer;
      begin
        MS := MouseSpeed;
        T  := GetTimeRunning;
    
        if not AlchFish then
        begin
          FastDropSlot(2);
          FastDropSlot(3);
        end;
    
        FastDropSlot(4);
    
        For I := 8 downto 5 do
        begin
          if (I = 9) then
            Break;
          FastDropSlot(I);
        end;
    
        For I := 9 to high(12) do
        begin
          if (I = 13) then
            Break;
          FastDropSlot(I);
        end;
    
        For I := 16 downto 13 do
        begin
          if (I = 17) then
            Break;
          FastDropSlot(I);
        end;
    
        For I := 17 to high(20) do
        begin
          if (I = 21) then
            Break;
          FastDropSlot(I);
        end;
    
        For I := 24 downto 21 do
        begin
          if (I = 25) then
            Break;
          FastDropSlot(I);
        end;
    
        For I := 25 to high(28) do
        begin
          if (I = 29) then
            Break;
          FastDropSlot(I);
        end;
    
        Writeln('Dropped fish in '+IntToStr(GetTimeRunning-T)+' ms.');
        MouseSpeed := MS;
        OnScreen;
      end;
    
      Procedure ReadyAlch;
      var
        X,Y,AlchBMP: Integer;
      begin
        AlchBMP := BitmapFromString(9, 8, 'meJxjYEABTIxMQDR7Wj8QIYuz8EkD' +
            'ya0bV9+6cg6IkKXYhdiBioGCv8EA1TyggbJwFHL7FRAJLDjEFtcE5' +
            'P768Qguwrvvo8Sui6zl/XBxiAjvlHVAWSBi8cmGmAAUh4gADQHKAr' +
            'XApSDqgSJAKQDeIUhV');
    
        if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          HumanMMouse(X, Y, 5, 5);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;
        end else if not FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          GameTab(tab_Magic);
          if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
          begin
            HumanMMouse(X, Y, 5, 5);
            ClickMouse2(True);
            SMART_ClearCanvas;
            OnScreen;
          end;
        end;
        FreeBitmap(AlchBMP);
      end;
    
      Procedure FishnAlch;
      var
        T: Integer;
        RTA: Boolean;
      begin
        MarkTime(T);
        RTA := False;
        repeat
          AreaCheck;
          ClickToContinue;
    
          if (TimeFromMark(T) > 6000) then
            break;
          if RTA then
          begin
            if ExistsItem(4) then
            begin
              MMouseItem(4);
            //Give enough time for the previous alch to finish
              Wait(RandomRange(1400, 1600));
            //If this is too fast, the fishing event will reset for our player
              if InvFull then
              begin
                GameTab(tab_Inv);
                DropRemaining;
                Exit;
              end;
              if WaitUpText('Cast', 200) then
              begin
                ClickMouse2(True);
                IncEx(MagicXP, 65);
                GetFishType;
                ClickToContinue;
                OnScreen;
                MarkTime(T);
                RTA := False;
                Wait(RandomRange(1300, 1500));
              end;
            end;
          end else
          begin
            ReadyAlch;
            RTA := True;
          end;
        until(false)
      end;
    
      Procedure FishingWait;
      var
        T,I,I2: Integer;
      begin
    
        I := InvCount;
    
        Marktime(T);
        repeat
    
          AreaCheck;
          ClickToContinue;
          if (TimeFromMark(T) > 6000) then
            break;
          if InvFull then
            break;
    
          GameTab(tab_Inv);
          I2 := InvCount;
    
          if (I <> I2) then
          begin
            Marktime(T);
            GameTab(tab_Inv);
            I := InvCount;
            I2 := InvCount;
            if AntiBan then
              Marktime(T);
          end;
    
        until(false)
    
      end;
    
      Function FindObjSimple_F(Colors: TIntegerArray; TheUpText: TStringArray; midx, midy: integer): Boolean;
      Var
        T,i,X,Y: Integer;
        TPA: TPointArray;
        ATPA: Array of TPointArray;
      Begin
        MarkTime(T);
        Repeat
          SetArrayLength(ATPA, Length(Colors));
          for i := 0 to High(Colors) do
            FindColorsSpiralTolerance(midx, midy, ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, 10);
          TPA := MergeATPA(ATPA);
          ATPA := TPAtoATPAEx(TPA, 15, 15);
          SortATPAFrom(ATPA, Point(MSCX, MSCY));
          if (Length(ATPA) = 0) then
            Exit;
    
          MiddleTPAEx(ATPA[0], x, y);
    
          if (TimeFromMark(T) > 5000) then
            Exit;
    
          HumanMMouse(x, y, 10, 10);
          Wait(randomrange(75,125));
          If(IsUpTextMultiCustom(TheUpText)) then
          begin
            ClickMouse2(True);
            if DidRedClick then
            begin
              SMART_ClearCanvas;
              OnScreen;
              Result := True;
              Break;
            end;
          end;
        Until(Result)
      end;
    
      Procedure StartFishing;
      var
        XP1,XP2,XP3,TroutDTM,
        SalmonDTM,SturgeonDTM,
        TC,SaC,StC: Integer;
      begin
        if not LoggedIn then
          Exit;
    
        if InvFull then
        begin
    
          TroutDTM := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
          SalmonDTM := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
          SturgeonDTM := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');
    
          TC := CountItems('dtm', TroutDTM, []);
          SaC := CountItems('dtm', SalmonDTM, []);
          StC := CountItems('dtm', SturgeonDTM, []);
    
          IncEx(Trout_Caught, TC);
          IncEx(Salmon_Caught, SaC);
          IncEx(Sturgeon_Caught, StC);
          XP1 := (TC*50);
          XP2 := (SaC*70);
          XP3 := (StC*80);
          IncEx(FishXP, XP1+XP2+XP3);
          Report;
          FreeDTM(TroutDTM);
          FreeDTM(SalmonDTM);
          FreeDTM(SturgeonDTM);
          DropRemaining;
        end;
    
        MakeCompass('W');
        if FindObjSimple_F([11181203,11248801,11379872,11644073,11709866], ['se-Rod','Fishing','spot'], MSCX, MSCY) then
        begin
          FFlag(0);
          Wait(RandomRange(2000,2500));
          if AlchFish then
          begin
            FishnAlch;
          end else
            FishingWait;
        end else
          NextSpot;
    
      end;
    
      Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
      Var
        h,m,s: integer;
      begin
        if not LoggedIn then Exit;
    
        if (HowManyPlayers = 1) then
        begin
          if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
          else
            if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
            begin
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              OnScreen;
              if SwitchWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(True, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              SetAngle(SRL_ANGLE_HIGH);
              MakeCompass('E');
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
              w := (BreakIn * 60000);
              x := (BreakFor * 60000);
              y := RandomRange(-Bir * 60000, Bir * 60000);
              z := RandomRange(-Bfr * 60000, Bfr * 60000);
            end;
        end;
      end;
    
    begin
      Smart_Server := 86;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;
    
      setupSRL();
    
      Loadvars;
      DeclarePlayers;
      SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
      CheckStats;
      CheckVersion;
    
      LogInPlayer;
      SetAngle(SRL_ANGLE_HIGH);
    
      SMART_ClearCanvas;
    
      OnScreen;
      AddToBelt('Barbarian rod');
    
      Repeat
        if not LoggedIn then LoginPlayer;
    
        if (TimeFromMark(CommitTime)>=30000) then
          Commit;
        if (TimeFromMark(ReportTime)>=5000) then
          Report;
        BreakHandler(BreakIn,BreakFor,Bir,Bfr);
    
        AreaCheck;
    
        StartFishing;
    
      Until(false)
    
    end.
    Last edited by SweDam; 03-04-2012 at 10:55 PM.

  17. #17
    Join Date
    Feb 2012
    Posts
    35
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Wow i'm really sorry for that! I wanted the text to be in a scroll box!

  18. #18
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Use simba tags or code tags.. just press edit.
    I am Ggzz..
    Hackintosher

  19. #19
    Join Date
    Oct 2006
    Location
    Netherlands
    Posts
    3,285
    Mentioned
    105 Post(s)
    Quoted
    494 Post(s)

    Default

    It's already a part of srl. Don't copy the procedure in your script. Just use SetupRandomTool.
    Working on: Tithe Farmer

  20. #20
    Join Date
    Dec 2011
    Location
    Toronto, Ontario
    Posts
    6,424
    Mentioned
    84 Post(s)
    Quoted
    863 Post(s)

    Default

    Wow gravedig much?

  21. #21
    Join Date
    Oct 2006
    Location
    Netherlands
    Posts
    3,285
    Mentioned
    105 Post(s)
    Quoted
    494 Post(s)

    Default

    Quote Originally Posted by Sin View Post
    Wow gravedig much?
    It is in the tutorial section. This isn't a gravedig.
    Working on: Tithe Farmer

  22. #22
    Join Date
    Feb 2012
    Posts
    35
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I'm sorry im pretty new to this, how to i add it? I find it in the function list but yeah.. theres the stopsign for me. xD

  23. #23
    Join Date
    Oct 2006
    Location
    Netherlands
    Posts
    3,285
    Mentioned
    105 Post(s)
    Quoted
    494 Post(s)

    Default

    Here it is. Please look how I did it. You had to remove that procedure. Also could you remove the above code or place it in Simba tags to keep this thread readable, please.

    Simba Code:
    program HeavyRodder;

      {$DEFINE SRL5}
      {$DEFINE SMART}

      {$i SRL/srl.simba}
      {$i SRL/SRL/misc/paintsmart.simba}

    Const

    //SRL Stats
      SRLStats_Username = '';
      SRLStats_Password = '';

    //General settings
      AlchFish      = False;  //Fish 'n alch method? (False for standard fish 'n drop)
      SwitchWorlds  = True;   //Switch worlds after break?

    //Break settings
      BreakIn      = 130;     //How long before we take a break? (minutes)
      BreakFor     = 10;      //How long will we break for? (minutes)
      Bir          = 13;      //Random minutes to add/subtract from how long until we break
      Bfr          = 7;       //Random minutes to add/subjtract from break duraction

      Procedure DeclarePlayers;
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        with Players[0] do
        begin
          Name         := '';
          Pass         := '';
          BoxRewards   := ['XP','xp','lamp'];
          LampSkill    := Skill_Fishing
          Active       := True;
        end;
      end;


    Var
      Version: String;
      ReportTime,CommitTime,PostID: Integer;
      Trout_Caught,Trout_Ca,
      Salmon_Caught,Salmon_Ca,
      Sturgeon_Caught,Sturgeon_Ca,
      FishXP,Fish_XP,MagicXP,Magic_XP: Integer;

    //Break variables
      w,x,y,z,RealBTime,CurrentBTime,
      BreakRounds,TotalBreaks: Integer;


      Procedure Loadvars;
      begin
        Version := '1.35';
        PostID := 841068;
        MarkTime(CommitTime);
        MarkTime(ReportTime);
        MouseSpeed := RandomRange(17,19);

        w := (BreakIn * 60000);
        x := (BreakFor * 60000);
        y := RandomRange(-Bir * 60000, Bir * 60000);
        z := RandomRange(-Bfr * 60000, Bfr * 60000);

      end;

      Procedure CheckVersion;
      var
        Page,NewVer: String;
      begin
        Page := GetPage('http://villavu.com/forum/showthread.php?p='+IntToStr(PostID)+'');
        NewVer := Between('Current version: ', '<br />', Page);

        if Version <> NewVer then
          ShowMessage('Your script is out of date!')
        else
          Exit;

      end;

      Procedure Report;
      begin
        WriteLn('=-=-=-=-=-=-=-= Heavy-rodder '+Version+' by Flight =-=-=-=-=-=-=-=');
        WriteLn('Time Running: '+TimeRunning);
        WriteLn('Trout caught: '+IntToStr(Trout_Caught));
        WriteLn('Salmon caught: '+IntToStr(Salmon_Caught));
        WriteLn('Sturgeon caught '+IntToStr(Sturgeon_Caught));
        WriteLn('Fishing XP '+IntToStr(FishXP));
        WriteLn('Breaks: '+IntToStr(TotalBreaks));
        WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');

        MarkTime(ReportTime);
      end;

      Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
      var
        mx, my, Pic, Pic2, I, B, H, TPH, Numb: Integer;
        TTP: TPointArray;
        Canvas: TCanvas;
      begin
        SmartSetDebug(True);
        GetClientDimensions(mx, my);
        Pic := BitmapFromString(mx, my, '');
        Pic2 := BitmapFromString(360, 71, 'meJztfQV4k9f7dtt44+5aiTRt0' +
            'zT1tNGmblShBaq4uwyXsQEDtsFgQ8eQMcY2nCHD3Snu7m4Dtt/3PW' +
            '/DWNeWUkbLgH/uq9cE0pNz3vPIfR95Xjc3F1xwoX7gDj/u702zLrj' +
            'gwn8ODw93CslTwsBhUPXp5A3UrAsuuPAugIDHR4SGdLTwu5dkknGo' +
            '+mIIDdTsuwYYl4e72wc6OBfqDe7u7igPDwwahUa5fwAGA6xAKBCUx' +
            'Os6WvmbN6wrbpzBJKLf2WbfNYAxED0JEh6TTcKgPN53W3ChoQB2gs' +
            'fjZFJJRHh4uEGn9ZFKOFQKHvX+ZlMcFhsRERGlIE8u8Cr/aVSPWIF' +
            'SJnxzD2igZt8OICnAnKLrIK9gmEG6wBZmychBvVunGDR8git6uFAF' +
            'SHIheur1+lKrN9hVuIzUP1HUs1l848zkAKEn6T2k4jAiLoeTHx/mx' +
            'cIdHp+/rZdOwcIFB/p7vNlIGqjZtwMUykPA56WnpaYECzEwpS/vsn' +
            'OYTZOjByWLz509802Rf2ZKPBmPeouddeFdh4eHB4VCjoyMaBPDsyo' +
            'pk/O9Dn1dcmzZpB1zhi0e3nRS76YtM6JxaI/3K9tg0OigIF2chtY4' +
            'hPn4+tludqGMiQvWB72hgzdQs28B0EGip6fdZmkaxl72/eRubUtAX' +
            'r2s0zDMwICA1jG8raPyjv8wMFlLt1vNBBzmrfbYhXcYEDSoVEpMTE' +
            'wbE29Iivj82ulXN848OCbz9ILBD6+fv3/17KVDW/fv2vrN+HFWJZW' +
            'A8fiv+1snQLqk02hZCWYWEb2yg/rM972CJSSHmqpWq97EwRuo2bcD' +
            'iPtikahFrHpwivjy8X2944QBvpIacwEMk0ImpyXYU/xp1w6un1fqm' +
            '2dgBvhrUR7vx+y70NBALIRCNptMLaK53xV637txcc9Qc3ogw1/o2c' +
            'Mh3DR/wrWrV548fnjv/KGNw9LamXi28EDcS3PUOwQ0CqXRaPJD2Wk' +
            'B9NuHfhuXKweOXWKSCPm82tj5f9Ts2wFQiGC9PklL29gr9Nic3uFy' +
            'UoheV2O4gwijkMvbx8rH5cjvnNgBQaPM7vtejNGFtwAwAzKZZDQaW' +
            'xi5U5t5P3pwf10XLZhTsIRYlmGKjwrwFxC+mzrx+Nrv/3jyqPyzdK' +
            'MXuTQugMsgvePWg4yLREpyWL1Y+G299Wfn94tQkIk4D4fVRCQQ3rV' +
            'm3w7A40kkYrLDrBN5nv5p6LL2apMPJUgXWGPcwONwJlMMKNb9E8vK' +
            'v2is4RFS4iwkT8+3320X3jWAF3h6EkIMBtCwozNl96+f39RNGyolg' +
            'ZKNj3MIeBw8xp2E80iL9h+RLrm46qvj09qAmzSP4CjEgnc8bqBQHl' +
            '4KRTubpJ2Z9/jmxU8aSakEVGkUx0shfxM10UDNvh1AB/k8bmFsQIa' +
            'O8eDKqc5Wfq6BpfL1qU4hgGzwuNxmCaHZesa9C0dHZUotvpRgfRBw' +
            'rf+k5y68OwBrweGwfn6aNrHenW3864c37h4YGaUgx6ppNquVSiY5H' +
            'QGN8jBGhsmYuN86a87/MixURsoNZvooZO/4AqkngWC3WRP8aOVT2h' +
            '2f0iJUTgbiZIqJ9iTg36TjDdTs2wFEA18fnzIjd1Qj6Y3dS+xKagu' +
            'LTCzkV48bIGd0gYGgTeaW+l7ZOCtWRWtpEktEQpdIcQGNRkml0sIE' +
            'A8SK4/OHHplY6FDTQJ7Ex9poFPILC4G4ERUVicd4TGvqdeb7XloBo' +
            'YmB5a2Qvssm5Fz9a50eMbnA69GtSwOSRFwyJjfJwmYx36TbDdTsWw' +
            'OwBUOwPiOQsWdsk/IxjXy5hBy7gUGjVvkYjIVKoaTFW/US4qkFQ3f' +
            '01onp2LQ4M4VE/E+67cK7A3ABFovZKNEqZeAm5Stula8qjuRo+ISM' +
            'JAeLQa9MucHYjFGRBIzHTy2Vh8ZmimnY4gi2TCJ6lx0FtHlkRHhXm' +
            '+DEyqnln+eGSIktbD7eXgoM6o32Ahqo2bcGIEXxjtiUAPqtY1u+yZ' +
            'dLGDiLKRqPw1b5GMoD0WJtzXzQYk8fP2hr4sV4k10ixQXnsgZEgzA' +
            'ZCcjqlXVTF7ZRQeosSw6BfIr+pwKpiBtRoOJ39w3a0l0L/1Fo8eFx' +
            '2O+sTnFq8+KshPkt/e6cPTgoWZStZ4aGhlR3kHeh2bcGmHQOm9U83' +
            'fJlnvzO6X35oawWUVwIetWXZZAV0Zhog4S4rV/kye+66sTEUrNcLB' +
            'S8F5zq3wFGBmb/4Y6vfgAKxcfHp5VJyCKigUVcWjXB6kuBgGCzmgl' +
            '4XJUPgxXF2u0KFu74jPbTm3mDYGkUG0Elk/6TntcFWAxGrw/qFSc8' +
            'tHDc/kllDjU1LSmBRqG8oVE0ULNvDcAilL4+vdL8to5veWx2L0gZa' +
            'Ql2CrnqvpgzPDaPN8AAb+xdNiXfi+GJTnJYP+CdFBTKg0omghbz4e' +
            'DR7/7q9n8EiKoMBj093kzGeTTSMW7vXzGpiYJGQOUEM8Guqjw2sCI' +
            'ul1OYZkrS0u4c29wnTkT3RMfExGAx7+gdLmR0dHpuqqObnf/wwf3P' +
            'c+Qd4n0hq77haaUGavZtgoDHW8zmltHcqwc3Lm2rLoxgB/hrq0sP5' +
            '4poZhDzq8bym3uWJGvpyf50f63fWx5pxSVcd5QH8lNHT/7786/zRR' +
            'gMmsflOKINY0aPnPXttPRI5ftyrPEtA/KmTqdL0tIldCzojguLRsT' +
            '4kNEebnnxUQwatcozB7IRERERq6Z+W+h9Y9fCeA0tM4ihUvq+s1EZ' +
            'qJSfRtM6hreyvebC+plxGlp6UhyZRHzD7jZQs28N4HvAIorSzRMaK' +
            '0BktYrmNk8K47JZ7tU+RqVQ0hOsAULP47N77vrIAEbS1KHnsJhvba' +
            'TQBzBRFpPh4+2l1wUYAjR+UhbktdotDofFCgWCAI0yUEIj4urq+Fg' +
            'sRiIWN87J+qJFzNH9O5aMad80J51OwtfDMD4swKSwWay8eGR/pGkY' +
            '+96JrRObKBhElL+AAFIdck3lDwN/E4tFJQl6u4p6cd303zr7iWjYf' +
            'IeBzWT85/7izEcVPxXVISr+CewIzD41wW70Ip/4YeCW/saMQIYhWF' +
            '/3Bb0GavY/B3Q1MCCgnZm344vio7N6WnwpoD1ftiLazszvYOE9/f1' +
            'hBzPPi40DeonDvo07KfCcwf35fF5YWFiuIyw/hB2pIEfIyX3ihf16' +
            'dqYQUOiXrKnBL4pEwrwoeYwP5etC7aypE5ulRNdOG5yHEGCwzRvF9' +
            'XIITmz66dCs3u0tfJvZRHhPFqzeJpwXsmwqqoKJ3d0n8NLysbEqKp' +
            'CNEquPQPCPfXznOVKH3RIiJS5tp766aVZ6IMOPT4iMjHxzK3qTsOO' +
            '0LgadJhEJvBUyXy+Zt0wsE/NFAq6Azw/WB3WJk0/Ikz+6caFtDK80' +
            'igtyoi5Mt4GarXfAdwIVh946w1odf4VCJqfE2+I01Kv7Vv7YQtkii' +
            'qNRK6uTRtAyZpMpQk7aOcxxfHr7IAkRmIlMKmnokUL7oBdYLGZISE' +
            'iz+JBwOcmbjcvQMb7Mle8eaj0yf+jh/bvGtUuyBIhqvOAA4c4QHIx' +
            'yd0vxp1/aumB5B/++mToFn15Lp4FpeHkpijKsrWO4x5dPOjG3T1kU' +
            't62J916c33vLcNpPqi0Cg3JvEsK6c2jN9yU+PAqG7omuviIK86jRa' +
            'EAOF4Wz757aPbO5D5eMKbL7VQkvrwWwdkh88EUMChG+9HUrOXh4eH' +
            'gSCFKJxGiMyo4NbWmRtYrhdrLyuyfIuqbr22dGt8yy921TAAZwetk' +
            'XB0an+guJBWFskeAVVyoaqNk3BxgwuAn6L42PlEbB4bgcjtLHy1/t' +
            'q/GWyQQsBvHV5XTgscuk0tYWSbMw1v0Lh2cU+rQtzOExKFW6/3xFN' +
            'CEkR8+AGf8yV8EkopPjrGRiw8ox+F4i0VOlUuUkWkAI25SUqU29ys' +
            'dknlsw8ObOnx5eOPjnsycn5/bOD2UVhnO8BIzqTx05YhQZAfyil0M' +
            'In881sPJDWEov+csmCIKGXCYrzLAVRbCPLxpz+seBEB4DBJ6xNuQg' +
            'feXfeUciiPtz6ou4Dzgm/MCQK//UfRXoXwDahtRZbIUIgP65lfLmj' +
            'h8b6RhYlFtxZNVj0uBKXC6ncYo1REIsn1h8fGqrKC9yoJAIZOPfbT' +
            'uCbYBvggLVBwXF2cyNk6LbFDVOChbXvZ4YPCvokikmuoVFbpASs/T' +
            'M8bnylZ381/YKX9vf/tuAuBW9YhZ1DFrYWrXz44Rnz55OaiI3+1Is' +
            'MUYioTa52kDNvjmclw2D1fIUh1nKAu6MgZhvMBjyrdrMIEaSlt4mh' +
            'tsjN6q0sMCXi689cgCPgolT8Qjwi2eXfrZm9jijN9lpaR4ezrVEMD' +
            'wP4O0wO+Cev7bXXF47FVw4J5ipUatqWRH9a/XSw7kg+S+qwyErKlS' +
            'KMSoSMpQ3Gz+qkfTqrsXnfhl+bFLRvbP7nz198r///e/J7cun53TP' +
            'CWYJqJhgnX/1OIkcaY6KhGw4JEV8c/ciUGHIIr+PokZfApcD9V2Q7' +
            'iiMYB+ZP+zswhEtjVw5C5edaOGwWFUoNxGPJeHeqhp9oZSdkwIRgk' +
            'DA06gUPo/n4+0FvNcUHWU2m6KNUVGR4RAt4Z+RYSFhOo1GRGugrjq' +
            'PGTcLY+tEnqdmdtw/IFTGxKE83FLjLBTS3/tx8LhIJKLVYrarqPPK' +
            'fO+d2tnOxIMuNUk0stms141rziwJ8tNsiim2KkGBwhzFqWkTGisWz' +
            '5ncxKSke76i7JRTiioUitxEE3LK3cDcPjT298cPT83tc3J2T7Cuh9' +
            'fPP7x09MH58nund989vgX5j5Pbx2XLO7QuEwv5L0vHDdTsX42/qUN' +
            'BoNDrg4Crg7OXNGsi59GMYcEJfjQlF/9xhnTXuIITq789tmP1/j27' +
            'Fn43Yeig/gIqtsalQxgmi8nMiwv3xHpAgjj109BNqxYDh6HgUf4yl' +
            'j7ALzgoMDhIBwYJhtiyeV4yUP0t81d10ghp2Oz4GDq16lL5i2bBpM' +
            'GeQcX4a/0M+kBDoFbjLZEwcNjXqdKMx+PCwkJDpCQI2tv6hDy8eHh' +
            'eqS+ErAHJ4tUzRx3Yv+/OrRvAN65v/f6LHFlJJEcXoK2uI5xHEyFu' +
            'jEiXXN/2g8mHkq2vOW6gUB48HjcnNR749oEZ3c//+mVHC19CxzZJM' +
            'omFgipzCvFWp5T069a+JNGAb+BNFnf351ScyaCLRUJfH+8Af3+DIT' +
            'g62hhvt2YnxJQk6Dvb+KkBDIOUlOhHyw9lQyBtFMQAaQY/WUGMz3J' +
            '9e5Rk/gsa/0pUHDMONkiI2XrGo8vHBiSJCFiP9EC6n0b9Iqc4vQn6' +
            '3N7M7+EQPLh0bEFLpZiOLQhlwcew6NcLaDBNNBoVsmRxgh4MQy8hl' +
            'hm5y9qpT8zo8OjGhe3DE/MMzNQ4KxFbS0ZD6hYCiS1KDIFwN6XA69' +
            '658sPjsjpaeMESIjzABR0MBzYsvXvn9h9PHv3vzz/g5//9789b+38' +
            'dn6foXuDQqrxrNOMGatatnhwK7J1GpWbYQsl4jyYhzMm9G0O8HdG1' +
            'GNLonqG2O0fWb+im/SRD2tMhBEkOEQ8yLDxhHhVX/QtgCtRqFfiRm' +
            'IYB/n99x09XLl1YPvfrBXNmfNk8sL2J1yKaWxrFLY3klBk5feNFez' +
            '5vdnnd9Fw9M9GPrgsMxNQ045Cy6XRaQIB/uiOmhZELn4xUkG0qyvB' +
            's1Yj+3ZvHyITUOo0V+iaVSkoTgkJkpL0jEi+tmgDyEOKVDwc/uG93' +
            'cAEuBbNhzmc39y774/cH+75p81ljNTzM6qdzoZPI4i3afSTQlfXTg' +
            'BvDeH29q+oUYNEMBj05wQF/u21U7tWt8/rGC6UMXEFyjFQsQv+z2Y' +
            'paZ+zS4sLFXw/5durXKp7nK93RmSNePex/AvE4LBbkp9bPz241Q4R' +
            'vaZW3N/MgyDcL4+QZWG1ieMPSJLOKfX7rZz0wteOlTXPAd36/f+vp' +
            '4wfwH7ePbbm2c+HlzXMvlW/c9uP44cXmIAnlZQvI/w6eBHyc3ULAe' +
            'IzNll3b9B0YG9rDLTcxuvL2a8WlFUlxuqmJgXlu9eSDo9MivUigUC' +
            'xmE9GT8No74zxugsMO1LdxCGt1R83BcdnnF31y59CaZw9vX137DTg' +
            'plYByqKkiDu1lSQ2CmFKpLE0MjvEm7xhih9Q/rZmXVuCJx7hD5m2X' +
            'FpIRpQQ3X/3zd5f3rX5y9yo4+J9PH8PoBiWLQZ5nWvQ0QtWjJg3Ur' +
            'Fv9ORSkVEg6ZRY5j4weky3d/8vniycO3P7D2LMrJlxeM6mtmcejYG' +
            'AewVMgD8IPZMyMEBGPVXUl0Fndy2GzkHEeZh/KkbHpv9849/Dq6Wu' +
            'HNlw/tvPurWs3Tx+4Wr7h9KrJR38YdPzHYbdP7zv5XZcuNgGLhG6c' +
            'GM1iVN04c8ZbuVyeGmcCZsIjY2wqKjyTrT0CyieVHJo35OSutUvHd' +
            'uzXoxPwn1fSSIiNyYnxQKK2DTSBvmgVw6V5oiButCpuyiFhMB7uDn' +
            '8ueNCSNiqwmdsndv7Q1do0N4NJrmqHWAwalCY8h/F58osrxoVIiUA' +
            'nfLxk1df5TaaYrCDmwlYqSBNjsmViBq4wKVIhk1YPjxW1zrSDc3VH' +
            'Ni+d0SsTBGPtO8FA5hlUkk5KQwZeZz9BKhsQPXWBAQWJkc3D2THeF' +
            'HgIkMU2DI4/9OOIa0e2PLx1+dr2Bafm9S8fk7m9p//cEt9PG0k7Wf' +
            'gQVTpbBd82994z1HJiVrcLy8ee/r7PkrZqsLfS9GgO9fVctdYeIvG' +
            'zqSOIT8Hs/9i29yM92B484RBD8IuHBgGZw2Fnp8ZDQC6f1gWkX2MD' +
            'U0jFZCRYEBN6HYUCQUMiEeek2JO1tNnFPrdO7bm0euLlbQtuX7/88' +
            'MH9Z78/vLxqPGQ6MP78WAOLQX9ZI3K5rDAlKlZF3fd506sbZ0KG5Z' +
            'IxLCK6zOEfbYwUcZkEjDvM1JCPeoAxXFk3FSLSk1sXT83skKVn4tH' +
            'uTew6Jq3q0daGaLYeHcqtYoPAT6PJDGL68Qkbu/vfPrrp9sWTl9bN' +
            'KP/E0TSMxfBEQUYuzrDEOWIjgwNCA3wDfKUCNr06G0Q2KIXCEhsiB' +
            'gcni+8eWXdz1y8nvine3E07qYlicIoYOOfiNqpLa6c9/f3Rk/s3T3' +
            '3XqSSSDYHRoqQE6XRV9uVhjKC1tVptUaw/BLQ4DXVFB/Xpub1AGtw' +
            '/tePJzfPACkDVburuD/IqXKepJUQ6mwJx1CdRurpn5P2LR0dnysAg' +
            'g8TE7MwMfsUj4lBwbQrS5EwcZNsb2+cD8TuydOLIJgGWUP8qe6xYD' +
            'MZmMcEfziz0OTW7Ozw08EGFTPzCYJ1fB7wXRHobE+/ehaPgYvAMW9' +
            'qVSl+f6ocYnSXdstOTBiWJ7ty8NjhZEqoPqHWdxx3iszEitHdGQP8' +
            'urUAD1jHhQw+lXFo7m6R3vHDDoNgre1fcOb71+PT2O3r5T8736uUQ' +
            'Ng1j21XUAKEnPAcwURoBRcQh+YJOQKl4BLMvBcwM7A38FKQKSBj4a' +
            'quS6iUV1lfcqDhm7AupH5zl9v4VMBeQW4vtaj6P43y8YGOQKxPi40' +
            'qjOFs/zb6+c2GvOCEEmaZJUSJE+r2GvgPHBNKSn2qFlL15SPzd03t' +
            '/KPWFFDClqff8iR/v3fjr/dvXIYN8kSsDKQpMpsaNXQhiQFfyUmMT' +
            '/KhAnq9s+BakE5h0kpaWmuiQiYU4LLInBz8sGqkwKxHy6d6BkY8uH' +
            'oLRgRQC44G5S7EZyUTPhmn27yo99ehQTjhr5kAcsympR8c3/uPRHU' +
            'ijU5t6RypIYDZKLiE9MVYk4OGxCLl2bsjW2CI4PqKRvckwEWfn9z+' +
            '3YOBnWbK0AHqgyBNmFsgem4QGy1w0rtuu7ZtPbV+xoYsW/gqFsNAY' +
            'ENr/2FmoGGNgYGCLaD4J5wHh68y8vvdPbrt9YCUEnD//eAY6DijZr' +
            'd0LIQkC/8mKj6aQXlrICIiZQi5r1zR9Qafwh/fu/NpeDYNKC2TE2u' +
            '0MMvJbWLRHcKBfrJqm4uJXdNDcPboB2r++e+mEPEUbE9dPyqnsmXg' +
            'cNtZqgl6t7KA5ODpVTMeVRXEkIv6LuIHFYoBetrL7wKM4PrvXoc/z' +
            'IhSklAB6SIihxnV+EFAqpbKrQ7q6j+nMqinNwtmGl1RFe9G+RqNuH' +
            '68clyNbs3JZcqiCQcTUxXPhM+Dp48eNPn1oz8Gp7YBLwEPQCgiQd8' +
            'h4FDAoEg4FwjlHz2xnFZemhOdnxKenpZmjQsMCVcF+Xnq1PEavLC4' +
            'u6tXECkNGwgsL2b8W8Tn1pVRAQxmNRhkD+1GC8M7htUlaOuhHR6yd' +
            'gEWSlLOYpNlk6mzjr+lnv3Nqz1eN5WI6tjg+yEshr1HkvgxOpgFBA' +
            'wTIjlE513f8PDRVImVg4zW0ovxsFhHzzZih++cMevrg1u4h5mgvck' +
            'xMNBZdQ8CnUinxDhvQlU0DrDf2LOsTJwIjL4pgR0SEUymkF5MI/2L' +
            'SaU0SI8FW5xb7AA8/MbkUYhRYkYZPAK+pfDqrXpv9e0WoHh3K7a+V' +
            'zMYVK5kgdq789jXEWAhZQA6BBUHeSU90cFjMV6Y05yJJo0Qr2OHeY' +
            'bYLiz+FYQJ7hGwFfYfpaOFQN85uZPShw/8qeYS5w1ps7hsKDgVsUx' +
            '+kqzzpTmWn0WhamCVErEdqAO3o+CYPzu49+/Pws9sXHzu079KlS48' +
            'fPXx85fjJ6a3By+A5FBilXFbNNBLZreOwC/IbT20VevPK+V2fJAE/' +
            'BxUfFhpC9kTKmMDIYIAFSUZwHOjMyWkt4fk/u3/94pKR3WMFHBI6O' +
            '8FE9fw714AAT4w1c8iYfcPMG7ohVy+L7Boei+H8W+cGStPkKFCg2/' +
            'qEXFk7GVQz5Ov0RDuNWsP1ImRfgEhMcNggaJ/5deKG3qHAXvxeXjw' +
            'WhUKJRMJmqSaHmnZyydj1Q5PABkL0urq8ZsIJiGbTxg4amyVL8acD' +
            'yQSp0jrBv1maLS01xRiqC1QpfKV8MYfGpuCpBDTQKgzq+ekd5DCPu' +
            'xtMKAxZwsD5i8haOUfEpeMw9bOxAu0z6LSsuCiguBu7+h0clSRj4k' +
            'Ai+Uq4ztxKJhEjI8J7JsqXdgm7d+XsD2W+Sg6hZaxKrVK+1ikvCNR' +
            '8Pi8vxQ5BY+sg243dSz6KFwH/bB7GjokxsqjI4lLHti37xAvP/Djw' +
            '3OKRQLSykqxUUtU7U8D5g/X6VtHc2cXej29f/ipPIaJhW5tFel2gJ' +
            'x73zzyI1LAqsiNnWZe3Vz88f2BstgzcEz5TaNMIeP84ZVFfzfKRZp' +
            '9/rB4d6sUzVKmU+aFsMQ0zp8T36b1rh0YlgkVBGCHjPXKTrRWXket' +
            '0kg1yeqcE5XdF3o9vnId8QfNEgY0VhrMzkuIC/FRCLgN5t4WbGxGH' +
            'jtF5Te8Ue2nX0tbRvJZJQVXqiDpLtTSPDwZHtvpSdvUOuHdi66PLx' +
            'y4d3r78h+m+HPzkEt2Na5cvr5n0Ra4cIhvMco5JzaJXrezh9tdR9l' +
            'hL9NiymDN715VP75wTzGydEBDgr30xBcABwsPCQqUkLxZuVrEvaCs' +
            'IvNe3zFnVUQPBE3wiL0rBolOeN4hYr2e6I0Yr8Dy36JOJTRTQyaw4' +
            'I9UTOY8ED4rFYqYnwJwR4K8g/vRLEDGIaBAsvj7eNbJo+EO5TNbaK' +
            'u1g4f9+/1abGG4bs0AmEdeo0yEGMpmMtMRYoxd5Y0/D1c1zm0dwdC' +
            'KiLqCG9dtaAH1WsHB+Mo5SypPz6XwGERgLzDj6rwN+dWQv7vV65gR' +
            'MyEuhKDNydWLi2QWDvi309mLjW5UWkrCIAZI8CRHhYT2SfH5pH3T/' +
            'zo3VnTQgM1tZpVo/DR77Gqc1nEonKc6OlL3tbwFV/nG6FIJGO4sQl' +
            'CyRgHeviI2JDpuKS9jcXXv78DpgZa1NAjGfU3mwYKUymbQsOayjlX' +
            '/rxI5tPbSgDkA9BekCCbiqWwYwAPhw6xgeDO34tDZHPs8KlZGAQ4H' +
            'WCwsLqxz0GqLZenSoF/AkEGJtFlCyIJGA5FzfPKt7rJBFQtRTSWKI' +
            'TCpB180gQfWHh4V0tPDObZi7Z4jZX+gJQ8hJsat8vYHwvLj4iSgyJ' +
            'r15VuK0pl7wWJqGshvFmyrfdwZ/AddA1riIaJ3I86dWKujSH4/vPX' +
            'v65Oyp4+mBjDGFoXs3/frwwb3yj60xPmSYYnABSEPVJcDzdYaggEF' +
            'F9j0LJ55a/lU3O79tarBWo35hadAvEJLNHDrwmsYGFsRb+K7rW79f' +
            '18XPrqRA4IVs6zBHgdG6/dV/OpWSHW/M0NF/v3OlnYnHJmFMEQbnA' +
            'MkkktVigoQOU3nvzN4fW/hC8AfmH/PyEm3IoVmzSS8mbukVfHJOTx' +
            'hyXmwYkM8amQmFQob27chalujZ06df5im4ZEzT+DCI7f/iJJZ7A/j' +
            '+mwAxofBwFY9QEMp6cvsy2HBbEw/UEPwVCY+ODAnqkeT1cxstKE1g' +
            'IxDngTQGBgSAN9X9K5zvbIqKjMwMYkxv7v3oxoXxuQqYo/RAeoghm' +
            'PBXKgGbDwnWRSnIX+TI7xxZD2kUNLtW/fc9XAg+YKWNkhyJWtqhmd' +
            '1PzOqW5EcH9hJtNBIJNawSQ3bQ+vll6xktjJxnj+/3SxACZwOnS0+' +
            'wMmh/z3U9Nkv/q9l6dKgXcL4+stiuBnn7Ubzw92unVnfyg/iG7HwF' +
            'MwMD/Ot4E7lCpFCy0xJhru9eOQsED/oDspTNpFcJO8jCl9K3V6Ji6' +
            '+clR+d+ZIdnEh1d+VvA00HERSrIwH8+yZCAWHh65wqIrz+ePb125u' +
            'jxg3uOb1t+acv8AyMceQYWPCUfDj7VYWIx6DWUH8SgIct3LEhaNqL' +
            'gavn6SU28OsfJgwL9Kz8Q6F6gP8IrfNi4X1qr7h7dcHvfsi3d/WNV' +
            'VBISd92KLD4QPP8+OQBxj0ErSIjoYObfPbM/R89sHcP14iClyfBYD' +
            'CQs6FWCH+3s0jEHhltgmmCyMhJtTHoN3XPOKZDJQkcg8IfLm2bPKv' +
            'IFwmm1mKuzbucxp8jIiCw9E4z80sZZu/oEAquB79Lrg97ZC+N1Bzw' +
            'eOo2aGRcNAXxoqgTixpYB5m8njMKikF286CBln3jJwjb+D+7eXt9F' +
            'GyYjAS0JDtJV4e2vBJiESqVqYxbmh7Kul69Z20ULkrlVDA/chEz8+' +
            '+wuTLe/1g9c4Ot8r4tLR0coyBS8R3ClktpIQSFjVCMd45fWyjvHt/' +
            'Z0CNU8QkqC42WVLvA4nMVsNkiI2/uFn5zRVi8hgm0VxwdJJOLKLLR' +
            'em33+G8h7pevJoV4Ah8VChIeECLHiwHDr5dVfgcCHiQNdiZyCJnrW' +
            'cVIqzpZLOmVGrBvZ5MSiMZAvQCwjg62pSg+MtCiCc/XghoWtlS2MX' +
            'BCnL6YDRJNcLiuzeTOJ6M5W/ulZnYHq/++Pp88e3n506ci17QuOTW' +
            'u9qI2qq40PZAb8Ol5Di3cg0an68ovzEHJ+ZvLIRtLbVy+u7xNZFMk' +
            'xm2KqxG08BmWOicKi3ZO1tJPftoevOzA0Oi2ADnYCTZY5NFW0M/SU' +
            'x2EVxek6mHnAl0oiOfnpcWDbwDd8FZJWdh+IFfvHZJ2Z18ehpkHoL' +
            'orXV7GNykCjUEFBOosvpYuN/+B8eWYQMyWADsS7ijB0ZsnQ0NCCUH' +
            'aQ2PPglwXQVYuSyvREpyXY36OqLLUAHjfoNbAHPgUzt8TnjyePjq5' +
            'fMKAgGvgeRIlhOdrlXYLv37y0sgMS5MF+gB544l+vyi58BYfDzku2' +
            '+gsIez/LPjW7u1VJNflSgA0Cn6xsQTBfwGRgcjcPsh4cnQpMXsXFQ' +
            'yRxzgv8rUIub2kWgaPdPLLx1w4aZB0mPlgkEr7kHR/IckpRajRyie' +
            'bM/s9z5XRPVJMQFojlyqbVEM3Wo0O9QEVJLnZ+fBjE85bR3Ifn9v3' +
            'YQulcVGmeFCHg8ep+5Qqxf11AnwTRqU0L1vaO6GITaFTK6s4C7bGY' +
            'jII0+6QmirvnDoGRFMYHIxz7r/5QKZTkOKSYZK844bXNs+8d33x1w' +
            '4yr66ZcWPwpaLe5Jcg2GUwiEecBrtrKJAwLNVDIxOr9dDqayRSTE8' +
            'zcN6PHiR8GZQQymmTEsZlVS7PCEwZG2j1WUBbFub7thzPf94JHwSQ' +
            'i6zAt7d5qtapK6kfOuggFLa2K4gj2g/v3ZvdKkVboQQGDWJzp8GLh' +
            '1nX2u7nrlzIjByhcszA2GNvLyAB0hIy8J8JCJXj82kF9dEIB/Hqpr' +
            'epbY5xjCQkJATOWMXDru/jBk2kayoLwXmbzkcuk71FVllqAQaNDQ0' +
            'MCBAS92HP/4MiHl4+fP3OyV5zAqqRMG1Cyqrvh8YM7EDSCRER4qvD' +
            'J1w0abhWZNyoyAqjd0FQxaMwesUIKHpWXZAIaX8UqnDXoiiM4Z9dM' +
            'W95OzaVgmscFcTmcFwtiMVERMiZ220dhZxcMsvpSE/zoBkNwjWuzf' +
            '5miCaLB9hFp5xaPBJkJmdpiMVc5olbvzdajQ1WGs6SYTUUFc93bP+' +
            'TS8rGQcyFFQqIM0gW+FvVFzvjFOYaniu/fuTUwWVSYWEO1DbeKgO/' +
            'tpejRKHjrV22Pze1r8qE47NYXNxzBcjQaDaSSwgj2jT3L9g0Ia2Pi' +
            'FUWwS6I4MDpIyt5sHDgLOKleTMxLMvt4yfEveQsk8v4IL0Vrq6ydm' +
            'ffk98efZUpLozgvKxwEmaV3nKg4kn332KZFbdQyBha+AvqgCwyoLv' +
            'HgkSrk0lIj1ylGVs2fBvGBjPNonJnqL/T8Mlf+9N61IaliBhENozM' +
            'ajbVUnkcucAn4xRZvJQd/Ykb7H8p8IeCnx5kqb+U75UlYWFizcDaX' +
            'jJlcoHh8/SzIWIYnKsqLDFzxfakbWTvATqkUclqcGawXpN+ZOd1Ap' +
            '9y5fWvN5P67flu856uWJ2d3u7Zr6eAUcVe7IDzEQHz9ev7PTwvblE' +
            'BXTv04eHc/g4KFByUC7K6KVcAnRUJhWU7i+Dz5o1uXejkESX7I6of' +
            'TI5yrWOnxyAbuzfI1E/IUwO1zkyyIFK1hXM9f4tDOgbzE4dG9mzCD' +
            'kGiyk+1VghWSRMj13Gw9OlTlr2YxmbkJyHnp5uHs+6d2zCryAYqIQ' +
            'bllJVrp1Uoq1dqUG5vFLMpNWTog7fzG79MCGXEOu2dNF/FgICHBQR' +
            'BYLh3aurK9uq2JV3GRzd3tubylNUqwgPeVTyw+MbVFjA+FgPGAIYN' +
            '845AwwMHAcYDGF8SHh+gDmXTKyxZsK05FEuNsZjkTt7az5tQP/UJk' +
            'pPykaBaj+gFXZKMc9KOIhu2XKHp05URJJBseCBBjiOQ1rkSBs6uUv' +
            'kBjwG3LP0vfvXElcADoIfz6oGQxtAAcGzgbfHWiw1ajUqvcFIigzC' +
            'CGQ0W9tf/XAUliDhljjIzAoJ+Py/k6VGNUVOMQFvBMCEdP7l6dnK/' +
            'gVRyGyUi0vdY0vcuoOLEsKjOJWUQ0aPDrW+b8+fTxs2fPHj18cP/q' +
            '2Zt7ltw7sfX6yf3LFv+SEMhjUQive1zEeZLZbjVDihyaKrl7fEuug' +
            'UX3RKfEV61d6bwdkJqcCBT0+NLxh6e0jJCTgZO/qCWFCFUupyg54q' +
            'NE4f3zB3P1zAQtckWiekp6cbukNCnEj++5//P8Y9PaQGttrFIfb68' +
            'qLLGi1FV9NluPDlUZSJ4NDEjS0hVM7K7eAReXjIxVUbEot4JQFhjz' +
            'a9UIcqbg3s0c+5dN2zK2KQTAyleQKo0XeX1bRnrat829b58/0sXGa' +
            '5pielGUCRrx9fHO0DEgHv7xxx89Kzhk62R9dFSEXusb5iePDPQNVs' +
            't9pHwWjYSp9UaE89h8qUmqFRAgTy1uo/Zi4c3mqouNYCEQ4aOiohr' +
            'pmJDxD32Re2C4BSIwGe+RmRzLoNNqdHlkxcxfC7o4xpt8aGzmufKt' +
            'cwYXr16xZPPInLsnd2zr4a/mEZD96yTzK/evoalgfZCKR8gPZQFLg' +
            'SiarKX7KxXOX4KsB7nDZjEl+tHYJHTvOAHQoXVd/JQV95FLYzWVV2' +
            'vfd8BAAvz9gWkbpMQDw8yPrxwHDf7//vfn/wDPfv/j0R0II48f3t+' +
            '/d3eX1EDn+djX2j6CiZCIRaVGPsTz8jGN9vQzCGlYkMlV/Ne5Y2Wz' +
            'WiEvb/w48+rOhb3jhWAelVeenYVzu8cK1/SKOP3zx+GQkhKN1WuLg' +
            'XWBtet0ujKHhkZA9YkX/vHkUe84oRcb77Dbql+iqfdm69GhKj8fBp' +
            '2elWB2ko0HZ3ZPKfDikNAgc5AITHq9t2oik+6nGtPSeuXi2dnFPiW' +
            'NbDWLFGTvgNsmP3XdV52P/jIyP4QVbYz6ewHHw90QHATpBrL2jZ0/' +
            '29W0jlahv9aPUHE/z+Ovn7pYS8XmlCZCQbYpqde3/TAhVwHUN0Dzd' +
            '7VJ5DYoGsViMUHD5oey4UvHZEl/v36mzIi8MbBVdFVzqtK4IThYK/' +
            'CMU1Mhhj+4curu7Zu3L568vvMX4DYQyYGwFcXp5DLpK6M3fADkJA1' +
            '5AR/7z2dPwAYGN1LKWYhqw6BRQoEgNd4WISeJaJi+CaIbOxYcHGFz' +
            '7s4naGjBwfq3UxXt7QDUlsVsAhLV3c6Hibi28VvgGI8uHfnj8T3kj' +
            'mcFIIQA+zh65PC8Od81t6rEdCxkzzpGj4q4pAU2Dury9oGVQ1IleI' +
            'xHeqKdVKn2pnPFIDwstKOVv6SN+v6V05DgYKIRXlfpmjYOi42Ojk7' +
            '2p51YNHrrR2GRCrLRGFVZ1DurQnHYbIvFUhzJoXmi0gLoJ6a2PDqh' +
            'QCfyhGAF7ly93/XebD061AsA2dBq/TKDmKDl93ykP/djf1NF0VcQP' +
            'v+i+jEYcHSYfkZ70+Wju3rFCa0WU42iG3SU0lsxpEXK8V2/rf7I1j' +
            'k1UCH7+3VaMMywYJ0n1h3k5MOrp7vZBdmN0qvXP68LkCcWFABPLD2' +
            'QcWP7/E2D4z5pGe/NRnSTe8XYqRSKWq3OSnGYfSngle1N3Kvrp23s' +
            'ppUysKDUYu3WWu5UgkfDhFLwSJFteG6QCh+cLz8xrVX/RJEPRB2UW' +
            '6toHnKVuw6rQ8iQDUEQqyEjPLp8bNNAy9ejB0Mkx6LdFRJBk2STgo' +
            'UDdvFpIynwdohRyVoaqFERHZsQa6WSyR+GQnH7awc22xEOHGDfkOi' +
            'j4xvD7H+T77VrVKMLqyeBQnly6yLwDeSeOLCPp09uXDqzdfn306ZO' +
            'bhQmgV/B1aEoPDzqEL0OZq1ZGOvpg1udrXyLL9WAHLL9xzFsXWBAx' +
            '0TV+MaK+7evrevsB0Gj1OEnl8sqk38gojnxxoxA+r1LJweniDta+N' +
            '4yscdfxzKBJZJJJGDsBbmZbWN4GTp6j1hB+cfWZw9ubumuBVZQVHO' +
            'h3fpvth4d6sUjQqoBx1shXIPFAiccnSllEFGgoB02y+teQ4YPQ2dy' +
            'srMXf1pavuSbAXmhamXVMvVOgPYJDlB/3S3jyrkTozJl2ekp1Eqjg' +
            'EekUyk0fEJRJPvmgZWrxndrZFQxSK++lFcd0FSQxltEw+boGZdXf3' +
            'WxfNN3k8bikcu87hwmLTDAPz0xFoioLxcPcmNMtuzc/I+ub/0eeJe' +
            'TbCjksloMEY/DOawmDAo5B3tlzcQnty+fmdMNgoaEjoXAC8EkJMRA' +
            'qNuhAvgWvb8aAlp+CPPalrlXDm2eP/MbaBnCRYeCJNAm4XLSzObeN' +
            '7bNu7BweMtoLqRjGFpBkpHH435I1QVhLCKhoIXNJ9fAvHd696AUZF' +
            'V5eJqk1Mjpnyhe2zv86Kye17bOu39619M7V5wB5MnjhxdPlK+Z//W' +
            'XY0cnBvJgrmvnHvDcgv1VAioG4gaE6CXt1B/nBaqk7Bd35YBpBAYE' +
            'tM80DksV3zy5e+9QS4wXpYmBpQ/SVU6CFZJc1gqpBcH5/cGdMVmyF' +
            'qXFdE+0868IeLxMKk1IiO+Ra5xeqDy0cNzlbQsubph15+ROZH//04' +
            'RgCRHSAbPaKwsbotl6dCgnIHYplb7NwtiQXvcNNp6c3jpEihwXKbN' +
            '6SSXi1zVI+DgEulZNMzfNGbXmi7atC9L5XHbNByMJ+DhL1IKPS4+t' +
            'nTc8Q6EP9P/HXR43Nznbs4tNkBPMPLNg8OWL5yeNGsijYPBo5MTma' +
            '3UKPuzNIwOXyw1mnftl+KN7t/bv2QUebZCQ2hQXwOw41LTxuYq9I1' +
            'OOfV0CTOOP3x+UD4sJkZHgIaQl2GupGw9/DrEuwxEFJKFnrODukXU' +
            'Xl4z8LEvmw4ak5wbKyGw2VSn9V3s/lVJeVhAjHajLT4Mf37+9d/dO' +
            'FZcw4YsxTUJYeQbmxu7+t/YsBtL+SYYUXAO6B51XKX1f6wLXuw8wO' +
            'R8veZ801foBtosrxtlUVC4Zk5OVGR1hKGmeP6JtZr9E8eQCr80DYk' +
            '7O7Q0B5MHpnRCunSsep8t3LJ8xevSnwxP0Eki7ZDyqxjdTwB/5Sjh' +
            'gA5l65uU1ky7uXjFv5lSIw2BZeCwG5DNyVy5VNyJdcvXwlgNjsxL8' +
            '6BYlxWSqOpvQeIC/n7PiyvmVX62c+VmACNn8AurPYTEjI8LbZFn6J' +
            '4m3TOl1/fjO3R/H/dRSuXLK0IM71t88XX706+IYb0pxYgj3r6tMDd' +
            'psPTqU2197DUB0IZq1juGCfuyXICThPFQ8Asir6q/BeiWQE/ISUbd' +
            '8+55lM37sEZudnV3lRvCL72Ux6SXN8tfPGrVhcu8OzdKrV0wFydk4' +
            'DbkfvX9c7t3zh8+fPf3jzMmFNrVBTpPzGSwaiUjAgcs4S1zCf2DRK' +
            'HDXGlkq8PnSwqZtTdwj0zuAjd27de3IgT3bt2xcPaZs27hmt8/sP7' +
            '9szNFvyu5dOHL/7u2bB1bNK/WVM3ERcjLkl1rWhJHDonRK0/hQeP6' +
            'zi31Aic8s9PEXIJc1gTYkOkAI17aBUh3gIG3zHGmBjGNT2/z57Mnl' +
            '8g3lW1ad2rN+zxDzkS/z7h7dcOfAr2AkAUJPiEvR3uTIyMg6kpn3C' +
            'JDu1RLmV31Lrpw5sraTn5yFK40WyGVSmG2wTIYnOsab/FHfviNzVT' +
            '0cgq/yFFv6hh3/ruuVDd/ePbbp0dVTjx89PLlv85Ipwz8fMzIvISp' +
            'QyuBR8UA/Kle9QyaOhG6VEwcp48jEwgfXzu3avlnGwEkZOFOItiQz' +
            'tp2Zv7Ct/71b1/d+HJvsz4hSkKu8t/p5V93dDYEaaApC0PE5vbas/' +
            'RWEDt0TFaYWFednd7ULFnaNunH5zOHJZX0ThH58T5Ab+UkxQ3u02b' +
            '5kxu6hyPIU5GtvqajqamfDNFuPDuUsGtzSLAExfnBM+qHRyRAx4GM' +
            'FCeHIsZbXZ78wO75ycf9cw9GNP88s8bOaomouU+DuLhUJupdm71v7' +
            '04+9k1Li7URC1Vu68N1AUEcM6Ln6k4L718/fv3j0+vkT+7etnzN+2' +
            'PD+vVq2KEuOtxtDdaGB6hCtd6hSAI8L5D9MvRcLB7nD/Z9NAc8fPa' +
            'jnjllD7108dvHXL058237/yKQ9AyOXtVf3ihOafSjA/Jd9PXDex62' +
            'PrZn9VWNkc7OtiSd/VTV1NhlT1shs8qEcn9Hu8Jg0kBI4tDuXjG6U' +
            'aIPU8LpsDebIpOZ8lik9tXTc1Q0z9g2K2D0g4uqWeQ8uHXt87fSDM' +
            '7v3D46MU1MJGHcYTkr8a8el9wIwHhoB/fPPPx9eO6+nQ5CjZ4aGhF' +
            'ROYWBjEAeEVGxyuO9HnVsOTRHDTI1Ik6zp5Hf4q8KLK8ff3Lvszrn' +
            'D54+Xr/n202+Gde7RtbMjwt9PxhUwKWQC2vlKTTTKPUKJ1GXaOiDm' +
            '/tl9kC727tqxcsWy2Z0sv3QIOrZiysUN380q8oHcESYjQQpg1rShB' +
            'n/gJ2EkaWldbHz43isXz/06f/rPP8ydPbTlor4JZ3atPL/6m++KfI' +
            'EABAqJzZKN/n5qNp3sL/ScOOHLFX2sVl+qkIbVVBPyDdVs/TkUiDV' +
            'jRJjFlzImW/r7zQutYrgg6lMD6CDuMNXKC9Rp0t3dfLikT1slnju6' +
            'f3SmzBIdWeOSIMJFxdwxQ3qfP39+WnNlZEjNaR1ZIvNEj+7XceeyW' +
            'Yendzw2vd2pHwefWj39xJ6N+7ZvWDP3y0UTPlo0+ZPlC2atXfvbiu' +
            '+/mf95n7Fdm7RqUcqnVK13Cv/HJKLHD+n26/C8ISmSzCAm6Ah4IPA' +
            'k8Wh3MR3bI9+mExFJONSunTt29o9A9kORl/XU9joDN6RSh3t2fPS0' +
            '5j73bl93XiMCzdI42Szk8/5duTwIO50b27etWfxLKyVoqx/KlHsXT' +
            'TpycP+5QzuPTGkFwc1ZEbd5YphQIPiQljUqA4b16YhhU8aPaVeSr9' +
            'f5v2yRDfg8EYeSMnGpUX59OpQMT5UUhrO72QXTmnntHmI+MafX+TV' +
            'TzmxfenjfjlULZk6d/HW31s2S9CLkkmbFxgHMdfv8pJVj2z68f+fK' +
            'pjnnVnx58qfhJ+b0PjAibkITRWogQ0jFJGjpsXYbg0Z9Wb01aGRQv' +
            'z7L+9ge3r56af2MY7N67p9QtG9c3vZegWOz5clauoCCKQznxNrtfA' +
            '4Lg0LmDnQB2MmQXh3bmnnNEiP43BoSdAM1Wy8OBf9ikgllRc3mFPt' +
            'c271kYzctUDWkiJDD8ibr85AL+rYp2LlqQe84od1uw2Fq5hsSBm72' +
            't1MPb1oEbFMf6Ofx8l0bSA3dmyd+U2boZOU3DmGB2AeHAm42IEn8a' +
            'YZkcIqkq50P7AuEG/yzZdMsf28RCV9z4RoQLJ2apXya5xchJ2n4BK' +
            'M3uczIbZIUHR0RImEjr2YAUbxgaPNLm+Ygb+CNt7y491oLgP51zAj' +
            '5dULPkigOnYBqnhgulYjreGu4RkC8aZ1i+KK1fWQj6eQvR7eziQNF' +
            'xJ++6A351KakELAexRFsP436A1vWqALkHCYOxaUAXX3FMN0rAgg4G' +
            'gT/2CBpt45th+bpmoWxgKsXVhyGbB3DA1MckyWbUegzt03wlK4pow' +
            'b2yEmJBWMAZxjcvvHSz7uMz5WB8UA2MXqRFUwcGY9cIy2zKEJDDGS' +
            'SZy2kzpnExw7ssnJcu1GZUrBP4K5+fAKfgiHhUUBE85ItaqU3iVC1' +
            '7D+kFUjlfBq+xrLJDdTs88+8sUPBo+vbqax856Z9M3qkBDCQ8xuOo' +
            'JddnKk7YMY/HtCze6pfSLC+Rr7hXkE153w3Y+Hsye0KUiuqY9V+Js' +
            'pdzsQXZif2ap7YycZHKqvzCMDV2SSMkkuIU9PamXiNU6xh+gA+6xV' +
            '1Y6ApiI0wBYFeXI1CIOUx6SQ8roIcwI8PG//DJ20vbV+UEkCzW2u4' +
            'iFojEE9PCx+YE1icFe+tkL75dVR4GJiK+A7uwCJhQJts+W35/nGNw' +
            'QtsSqrJZKrlvPqHhNc+Pe7hDnGVS8aEychF+dl9msU2DWP5cgjwJ5' +
            'CL6Uh9ISywyjwDMyU5kU7CQswnYj0yglhDuxQVR7KBZMIn4Z8tjdy' +
            'k+FiZWEh41UFrJyD+lCWHfVJqidNQgf/oxMRm4ezcRLM+wI9Jq+3g' +
            '5SvYbMM061YfDpXoR/vmy8/GdW3cPV2XFylXeSvq5RY2OCLDE03Gv' +
            '5Stg6v26NIhUUvzEjAgOL6ywedMDI+kFY2AqFOwg5XiYLVMp5Kp5Q' +
            'IJl04j4jCveI/rP1p78VMZEEinTfxi6/dj4EkG64PqflAWhknBI5v' +
            'XL46FvyHcK16NRyTgwtTir4Z0vnL58o5P00DzZqbEvewavgsvANOB' +
            'reDtMnA3CcWgFIVqvcL8veFHr5arZHwmlYj+60aDR4VmQT4ppel9h' +
            'ZBeJTwmiYB9rfrwIBVoBDTEHLBMrZdQxmfRwPpf560cb7NZt/pwKH' +
            'Bh+F0ph8KmemLryezr1HOkkpLHv1gHcHd7XqfOWYqquvu/CUJlpGF' +
            'DBjdKtHKY/7F7InVQZZIe7Uo3zBh8fuP3fROEZWlG6cuv4btQI/5h' +
            'LbWWL3v+yTcwpzdv4W02W7X9f+VQDder9w6Qqkg4j3p/hdBroeLwP' +
            'y0jOW5m78zrl84u7xLc3SEKCgz4kM6Tu+CCC/ULPA6n91d/2qXg+O' +
            '51e6f1AL2ZkJBAefkhNBdccOH/OFAoD7FQ0LljhzXTh57djNTkL8x' +
            'J4XM5H+rGqwsuuPCGqHgtCCnOHDG9X7MrF88u6xnTNTNcrfT5sDde' +
            'XXDBhTcBBoPW+HoN7dn24Kal+2YP7JsgMkXXXL/aBRdccMHteeE1R' +
            'kFe1sLPOpzft/bLXHnTvEZIdSmXQnHBBRdeAhwWG+yvGtuj+fkTh9' +
            'aOzO+ZE6FR+b5WvTUXXHDh/xQ8PNy5HFbrVi3XzBh+Yu3coSnihPg' +
            '4MtG1h+KCCy68FEA2DP7K8X1KLl28sLRvXPsm8VKxyLWH4oILLrwM' +
            '7u7ubBazuFn+qhkjjqz89tMsH2NE6IfxXgMXXHChgYBUeVV6jR3U7' +
            'eypY4v7pbZqmlXjVWgXXHDBBScgPtBo1Kzk2EVf9jq28afRTbSRIR' +
            '9UiXIXXHCh3oFGoVQ+8o97tz22Z/OqkUXtCrOFfK6LbLjgggsvQ0V' +
            'JeXJqQuy8QU3P7NswvkBtivpA3tjoggsuNBBQKA9vhfyjltn7V83Z' +
            '/HW3ngU2hVzq2kZxwQUXXoaKd5USHDbLpELtzetXJxd45WSmU9/gh' +
            'TguuODCBw/na+hb58at/qzk2IopA5PFBr3OdYXNBRdcqAUoDw+10n' +
            'tIru7EtqWr+8V2zgiRS8WuFVEXXHChFqA83AO9hZO7JF8/f3x4mqR' +
            'xaiyDRnVFDRdccKEWALMQ03ELZk46vHJmszC2MSqqXupCu+CCCx82' +
            'MCj3IR2afDeqR+uS5q5jGy644EIdoWDhHf4cOZuI/VevyXPBBRf+b' +
            '8LD3a3Or39xwYUPCv8fBu29Yg==');

        TPH := High(TP);
        for I := 0 to TPH do
        begin
          TTP := LoadTextTPA(TP[i], SmallChars, H);
          for B := 0 to High(TTP) do
          begin
            Numb := ((I + 1) * 13);
            FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
            FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
          end;
        end;
        Canvas := TCANVAS.Create;
        Canvas.Handle := SmartGetDebugDC;
        DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
        DrawBitmap(Pic2, Canvas, 100,10);
        FreeBitmap(Pic);
        FreeBitmap(Pic2);
      end;

      Procedure OnScreen;
      Var
        XPH_F,XPH_M,TTB: Integer;
      begin
        XPH_F := Round((FishXP * 3600) / (GetTimeRunning / 1000));
        XPH_M := Round((MagicXP * 3600) / (GetTimeRunning / 1000));
        TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

        PrintOnSmart(['Version: '+Version+' (by Flight)',
        ''+MsToTime(GetTimeRunning, Time_Abbrev),
        'Fishing XP: '+IntToStr(FishXP)+' ('+IntToStr(XPH_F)+' / hour)',
        'Magic XP: '+IntToStr(MagicXP)+' ('+IntToStr(XPH_M)+' / hour)'
        ],Point(15,236),16777215);
        PrintOnSmart(['Time till break: '+MsToTime(TTB,Time_Bare)],Point(573,432),65280);
      end;

      Procedure Commit;
      begin

        stats_IncVariable('Leaping Trout (Caught)',(Trout_Caught-Trout_Ca));
        stats_IncVariable('Leaping Salmon (Caught)',(Salmon_Caught-Salmon_Ca));
        stats_IncVariable('Leaping Sturgeon (Caught)',(Sturgeon_Caught-Sturgeon_Ca));
        stats_IncVariable('Fishing EXP (Gained)',(FishXP-Fish_XP));
        stats_IncVariable('Magic EXP (Gained)',(MagicXP-Magic_XP));
        Stats_Commit;

        Trout_Ca := Trout_Caught;
        Salmon_Ca := Salmon_Caught;
        Sturgeon_Ca := Sturgeon_Caught;
        Fish_XP := FishXP;
        Magic_XP := MagicXP;

        MarkTime(CommitTime);

      end;

      Function IsMoving_F: Boolean;
      begin
        Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
      end;

      //By Benland100, modified to paint mouse movements
      procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
      var
        veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
        lastX, lastY: integer;
        sqrt2, sqrt3, sqrt5: extended;
      begin
        sqrt2:= sqrt(2);
        sqrt3:= sqrt(3);
        sqrt5:= sqrt(5);
        while hypot(xs - xe, ys - ye) > 1 do
        begin
          dist:= hypot(xs - xe, ys - ye);
          wind:= minE(wind, dist);
          if dist >= targetArea then
          begin
            windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
            windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
          end else
          begin
            windX:= windX / sqrt2;
            windY:= windY / sqrt2;
            if (maxStep < 3) then
            begin
              maxStep:= random(3) + 3.0;
            end else
            begin
              maxStep:= maxStep / sqrt5;
            end;
          end;
          veloX:= veloX + windX;
          veloY:= veloY + windY;
          veloX:= veloX + gravity * (xe - xs) / dist;
          veloY:= veloY + gravity * (ye - ys) / dist;
          if hypot(veloX, veloY) > maxStep then
          begin
            randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
            veloMag:= sqrt(veloX * veloX + veloY * veloY);
            veloX:= (veloX / veloMag) * randomDist;
            veloY:= (veloY / veloMag) * randomDist;
          end;
          lastX:= Round(xs);
          lastY:= Round(ys);
          xs:= xs + veloX;
          ys:= ys + veloY;
          if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
            MoveMouse(Round(xs), Round(ys));
          step:= hypot(xs - lastX, ys - lastY);
          wait(round((maxWait - minWait) * (step / maxStep) + minWait));
          lastdist:= dist;
          SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
        end;
        if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
          MoveMouse(Round(xe), Round(ye));

      end;

    {*******************************************************************************
    Procedure HumanMMouse(eX, eY: Integer);
    By: Flight
    Description: Human-like miss-and-correct mouse movement
    *******************************************************************************}

      Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
      var
        randSpeed: extended;
        X,Y,X2,Y2,A,Dist,MP: integer;
      begin
        A := MouseSpeed;
        GetMousePos(X, Y);
        Dist := Distance(X, Y, eX, eY);
        MP := Round(Dist/150);
        if MP < 0 then
          MP := 1;

        randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
        X2 := RandomRange(eX-(A*MP), eX+(A*MP));
        Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
        WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
        GetMousePos(X, Y);
        MMouse(eX, eY, ranX, ranY);
        MouseSpeed := A;
      end;

      Function AddToBelt(What: String): Boolean;
      var
        X,Y,Slot,T,Tool: Integer;
      begin
        Result := False;
        case What of
          'Tinderbox':
            Tool := DTMFromString('mggAAAHicY2NgYDjMxMBwAojPAPFpID4IxDuA+CVQ7hkQPwLiN0D8AYpNdNgZoiPDgSwmFMwFJEEYHTDiwBAAAIohC78=');
          'Barbarian rod':
            Tool := DTMFromString('mggAAAHicY2NgYChlYmDIAOJKIC4C4hwgzgXi+0C5d0B8D4ifAfFbIH4IxDaB0Qy6hiZAFhMK5gKSIIwOGHFgCAAAnhsJrw==');
          'Knife':
            Tool := DTMFromString('mbQAAAHicY2VgYHBkYmBwAGJzILYBYk8g5mJkYOAFYjEgFgZiBiBurK5miLfjBXKY4JgLSIIwMmDEgsEAAB4RA9I=');
          'Hammer':
            Tool := DTMFromString('mggAAAHicY2NgYLBnYmCwBmIPIDYHYisg9gXiUEYGhhAg9gTiWCCOA2IvILbT5GTw0Odi8PfxAepmgmMuIAnDyIARB4YAAPp7BZI=');
          'Chisel':
            Tool := DTMFromString('mbQAAAHicY2VgYNjNxMBwCIi3A/E+IN4BxCKMDAzsQCwIxSB+iDkPg56ODlAHExxzAUkQRgaMWDAYAADN9QVM');
          'Small fishing net':
            Tool := DTMFromString('mbQAAAHicY2VgYDjCxMBwGIjPAvFJIN4HxAaMDAwmQKwDxBZQtqOxKoORugxQBxMccwFJEEYGjFgwGAAAEFgGGQ==');
          'Fishing rod':
            Tool := DTMFromString('mbQAAAHicY2VgYOhjYmCYCMQLgHg2EE8FYl5GBgY+IGYCYi4gFgZiPR0dhjB7HqAOJjjmApIgjAwYsWAwAACBxQSE');
          'Harpoon':
            Tool := DTMFromString('mggAAAHicY2NgYMhmYmAoBuIKIE4G4iwgLgViLkYGhv9A+T9ALA5k8zFC2Gbq7Awerq4M/j4+QB4THHMBSRhGBow4MAQAAPbNCBs=');
          'Lobster pot':
            Tool := DTMFromString('mrAAAAHic42BgYJjFBMETgXgaEM8D4iVAPAXKfg5U8xGIPwDxJyB+C8RPgfgdEL8E4jALHjBmYGBCwcnx8WDMBeSBMDqAiTMSwDAAAK4jD/k=');
        end;

        if ExistsItemDTM(Tool, X, Y) then
        begin
          Slot := CoordsToItem(X, Y);
          MouseItem(Slot, mouse_right);
          Wait(RandomRange(20, 75));
          WaitOption('toolbelt', 300);
        end else
          Result := False;

        MarkTime(T);
        repeat
          if (TimeFromMark(T) > 3000) then
            break;
          if not ExistsItemDTM(Tool, X, Y) then
            break;
          if FindBlackChatMessage('already on') then
            break;
        until(false)

        Result := not ExistsItemDTM(Tool, X, Y);

        FreeDTM(Tool);
      end;

      Function FindFishSymbols: TPointArray;
      var
        B: TBox;
        TPA,TPA2: TPointArray;
        A,L,i,CTS,Cx,Cy: Integer;
        ATPA,ATPA2: T2DPointArray;
      begin

        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);

        FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
        ColorToleranceSpeed(CTS);

        if Length(TPA) < 1 then
          Exit;

        ATPA := TPAtoATPAEx(TPA, 13, 13);
        L := High(ATPA);
        SetArrayLength(ATPA2, L+1);

        for i := 0 to L do
        begin
          B := GetTPABounds(ATPA[i]);

          with B do
          begin
            FindColorsTolerance(ATPA2[i], 16279077, B.X1, B.Y1, B.X2, B.Y2, 1);

            if (Length(ATPA2[i]) > 0) then
            begin
              SetArrayLength(TPA2, (Length(TPA2)+1));
              MiddleTPAEx(ATPA2[i], Cx, Cy);
              TPA2[A] := Point(Cx, Cy);
              Inc(A);
            end;
          end;

        end;

        SortTPAFrom(TPA2, Point(MMCX, MMCY));
        Result := TPA2;
      end;

      Procedure NextSpot;
      var
        TP: TPoint;
        TPA: TPointArray;
      begin
        FindNormalRandoms;

        TPA := FindFishSymbols;

        if (Length(TPA) = 1) then
        begin
          Writeln('Only 1 spot found, relocating...');
          HumanMMouse(TPA[0].X, TPA[0].X-5, 1, 1);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;

          FFlag(0);
          While IsMoving_F do
            Wait(1);

          Wait(randomrange(1500, 2875));
          Exit;
        end else if (Length(TPA) > 1) then
        begin
          TP := Point(TPA[1].X, TPA[1].Y);

          HumanMMouse(TP.X, TP.Y, 4, 4);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;

          FFlag(0);
          While IsMoving_F do
            Wait(1);

          Wait(randomrange(900,1500));
        end;
      end;

      Function InFishingArea: Boolean;
      begin
        Result := (Length(FindFishsymbols) > 0);
      end;

      Procedure AreaCheck;
      begin
        if not InFishingArea then
          FindNormalRandoms;
      end;

      Function Antiban: Boolean;
      var
        i: Integer;
      begin
        if not LoggedIn then Exit;
        AreaCheck;
        i := Random(40)
        case i of
          1,2:
            begin
              RandomRClick;
              Result := True;
            end;
          3,4:
            begin
              RandomMovement;
              Result := True;
            end;
          5:
            begin
              HoverSkill('Fishing', False);
              Result := True;
            end;
        end;

        Wait(RandomRange(250,350));
      end;

      Procedure GetFishType;
      var
        A,B,C,X,Y: Integer;
      begin
        A := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
        B := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
        C := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

        if FindDTM(A, X, Y, 564,250,598,280) then
        begin
          Inc(Trout_Caught);
          IncEx(FishXP, 50);
        end else if FindDTM(B, X, Y, 564,250,598,280) then
        begin
          Inc(Salmon_Caught);
          IncEx(FishXP, 70);
        end else if FindDTM(C, X, Y, 564,250,598,280) then
        begin
          Inc(Sturgeon_Caught);
          IncEx(FishXP, 80);
        end;

        FreeDTM(A);
        FreeDTM(B);
        FreeDTM(C);
      end;

    Procedure FastDropSlot(Slot: Integer);
      Var
        TB: TBox;
      begin
        Case Slot of
          1: TB := IntToBox(564,214,598,244);
          2: TB := IntToBox(606,214,640,244);
          3: TB := IntToBox(648,214,682,244);
          4: TB := IntToBox(690,214,724,244);

          5: TB := IntToBox(564,250,598,280);
          6: TB := IntToBox(606,250,640,280);
          7: TB := IntToBox(648,250,682,280);
          8: TB := IntToBox(690,250,724,280);

          9: TB := IntToBox(564,286,598,316);
          10: TB := IntToBox(606,286,640,316);
          11: TB := IntToBox(648,286,682,316);
          12: TB := IntToBox(690,286,724,316);

          13: TB := IntToBox(564,322,598,352);
          14: TB := IntToBox(606,322,640,352);
          15: TB := IntToBox(648,322,682,352);
          16: TB := IntToBox(690,322,724,352);

          17: TB := IntToBox(564,358,598,388);
          18: TB := IntToBox(606,358,640,388);
          19: TB := IntToBox(648,358,682,388);
          20: TB := IntToBox(690,358,724,388);

          21: TB := IntToBox(564,394,598,424);
          22: TB := IntToBox(606,394,640,424);
          23: TB := IntToBox(648,394,682,424);
          24: TB := IntToBox(690,394,724,424);

          25: TB := IntToBox(564,430,598,460);
          26: TB := IntToBox(606,430,640,460);
          27: TB := IntToBox(648,430,682,460);
          28: TB := IntToBox(690,430,724,460);
        end;

        MouseSpeed := RandomRange(26,39);
        MouseBox(TB.X1, TB.Y1, TB.X2, TB.Y2, mouse_right);
        WaitOptionMulti(['Drop', 'rop R', 'op R'], 400);
      end;

      Procedure DropRemaining;
      Var
        I,MS,T: Integer;
      begin
        MS := MouseSpeed;
        T  := GetTimeRunning;

        if not AlchFish then
        begin
          FastDropSlot(2);
          FastDropSlot(3);
        end;

        FastDropSlot(4);

        For I := 8 downto 5 do
        begin
          if (I = 9) then
            Break;
          FastDropSlot(I);
        end;

        For I := 9 to high(12) do
        begin
          if (I = 13) then
            Break;
          FastDropSlot(I);
        end;

        For I := 16 downto 13 do
        begin
          if (I = 17) then
            Break;
          FastDropSlot(I);
        end;

        For I := 17 to high(20) do
        begin
          if (I = 21) then
            Break;
          FastDropSlot(I);
        end;

        For I := 24 downto 21 do
        begin
          if (I = 25) then
            Break;
          FastDropSlot(I);
        end;

        For I := 25 to high(28) do
        begin
          if (I = 29) then
            Break;
          FastDropSlot(I);
        end;

        Writeln('Dropped fish in '+IntToStr(GetTimeRunning-T)+' ms.');
        MouseSpeed := MS;
        OnScreen;
      end;

      Procedure ReadyAlch;
      var
        X,Y,AlchBMP: Integer;
      begin
        AlchBMP := BitmapFromString(9, 8, 'meJxjYEABTIxMQDR7Wj8QIYuz8EkD' +
            'ya0bV9+6cg6IkKXYhdiBioGCv8EA1TyggbJwFHL7FRAJLDjEFtcE5' +
            'P768Qguwrvvo8Sui6zl/XBxiAjvlHVAWSBi8cmGmAAUh4gADQHKAr' +
            'XApSDqgSJAKQDeIUhV');

        if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          HumanMMouse(X, Y, 5, 5);
          ClickMouse2(True);
          SMART_ClearCanvas;
          OnScreen;
        end else if not FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          GameTab(tab_Magic);
          if FindBitmapIn(AlchBMP, X, Y, MIX1, MIY1, MIX2, MIY2) then
          begin
            HumanMMouse(X, Y, 5, 5);
            ClickMouse2(True);
            SMART_ClearCanvas;
            OnScreen;
          end;
        end;
        FreeBitmap(AlchBMP);
      end;

      Procedure FishnAlch;
      var
        T: Integer;
        RTA: Boolean;
      begin
        MarkTime(T);
        RTA := False;
        repeat
          AreaCheck;
          ClickToContinue;

          if (TimeFromMark(T) > 6000) then
            break;
          if RTA then
          begin
            if ExistsItem(4) then
            begin
              MMouseItem(4);
            //Give enough time for the previous alch to finish
              Wait(RandomRange(1400, 1600));
            //If this is too fast, the fishing event will reset for our player
              if InvFull then
              begin
                GameTab(tab_Inv);
                DropRemaining;
                Exit;
              end;
              if WaitUpText('Cast', 200) then
              begin
                ClickMouse2(True);
                IncEx(MagicXP, 65);
                GetFishType;
                ClickToContinue;
                OnScreen;
                MarkTime(T);
                RTA := False;
                Wait(RandomRange(1300, 1500));
              end;
            end;
          end else
          begin
            ReadyAlch;
            RTA := True;
          end;
        until(false)
      end;

      Procedure FishingWait;
      var
        T,I,I2: Integer;
      begin

        I := InvCount;

        Marktime(T);
        repeat

          AreaCheck;
          ClickToContinue;
          if (TimeFromMark(T) > 6000) then
            break;
          if InvFull then
            break;

          GameTab(tab_Inv);
          I2 := InvCount;

          if (I <> I2) then
          begin
            Marktime(T);
            GameTab(tab_Inv);
            I := InvCount;
            I2 := InvCount;
            if AntiBan then
              Marktime(T);
          end;

        until(false)

      end;

      Function FindObjSimple_F(Colors: TIntegerArray; TheUpText: TStringArray; midx, midy: integer): Boolean;
      Var
        T,i,X,Y: Integer;
        TPA: TPointArray;
        ATPA: Array of TPointArray;
      Begin
        MarkTime(T);
        Repeat
          SetArrayLength(ATPA, Length(Colors));
          for i := 0 to High(Colors) do
            FindColorsSpiralTolerance(midx, midy, ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, 10);
          TPA := MergeATPA(ATPA);
          ATPA := TPAtoATPAEx(TPA, 15, 15);
          SortATPAFrom(ATPA, Point(MSCX, MSCY));
          if (Length(ATPA) = 0) then
            Exit;

          MiddleTPAEx(ATPA[0], x, y);

          if (TimeFromMark(T) > 5000) then
            Exit;

          HumanMMouse(x, y, 10, 10);
          Wait(randomrange(75,125));
          If(IsUpTextMultiCustom(TheUpText)) then
          begin
            ClickMouse2(True);
            if DidRedClick then
            begin
              SMART_ClearCanvas;
              OnScreen;
              Result := True;
              Break;
            end;
          end;
        Until(Result)
      end;

      Procedure StartFishing;
      var
        XP1,XP2,XP3,TroutDTM,
        SalmonDTM,SturgeonDTM,
        TC,SaC,StC: Integer;
      begin
        if not LoggedIn then
          Exit;

        if InvFull then
        begin

          TroutDTM := DTMFromString('mbQAAAHicY2VgYFjNxMCwAIjXA/FOJgg/gZGBIRaI04A4HYijgbi7OxuomgkF8zNgAkYsGAwARQMG9Q==');
          SalmonDTM := DTMFromString('mbQAAAHicY2VgYLjCxMBwAogvAvEjID4LxDaMDAxmQGwPxE5AbAzEhUmJQNVMKJifARMwYsFgAABAigan');
          SturgeonDTM := DTMFromString('mbQAAAHicY2VgYLjMxMBwC4hPA/EpIL4PxImMDAwRQJwMxDlAHAPEmnZ2QNVMKJifARMwYsFgAABXgAbb');

          TC := CountItems('dtm', TroutDTM, []);
          SaC := CountItems('dtm', SalmonDTM, []);
          StC := CountItems('dtm', SturgeonDTM, []);

          IncEx(Trout_Caught, TC);
          IncEx(Salmon_Caught, SaC);
          IncEx(Sturgeon_Caught, StC);
          XP1 := (TC*50);
          XP2 := (SaC*70);
          XP3 := (StC*80);
          IncEx(FishXP, XP1+XP2+XP3);
          Report;
          FreeDTM(TroutDTM);
          FreeDTM(SalmonDTM);
          FreeDTM(SturgeonDTM);
          DropRemaining;
        end;

        MakeCompass('W');
        if FindObjSimple_F([11181203,11248801,11379872,11644073,11709866], ['se-Rod','Fishing','spot'], MSCX, MSCY) then
        begin
          FFlag(0);
          Wait(RandomRange(2000,2500));
          if AlchFish then
          begin
            FishnAlch;
          end else
            FishingWait;
        end else
          NextSpot;

      end;

      Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
      Var
        h,m,s: integer;
      begin
        if not LoggedIn then Exit;

        if (HowManyPlayers = 1) then
        begin
          if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
          else
            if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
            begin
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              OnScreen;
              if SwitchWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(True, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              SetAngle(SRL_ANGLE_HIGH);
              MakeCompass('E');
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
              w := (BreakIn * 60000);
              x := (BreakFor * 60000);
              y := RandomRange(-Bir * 60000, Bir * 60000);
              z := RandomRange(-Bfr * 60000, Bfr * 60000);
            end;
        end;
      end;

    begin
      Smart_Server := 86;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;

      setupSRL();

      Loadvars;
      DeclarePlayers;
      SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');
      CheckStats;
      CheckVersion;

      LogInPlayer;
      SetAngle(SRL_ANGLE_HIGH);

      SMART_ClearCanvas;

      OnScreen;
      AddToBelt('Barbarian rod');

      Repeat
        if not LoggedIn then LoginPlayer;

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;
        if (TimeFromMark(ReportTime)>=5000) then
          Report;
        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        AreaCheck;

        StartFishing;

      Until(false)

    end.
    Working on: Tithe Farmer

  24. #24
    Join Date
    Feb 2012
    Posts
    35
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Omg seriously that's the only thing i need? ''SetupRandomTool(60000, 2, AppPath + 'AlertSounds\SmallBeat.wav');''

    THANK YOU SO MUCH!

    Do i have to use the new SRL beta version?

    http://villavu.com/forum/showthread....ght=randomtool
    Last edited by SweDam; 03-04-2012 at 11:28 PM.

  25. #25
    Join Date
    Feb 2012
    Posts
    35
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    It just says

    "[Error] C:\Simba\Includes\SRL/SRL/core/antirandoms/randomtool.simba(257:27): Identifier expected at line 256
    Compiling failed."

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •