Jump to content

Recommended Posts

Posted

ok hi i made a TCP chat server (old version is in sig) and uhh i added an installation GUI to it, sort of NOT installing it but anyway... it wont close once the installation stops? any help would be VERY apreciative? BTW its probably just a small thing i missed but anyway here:

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.0.0
 Author:         Bob

 Script Function:
    TCP Multiclient Chat Server

#ce ----------------------------------------------------------------------------
#Include <GUIConstantsEx.Au3>
#Include <WindowsConstants.Au3>
#Include <EditConstants.Au3>
#Include <StaticConstants.Au3>
#Include <Misc.Au3> 
#Include <GUIEdit.Au3>
#Include <Date.Au3>
#Include <Array.au3>
#include <ScrollBarConstants.au3>
#include <ProgressConstants.au3>


HotKeySet('{F11}','Maxi_Mini')
HotKeySet('^p','Preferences')
HotKeySet('{F1}','Help')

Opt('GUIOnEventMode',1)

If FileExists(@ScriptDir & '\S-Settings.ini') And FileExists(@ScriptDir & '\Alert.wma') And FileExists(@ScriptDir & '\Online.wma') Then ;Installation GUI Check
    
Else

    $InstallGUI = GUICreate('Installing...',300,100,-1,-1,-2139094904)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_EXIT',$InstallGUI)
    $InstallLabel = GUICtrlCreateLabel('Installing... Files',10,10,300,20)
    $InstallProgressBar = GUICtrlCreateProgress(10,40,280,50)
    GUISetState(@SW_SHOW)
    $o0o = 0
    
    Do
    
        $o0o = $o0o + 1
        GUICtrlSetData($InstallProgressBar,$o0o,'')
    
        Do
            
            $o0o = $o0o + 1
            GUICtrlSetData($InstallProgressBar,$o0o,'')
            GUICtrlSetData($InstallLabel,'Installing... S-Settings.Ini')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','IP',@IPAddress1 )
            IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','Port','4444')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','Name','Server')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','MaxConnections','100')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Name','Courier New')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Size','10')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Style','400')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Color','0xFFFFFF')
            IniWrite(@ScriptDir & '\S-Settings.ini','##Edits##','Color','0x000000')
            Sleep(100)
            
        until $o0o = 33
        
        Do
            
            $o0o = $o0o + 1
            GUICtrlSetData($InstallProgressBar,$o0o,'')
            GUICtrlSetData($InstallLabel,'Installing... Alert.Wma') 
            FileInstall('C:\Documents and Settings\Barett\My Documents\Scripts\TCP Chat\BTCP Chat\Alert.wma',@ScriptDir & '\Alert.wma')
            Sleep(100)
        
        until $o0o = 66
    
        Do
            
            $o0o = $o0o + 1
            GUICtrlSetData($InstallProgressBar,$o0o,'')
            GUICtrlSetData($InstallLabel,'Installing... Online.Wma')
            FileInstall('C:\Documents and Settings\Barett\My Documents\Scripts\TCP Chat\BTCP Chat\Online.wma',@ScriptDir & '\Online.wma')
            Sleep(100)
        
        until $o0o = 99
        
    Until $o0o = 99
        
    GUIDelete($InstallGUI)
    
EndIf


;================================================================================================================
;================================================================================================================
;================================================================================================================



TCPStartup()

Global $F_Name = IniRead(@ScriptDir & '\S-Settings.ini','##Font##','Name','')
Global $F_Size = IniRead(@ScriptDir & '\S-Settings.ini','##Font##','Size','')
Global $F_Style = IniRead(@ScriptDir & '\S-Settings.ini','##Font##','Style','')
Global $F_Color = IniRead(@ScriptDir & '\S-Settings.ini','##Font##','Color','')
Global $Bkcolor = IniRead(@ScriptDir & '\S-Settings.ini','##Edits##','Color','')
Global $Server_Name = IniRead(@ScriptDir & '\S-Settings.ini','##Global##','Name','')
Global $IP = IniRead(@ScriptDir & '\S-Settings.ini','##Global##','IP','')
Global $Port = IniRead(@ScriptDir & '\S-Settings.ini','##Global##','Port','')
Global $MaxConnections = IniRead(@ScriptDir & '\S-Settings.ini','##Global##','MaxConnections','')

