###############################################################################
# Copyright (c) 2006 IBM Corporation.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial implementation
###############################################################################
KillableExecution_ScriptExecutionConnectionException=Failed to start to execute script
KillableExecution_Debug_1=Using command line: 
KillableExecution_FinishStatus_Ok=Application finished successfully
KillableExecution_FinishStatus_Error=Application finished with error code
KillableExecution_FinishStatus_NotExecutable=Command is not an executable
KillableExecution_FinishStatus_CommandNotFound=Command not found
KillableExecution_FinishStatus_InvalidExitCode=Invalid exit code
KillableExecution_FinishStatus_Hangup=Hangup (POSIX)
KillableExecution_FinishStatus_TerminalInterrupt=Terminal interrupt (ANSI)
KillableExecution_FinishStatus_TerminalQuit=Terminal quit (POSIX)
KillableExecution_FinishStatus_IllegalInstruction=Illegal instruction (ANSI)
KillableExecution_FinishStatus_TraceTrap=Trace trap (POSIX)
KillableExecution_FinishStatus_IOTTrap=IOT Trap (4.2 BSD)
KillableExecution_FinishStatus_BUSError=BUS error (4.2 BSD)
KillableExecution_FinishStatus_FloatingPointException=Floating point exception (ANSI)
KillableExecution_FinishStatus_Kill=Kill(can't be caught or ignored) (POSIX)
KillableExecution_FinishStatus_UserDefinedSignal1=User defined signal 1 (POSIX)
KillableExecution_FinishStatus_InvalidMemorySegmentAccess=Invalid memory segment access (ANSI)
KillableExecution_FinishStatus_UserDefinedSignal2=User defined signal 2 (POSIX)
KillableExecution_FinishStatus_BrokenPipe=Write on a pipe with no reader, Broken pipe (POSIX)
KillableExecution_FinishStatus_AlarmClock=Alarm clock (POSIX)
KillableExecution_FinishStatus_Termination=Termination (ANSI)
KillableExecution_FinishStatus_StackFault=Stack fault
KillableExecution_FinishStatus_ChildProcessStoppedOrExited=Child process has stopped or exited, changed (POSIX)
KillableExecution_FinishStatus_ContinueExecuting=Continue executing, if stopped (POSIX)
KillableExecution_FinishStatus_StopExecuting=Stop executing(can't be caught or ignored) (POSIX)
KillableExecution_FinishStatus_TerminalStopSignal=Terminal stop signal (POSIX)
KillableExecution_FinishStatus_BackgroundProcessReadTTY=Background process trying to read, from TTY (POSIX)
KillableExecution_FinishStatus_BackgroundWriteTTY=Background process trying to write, to TTY (POSIX)
KillableExecution_FinishStatus_UrgentConditionSocket=Urgent condition on socket (4.2 BSD)
KillableExecution_FinishStatus_CPULimitExceeded=CPU limit exceeded (4.2 BSD)
KillableExecution_FinishStatus_FileSizeLimitExceeded=File size limit exceeded (4.2 BSD)
KillableExecution_FinishStatus_VirtualAlarmClock=Virtual alarm clock (4.2 BSD)
KillableExecution_FinishStatus_ProfilingAlarmClock=Profiling alarm clock (4.2 BSD)
KillableExecution_FinishStatus_WindowSizeChange=Window size change (4.3 BSD, Sun)
KillableExecution_FinishStatus_IOPossible=I/O now possible (4.2 BSD)
KillableExecution_FinishStatus_PowerFailureRestart=Power failure restart (System V)
KillableExecution_FinishStatus_Unknown=Unknown

Connection_AuthenticationTypeNotSupported=Authentication type not supported\!
ControlChannel_Open_FailedCreateIOStream=Failed to create input/outputstream for auxiliary shell in ssh.ControlConnection
Connection_Connect_InvalidPrivateKey=Invalid private key
Connection_Connect_FailedCreateSession=Failed to create session
Connection_Connect_FailedConnect=Failed to connect
Connection_Connect_FailedCreateControlChannel=Failed to create control channel
Connection_Connect_FailedCreateSFTPConnection=Failed to create SFTP connection for ssh.ExecutionManager
Connection_Connect_FailedUnsupportedKeySize=Unsupported Keysize

CopyTools_DownloadFileFile_FailedDownloadFile=Failed to download file: 
CopyTools_doDownloadFileToFile_CannotWriteFile=Download cannot write to local file ({0})
CopyTools_doDownloadFileToFile_ExecutionFailed=Execution of download failed ({0})
CopyTools_doDownloadFileToFile_CommandFailes=Download command failed on remote host (exit value {0})
CopyTools_doUploadFileFromFile_CannotReadFile=Upload cannot read local file ({0})
CopyTools_doUploadFileFromFile_ExecutionFailed=Execution of upload failed ({0})
CopyTools_doUploadFileFromFile_CommandFailed=Upload command failed on remote host (exit value {0})
ControlChannel_Open_FailedCreateAuxiliaryShell=Failed to create auxiliary shell for ssh.ControlConnection
ControlChannel_Debug_ControlConnectionReceived=Control connection received: 
Connection_CreateExecChannel_FailedCreateNewExecChannel=Failed to create new execution channel
Connection_CreateTunnel_TunnelPortAlreadyAlloced=Failed to create tunnel, since port is already allocated for a tunnel
Connection_CreateTunnel_FailedCreateTunnel=Failed to create tunnel
ControlChannel_Open_FailedSendInitCommands=Failed to send initialization commands to auxiliary shell
Connection_ReleaseTunnel_PortNotAllocedForTunnel=Failed to remove tunnel, since port is not allocated for a tunnel
ControlChannel_Debug_ReceivedControlTerminalPath=Received controlTerminalPath: 
Connection_ReleaseTunnel_FailedRemoveTunnel=Failed to remove tunnel
Connection_CreateConnectionSlot_FailedCreateNewSession=Failed to create new session for more execution channels
ControlChannel_Debug_StartedWaitingControlTerminalPath=Started waiting for controlTerminalPath
ControlChannel_Open_WaitControlTerminalPathInterrupted=Wait for controlTerminalPath was interrupted
Connection_CreateConnectionSlot_FailedConnectNewSession=Failed to connect to new session for more execution channels
Connection_SetCipherType_CipherNotSupported=Cipher not supported

DownloadExecution_DownloadExecution_FailedCreateDownload=Failed to create download
ExecutionManager_CreateTunnel_AllLocalPortsBusy=All local ports are busy.
ExecutionObserver_ExecutionObserver_RemoteCommandObserver=RemoteCommandObserver
ExecutionTools_ExecuteBashCommand_FailedRunBashCommand=Failed to run Bash command
PathTools_47=a/
RemoteFileTools_FetchRemoteAttr_FailedFetchAttr=Failed to fetch attributes from remote filedirectory
RemoteFileTools_UploadPermissions_FailedSetPermissions=Failed to set permissions
RemoteStatusTools_GetPasswdFields_NoUsernameInPasswdFile=Username does not exist in the passwd file\!
RemoteFileTools_ValidateRemotePath_NotValid=\ is not a valid path on remote host
RemoteFileTools_ValidateLocalFile_NotValid=\ is not a valid local file
RemoteFileTools_ValidateLocalItem_DoesNotExist=\ does not exist
RemoteFileTools_ValidateLocalDir_NotValid=\ is not a valid local directory
RemoteFileTools_ValidateRemoteFile_NotValid=\ is not a valid remote file
RemoteFileTools_ValidateRemoteDir_NotValid=\ is not a valid remote directory
RemoteFileTools_ListFiles_FailedListRemote=Failed to list files on remote host
RemoteFileTools_FailedSetPermission=Failed to set permission on remote file/directory
RemoteFileTools_GetItemsPath_FailedListRemoteFiles=Failed to list files on remote host
RemoteFileTools_GetItem_PathNotExist=Path does not exist
ScriptExecution_StartExecution_FailedInitStreams=Failed to initialize streams for ssh.ScriptExecution
UploadExecution_StartExecution_FailedCreateUpload=Failed to create upload