Dim $Clients[$MaxConnections + 1][10]
Global $Listen = TCPListen($IP,$Port,$MaxConnections)

If $Listen = -1 Or @error Then Exit MsgBox(42,'Error','Cannot Open A Listening Socket.')

Wipe()

$Server_GUI = GUICreate('BTCPS - Bobs [ TCP Server ] ',500,320,-1,-1,1,138)
GUISetOnEvent($GUI_EVENT_CLOSE, '_EXIT',$Server_GUI)

$Menu = GUICtrlCreateMenu('File')
$M_Pre = GUICtrlCreateMenuItem('Preferences [ Ctrl + p ]',$Menu)
GUICtrlSetOnEvent($M_Pre,'Preferences')
$HELP_Menu = GUICtrlCreateMenuItem('Help [ F1 ]',$Menu)
GUICtrlSetOnEvent($HELP_Menu,'Help')
$M_Exit = GUICtrlCreateMenuItem('Exit [ Esc ]',$Menu)
GUICtrlSetOnEvent($M_Exit,'_EXIT')


$Main = GUICtrlCreateEdit('',5,5,485,220,2103360)
GUICtrlSetFont($Main,$F_Size,$F_Style,'',$F_Name)
GUICtrlSetColor($Main,$F_Color)
GUICtrlSetBkColor($Main,$Bkcolor)
$Send = GUICtrlCreateEdit('',5,230,485,40,2101248)
GUICtrlSetFont($Send,$F_Size,$F_Style,'',$F_Name)
GUICtrlSetColor($Send,$F_Color)
GUICtrlSetBkColor($Send,$Bkcolor)
GUICtrlSetState($Send,$GUI_FOCUS)
GUISetBkColor($Bkcolor,$Server_GUI)
GUISetState(@SW_SHOW,$Server_GUI)

;================================================================================================================
;=========================================Preferences GUI========================================================
;================================================================================================================
$Preferences_GUI = GUICreate('Preferences',200,300,-1,-1,-2139094904,'',$Server_GUI)
$Change = GUICtrlCreateButton('Change',5,270,90,20)
GUICtrlSetOnEvent($Change,'Change')
$Cancel = GUICtrlCreateButton('Cancel',100,270,90,20)
GUICtrlSetOnEvent($Cancel,'Preferences')
GUICtrlCreateInput('Name : ',5,5,50,20,$ES_READONLY)
$Input_Name = GUICtrlCreateInput($Server_Name,60,5,130,20)
Global $I_Name = $Input_Name
GUICtrlCreateInput('Ip : ',5,30,50,20,$ES_READONLY)
$Input_Ip = GUICtrlCreateInput($IP,60,30,130,20)
Global $I_Ip = $Input_Ip
GUICtrlCreateInput('Port : ',5,55,50,20,$ES_READONLY)
$Input_Port = GUICtrlCreateInput($Port,60,55,130,20,$ES_NUMBER)
Global $I_Port = $Input_Port
GUICtrlCreateInput('Clients : ',5,80,50,20,$ES_READONLY)
$Input_MaxConnections = GUICtrlCreateInput($MaxConnections,60,80,130,20,$ES_NUMBER)
Global $I_Max = $Input_MaxConnections
$Input_Font = GUICtrlCreateButton('Font...',5,110,70,20)
GUICtrlSetOnEvent($Input_Font,'Font')
$Input_Bk = GUICtrlCreateButton('Background Color...',80,110,110,20)
GUICtrlSetOnEvent($Input_Bk,'Background')
$Input_Disconnect = GUICtrlCreateInput('Client Name',5,160,100,20)
$Button_Disconnect = GUICtrlCreateButton('Disconnect',110,160,80,20)
GUICtrlSetOnEvent($Button_Disconnect,'DisconnectClient')
GUISetState(@SW_HIDE)
;================================================================================================================
;=========================================END Preferences START Help GUI=========================================
;================================================================================================================
$Help_GUI = GUICreate('Help',300,300,-1,-1,-2139094904,'',$Server_GUI)
$X = GUICtrlCreateButton('x',270,0,20,20)
GUICtrlSetOnEvent($X,'Help')
$Tab = GUICtrlCreateTab(0,0,300,300)
$Help_Info = GUICtrlCreateTabItem('General Help')
GUICtrlCreateLabel('#Authored by Bob - 2009' & @CRLF & '   *Bob00037 On Autoit Forums*' & @CRLF & @CRLF & '#HotKeys : ' & @CRLF & @CRLF & ' F1 = Help ' & @CRLF & ' Esc = EXIT' & @CRLF & ' F11 = Maximize Window\Minimize Window' & @CRLF & ' CTRL + P = Preferences',30,30,300,500)
$TCP_Info = GUICtrlCreateTabItem('TCP Help')
GUICtrlCreateLabel('#HotKeys : ' & @CRLF & @CRLF & '   F1 = Help ' & @CRLF & '   CTRL + P = Preferences' & @CRLF & @CRLF &'#Server Specifications: '& @CRLF & @CRLF & '   Max Connnections = 100' & @CRLF & '   Startup = When BTCPS Is Run.' & @CRLF & '   Shutdown = When BTCPS Is Exited.',30,30,300,500)
GUISetState(@SW_HIDE)
;================================================================================================================
;=========================================END Help START NewClient GUI===========================================
;================================================================================================================
$NewClientGUI = GUICreate('Help',200,20,-1,-1,-2139094904,'',$Server_GUI)
$NewClientLabel = GUICtrlCreateLabel('',5,5,100,55)
GUISetState(@SW_HIDE)
;================================================================================================================
;=========================================END NewClient GUI======================================================
;================================================================================================================

GUICtrlSetData($Main,GUICtrlRead($Main) & 'Starting TCP Services...')
GUICtrlSetData($Main,GUICtrlRead($Main) & @CRLF & 'Name : ' & $Server_Name )
GUICtrlSetData($Main,GUICtrlRead($Main) & @CRLF & 'Ip : ' & $IP )
GUICtrlSetData($Main,GUICtrlRead($Main) & @CRLF & 'Port : ' & $Port )
GUICtrlSetData($Main,GUICtrlRead($Main) & @CRLF & 'Maximum Connections : ' & $MaxConnections )
SoundPlay(@ScriptDir & '\Online.wma')

While 1
    
    If _IsPressed('0D') And GUICtrlRead($Send) <> '' Then Sent()
    
    $OldCount = $Clients[0][0]
    Accept()
    
    If $Clients[0][0] <> $OldCount Then 
        
        NewNotif($Clients[0][0])
        
    EndIf
    
    Recieve()
    _GUICtrlEdit_Scroll($Main,$SB_PAGEDOWN)

WEnd

Func Accept() ;Accepts An Incomming Connection.
    
    Local $NewClient = TCPAccept($Listen)
    
    If $NewClient = -1 Then Return
    
    For $i = 0 To $MaxConnections
        
        If $Clients[$i][0] = 0 Then
            
            $Clients[$i][0] = $NewClient
            $Clients[0][0] += 1
            SoundPlay(@ScriptDir & '\Online.wma')
            Return
            
        EndIf
        
    Next
    
    If $Clients[0][0] <> $OldCount Then 
        
        For $i = 0 To $MaxConnections
            
        NewNotif($Clients[$i][1])
        
        
        Next
    
    EndIf

EndFunc

Func Background() ;Sets GUI Background & $Main Background & Send Background Color.
    
    Local $c = _ChooseColor(2,$Bkcolor,1,$Preferences_GUI)
    
    If @error Then
        
        MsgBox(42,'Error','Please Choose A Color.')
        
    Else
        
        GUISetBkColor($c,$Server_GUI)
        GUICtrlSetBkColor($Send,$c)
        GUICtrlSetBkColor($Main,$c)
        IniWrite(@ScriptDir & '\S-Settings.ini','##Edits##','Color',$c)
        
    EndIf
    
EndFunc

Func Broadcast($Msg) ;Broadcasts A MSG To ALL Clients.
    
    For $i = 0 To $MaxConnections
        
        If $Clients[$i][0] <> -1  Then TCPSend($Clients[$i][0],$Msg)
        
    Next

EndFunc

Func Change() ;Changes KEY Settings In The Preferences GUI.
    
    If GUICtrlRead($Input_Ip) <> '' and GUICtrlRead($I_Ip) <> IniRead(@ScriptDir & '\S-Settings.ini','##Global##','IP','') Then ; Changes IP.
        
        IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','IP',GUICtrlRead($Input_Ip ))
        GUISetState(@SW_HIDE,$Preferences_GUI)
        GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & '[Server Message] :'  & @CRLF & 'Ip Has Been Changed To ' & GUICtrlRead($Input_Ip) & @CRLF & 'Closing BTCPS In 5 Seconds...')
        Sleep(5000)
        _EXIT()
    
    EndIf

    If GUICtrlRead($Input_MaxConnections) <> '' and GUICtrlRead($I_Max) <> IniRead(@ScriptDir & '\S-Settings.ini','##Global##','MaxConnections','') Then ;Changes MAXConnections.
        
        IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','MaxConnections',GUICtrlRead($Input_MaxConnections ))
        GUISetState(@SW_HIDE,$Preferences_GUI)
        GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & '[Server Message] :'  & @CRLF & 'Maximum Connections Has Been Changed To ' & GUICtrlRead($Input_MaxConnections) & '....' & @CRLF & 'Closing BTCPS In 5 Seconds...')
        Sleep(5000)
        _EXIT()
    
    EndIf

    If GUICtrlRead($Input_Port) <> '' and GUICtrlRead($I_Port) <> IniRead(@ScriptDir & '\S-Settings.ini','##Global##','Port','')Then ;Changes PORT.
        
        IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','Port',GUICtrlRead($Input_Port ))
        GUISetState(@SW_HIDE,$Preferences_GUI)
        GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & '[Server Message] :' & @CRLF &  'Port Has Been Changed To ' & GUICtrlRead($Input_Port) & @CRLF & 'Closing BTCPS In 5 Seconds...')
        Sleep(5000)
        _EXIT()
    
    EndIf

    If GUICtrlRead($Input_Name) <> '' and GUICtrlRead($I_Name) <> IniRead(@ScriptDir & '\S-Settings.ini','##Global##','Name','') Then  ;Changes Name.
        
        IniWrite(@ScriptDir & '\S-Settings.ini','##Global##','Name',GUICtrlRead($Input_Name ))
        GUISetState(@SW_HIDE,$Preferences_GUI)
        GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & '[Server Message] :' & @CRLF & 'Server-Name Has Been Changed To ' & GUICtrlRead($Input_Name))
    
        If $Listen <> -1 Then
        
            $Server_Name = GUICtrlRead($Input_Name)
            Broadcast('[Server Message] :' & @CRLF & 'Server-Name Has Been Changed To ' & GUICtrlRead($Input_Name))
    
        Else
    
            MsgBox(0,'Error','Must Have A Client To Send To.')
    
        EndIf

    EndIf
    
EndFunc

Func Disconnect($list, $Mode = 0) ;Upon Client Disconnection - Severs The Socket's Connection.
    
    If $Mode = 0 Then
        
        For $i = 0 To $MaxConnections
            
            Broadcast('[ Server Message ]' & @CRLF &    $Clients[$i][0] & ' Has Disconnected.')
            TCPCloseSocket($Clients[$i][0])
            
        Next
        
    EndIf
    
EndFunc

Func DisconnectClient() ;Server Is Able To Disconnect Client.
    
    Local $Socket = GUICtrlRead($Input_Disconnect)
    
    If GUICtrlRead($Input_Disconnect) <> '' Then
    
        For $i = 1 To $MaxConnections
        
            If $Clients[$i][1] = GUICtrlRead($Input_Disconnect) Then TCPSend($Clients[$i][$Socket],'^/Disconnect')
            TCPCloseSocket($Clients[$i][0])
        
        Next
    
    EndIf

EndFunc

Func Font() ;Sets $Main & Send Font + Specs.
    
    Local $Font = _ChooseFont($F_Name,$F_Size,$F_Color,$F_Style,'','','',$Preferences_GUI)
    
    If @error Then 
        
        MsgBox(42,'Error','Please Choose A Font type.','',$Preferences_GUI)
    
    Else
    
        IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Name',$Font[2])
        IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Size',$Font[3])
        IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Style',$Font[5])
        IniWrite(@ScriptDir & '\S-Settings.ini','##Font##','Color',$Font[7])
        GUICtrlSetFont($Send,$Font[3],$Font[5],'',$Font[2])
        GUICtrlSetColor($Send,$Font[7])
        GUICtrlSetFont($Main,$Font[3],$Font[5],'',$Font[2])
        GUICtrlSetColor($Main,$Font[7])
    
    EndIf

EndFunc

Func Help() ;Help GUI.
    
    If WinActive($Server_GUI) Then
        
        GUISetState(@SW_SHOW,$Help_GUI)
        
    Else
        
        GUISetState(@SW_HIDE,$Help_GUI)
        
    EndIf
    
EndFunc

Func Kill($_Socket) ;Kills All Sockets And ALL Data And Variables.
    
    For $i = 0 To $MaxConnections
        
        If $Clients[$i][0] = $_Socket Then
            
            For $j = 0 to 9
                
                $Clients[$i][$j] = 0
                
            Next
            
            Return TCPCloseSocket($_Socket)
        
        EndIf
        
    Next
    
EndFunc 

Func Maxi_Mini() ;Minimizes OR Restores MAIN GUI Window Status.
    
    If WinActive($Server_GUI) Then
        
        GUISetState(@SW_MINIMIZE,$Server_GUI)
        
    Else
        
        GUISetState(@SW_RESTORE,$Server_GUI)
        
    EndIf
    
EndFunc

Func NewNotif($Name) ;Notifies Server Of Incomming Connection.
    
    GUICtrlSetData($NewClientLabel,$Name & ' Has Connected...')
    GUISetState(@SW_SHOW,$NewClientGUI)
    Sleep(1000)
    GUISetState(@SW_HIDE,$NewClientGUI) 
    
EndFunc

Func Preferences() ;Settings GUI.
    
    If WinActive($Server_GUI) = 1 Then 
        
        GUISetState(@SW_SHOW,$Preferences_GUI)
        
    Else
        
        GUISetState(@SW_HIDE,$Preferences_GUI)
        
    EndIf
    
EndFunc

Func Recieve() ;Recved MSG From Clients.
    For $i = 0 To $MaxConnections
        
        $Recv = TCPRecv($Clients[$i][0],1000000)
        
        If $Recv <> '' Then
            If StringInStr($Recv,'^/Is_Now_An_Admin') Then ;Checks For Administrative Rights.               
                $Clients[$i][2] = 'Administrator'               
                IniWrite(@ScriptDir & '/S-Settings.ini','##Client=Admin##',$Clients[$i][1],$Clients[$i][2])
                Broadcast('[ Server Message ]' & @CRLF & $Clients[$i][1] & ' Is Now An Administrator.')
                GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & '[ Server Message ]' & @CRLF &   $Clients[$i][1] & ' Is An Administrator.')
                $Recv = ''
            EndIf
            
            If StringInStr($Recv,'^/ClientList=') Then ;Sends List To Requesting Client.
                
                TCPSend($Clients[$i][0],'ClientList-Online(' & $Clients[0][1] & ')') 
                $Recv = ''
                
            EndIf
            
            If StringInStr($Recv,'^/ClientName=(') Then ;Resets $Clients[$i][1] Of The Changed Clientname.
                
                
                $Recv = StringReplace(StringReplace($Recv,'^/ClientName=(',''),')','')
                GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & $Clients[$i][1] & ' Has Changed Its Name To ' & $Recv )
                Broadcast($Clients[$i][1] & ' Has Changed Its Name To ' & $Recv)
                $Clients[$i][1] = $Recv
                $Recv = ''
                                
            EndIf
                        
            If StringInStr($Recv,'^/DisconnectClient=(') Then ;Allows\Denies Client Disconnect Other Client Abilities.
                
                $Recv = StringReplace(StringReplace($Recv,'^/DisconnectClient=(',''),')','')
                
                If $Clients[$i][2] = 'Administrator' Then
                
                    If $Recv = $Clients[0][1] Then
                        
                        If $Clients[0][1] <> 'Administrator' Then
                    
                            For $i = 0 To $MaxConnections
                            
                                If $Recv = $Clients[$i][1] Then
                                
                                    TCPSend($Clients[$i][0], '^/Disconnect.')
                                
                                EndIf
                                                    
                            Next
                                        
                        Else
                                    
                            TCPSend($Clients[$i][0],'[ Server Message ]' & @CRLF &'Cannot Disconnect An Administrator, PLease Contact Your Server Host To Disconnect The Administrator In Question.')
                                                
                        EndIf
                
                    EndIf
                
                EndIf
                
                $Recv = ''
                
            EndIf
                
            If StringInStr($Recv,'^/Username=(') Then ;Assigns A Socket\Client A Username\The Username They Have Chosen.
                
                $Recv = StringReplace(StringReplace($Recv,'^/Username=(',''),')','')
                $Clients[$i][1] = $Recv 
                $Recv = '[ Server Message ]' & @CRLF & $Recv & ' has joined' & @CRLF
                GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & $Recv)
                Broadcast($Recv)
                $Recv = ''
                
            EndIf
            
            If $Recv <> '' Then ;If It Isnt Any Of The Above.
                
                GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & $Clients[$i][1] & ' Says : ' & @CRLF & $Recv)
                Broadcast($Clients[$i][1] & ' Says :' & @CRLF & $Recv)
                SoundPlay(@ScriptDir & '\Alert.wma')
                
            EndIf
        
        EndIf
    
    Next

EndFunc

Func Sent() ;Sends A Msg To ALL Clients
    
    If GUICtrlRead($Send) <> '' Then
        
        GUICtrlSetData($Main, GUICtrlRead($Main) & @CRLF & $Server_Name & ' : ' & @CRLF & GUICtrlRead($Send))
        Broadcast($Server_Name & ' Says : ' & @CRLF & GUICtrlRead($Send))
        GUICtrlSetData($Send,'')
        GUICtrlSetState($Send,$GUI_FOCUS)
    
    EndIf

EndFunc

Func Wipe() ;Wipes The Variables The Past Server Start Have Assigned.
    
    For $i = 0 To $MaxConnections
        
        If $Clients[$i][0] <> 0 Then Kill($Clients[$i][0])
        
        For $j = 0 to 9
            
            $Clients[$i][$j] = 0
            
        Next
        
    Next
    
EndFunc

Func _EXIT() ;On Exit
    
    For $i = 0 To $MaxConnections
        
            Broadcast('^/Disconnect')
            Sleep(100)
            TCPCloseSocket($Clients[0][0])
        
    Next
    
    Sleep(1000)
    TCPShutdown()   
    Exit
    
EndFunc
Posted

Bad installer. You FileInstall a couple of files 66 times in the same place from the same source just because it looks better on the progress bar?

I don't see any OnEventMode and I don't see you checking for GUIGetMsg either. You need to do either of the two. If anything is unclear, then please ask.

Posted

well uhh fileinstall() im using that.. i guess i could move them and the iniwrite OUTSIDE of the loops ill try that thanks.. its just i wanted it to look Profestional withought making it complicated

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...