Reinhard Russinger 5 лет назад
Родитель
Сommit
dcef076504
100 измененных файлов с 5466 добавлено и 9296 удалено
  1. 4 5
      Config.in
  2. 1 1
      board/GfA/Display001/BUILD
  3. 0 1145
      board/GfA/Display001/rootfs/etc/joe/joerc
  4. 8 1
      board/GfA/Display001/rootfs/etc/profile
  5. 0 1
      board/GfA/Display001/rootfs/etc/ssh/sshd_config
  6. BIN
      board/GfA/Display001/rootfs/lib/firmware/GfA/WrkPruss.elf
  7. BIN
      board/GfA/Display001/rootfs/opt/GfA-Browser/GfA-browser
  8. 5 8
      board/GfA/Display001/rootfs/root/CopyEMMCtoSD.sh
  9. 45 7
      board/GfA/Display001/rootfs/root/CopySDtoEMMC.sh
  10. 49 9
      board/GfA/Display001/rootfs/root/EraseEMMC.sh
  11. 0 9
      board/GfA/Display001/rootfs/root/README.txt
  12. 3 3
      board/GfA/Display001/rootfs/root/startbrowser.sh
  13. BIN
      board/GfA/Display001/rootfs/usr/sbin/fbvncserver
  14. BIN
      board/GfA/Display001/rootfs/usr/sbin/vncpasswd
  15. BIN
      board/GfA/Display001/rootfs/var/GfA/Pruuart
  16. 45 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/index.vnc
  17. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/VncViewer.jar
  18. 141 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/javaviewer.pseudo_proxy.patch
  19. 382 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile
  20. 2 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.am
  21. 382 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.in
  22. 338 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/README
  23. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedUltraViewerSSL.jar
  24. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedVncViewer.jar
  25. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/UltraViewerSSL.jar
  26. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/VncViewer.jar
  27. 26 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/index.vnc
  28. 65 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/onetimekey
  29. 73 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/proxy.vnc
  30. 3676 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ss_vncviewer
  31. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultra.vnc
  32. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultraproxy.vnc
  33. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultrasigned.vnc
  34. 35 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/LICENSE.txt
  35. 102 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/README.md
  36. 0 56
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/error-handler.js
  37. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/alt.svg
  38. 0 106
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/clipboard.svg
  39. 0 96
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/connect.svg
  40. 0 96
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrl.svg
  41. 0 100
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrlaltdel.svg
  42. 0 94
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/disconnect.svg
  43. 0 71
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/drag.svg
  44. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/error.svg
  45. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/esc.svg
  46. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/expander.svg
  47. 0 93
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/fullscreen.svg
  48. 0 82
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle.svg
  49. 0 172
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle_bg.svg
  50. 0 42
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/Makefile
  51. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-120x120.png
  52. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-144x144.png
  53. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-152x152.png
  54. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-16x16.png
  55. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-192x192.png
  56. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-24x24.png
  57. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-32x32.png
  58. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-48x48.png
  59. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-60x60.png
  60. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-64x64.png
  61. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-72x72.png
  62. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-76x76.png
  63. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-96x96.png
  64. 0 163
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon-sm.svg
  65. 0 163
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon.svg
  66. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/info.svg
  67. 0 75
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/keyboard.svg
  68. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_left.svg
  69. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_middle.svg
  70. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_none.svg
  71. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_right.svg
  72. 0 87
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/power.svg
  73. 0 76
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/settings.svg
  74. 0 86
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/tab.svg
  75. 0 90
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/toggleextrakeys.svg
  76. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/warning.svg
  77. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/de.json
  78. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/el.json
  79. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/es.json
  80. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/nl.json
  81. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/pl.json
  82. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/sv.json
  83. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/tr.json
  84. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/zh.json
  85. 0 170
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/localization.js
  86. 0 4
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/CREDITS
  87. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/bell.mp3
  88. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/bell.oga
  89. 0 902
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/styles/base.css
  90. 0 63
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/styles/lite.css
  91. 0 1669
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/ui.js
  92. 0 230
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/webutil.js
  93. 0 110
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/base64.js
  94. 0 271
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/des.js
  95. 0 698
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/display.js
  96. 0 40
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/encodings.js
  97. 0 38
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/inflator.js
  98. 0 310
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/domkeytable.js
  99. 0 127
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/fixedkeys.js
  100. 0 314
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/keyboard.js

+ 4 - 5
Config.in

@@ -1,10 +1,9 @@
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/wt/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/network_interfaces_script/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfa_addons/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/applicationlauncher/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfasqlplugin/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/qtfreevirtualkeyboard/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfabrowser/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfaipc/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfatimer/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/qmlplugins/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/python-ufw/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libulfius/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libyder/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/liborcania/Config.in"

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-655
+657

+ 0 - 1145
board/GfA/Display001/rootfs/etc/joe/joerc

@@ -1,1145 +0,0 @@
-                         Initialization file for JOE
-                                Standard Joe
-
- JOE looks for this file in:
-	1 - $HOME/.joerc
-	2 - /etc/joe/joerc
-
- This file can include other files by placing the following include command
- in the first column:
-
- :include filename
-
- FIRST SECTION: Default global options (these options can also be specified
- on the command line.  Also the NOXON, LINES, COLUMNS, DOPADDING and BAUD
- options can be specified in environment variables):
-
- Override colors of lexical classes specified in syntax files:
- Put each color override you want in the first column.
-
- Valid colors:
-   bold inverse blink dim underline
-   white cyan magenta blue yellow green red black
-   bg_white bg_cyan bg_magenta bg_blue bg_yellow bg_green bg_red bg_black
-
- Other colors are available: see syntax/c.jsf for documentation.
-
- Override all instances of class Idle:
-   =Idle red
-
- Override Idle only for c syntax file:
-   =c.Idle red
-
- The following list is from c.jsf.  Look at other syntax files for more classes.
-
- =Idle
- =Bad        bold red
- =Preproc    blue
- =Define     bold blue
- =IncLocal   cyan
- =IncSystem  bold cyan
- =Constant   cyan
- =Escape     bold cyan
- =Type       bold
- =Keyword    bold
- =CppKeyword bold
- =Brace      magenta
- =Control
-
- Put each option you want set in the first column:
-
- -option	Sets the option
- --option	Clears the option
-
- -help_is_utf8	Set if help text is in UTF-8 format.  Leave clear if it's a raw 8-bit format.
-
- -mid		Cursor is recentered when scrolling is necessary
-
- -marking	Text between ^KB and cursor is highlighted (use with -lightoff)
-
- -asis		Characters 128 - 255 shown as-is
-
- -force		Force final newline when files are saved
-
- -nolocks	If you don't want file locks to be used
-
- -nomodcheck	Disable periodic checking of disk file newer than buffer
-		(this checking happens on save even with this option).
-
- -nocurdir	Do not prompt with current directory
-
--nobackups	If you don't want backup files to be created
-
- -break_hardlinks
-		Delete file before writing, to break hard links
-		(but don't break symbolic links).
-
- -break_links
-		Delete file before writing, to break hard links
-		and symbolic links.
-
-
- -lightoff	Turn off highlighting after block copy or move
-
- -exask		^KX always confirms file name
-
- -beep		Beep on errors and when cursor goes past extremes
-
- -nosta		Disable top-most status line
-
- -keepup	%k and %c status line escape sequences updated frequently
-
- -pg nnn	No. lines to keep for PgUp/PgDn
-
- -undo_keep nnn	Number of undo records to keep.  0 for infinite.
-
- -csmode	^KF after a pervious search does a ^L instead
-
- -backpath path
-		Directory to store backup files (one space between
-		'backpath' and the 'path', no trailing spaces or comments
-		after the path).
-
- -floatmouse	Clicking past end of line moves the cursor past the end
- 
- -rtbutton	Use the right mouse button for action, instead of the left
-
- -nonotice	Disable copyright notice
-
- -noxon		Attempt to turn off ^S/^Q processing
-
- -orphan	Put extra files given on command line in orphaned buffers
-		instead of in windows
-
- -dopadding	Output pad characters (for when there is no tty handshaking)
-
- -lines nnn	Set no. screen lines
-
- -baud nnn	Set baud rate for terminal optimizations
-
- -columns nnn	Set no. screen columns
-
- -help		Start with help on
-
- -skiptop nnn	Don't use top nnn lines of the screen
-
--notite         Don't send terminal initialization and termination strings:
-                prevents restoration of screen on exit.
-
- -usetabs       Use tabs to help optimize screen update.
-
--assume_color	Assume terminal has ANSI color support even if termcap/terminfo entry
-		says that it doesn't.  This only applies if the terminal otherwise
-		looks like an ANSI terminal (support bold and capability starts with
-		ESC [).
-
--assume_256color
-		Assume terminal has xterm 256 color support (ESC [ 38 ; 5 ; NNN m and
-                ESC [ 48 ; 5 ; NNN m).
-
--guess_non_utf8	Allow guess of non-UTF-8 file encoding in a UTF-8 locale.
-
- -guess_utf8	Allow guess of UTF-8 file encoding in non-UTF-8 locale.
-
--guess_crlf     Automatically detect MS-DOS files and set -crlf appropriately
-
--guess_indent	Guess indent character (tab or space).
-
--menu_above	Position menu/list above prompt when enabled.  Otherwise position
-		below prompt.
-
--transpose	Transpose rows with columns in all menus.
-
- -menu_explorer	Stay in menu system when a directory is selected (otherwise
-                directory is added to path and menu is closed).
-
- -menu_jump	Jump into file selection menu when tab is hit (otherwise, menu
-		comes up, but cursor stays in file name prompt).
-
- -icase         Search is case insensitive by default.
-
- -wrap          Search wraps
-
- -autoswap	Swap markb with markk when necessary
-
--joe_state     Use ~/.joe_state file
-
- -mouse		Enable xterm mouse support.  When enabled, left-click will
-		position the cursor and left-click-drag will select blocks
-		For normal xterm cut and paste, hold the shift key down.
-
- -joexterm	If you are using XTerm version 212 or higher, and if it was
-		configured with --enable-paste64, set this flag: it allows
-		mouse cut & paste to work properly (text selected with the
-		mouse can be pasted into other application, and middle
-		button clicks paste into JOE).
-
- -square	Rectangular block mode
-
- -text_color color
-		Set color for text.
- -status_color color
-		Set color for status bar.
- -help_color color
-		Set color for help.
- -menu_color color
-		Set color for menus.
- -prompt_color color
-		Set color for prompts.
- -msg_color color
-		Set color for messages.
-
-		For example: -text_color bg_blue+white
-		Sets the background color to blue and foreground color to white.
-
--restore	Restore previous cursor position when files are opened
-
--search_prompting
-		Search prompts with previous search request.
-
- Status line definition strings.  -lmsg defines the left-justified string and
- -rmsg defines the right-justified string.  The first character of -rmsg is
- the background fill character.  The following escape sequences can be used
- in these strings:
-
-  %t  12 hour time
-  %u  24 hour time
-  %T  O for overtype mode, I for insert mode
-  %W  W if wordwrap is enabled
-  %I  A if autoindent is enabled
-  %X  Rectangle mode indicator
-  %n  File name
-  %m  '(Modified)' if file has been changed
-  %*  '*' if file has been changed
-  %R  Read-only indicator
-  %r  Row (line) number
-  %c  Column number
-  %o  Byte offset into file
-  %O  Byte offset into file in hex
-  %a  Ascii value of character under cursor
-  %A  Ascii value of character under cursor in hex
-  %p  Percent of file cursor is at
-  %l  No. lines in file
-  %k  Entered prefix keys
-  %S  '*SHELL*' if there is a shell running in window
-  %M  Macro recording message
-  %y  Syntax
-  %x  Context (first non-indented line going backwards)
-  %dd day
-  %dm month
-  %dY year
-  %Ename%  value of environment variable
-  %Tname%  value of option (ON or OFF for boolean options)
-
- These formatting escape sequences may also be given:
- 
-  \i  Inverse
-  \u  Underline
-  \b  Bold
-  \d  Dim
-  \f  Blink
-
--lmsg \i%k%T%W%I%X %n %m%y%R %M %x
--rmsg  %S Row %r Col %c %t  Ctrl-K H for help
-
- SECOND SECTION: File name dependant local option settings:
-
- Each line with '*' in the first column indicates the modes which should be
- set for files whose name matches the regular expression.  If more than one
- regular expression matches the file name, then the last matching one is
- chosen.
-
- A file contents regular expression may also be specified on a separate line
- with '+regex'.  If this regular expresssion is given, then both the file name
- regex and the file contents regex must match for the options to apply.
-
- Here are the modes which can be set:
-
-	-cpara >#!;*/%
-				Characters which can indent paragraphs.
-
-	-encoding name
-				Set file coding (for example: utf-8, iso-8859-15)
-
-	-syntax name
-				Specify syntax (syntax file called
-				'name.jsf' will be loaded)
-
-	-hex			Hex editor mode
-
-	-highlight		Enable highlighting
-
-	-smarthome		Home key first moves cursor to beginning of line,
-				then if hit again, to first non-blank character.
-
-	-indentfirst		Smart home goes to first non-blank character first,
-				instead of going the beginning of line first.
-
-	-smartbacks		Backspace key deletes 'istep' number of
-				'indentc's if cursor is at first non-space
-				character.
-
-	-tab nnn		Tab width
-
-	-indentc nnn		Indentation character (32 for space, 9 for tab)
-
-	-istep nnn		Number of indentation columns
-
-	-spaces			TAB inserts spaces instead of tabs.
-
-	-purify			Fix indentation if necessary for rindent, lindent and backs
-				(for example if indentation uses a mix of tabs and spaces,
-				and indentc is space, indentation will be converted to all
-				spaces).
-
-	-crlf			File uses CR-LF at ends of lines
-
-	-wordwrap		Wordwrap
-
-	-nobackup		If you don't want backup file to be created
-
-	-autoindent		Auto indent
-
-	-overwrite		Overtype mode
-
-        -picture                Picture mode (right arrow can go past end of lines)
-
-	-lmargin nnn		Left margin
-
-	-rmargin nnn		Right margin
-
-	-flowed			Put one space after intermediate paragraph lines
-				for support of flowed text.
-
-
-	-french			One space after '.', '?' and '!' for wordwrap
-				and paragraph reformat instead of two.  Joe
-				does not change the spacing you give, but
-				sometimes it must put spacing in itself.  This
-				selects how much is inserted.
-
-	-linums			Enable line numbers on each line
-
-	-rdonly			File is read-only
-
-	-keymap name
-				Keymap to use if not 'main'
-
-	-lmsg			Status line definition strings-
-	-rmsg			see previous section for more info.
-
-	-mfirst macro
-				Macro to execute on first modification
-	-mnew macro
-				Macro to execute when new files are loaded
-	-mold macro
-				Macro to execute when existing files are loaded
-	-msnew macro
-				Macro to execute when new files are saved
-	-msold macro
-				Macro to execute when existing files are saved
-
-	Macros for the above options are in the same format as in the key
-	binding section below- but without the key name strings.
-
-	These define the language syntax for ^G (goto matching delimiter):
-
-	-single_quoted		Text between '  ' should be ignored (this is
-				not good for regular text since ' is
-				normally used alone as an apostrophe)
-
-	-no_double_quoted	Text between " " should not be ignored (useful
-				for TeX).
-
-	-c_comment		Text between /* */ should be ignored
-
-	-cpp_comment		Text after // should be ignored
-
-	-pound_comment		Text after # should be ignored
-
-	-vhdl_comment		Text after -- should be ignored
-
-	-semi_comment		Text after ; should be ignored
-
-	-text_delimiters begin=end:if=elif=else=endif
-
-				Define word delimiters
-
- Default local options
--highlight
--istep 2
-
- Perforce macro: use this macro (put in first column) to have joe "p4 edit"
- a file you're about to change.
-
- -mfirst if,"rdonly && joe(sys,\"p4 edit \",name,rtn)",then,mode,"o",msg,"executed \"p4 edit ",name,"\"",rtn,endif
-
- -mfirst if,"rdonly && joe(sys,\"p4 edit \",name,rtn)",then,reload,msg,"executed \"p4 edit ",name,"\"",rtn,endif
-
- File type table is now in a separate file.  You can copy this file to ~/.joe and customize it.
-
-:include ftyperc
-
- SECOND and 1/2 SECTION: Option menu layout
-
-	:defmenu name	Defines a menu.
-
-	macro string comment
-			A menu entry.  Macro is any JOE macro- see "Macros:"
-			below. String is the label to be used for the macro
-			in the menu.  It is in the same format as the -lmsg
-			and -rmsg options above.
-
-			Two whitespace characters in a row begins a comment.
-			Use '% ' for a leading space in the string.
-
-:defmenu root
-mode,"overwrite",rtn	T Overtype %Zoverwrite%
-mode,"hex",rtn	% % Hex edit mode
-mode,"autoindent",rtn	I Autoindent %Zautoindent%
-mode,"wordwrap",rtn	W Word wrap %Zwordwrap%
-mode,"tab",rtn	D Tab width %Ztab%
-mode,"lmargin",rtn	L Left margin %Zlmargin%
-mode,"rmargin",rtn	R Right margin %Zrmargin%
-mode,"square",rtn	X Rectangle mode %Zsquare%
-mode,"indentc",rtn	% % Indent char %Zindentc%
-mode,"istep",rtn	% % Indent step %Zistep%
-mode,"highlight",rtn	H Highlighting %Zhighlight%
-mode,"crlf",rtn	Z CR-LF (MS-DOS) %Zcrlf%
-mode,"linums",rtn	N Line numbers %Zlinums%
-mode,"beep",rtn	B Beep %Zbeep%
-mode,"rdonly",rtn	O Read only %Zrdonly%
-mode,"syntax",rtn	Y Syntax
-mode,"encoding",rtn	E Encoding
-mode,"asis",rtn	% % Meta chars as-is
-mode,"language",rtn	V Language
-mode,"picture",rtn	P picture %Zpicture%
-menu,"more-options",rtn	  % % More options...
-
-:defmenu more-options
-menu,"^G",rtn	% % ^G options
-menu,"search",rtn	% % search options
-menu,"paragraph",rtn	% % paragraph options
-menu,"file",rtn	% % file options
-menu,"menu",rtn	% % menu options
-menu,"global",rtn	% % global options
-menu,"cursor",rtn	% % cursor options
-menu,"marking",rtn	% % marking options
-menu,"tab",rtn	% % tab/indent options
-
-:defmenu menu
-mode,"menu_explorer",rtn	% % Menu explorer %Zmenu_explorer%
-mode,"menu_above",rtn	% % Menu position %Zmenu_above%
-mode,"menu_jump",rtn	% % Jump into menu %Zmenu_jump%
-mode,"transpose",rtn	% % Transpose menus %Ztranspose%
-
-:defmenu ^G
-mode,"single_quoted",rtn	% % ^G ignores '...' %Zsingle_quoted%
-mode,"no_double_quoted",rtn	% % ^G no ignore "..." %Zno_double_quoted%
-mode,"c_comment",rtn	% % ^G ignores /*...*/ %Zc_comment%
-mode,"cpp_comment",rtn	% % ^G ignores //... %Zcpp_comment%
-mode,"pound_comment",rtn	% % ^G ignores #... %Zpound_comment%
-mode,"vhdl_comment",rtn	% % ^G ignores --... %Zvhdl_comment%
-mode,"semi_comment",rtn	% % ^G ignores ;... %Zsemi_comment%
-mode,"tex_comment",rtn % % ^G ignores %... %Ztex_comment%
-mode,"text_delimiters",rtn % % Text delimiters %Ztext_delimiters%
-
-:defmenu search
-mode,"icase",rtn	% % Case insensitivity %Zicase%
-mode,"wrap",rtn	% % Search wraps %Zwrap%
-mode,"search_prompting",rtn	% % Search prompting %Zsearch_prompting%
-mode,"csmode",rtn	% % Continued search %Zcsmode%
-
-:defmenu paragraph
-mode,"french",rtn	% % French spacing %Zfrench%
-mode,"flowed",rtn	% % Flowed text %Zflowed%
-mode,"cpara",rtn	% % Paragraph indent chars %Zcpara%
-
-:defmenu file
-mode,"restore",rtn	% % Restore cursor %Zrestore%
-mode,"guess_crlf",rtn	% % Auto detect CR-LF %Zguess_crlf%
-mode,"guess_indent",rtn	% % Guess indent %Zguess_indent%
-mode,"guess_non_utf8",rtn	% % Guess non-UTF-8 %Zguess_non_utf8%
-mode,"guess_utf8",rtn	% % Guess UTF-8 %Zguess_utf8%
-mode,"force",rtn	% % Force last NL %Zforce%
-mode,"nobackup",rtn	% % No backup %Znobackup%
-
-:defmenu global
-mode,"nolocks",rtn	% % Disable locks %Znolocks%
-mode,"nobackups",rtn	% % Disable backups %Znobackups%
-mode,"nomodcheck",rtn	% % Disable mtime check %Znomodcheck%
-mode,"nocurdir",rtn	% % Disable current dir %Znocurdir%
-mode,"exask",rtn	% % Exit ask %Zexask%
-mode,"nosta",rtn	% % Disable status line %Znosta%
-mode,"keepup",rtn	% % Fast status line %Zkeepup%
-mode,"break_hardlinks",rtn	% % Break hard links %Zbreak_hardlinks%
-mode,"break_links",rtn	% % Break links %Zbreak_links%
-mode,"joe_state",rtn	% % Joe_state file %Zjoe_state%
-mode,"undo_keep",rtn	% % No. undo records %Zundo_keep%
-mode,"backpath",rtn	% % Path to backup files %Zbackpath%
-
-:defmenu cursor
-mode,"pg",rtn	% % No. PgUp/PgDn lines %Zpg%
-mode,"mid",rtn	C Center on scroll %Zmid%
-mode,"floatmouse",rtn	% % Click past end %Zfloatmouse%
-mode,"rtbutton",rtn	% % Right button %Zrtbutton%
-
-:defmenu marking
-mode,"autoswap",rtn	% % Autoswap mode %Zautoswap%
-mode,"marking",rtn	% % Marking %Zmarking%
-mode,"lightoff",rtn	% % Auto unmask %Zlightoff%
-
-:defmenu tab
-mode,"smarthome",rtn	% % Smart home key %Zsmarthome%
-mode,"smartbacks",rtn	% % Smart backspace %Zsmartbacks%
-mode,"indentfirst",rtn	% % To indent first %Zindentfirst%
-mode,"purify",rtn	% % Clean up indents %Zpurify%
-mode,"spaces",rtn	% % No tabs %Zspaces%
-
- THIRD SECTION: Named help screens:
-
- Use \i to turn on/off inverse video
- Use \u to turn on/off underline
- Use \b to turn on/off bold
- Use \d to turn on/off dim
- Use \f to turn on/off flash
-
- Use \| to insert a spring: all springs in a given line are set to the same
- width such that the entire line exactly fits in the width of the screen (if
- it's not an exact multiple so that there are N spaces remaining, the
- rightmost N springs each get one extra space).  Hint: if you want vertical
- alignment, each line should have the same number of springs.
-
- Use the '-help_is_utf8' global option to allow UTF-8 sequences in the help
- text.  Otherwise, the locale 8-bit character set is assumed.
-
-{Basic
-\i   Help Screen    \|turn off with ^KH    more help with ESC . (^[.)              \i
-\i \i\|\uCURSOR\u           \|\uGO TO\u            \|\uBLOCK\u      \|\uDELETE\u   \|\uMISC\u         \|\uEXIT\u      \|\i \i
-\i \i\|^B left ^F right \|^U  prev. screen \|^KB begin  \|^D char. \|^KJ reformat \|^KX save  \|\i \i
-\i \i\|^P up   ^N down  \|^V  next screen  \|^KK end    \|^Y line  \|^KA center   \|^C  abort \|\i \i
-\i \i\|^Z previous word \|^A  beg. of line \|^KM move   \|^W >word \|^T  options  \|^KZ shell \|\i \i
-\i \i\|^X next word     \|^E  end of line  \|^KC copy   \|^O word< \|^R  refresh  \|\uFILE\u      \|\i \i
-\i \i\|\uSEARCH\u           \|^KU top of file  \|^KW file   \|^J >line \|\uSPELL\u        \|^KE edit  \|\i \i
-\i \i\|^KF find text    \|^KV end of file  \|^KY delete \|^_ undo  \|^[N word     \|^KR insert\|\i \i
-\i \i\|^L  find next    \|^KL to line No.  \|^K/ filter \|^^ redo  \|^[L file     \|^KD save  \|\i \i
-}
-
-{Windows
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i\|^KO Split the window in half           \|^KE Load file into window             \|\i \i
-\i \i\|^KG Make current window bigger         \|^KT Make current window smaller       \|\i \i
-\i \i\|^KN Go to the window below             \|^KP Go to the window above            \|\i \i
-\i \i\|^[V Switch to next buffer              \|^[U Switch to previous buffer         \|\i \i
-\i \i\|^C  Eliminate the current window       \|^KI Show all windows / Show one window\|\i \i
-}
-
-{Advanced
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i\|\uMACROS\u         \|\uMISC\u            \|\uSCROLL\u    \|\uSHELL\u       \|\uGOTO\u       \|\uI-SEARCH\u     \|\i \i
-\i \i\|^K[ 0-9 Record \|^K SPACE status \|^[W Up    \|^K' Window  \|^[B To ^KB \|^[R Backwards\|\i \i
-\i \i\|^K]     Stop   \|^K\\ Repeat      \|^[Z Down  \|^[! Command \|^[K To ^KK \|^[S Forwards \|\i \i
-\i \i\|^K 0-9  Play   \|\uINSERT\u          \|^K< Left  \|\uQUOTE\u       \|\uDELETE\u     \|\uBOOKMARKS\u    \|\i \i
-\i \i\|^K?     Query  \|^] split line   \|^K> Right \|^[' Ctrl-   \|^[Y yank   \|^[ 0-9 Goto  \|\i \i
-\i \i\|^[D     Dump   \|^SPACE ins space\|          \|^\\ Meta-    \|^[O line<  \|^[^[   Set   \|\i \i
-}
-
-{Programs
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i\|\uGOTO\u                 \|\uINDENT\u   \|\uCOMPILING\u          \uQUICK\u                       \|\i \i
-\i \i\|^G  Matching ( [ {   \|^K, less \|^[C Compile & parse ^G  find word under cursor \|\i \i
-\i \i\|^K- Previous place   \|^K. more \|^[G Grep & parse    ^[ENTER complete word      \|\i \i
-\i \i\|^K= Next place       \|\uFILE\u     \|^[= To next error   ^[Y paste deleted text     \|\i \i
-\i \i\|^K; Tags file search \|^K `     \|^[- To prev. error  ^[^Y cycle through deleted \|\i \i
-\i \i\|                     \| revert  \|^[ SP Jump to error                            \|\i \i
-}
-
-{Search
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \iSpecial search sequences:                                                    \|\i \i
-\i \i    \\^  \\$  matches beg./end of line      \\?     match any single char       \|\i \i
-\i \i    \\<  \\>  matches beg./end of word      \\*     match 0 or more chars       \|\i \i
-\i \i    \\c      matches balanced C expression \\\\     matches a \\                 \|\i \i
-\i \i    \\[..]   matches one of a set          \\n     matches a newline           \|\i \i
-\i \i    \\+      matches 0 or more of the character which follows the \\+          \|\i \i
-\i \iSpecial replace sequences:                                                   \|\i \i
-\i \i    \\&      replaced with text which matched search string                   \|\i \i
-\i \i    \\0 - 9  replaced with text which matched Nth \\*, \\?, \\c, \\+, or \\[..]    \|\i \i
-\i \i    \\\\      replaced with \\               \\n     replaced with newline       \|\i \i
-}
-
-{SearchOptions
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \iSearch options:                                                              \|\i \i
-\i \i   r Replace                                                                 \|\i \i
-\i \i   k Restrict search to highlighted block, which can be rectangular          \|\i \i
-\i \i   b Search backward instead of forward                                      \|\i \i
-\i \i   i Ignore case                                                             \|\i \i
-\i \i   a Search across all loaded files                                          \|\i \i
-\i \i   e Search across all files in Grep or Compile error list                   \|\i \i
-\i \i   w Wrap to beginning of file for this search                               \|\i \i
-\i \i   n Do not wrap to beginning of file for this search                        \|\i \i
-\i \i   nnn Perform exaclty nnn replacements                                      \|\i \i
-}
-
-{Math
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i \uCOMMANDS\u (hit ESC m for math)  \uFUNCTIONS\u                                    \|\i \i
-\i \i     hex hex display mode       sin cos tab asin acos atan                   \|\i \i
-\i \i     dec decimal mode           sinh cosh tanh asinh acosh atanh             \|\i \i
-\i \i     ins type result into file  sqrt cbrt exp ln log                         \|\i \i
-\i \i    eval evaluate block         int floor ceil abs erg ergc                  \|\i \i
-\i \i    0xff enter number in hex    joe(..macro..) - runs an editor macro        \|\i \i
-\i \i    3e-4 floating point decimal \uBLOCK\u                                        \|\i \i
-\i \i    a=10 assign a variable      sum cnt  Sum, count                          \|\i \i
-\i \i 2+3:ins multiple commands      avg dev  Average, std. deviation             \|\i \i
-\i \i    e pi constants              \uOPERATORS\u                                    \|\i \i
-\i \i     ans previous result        ! ^  * / %  + -  < <= > >= == !=  &&  ||  ? :\|\i \i
-}
-
-{Names
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i Hit TAB at file name prompts to generate menu of file names                 \|\i \i
-\i \i Or use up/down keys to access history of previously entered names           \|\i \i
-\i \i Special file names:                                                         \|\i \i
-\i \i      !command                 Pipe in/out of a shell command                \|\i \i
-\i \i      >>filename               Append to a file                              \|\i \i
-\i \i      -                        Read/Write to/from standard I/O               \|\i \i
-\i \i      filename,START,SIZE      Read/Write a part of a file/device            \|\i \i
-\i \i          Give START/SIZE in decimal (255), octal (0377) or hex (0xFF)       \|\i \i
-}
-
-{Joe
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
-\i \i Send bug reports to: http://sourceforge.net/projects/joe-editor \|\i \i
-\i \i \|\i \i
-\i \i  default joerc file is here /etc/joe/joerc \|\i \i
-\i \i  default syntax and i18n files are here /usr/share/joe \|\i \i
-\i \i  additional documentation can be found here /usr/share/doc/joe \|\i \i
-}
-
-{CharTable
-\i   Help Screen    \|turn off with ^KH    prev. screen ^[,                        \i
-\i \i\| Dec  \u 0123 4567  8901 2345    0123 4567  8901 2345 \u  Dec \|\i \i
-\i \i\|     |                                              |     \|\i \i
-\i \i\|   0 | \u@ABC\u \uDEFG\u  \uHIJK\u \uLMNO\u    \i\u@ABC\u\i \i\uDEFG\u\i  \i\uHIJK\u\i \i\uLMNO\u\i | 128 \|\i \i
-\i \i\|  16 | \uPQRS\u \uTUVW\u  \uXYZ[\u \u\\]^_\u    \i\uPQRS\u\i \i\uTUVW\u\i  \i\uXYZ[\u\i \i\u\\]^_\u\i | 144 \|\i \i
-\i \i\|  32 |  !"# $%&'  ()*+ ,-./     ¡¢£ ¤¥¦§  ¨©ª« ¬­®¯ | 160 \|\i \i
-\i \i\|  48 | 0123 4567  89:; <=>?    °±²³ ´µ¶·  ¸¹º» ¼½¾¿ | 176 \|\i \i
-\i \i\|  64 | @ABC DEFG  HIJK LMNO    ÀÁÂÃ ÄÅÆÇ  ÈÉÊË ÌÍÎÏ | 192 \|\i \i
-\i \i\|  80 | PQRS TUVW  XYZ[ \\]^_    ÐÑÒÓ ÔÕÖ×  ØÙÚÛ ÜÝÞß | 208 \|\i \i
-\i \i\|  96 | `abc defg  hijk lmno    àáâã äåæç  èéêë ìíîï | 224 \|\i \i
-\i \i\| 112 | pqrs tuvw  xyz{ |}~    ðñòó ôõö÷  øùúû üýþÿ | 240 \|\i \i
-}
-
- FOURTH SECTION: Key bindings:
-
- Section names you must provide:
-
-	:main		For editing window
-	:prompt		For prompt lines
-	:query		For single-character query lines
-	:querya		Singe-character query for quote
-	:querysr	Search & Replace single-character query
-
- Other sections may be given as well for organization purposes or for
- use with the '-keymap' option.
-
- Use:
- :inherit name		To copy the named section into the current one
- :delete key		To delete a key sequence from the current section
-
- Keys:
-
- Use ^@ through ^_ and ^? for Ctrl chars
- Use SP for space
- Use a TO b to generate a range of characters
- Use MDOWN, MDRAG, MUP, M2DOWN, M2DRAG, M2UP, M3DOWN, M3DRAG, M3UP for mouse
- Use MWDOWN, MWUP for wheel mouse motion
- Use ^# for 0x9B (for Amiga).  But warning: this breaks UTF-8 keyboards.
-
- You can also use termcap string capability names.  For example:
-
-	.ku		Up
-	.kd		Down
-	.kl		Left
-	.kr		Right
-	.kh		Home
-	.kH		End
-	.kI		Insert
-	.kD		Delete
-	.kP		PgUp
-	.kN		PgDn
-	.k1 - .k9	F1 - F9
-	.k0		F0 or F10
-	.k;		F10
-
- Macros:
-
- Simple macros can be made by comma seperating 2 or more command names.  For
- example:
-
- eof,bol	^T Z		Goto beginning of last line
-
- Also quoted matter is typed in literally:
-
- bol,">",dnarw	.k1		Quote news article line
-
- Macros may cross lines if they end with ,
-
- Commands or named macros may be created with :def.  For example, you can
- use:
-
- :def foo eof,bol
-
- To define a command foo which will goto the beginning of the last line.
-
-:windows		Bindings common to all windows
-type		^@ TO ÿ		Type a character
-abort		^C		Abort window
-abort		^K Q
-abort		^K ^Q
-abort		^K q
-arg		^K \		Repeat next command
-explode		^K I		Show all windows or show only one window
-explode		^K ^I
-explode		^K i
-help		^K H		Help menu
-help		^K ^H
-help		^K h
-hnext		^[ .		Next help window
-hprev		^[ ,		Previous help window
-math		^[ m		Calculator
-math		^[ M		Calculator
- math		^[ ^M		Calculator
-msg		^[ h		Display a message
-msg		^[ H		Display a message
-msg		^[ ^H		Display a message
-nextw		^K N		Goto next window
-nextw		^K ^N
-nextw		^K n
-pgdn		.kN		Screen down
-pgdn		^V
-pgdn		^[ [ 6 ~
- pgdn      ^# S
-pgup		.kP		Screen up
-pgup		^U
-pgup		^[ [ 5 ~
- pgup      ^# T
-play		^K 0 TO 9	Execute macro
-prevw		^K P		Goto previous window
-prevw		^K ^P
-prevw		^K p
-query		^K ?		Macro query insert
-record		^K [		Record a macro
-retype		^R		Refresh screen
-rtn		^M		Return
-shell		^K Z		Shell escape
-shell		^K ^Z
-shell		^K z
-stop		^K ]		Stop recording
- Mouse handling
-defmdown	MDOWN		Move the cursor to the mouse location
-defmup		MUP
-defmdrag	MDRAG		Select a region of characters
-defm2down	M2DOWN		Select the word at the mouse location
-defm2up		M2UP
-defm2drag	M2DRAG		Select a region of words
-defm3down	M3DOWN		Select the line at the mouse location
-defm3up		M3UP
-defm3drag	M3DRAG		Select a region of lines
-
-xtmouse		^[ [ M		Introduces an xterm mouse event
-
-if,"char==65",then,"it's an A",else,"it's not an a",endif	^[ q
-
-:main			Text editing window
-:inherit windows
-
- Spell-check macros
-
- Ispell
-:def ispellfile filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;cat ispell.tmp;/bin/rm ispell.tmp",rtn,retype
-:def ispellword psh,nextword,markk,prevword,markb,filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;tr -d <ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword
-
- Aspell
-:def aspellfile filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;cat $SPLTMP;/bin/rm $SPLTMP",rtn,retype
-:def aspellword psh,nextword,markk,prevword,markb,filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;tr -d <$SPLTMP '\\012';/bin/rm $SPLTMP",rtn,retype,nextword
-
-
-aspellfile	^[ l
-aspellword	^[ n
-
- Compile
-
-:def compile mwind!,mfit!,querysave,query,scratch,"* Build Log *",rtn,bof,markb,eof," ",markk,blkdel,build
-
- Grep
-
-:def grep_find mwind!,mfit!,scratch,"* Grep Log *",rtn,bof,markb,eof," ",markk,blkdel,grep
-
- Man page
-
-:def man scratch,"* Man Page *",rtn,bof,markb,eof," ",markk,blkdel," ",ltarw,run,"man -P cat -S 2:3 "
-
- Here we guess some common key sequences which either do not have termcap
- sequences or which are frequently wrong.  Note that if the termcap entry is
- correct, it will override these later on.
-
-paste			^[ ] 5 2 ;		Bracketed paste
-
-insc			^[ [ 2 ~
-insc			^[ [ L			SCO
-
-delch			^[ [ 3 ~
-
-pgup			^[ [ I		SCO
-
-pgdn			^[ [ G		SCO
-
-home			^[ [ 1 ~		Putty, Linux, Cygwin
-home			^[ [ H			Xterm, Konsole, SCO
-home			^[ O H			gnome-terminal
-home			^[ [ 7 ~		RxVT
- home			^# SP A		Amiga
-
-eol			^[ [ 4 ~		Putty, Linux, Cygwin, ssh
-eol			^[ [ F			Xterm, Konsole, SCO
-eol			^[ O F			gnome-terminal
-eol			^[ [ 8 ~		RxVT
- eol			^# SP @		Amiga
-
-rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ [ 1 ; 5 C    Mark right Xterm
-rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ [ 5 C        Mark right Gnome-terminal
- (Almost all termcap entries have ^[ O C as an arrow key).
- rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ O C		Mark right Putty Ctrl-rtarw
-rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ O c		Mark right RxVT Ctrl-rtarw
-
-ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ [ 1 ; 5 D    Mark left
-ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ [ 5 D        Mark left
- ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ O D		Mark left Putty Ctrl-ltarw
-ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ O d		Mark left RxVT Ctrl-ltarw
-
-uparw,dnarw,begin_marking,uparw,toggle_marking	^[ [ 1 ; 5 A    Mark up
-uparw,dnarw,begin_marking,uparw,toggle_marking	^[ [ 5 A        Mark up
- uparw,dnarw,begin_marking,uparw,toggle_marking	^[ O A		Mark up Putty Ctrl-uparw
-uparw,dnarw,begin_marking,uparw,toggle_marking	^[ O a		Mark up RxVT Ctrl-uparw
-
-dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ [ 1 ; 5 B    Mark down
-dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ [ 5 B        Mark down
- dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ O B		Mark down Putty Ctrl-dnarw
-dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ O b		Mark down RxVT Ctrl-dnarw
-
-blkdel,nmark   ^[ [ 3 ; 5 -	Gnome-terminal Ctrl-Del
-blkdel,nmark   ^[ [ 3 ; 5 ~	Xterm Ctrl-Del
-
-yank		^[ [ 2 ; 5 -	Gnome-terminal Ctrl-Ins
-yank		^[ [ 2 ; 5 ~    Xterm Ctrl-Ins
-
- Extra functions not really part of JOE user interface:
-
-delbol		^[ o		Delete to beginning of line
-delbol		^[ ^O		Delete to beginning of line
-dnslide		^[ z		Scroll down one line
-dnslide		^[ Z		Scroll down one line
-dnslide		^[ ^Z		Scroll down one line
-dnslide,dnslide,dnslide,dnslide		MWDOWN
-compile		^[ c		Compile
-compile		^[ C
-compile		^[ ^C		Compile
-grep_find	^[ g		Grep
-grep_find	^[ G		Grep
-grep_find	^[ ^G		Grep
-execmd		^[ x		Prompt for command to execute
-execmd		^[ X		Prompt for command to execute
-execmd		^[ ^X		Prompt for command to execute
-finish		^[ ^I		Complete word in document
-finish		^[ ^M		Complete word: used to be math
-mwind,mfit,jump,bol		^[ SP
-isrch		^[ s		Forward incremental search
-isrch		^[ S		Forward incremental search
-isrch		^[ ^S		Forward incremental search
-notmod		^[ ~		Not modified
-mwind,mfit,prevw,nxterr		^[ =		To next error
-parserr		^[ e		Parse errors in current buffer
-parserr		^[ E		Parse errors in current buffer
-parserr		^[ ^E		Parse errors in current buffer
-mwind,mfit,prevw,prverr		^[ -		To previous error
-rsrch		^[ r		Backward incremental search
-rsrch		^[ R		Backward incremental search
-rsrch		^[ ^R		Backward incremental search
-run		^[ !		Run a program in a window
-tomarkb		^[ b		Go to beginning of marked block
-tomarkb		^[ ^B		Go to beginning of marked block
-tomarkk		^[ k		Go to end of marked block
-tomarkk		^[ ^K		Go to end of marked block
-tomarkk		^[ K		Go to end of marked block
-txt		^[ i		Prompt for text and insert it
-txt		^[ I		Prompt for text and insert it
-upslide		^[ w		Scroll up one line
-upslide		^[ ^W		Scroll up one line
-upslide		^[ W		Scroll up one line
-upslide,upslide,upslide,upslide		MWUP
-yank		^[ y		Undelete text
-yankpop		^[ ^Y		Undelete text
-yank		^[ Y		Undelete text
-
- toggle_marking	^@		Ctrl-space block selection method
-insc		^@		Ctrl-space used to insert a space
-
- bufed		^[ d		Menu of buffers
-nbuf		^[ v		Next buffer
-nbuf		^[ V		Next buffer
-nbuf		^[ ^V		Next buffer
-pbuf		^[ u		Prev buffer
-pbuf		^[ U		Prev buffer
-pbuf		^[ ^U		Prev buffer
- query		^[ q		Quoted insert
- byte		^[ n		Goto byte
- col		^[ c		Goto column
- abortbuf	^[ k		Kill current buffer- don't mess with windows
- ask		^[ a		Ask to save current buffer
- bop		^[ p		Backwards paragraph
- bos		^[ x		Bottom of screen
- copy		^[ ^W		Copy block into yank
- dupw		^[ \		Split window
- eop		^[ n		Forwards paragraph
- format		^[ j		Format paragraph ignore block
- markl		^[ l		Mark line
- nmark		^[ @		Turn off ^KB ^KK
- pop		^[ >		Pop ^KB ^KK
- psh		^[ <		Push ^KB ^KK
- swap		^[ x		Swap ^KB and cursor
- tomarkbk	^[ g		Switch between beginning and end of marked
- tos		^[ e		Top of screen
- tw0		^[ 0		Kill current window (orphans buffer)
- tw1		^[ 1		Kill all other windows (orphans buffers)
- uarg		^[ u		Universal argument
- yank		^[ ^Y		Undelete previous text
- yapp		^[ w		Append next delete to previous yank
-
- Standard JOE user interface
-
-quote8		^\		Enter Meta chars
- quote		`		Enter Ctrl chars
-quote		^[ '		Enter Ctrl chars
-quote		^Q
-
-backs		^?		Backspace
-backs		^H
-backw		^O		Backspace word
-bknd		^K '		Shell window
-blkcpy		^K C		Copy marked block
-blkcpy		^K ^C
-blkcpy		^K c
-blkdel		^K Y		Delete marked block
-blkdel		^K ^Y
-blkdel		^K y
-blkmove		^K M		Move marked block
-blkmove		^K ^M
-blkmove		^K m
-blksave		^K W		Save marked block
-blksave		^K ^W
-blksave		^K w
-bof		^K U		Goto beginning of file
-bof		^K ^U
-bof		^K u
- bol		.kh		Goto beginning of line
- bol		^A
- bol      ^# SP A
-home		.kh
-home		^A
-center		^K A		Center line
-center		^K ^A
-center		^K a
-crawll		^K <		Pan left
-crawlr		^K >		Pan right
-delch		.kD		Delete character
-delch		^D
-deleol		^J		Delete to end of line
-dellin		^Y		Delete entire line
-delw		^W		Delete word to right
-dnarw		.kd		Go down
-dnarw		^N
-dnarw		^[ O B
-dnarw		^[ [ B
- dnarw		^# B
-edit		^K E		Edit a file
-edit		^K ^E
-edit		^K e
-eof		^K V		Go to end of file
-eof		^K ^V
-eof		^K v
-eol		.kH		Go to end of line
-eol		.@7
-eol		^E
-exsave		^K X		Save and exit
-exsave		^K ^X
-exsave		^K x
-ffirst		^K F		Find first
-ffirst		^K ^F
-ffirst		^K f
-filt		^K /		Filter block
- finish		^K ^M		Complete text under cursor
-fnext		^L		Find next
-fmtblk		^K J		Format paragraphs in block
-fmtblk		^K ^J
-fmtblk		^K j
-gomark		^[ 0 TO 9	Goto bookmark
-groww		^K G		Grow window
-groww		^K ^G
-groww		^K g
-insc		.kI		Insert a space
- insc		^@
-insf		^K R		Insert a file
-insf		^K ^R
-insf		^K r
-lindent		^K ,		Indent to left
-line		^K L		Goto line no.
-line		^K ^L
-line		^K l
-ltarw		.kl		Go left
-ltarw		^B
-ltarw		^[ O D
-ltarw		^[ [ D
- ltarw          ^# D
-macros		^[ d		Dump keyboard macros
-macros		^[ ^D
-markb		^K B		Set beginning of marked block
-markb		^K ^B
-markb		^K b
-markk		^K K		Set end of marked block
-markk		^K ^K
-markk		^K k
- mode		^T		Options menu
-menu,"root",rtn	^T
-nextpos		^K =		Goto next position in position history
-nextword	^X		Goto next word
-open		^]		Split line
-prevpos		^K -		Previous position in history
-prevword	^Z		Previous word
-reload		^K `		Revert file
-redo		^^		Redo changes
-rindent		^K .		Indent to right
-rtarw		.kr		Go right
-rtarw		^F
-rtarw		^[ O C
-rtarw		^[ [ C
- rtarw          ^# C
-run		^K !		Run a shell command
-save		^K D		Save file
-save		^K S
-save		^K ^D
-save		^K ^S
-save		^K d
-save		^K s
-setmark		^[ ^[		Set bookmark
-shrinkw		^K T		Shrink window
-shrinkw		^K ^T
-shrinkw		^K t
-splitw		^K O		Split window
-splitw		^K ^O
-splitw		^K o
-stat		^K SP		Show status
-tag		^K ;		Tags file search
-tomatch		^G		Goto matching parenthasis
-undo		^_		Undo changes
-uparw		.ku		Go up
- uparw		^# A
-uparw		^P
-uparw		^[ O A
-uparw		^[ [ A
-
-:prompt			Prompt windows
-:inherit main
-if,"byte>size",then,complete,complete,else,delch,endif	^D
-complete	^I
-dnarw,eol	.kd		Go down
-dnarw,eol	^N
-dnarw,eol	^[ O B
-dnarw,eol	^[ [ B
- dnarw,eol	^# B
-uparw,eol	.ku		Go up
- uparw,eol	^# A
-uparw,eol	^P
-uparw,eol	^[ O A
-uparw,eol	^[ [ A
-
-:menu			Selection menus
-:inherit windows
-
-pgupmenu			^[ [ I
-
-pgdnmenu			^[ [ G
-
-bolmenu			^[ [ 1 ~		Putty, Linux, Cygwin
-bolmenu			^[ [ H			Xterm, Konsole
-bolmenu			^[ O H			gnome-terminal
-bolmenu			^[ [ 7 ~		RxVT
- bolmenu			^# SP A		Amiga
-
-eolmenu			^[ [ 4 ~		Putty, Linux, Cygwin, ssh
-eolmenu			^[ [ F			Xterm, Konsole
-eolmenu			^[ O F			gnome-terminal
-eolmenu			^[ [ 8 ~		RxVT
- eolmenu			^# SP @		Amiga
-
-abort		^[ ^[	Why?
-backsmenu	^?
-backsmenu	^H
-bofmenu		^K U
-bofmenu		^K ^U
-bofmenu		^K u
-bolmenu		.kh
-bolmenu		^A
-dnarwmenu	.kd
-dnarwmenu	^N
-dnarwmenu	^[ [ B
-dnarwmenu	^[ O B
- dnarwmenu ^# B
-dnarwmenu	MWDOWN
-eofmenu		^K V
-eofmenu		^K ^V
-eofmenu		^K v
-eolmenu		.kH
-eolmenu		^E
-ltarwmenu	.kl
-ltarwmenu	^B
-ltarwmenu	^[ [ D
-ltarwmenu	^[ O D
- ltarwmenu ^# D
-pgdnmenu	.kN		Screen down
-pgdnmenu	^V
-pgdnmenu	^[ [ 6 ~
- pgdnmenu  ^# S
-pgupmenu	.kP		Screen up
-pgupmenu	^U
-pgupmenu	^[ [ 5 ~
- pgupmenu  ^# T
-rtarwmenu	.kr
-rtarwmenu	^F
-rtarwmenu	^[ [ C
- rtarwmenu ^# C
-rtarwmenu	^[ O C
-rtn		SP
-rtn		^I
-rtn		^K H
-rtn		^K h
-rtn		^K ^H
-tabmenu		^I
-uparwmenu	.ku
-uparwmenu	^P
-uparwmenu	^[ [ A
-uparwmenu	^[ O A
- uparwmenu ^# A
-uparwmenu	MWUP
-defm2down	M2DOWN		Hits return key
-
-:query			Single-key query window
-:inherit windows
-
-:querya			Single-key query window for quoting
-type		^@ TO ÿ
-
-:querysr		Search & replace query window
-type		^@ TO ÿ

+ 8 - 1
board/GfA/Display001/rootfs/etc/profile

@@ -33,7 +33,7 @@ if [ "$PS1" ]; then
     export EDITOR='/bin/vi'
     export INPUTRC=/etc/inputrc
     export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
-
+    
     ### Some aliases
     alias ps2='ps facux '
     alias ps1='ps faxo "%U %t %p %a" '
@@ -53,3 +53,10 @@ for i in /etc/profile.d/*.sh ; do
         . $i
     fi
 done
+#=======
+### Qt EGLFS Settings
+export QT_QPA_EGLFS_INTEGRATION=none
+export QT_QPA_EGLFS_HIDECURSOR=1
+
+export QT_QPA_EGLFS_PHYSICAL_WIDTH=`cat /sys/firmware/devicetree/base/vendorinfo/display_physical_width`
+export QT_QPA_EGLFS_PHYSICAL_HEIGHT=`cat /sys/firmware/devicetree/base/vendorinfo/display_physical_height`

+ 0 - 1
board/GfA/Display001/rootfs/etc/ssh/sshd_config

@@ -133,4 +133,3 @@ Subsystem	sftp	/usr/libexec/sftp-server
 #	ForceCommand cvs server
 
 #---------------
-Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

BIN
board/GfA/Display001/rootfs/lib/firmware/GfA/WrkPruss.elf


BIN
board/GfA/Display001/rootfs/opt/GfA-Browser/GfA-browser


+ 5 - 8
board/GfA/Display001/rootfs/root/CopyEMMCtoSD.sh

@@ -39,7 +39,9 @@ else
 fi    
 
 echo "Formatting SD ...."
-
+umount /dev/mmcblk0p1 2>/dev/null
+umount /dev/mmcblk0p2 2>/dev/null
+dd if=/dev/zero of=/dev/mmcblk0 bs=2M count=1 conv=notrunc
 fdisk /dev/mmcblk0 <<EOF
 o
 p
@@ -47,11 +49,10 @@ n
 p
 1
 
-2048
++64M
 t
 e
 a
-1
 n
 p
 2
@@ -60,12 +61,8 @@ p
 p
 w
 EOF
-umount /dev/mmcblk0p1
-dd if=/dev/zero of=/dev/mmcblk0p1 bs=1024 count=1024
 mkfs.vfat -F 16 /dev/mmcblk0p1
-umount /dev/mmcblk0p2
-dd if=/dev/zero of=/dev/mmcblk0p2 bs=1024 count=1024
-mkfs.ext4 /dev/mmcblk0p2
+mkfs.ext4 -F /dev/mmcblk0p2
 # temp. mountdirectories
 mkdir /tmp/boot
 mkdir /tmp/bootdata

+ 45 - 7
board/GfA/Display001/rootfs/root/CopySDtoEMMC.sh

@@ -1,4 +1,47 @@
 #!/bin/sh
+such="root=/dev/mmcblk1"
+
+echo ""
+echo -e "\e[7mCopy SD to EMMC\e[0m"
+
+grep -q $such /proc/cmdline
+if [ $? == 0 ]; then
+    bootpart="/dev/mmcblk1p1"
+    bootdev="EMMC"
+else
+    bootpart="/dev/mmcblk0p1"
+    bootdev="SD"
+fi
+                
+if [ $bootdev == "EMMC" ]; then
+    echo "System was booted from EMMC, copying Image from SD not possible ! ==> EXIT"
+    exit 1
+fi
+
+if [ ! -b /dev/mmcblk1 ]; then
+    echo -e "\e[31mNo EMMC found ! ==> EXIT\e[0m"
+    exit 2
+fi
+
+echo -e "\e[31mEMMC will be formatted, all Data on this device will be deleted!!\e[0m"
+echo ""
+read -n 1 -p "are you sure? (y/n) : " antwort
+
+if [ ${#antwort} == 0 ]; then
+  antwort = "n"  
+fi
+
+if [ $antwort == "y" -o $antwort == "Y" ]; then
+  echo -e "\nStart copying .."
+else
+  echo -e "\nEXIT on user reqest"
+  exit 3
+fi    
+
+echo "Formatting EMMC ...."
+umount /dev/mmcblk1p1 2>/dev/null
+umount /dev/mmcblk1p2 2>/dev/null
+dd if=/dev/zero of=/dev/mmcblk1 bs=2M count=1 conv=notrunc
 fdisk /dev/mmcblk1 <<EOF
 o
 p
@@ -6,11 +49,10 @@ n
 p
 1
 
-2048
++64M
 t
 e
 a
-1
 n
 p
 2
@@ -19,12 +61,8 @@ p
 p
 w
 EOF
-umount /dev/mmcblk1p1
-dd if=/dev/zero of=/dev/mmcblk1p1 bs=1024 count=1024
 mkfs.vfat -F 16 /dev/mmcblk1p1
-umount /dev/mmcblk1p2
-dd if=/dev/zero of=/dev/mmcblk1p2 bs=1024 count=1024
-mkfs.ext4 /dev/mmcblk1p2
+mkfs.ext4 -F /dev/mmcblk1p2
 # temp. mountdirectories
 mkdir /tmp/boot
 mkdir /tmp/bootdata

+ 49 - 9
board/GfA/Display001/rootfs/root/EraseEMMC.sh

@@ -1,12 +1,52 @@
 #!/bin/sh
+such="root=/dev/mmcblk1"
 
-    echo "erase MMC Data Booted from SD"
-    dd if=/dev/zero of=/dev/mmcblk1 bs=1M count=1
-    #--- Bootblocks EMMC
-    echo "Erase Boot0"
-    echo 0 > /sys/block/mmcblk1boot0/force_ro
-    dd if=/dev/zero of=/dev/mmcblk1boot0 bs=1M count=1
-    echo "Erase Boot1"
-    echo 0 > /sys/block/mmcblk1boot1/force_ro
-    dd if=/dev/zero of=/dev/mmcblk1boot1 bs=1M count=1
+echo ""
+echo -e "\e[7mErase EMMC\e[0m"
 
+grep -q $such /proc/cmdline
+if [ $? == 0 ]; then
+    bootpart="/dev/mmcblk1p1"
+    bootdev="EMMC"
+else
+    bootpart="/dev/mmcblk0p1"
+    bootdev="SD"
+fi
+                
+if [ $bootdev == "EMMC" ]; then
+    echo "System was booted from EMMC, erasing not possible ! ==> EXIT"
+    exit 1
+fi
+
+if [ ! -b /dev/mmcblk1 ]; then
+    echo -e "\e[31mNo EMMC found ! ==> EXIT\e[0m"
+    exit 2
+fi
+
+echo -e "\e[31mEMMC will be erased, all Data on this device will be deleted!!\e[0m"
+echo ""
+read -n 1 -p "are you sure? (y/n) : " antwort
+
+if [ ${#antwort} == 0 ]; then
+  antwort = "n"  
+fi
+
+if [ $antwort == "y" -o $antwort == "Y" ]; then
+  echo -e "\nStart erasing .."
+else
+  echo -e "\nEXIT on user reqest"
+  exit 3
+fi    
+
+echo "Erasing EMMC partition tables ...."
+umount /dev/mmcblk1p1 2>/dev/null
+umount /dev/mmcblk1p2 2>/dev/null
+dd if=/dev/zero of=/dev/mmcblk1 bs=2M count=1 conv=notrunc
+umount /dev/mmcblk1p1 /dev/mmcblk1p2 2>/dev/null
+echo "Erase Boot0"
+echo 0 > /sys/block/mmcblk1boot0/force_ro
+dd if=/dev/zero of=/dev/mmcblk1boot0 bs=1M count=1 conv=notrunc
+echo "Erase Boot1"
+echo 0 > /sys/block/mmcblk1boot1/force_ro
+dd if=/dev/zero of=/dev/mmcblk1boot1 bs=1M count=1 conv=notrunc
+echo "...done"

+ 0 - 9
board/GfA/Display001/rootfs/root/README.txt

@@ -1,9 +0,0 @@
-noVNC:
-
-Beispiel für Verbindung mit 192.168.0.125 über Webbrowser:
-
-- bitte Parameter "host=" beachten
-- automatische Neuverbindung, bei Timeout erschein ein Reconnect button
-- Anzeige wird auf Browserfenster skaliert
-
-http://192.168.0.125:8081/vnc.html?host=192.168.0.125&port=5901&password=root&reconnect=true

+ 3 - 3
board/GfA/Display001/rootfs/root/startbrowser.sh

@@ -6,7 +6,7 @@ rm -rf .cache .local
 . /etc/profile
 export HOME=/tmp
 
-export QT_QPA_EGLFS_PHYSICAL_WIDTH=152
-export QT_QPA_EGLFS_PHYSICAL_HEIGHT=92
+echo $QT_QPA_EGLFS_PHYSICAL_WIDTH
+echo $QT_QPA_EGLFS_PHYSICAL_HEIGHT
 
-/opt/GfA-Browser/GfA-browser
+/opt/GfA-Browser/GfA-browser --no-sandbox

BIN
board/GfA/Display001/rootfs/usr/sbin/fbvncserver


BIN
board/GfA/Display001/rootfs/usr/sbin/vncpasswd


BIN
board/GfA/Display001/rootfs/var/GfA/Pruuart


+ 45 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/index.vnc

@@ -0,0 +1,45 @@
+<!-- index.vnc - default html page for Java VNC viewer applet.  On any file
+     ending in .vnc, the HTTP server embedded in Xvnc will substitute the
+     following variables when preceded by a dollar: USER, DESKTOP, DISPLAY,
+     APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT, PARAMS.  Use two dollar
+     signs ($$) to get a dollar sign in the generated html. -->
+
+<HTML>
+<head> 
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+</head> 
+<APPLET CODE=VncViewer.class ARCHIVE=java-applet/VncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+</APPLET>
+<br/>
+<br/>
+
+If the above Java applet does not work, you can also try the new JavaScript-only <a href="http://kanaka.github.com/noVNC/">noVNC</a> viewer. You will need a HTML5-capable browser though.
+<script language="JavaScript">
+    <!--
+    function start_novnc(){
+	var host = document.location.hostname;
+	// If there are at least two colons in there, it is likely an IPv6 address. Check for square brackets and add them if missing.
+	if(host.search(/^.*:.*:.*$/) != -1) {
+	   if(host.charAt(0) != "[")
+	      host = "[" + host;
+	   if(host.charAt(host.length-1) != "]")
+	      host = host + "]";
+	}
+	open("novnc/vnc_auto.html?host=" + host + "&port=$PORT&true_color=1");
+    }
+    -->
+</script>
+<form name="novnc_button_form">
+  <input type="button" name="novnc_button" value="Click here to connect using noVNC" onClick='start_novnc()'>
+</form>
+
+<br/>
+<br/>
+<br/>
+<A href="http://libvncserver.sf.net/">LibVNCServer/LibVNCClient Homepage</A>
+</HTML>

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/VncViewer.jar


+ 141 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/javaviewer.pseudo_proxy.patch

@@ -0,0 +1,141 @@
+diff -ru vnc_javasrc/OptionsFrame.java proxy_vnc_javasrc/OptionsFrame.java
+--- vnc_javasrc/OptionsFrame.java	Fri Jul  5 08:17:23 2002
++++ proxy_vnc_javasrc/OptionsFrame.java	Thu Aug 22 23:24:44 2002
+@@ -70,6 +70,12 @@
+ 
+   Label[] labels = new Label[names.length];
+   Choice[] choices = new Choice[names.length];
++
++  Label proxyHostLabel;
++  TextField proxyHostEdit;
++  Label proxyPortLabel;
++  TextField proxyPortEdit;
++  
+   Button closeButton;
+   VncViewer viewer;
+ 
+@@ -93,6 +99,9 @@
+   boolean shareDesktop;
+   boolean viewOnly;
+ 
++  String proxyHost;
++  int proxyPort;
++
+   //
+   // Constructor.  Set up the labels and choices from the names and values
+   // arrays.
+@@ -126,6 +135,32 @@
+       }
+     }
+ 
++    // TODO: find a way to set these to defaults from browser
++    proxyPort = viewer.readIntParameter("Use Proxy Port", -1);
++    if(proxyPort>-1) {
++      proxyHost = viewer.readParameter("Use Proxy Host", false);
++      if(proxyHost == null)
++	proxyHost = viewer.host;
++
++      proxyHostLabel = new Label("Proxy Host");
++      gbc.gridwidth = 1;
++      gridbag.setConstraints(proxyHostLabel,gbc);
++      add(proxyHostLabel);
++      proxyHostEdit = new TextField();
++      gbc.gridwidth = GridBagConstraints.REMAINDER;
++      gridbag.setConstraints(proxyHostEdit,gbc);
++      add(proxyHostEdit);
++    
++      proxyPortLabel = new Label("Proxy Port");
++      gbc.gridwidth = 1;
++      gridbag.setConstraints(proxyPortLabel,gbc);
++      add(proxyPortLabel);
++      proxyPortEdit = new TextField();
++      gbc.gridwidth = GridBagConstraints.REMAINDER;
++      gridbag.setConstraints(proxyPortEdit,gbc);
++      add(proxyPortEdit);
++    }
++    
+     closeButton = new Button("Close");
+     gbc.gridwidth = GridBagConstraints.REMAINDER;
+     gridbag.setConstraints(closeButton, gbc);
+@@ -161,6 +196,11 @@
+       }
+     }
+ 
++    if(proxyPort>-1) {
++      proxyPortEdit.setText(Integer.toString(proxyPort));
++      proxyHostEdit.setText(proxyHost);
++    }
++
+     // Make the booleans and encodings array correspond to the state of the GUI
+ 
+     setEncodings();
+@@ -361,8 +401,12 @@
+   //
+ 
+   public void actionPerformed(ActionEvent evt) {
+-    if (evt.getSource() == closeButton)
++    if (evt.getSource() == closeButton) {
+       setVisible(false);
++      proxyHost = proxyHostEdit.getText();
++      proxyPort = Integer.parseInt(proxyPortEdit.getText());
++      System.err.println("proxy is " + proxyHost + ":" + proxyPort);
++    }
+   }
+ 
+   //
+diff -ru vnc_javasrc/RfbProto.java proxy_vnc_javasrc/RfbProto.java
+--- vnc_javasrc/RfbProto.java	Sun Aug  4 18:39:35 2002
++++ proxy_vnc_javasrc/RfbProto.java	Thu Aug 22 22:53:53 2002
+@@ -119,12 +119,51 @@
+     viewer = v;
+     host = h;
+     port = p;
+-    sock = new Socket(host, port);
++    if(viewer.options.proxyPort>-1)
++      sock = new Socket(viewer.options.proxyHost, viewer.options.proxyPort);
++    else
++      sock = new Socket(host, port);
+     is = new DataInputStream(new BufferedInputStream(sock.getInputStream(),
+ 						     16384));
+     os = sock.getOutputStream();
++    if(viewer.options.proxyPort>-1)
++      negotiateProxy(host,port);
+   }
+ 
++  // this is inefficient as hell, but only used once per connection
++  String readLine() {
++    byte[] ba = new byte[1];
++    String s = new String("");
++
++    ba[0]=0;
++    try {
++      while(ba[0] != 0xa) {
++	ba[0] = (byte)is.readUnsignedByte();
++	s += new String(ba);
++      }
++    } catch(Exception e) {
++      e.printStackTrace();
++    }
++    return s;
++  }
++
++  void negotiateProxy(String realHost,int realPort) throws IOException {
++    String line;
++
++    // this would be the correct way, but we want to trick strict proxies.
++    // line = "CONNECT " + realHost + ":" + realPort + " HTTP/1.1\r\nHost: " + realHost + ":" + realPort + "\r\n\r\n";
++    line = "GET " + realHost + ":" + realPort + "/proxied.connection HTTP/1.0\r\nPragma: No-Cache\r\nProxy-Connection: Keep-Alive\r\n\r\n";
++    os.write(line.getBytes());
++
++    line = readLine();
++    System.err.println("Proxy said: " + line);
++    if(!(line.substring(0,7)+line.substring(8,12)).equalsIgnoreCase("HTTP/1. 200")) {
++      IOException e = new IOException(line);
++      throw e;
++    }
++    while(!line.equals("\r\n") && !line.equals("\n"))
++      line = readLine();
++  }    
+ 
+   void close() {
+     try {

+ 382 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile

@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# webclients/java-applet/ssl/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+pkgdatadir = $(datadir)/LibVNCServer
+pkgincludedir = $(includedir)/LibVNCServer
+pkglibdir = $(libdir)/LibVNCServer
+pkglibexecdir = $(libexecdir)/LibVNCServer
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = arm-buildroot-linux-gnueabihf
+subdir = webclients/java-applet/ssl
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/rfbconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run aclocal-1.11
+AMTAR = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run tar
+AM_DEFAULT_VERBOSITY = 0
+AR = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ar
+AS = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-as
+AUTOCONF = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run automake-1.11
+AVAHI_CFLAGS = 
+AVAHI_LIBS = 
+AWK = gawk
+CC = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc
+CCDEPMODE = depmode=none
+CFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os -g2 -Wall -I/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
+CPP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-cpp
+CPPFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+CRYPT_LIBS = -lcrypt
+CXX = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++
+CXXCPP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++ -E
+CXXDEPMODE = depmode=none
+CXXFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os -g2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GNUTLS_CFLAGS = 
+GNUTLS_LIBS = 
+GREP = /bin/grep
+GTK_CFLAGS = 
+GTK_LIBS = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+JPEG_LDFLAGS = 
+LDFLAGS = 
+LIBGCRYPT_CFLAGS = -I/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
+LIBGCRYPT_CONFIG = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/libgcrypt-config
+LIBGCRYPT_LIBS = -L/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lgcrypt -lgpg-error
+LIBOBJS =  ${LIBOBJDIR}lstat$U.o ${LIBOBJDIR}stat$U.o
+LIBS = -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto -L/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lgcrypt -lgpg-error
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =  ${LIBOBJDIR}lstat$U.lo ${LIBOBJDIR}stat$U.lo
+MAKEINFO = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJDUMP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-objdump
+OBJEXT = o
+PACKAGE = LibVNCServer
+PACKAGE_BUGREPORT = http://sourceforge.net/projects/libvncserver
+PACKAGE_NAME = LibVNCServer
+PACKAGE_STRING = LibVNCServer 0.9.9
+PACKAGE_TARNAME = libvncserver
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.9.9
+PATH_SEPARATOR = :
+PKG_CONFIG = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+RANLIB = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ranlib
+RPMSOURCEDIR = NOT-FOUND
+SDL_CFLAGS = 
+SDL_LIBS = 
+SET_MAKE = 
+SHELL = /bin/bash
+SSL_LIBS = -lssl -lcrypto
+STRIP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-strip
+SYSTEM_LIBVNCSERVER_CFLAGS = 
+SYSTEM_LIBVNCSERVER_LIBS = 
+VERSION = 0.9.9
+WSOCKLIB = 
+XMKMF = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS = 
+abs_builddir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/webclients/java-applet/ssl
+abs_srcdir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/webclients/java-applet/ssl
+abs_top_builddir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9
+abs_top_srcdir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9
+ac_ct_CC = 
+ac_ct_CXX = 
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = x86_64-unknown-linux-gnu
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = /usr
+host = arm-buildroot-linux-gnueabihf
+host_alias = arm-buildroot-linux-gnueabihf
+host_cpu = arm
+host_os = linux-gnueabihf
+host_vendor = buildroot
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = /var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr
+program_transform_name = s&^&&
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = /etc
+target_alias = arm-buildroot-linux-gnueabihf
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../..
+with_ffmpeg = 
+EXTRA_DIST = VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 2 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.am

@@ -0,0 +1,2 @@
+EXTRA_DIST=VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+

+ 382 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.in

@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = webclients/java-applet/ssl
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/rfbconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVAHI_CFLAGS = @AVAHI_CFLAGS@
+AVAHI_LIBS = @AVAHI_LIBS@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JPEG_LDFLAGS = @JPEG_LDFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RPMSOURCEDIR = @RPMSOURCEDIR@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SSL_LIBS = @SSL_LIBS@
+STRIP = @STRIP@
+SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@
+SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@
+VERSION = @VERSION@
+WSOCKLIB = @WSOCKLIB@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+with_ffmpeg = @with_ffmpeg@
+EXTRA_DIST = VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 338 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/README

@@ -0,0 +1,338 @@
+This directory contains a patched Java applet VNC viewer that is SSL
+enabled.
+
+The patches in the *.patch files are relative to the source tarball:
+
+	tightvnc-1.3dev7_javasrc.tar.gz  
+
+currently (4/06) available here:
+
+   http://prdownloads.sourceforge.net/vnc-tight/tightvnc-1.3dev7_javasrc.tar.gz?download
+
+It also includes some simple patches to:
+
+	- fix richcursor colors
+
+	- make the Java Applet cursor (not the cursor drawn to the canvas
+	  framebuffer) invisible when it is inside the canvas.
+
+	- allow Tab (and some other) keystrokes to be sent to the vnc
+	  server instead of doing widget traversal.
+
+
+This SSL applet should work with any VNC viewer that has an SSL tunnel in
+front of it.  It has been tested on x11vnc and using the stunnel tunnel
+to other VNC servers.
+
+By default this Vnc Viewer will only do SSL.  To do unencrypted traffic
+see the "DisableSSL" applet parameter (e.g. set it to Yes in index.vnc).
+
+Proxies: they are a general problem with java socket applets (a socket
+connection does not go through the proxy).  See the info in the proxy.vnc
+file for a workaround.  It uses SignedVncViewer.jar which is simply
+a signed version of VncViewer.jar.  The basic idea is the user clicks
+"Yes" to trust the applet and then it can connect directly to the proxy
+and issue a CONNECT request.
+
+This applet has been tested on versions 1.4.2 and 1.5.0 of the Sun
+Java plugin.  It may not work on older releases or different vendor VM's.
+Send full Java Console output for failures.
+
+---------------------------------------------------------------
+Tips:
+
+When doing single-port proxy connections (e.g. both VNC and HTTPS
+thru port 5900) it helps to move through the 'do you trust this site'
+dialogs quickly.   x11vnc has to wait to see if the traffic is VNC or
+HTTP and this can cause timeouts if you don't move thru them quickly.
+
+You may have to restart your browser completely if it gets into a
+weird state.  For one case we saw the JVM requesting VncViewer.class
+even when no such file exists.
+
+
+---------------------------------------------------------------
+Extras:
+
+ss_vncviewer (not Java):
+
+        Wrapper script for native VNC viewer to connect to x11vnc in
+        SSL mode.  Script launches stunnel(8) and then connects to it
+        via localhost which in turn is then redirected to x11vnc via an
+        SSL tunnel.  stunnel(8) must be installed and available in PATH.
+
+
+Running Java SSL VncViewer from the command line:
+
+	From this directory:
+
+	java -cp ./VncViewer.jar VncViewer HOST <thehost> PORT <theport>
+
+	substitute <thehost> and <theport> with the actual values.
+	You can add any other parameters, e.g.: ignoreProxy yes
+
+---------------------------------------------------------------
+UltraVNC:
+
+The UltraVNC java viewer has also been patched to support SSL.  Various
+bugs in the UltraVNC java viewer were also fixed.  This viewer can be
+useful because is support UltraVNC filetransfer, and so it works on
+Unix, etc.
+
+UltraViewerSSL.jar
+SignedUltraViewerSSL.jar
+ultra.vnc
+ultraproxy.vnc
+ultravnc-102-JavaViewer-ssl-etc.patch
+
+---------------------------------------------------------------
+Applet Parameters:
+
+Some additional applet parameters can be set via the URL, e.g.
+
+	http://host:5800/?param=value
+	http://host:5800/ultra.vnc?param=value
+	https://host:5900/ultra.vnc?param=value
+
+etc.  If running java from command line as show above, it comes
+in as java ... VncViewer param value ... 
+
+There is a limitation with libvncserver that param and value can
+only be alphanumeric, underscore, "+" (for space), or "."
+
+We have added some applet parameters to the stock VNC java
+viewers.  Here are the applet parameters:
+
+Both TightVNC and UltraVNC Java viewers:
+
+  HOST
+	string, default: none.
+	The Hostname to connect to.
+	
+  PORT
+	number, default: 0
+	The VNC server port to connect to.
+
+  Open New Window
+	yes/no, default: no
+	Run applet in separate frame.
+
+  Show Controls
+	yes/no, default: yes
+	Show Controls button panel.
+
+  Show Offline Desktop
+	yes/no, default: no
+	Do we continue showing desktop on remote disconnect?
+
+  Defer screen updates
+	number, default: 20
+	Milliseconds delay
+
+  Defer cursor updates
+	number, default: 10
+	Milliseconds delay
+
+  Defer update requests
+	number, default: 50
+	Milliseconds delay
+
+  PASSWORD
+	string, default: none
+	VNC session password in plain text.
+
+  ENCPASSWORD
+	string, default: none
+	VNC session password in encrypted in DES with KNOWN FIXED
+	key.  It is a hex string.  This is like the ~/.vnc/passwd format.
+  
+  
+  The following are added by x11vnc and/or ssvnc project
+  
+  VNCSERVERPORT
+	number, default: 0
+	Like PORT, but if there is a firewall this is the Actual VNC
+	server port.  PORT might be a redir port on the firewall.
+
+  DisableSSL
+	yes/no, default: no
+	Do unencrypted connection, no SSL. 
+
+  httpsPort
+	number, default: none
+	When checking for proxy, use this at the url port number.
+
+  CONNECT
+	string, default: none
+	Sets to host:port for the CONNECT line to a Web proxy. 
+	The Web proxy should connect us to it.
+
+  GET
+	yes/no, default: no
+	Set to do a special HTTP GET (/request.https.vnc.connection)
+	to the vnc server that will cause it to switch to VNC instead.
+	This is to speedup/make more robust, the single port HTTPS and VNC
+	mode of x11vnc (e.g. both services thru port 5900, etc) 
+	
+  urlPrefix
+	string, default: none
+	set to a string that will be prefixed to all URL's when contacting
+	the VNC server.  Idea is a special proxy will use this to indicate
+	internal hostname, etc.
+
+  oneTimeKey
+	string, default: none
+	set a special hex "key" to correspond to an SSL X.509 cert+key.
+	See the 'onetimekey' helper script.  Can also be PROMPT to prompt
+	the user to paste the hex key string in.
+
+	This provides a Client-Side cert+key that the client will use to
+	authenticate itself by SSL To the VNC Server.
+
+	This is to try to work around the problem that the Java applet
+	cannot keep an SSL keystore on disk, etc.  E.g. if they log
+	into an HTTPS website via password they are authenticated and
+	encrypted, then the website can safely put oneTimeKey=... on the
+	URL.  The Vncviewer authenticates the VNC server with this key.
+
+	Note that there is currently a problem in that if x11vnc requires
+	Client Certificates the user cannot download the index.vnc HTML
+	and VncViewer.jar from the same x11vnc.  Those need to come from
+	a different x11vnc or from a web server.
+
+	Note that the HTTPS website can also put the VNC Password
+	(e.g. a temporary/one-time one) in the parameter PASSWORD.
+	The Java Applet will automatically supply this VNC password
+	instead of prompting.
+
+  serverCert
+	string, default: none
+	set a special hex "cert" to correspond to an SSL X.509 cert
+	See the 'onetimekey -certonly' helper script.
+
+	This provides a Server-Side cert that the client will authenticate
+	the VNC Server against by SSL.
+
+	This is to try to work around the problem that the Java applet
+	cannot keep an SSL keystore on disk, etc.  E.g. if they log
+	into an HTTPS website via password they are authenticated and
+	encrypted, then the website can safely put serverCert=... on the
+	URL.
+
+	Of course the VNC Server is sending this string to the Java
+	Applet, so this is only reasonable security if the VNC Viewer
+	already trusts the HTTPS retrieval of the URL + serverCert param
+	that it gets.  This should be done over HTTPS not HTTP.
+
+  proxyHost
+	string, default: none
+	Do not try to guess the proxy's hostname, use the value in
+	proxyHost.  Does not imply forceProxy (below.)
+
+  proxyPort
+	string, default: none
+	Do not try to guess the proxy's port number, use the value in
+	proxyPort.  Does not imply forceProxy (below.)
+
+  forceProxy
+	yes/no, default: no
+	Assume there is a proxy and force its use.
+
+	If a string other than "yes" or "no" is given, it implies "yes"
+	and uses the string for proxyHost and proxyPort (see above).
+	In this case the string must be of the form "hostname+port".
+	Note that it is "+" and not ":" before the port number.
+
+  ignoreProxy
+	yes/no, default: no
+	Don't check for a proxy, assume there is none.
+
+  trustAllVncCerts
+	yes/no, default: no
+	Automatically trust any cert received from the VNC server
+	(obviously this could be dangerous and lead to man in the
+	middle attack).  Do not ask the user to verify any of these
+	certs from the VNC server.
+
+  trustUrlVncCert
+	yes/no, default: no
+	Automatically trust any cert that the web browsers has accepted.
+	E.g. the user said "Yes" or "Continue" to a web browser dialog
+	regarding a certificate.  If we get the same cert (chain) from
+	the VNC server we trust it without prompting the user.
+
+  debugCerts
+	yes/no, default: no
+	Print out every cert in the Server, TrustUrl, TrustAll chains.
+
+
+TightVNC Java viewer only:
+
+  Offer Relogin
+	yes/no, default: yes
+	"Offer Relogin" set to "No" disables "Login again" 
+
+  SocketFactory
+	string, default: none
+	set Java Socket class factory.
+
+UltraVNC Java viewer only:
+
+  None.
+
+  The following are added by x11vnc and/or ssvnc project
+  
+  ftpDropDown
+	string, default: none
+	Sets the file transfer "drives" dropdown to the "." separated
+	list.  Use "+" for space. The default is
+
+		My+Documents.Desktop.Home
+
+	for 3 entries in the dropdown in addition to the "drives"
+	(e.g. C:\)  These items should be expanded properly by the VNC
+	Server.  x11vnc will prepend $HOME to them, which is normally
+	what one wants.  To include a "/" use "_2F_".  Another example:
+
+		Home.Desktop.bin_2F_linux
+
+	If an item is prefixed with "TOP_" then the item is inserted at
+	the top of the drop down rather than being appended to the end.
+	E.g. to try to initially load the user homedir instead of /:
+
+		TOP_Home.My+Documents.Desktop
+
+	If ftpDropDown is set to the empty string, "", then no special
+	locations, [Desktop] etc., are placed in the drop down.  Only the
+	ultravnc "drives" will appear.
+
+  ftpOnly
+	yes/no, default: no
+	The VNC viewer only shows the filetransfer panel, no desktop
+	is displayed.
+
+  graftFtp
+	yes/no, default: no
+	As ftpOnly, the VNC viewer only shows the filetransfer panel,
+	no desktop is displayed, however it is "grafted" onto an existing
+	SSVNC unix vncviewer.  The special SSVNC vncviewer merges the two
+	channels.
+
+  dsmActive
+	yes/no, default: no
+	Special usage mode with the SSVNC unix vncviewer.  The UltraVNC
+	DSM encryption is active.  Foolishly, UltraVNC DSM encryption
+	*MODIFIES* the VNC protocol when active (it is not a pure tunnel).
+	This option indicates to modify the VNC protocol to make this work. 
+	Usually only used with graftFtp and SSVNC unix vncviewer.
+
+  delayAuthPanel
+	yes/no, default: no
+	This is another special usage mode with the SSVNC unix vncviewer.
+	A login panel is delayed (not shown at startup.)  Could be useful
+	for non SSVNC usage too.
+
+  ignoreMSLogonCheck
+	yes/no, default: no
+	Similar to delayAuthPanel, do not put up a popup asking for
+	Windows username, etc.

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedUltraViewerSSL.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedVncViewer.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/UltraViewerSSL.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/VncViewer.jar


+ 26 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/index.vnc

@@ -0,0 +1,26 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=VncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 65 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/onetimekey

@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# usage: onetimekey path/to/mycert.pem
+#        onetimekey -certonly path/to/mycert.pem
+#
+# Takes an openssl cert+key pem file and turns into a long string
+# for the x11vnc SSL VNC Java Viewer.
+#
+# The Java applet URL parameter can be  oneTimeKey=<str> where str is
+# the output of this program, or can be oneTimeKey=PROMPT in which
+# case the applet will ask you to paste in the string.
+#
+# The problem trying to be solved here is it is difficult to get
+# the Java applet to have or use a keystore with the key saved
+# in it.  Also, as the name implies, an HTTPS server can create
+# a one time key to send to the applet (the user has already
+# logged in via password to the HTTPS server).
+#
+# Note oneTimeKey is to provide a CLIENT Certificate for the viewer
+# to authenticate itself to the VNC Server.
+#
+# There is also the serverCert=<str> Applet parameter.  This is
+# a cert to authenticate the VNC server against.  To create that
+# string with this tool specify -certonly as the first argument.
+
+certonly=""
+if [ "X$1" = "X-certonly" ]; then
+	shift
+	certonly=1
+fi
+
+in=$1
+der=/tmp/1time$$.der
+touch $der
+chmod 600 $der
+
+openssl pkcs8 -topk8 -nocrypt -in "$in" -out "$der" -outform der
+
+pbinhex=/tmp/pbinhex.$$
+cat > $pbinhex <<END
+#!/usr/bin/perl
+
+\$str = '';
+while (1) {
+        \$c = getc(STDIN);
+        last if \$c eq '';
+        \$str .= sprintf("%02x", unpack("C", \$c));
+}
+
+print "\$str\n";
+END
+
+chmod 700 $pbinhex 
+
+str1=`$pbinhex < "$der"`
+rm -f "$der"
+
+n=`grep -n 'BEGIN CERTIFICATE' $in | awk -F: '{print $1}' | head -1`
+str2=`tail +$n $in | $pbinhex`
+if [ "X$certonly" = "X1" ]; then
+	echo "$str2"
+else
+	echo "$str1,$str2"
+fi
+rm -f $pbinhex

+ 73 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/proxy.vnc

@@ -0,0 +1,73 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<!--
+The idea behind using the signed applet in SignedVncViewer.jar for
+firewall proxies:
+
+Java socket applets and http proxies do not get along well.
+
+Java security allows the applet to connect back via a socket to the
+originating host, but the browser/plugin Proxy settings are not used for
+socket connections (only http and the like).  So the socket connection
+fails in the proxy environment.
+
+The applet is not allowed to open a socket connection to the proxy (since
+that would let it connect to just about any host, e.g. CONNECT method).
+
+This is indpendent of SSL but of course fails for that socket connection
+as well.  I.e. this is a problem for non-SSL VNC Viewers as well.
+
+Solution?  Sign the applet and have the user click on "Yes" that they
+fully trust the applet.  Then the applet can connect to any host via
+sockets, in particular the proxy.  It next issues the request
+
+	CONNECT host:port HTTP/1.1
+	Host: host:port
+
+and if the proxy supports the CONNECT method we are finally connected to
+the VNC server.
+
+For SSL connections, SSL is layered on top of this socket.  However note
+this scheme will work for non-SSL applet proxy tunnelling as well.
+
+It should be able to get non-SSL VNC connections to work via GET
+command but that has not been done yet.
+
+Note that some proxies only allow CONNECT to only these the ports 443
+(HTTPS) and 563 (SNEWS).  So you would have to run the VNC server on
+those ports.
+
+SignedVncViewer.jar is just a signed version of VncViewer.jar
+
+The URL to use for this file:  https://host:port/proxy.vnc
+
+Note VNCSERVERPORT, we assume $PARAMS will have the correct PORT setting
+(e.g. 563), not the one libvncserver puts in....
+
+-->
+
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedVncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=VNCSERVERPORT value=$PORT>
+<param name="Open New Window" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 3676 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ss_vncviewer

@@ -0,0 +1,3676 @@
+#!/bin/sh
+#
+# ss_vncviewer:  wrapper for vncviewer to use an stunnel SSL tunnel
+#                or an SSH tunnel.
+#
+# Copyright (c) 2006-2009 by Karl J. Runge <runge@karlrunge.com>
+#
+# ss_vncviewer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+# 
+# ss_vncviewer is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with ss_vncviewer; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
+# or see <http://www.gnu.org/licenses/>.
+# 
+# 
+# You must have stunnel(8) installed on the system and in your PATH
+# (however, see the -ssh option below, in which case you will need ssh(1)
+# installed)  Note: stunnel is usually installed in an "sbin" subdirectory.
+#
+# You should have "x11vnc -ssl ..." or "x11vnc -stunnel ..." 
+# already running as the VNC server on the remote machine.
+# (or use stunnel on the server side for any other VNC server)
+#
+#
+# Usage: ss_vncviewer [cert-args] host:display <vncviewer-args>
+#
+# e.g.:  ss_vncviewer snoopy:0
+#        ss_vncviewer snoopy:0 -encodings "copyrect tight zrle hextile"
+#
+# [cert-args] can be:
+#
+#	-verify /path/to/cacert.pem		
+#	-mycert /path/to/mycert.pem		
+#	-crl    /path/to/my_crl.pem  (or directory)
+#	-proxy  host:port
+#
+# -verify specifies a CA cert PEM file (or a self-signed one) for
+#         authenticating the VNC server.
+#
+# -mycert specifies this client's cert+key PEM file for the VNC server to
+#	  authenticate this client. 
+#
+# -proxy  try host:port as a Web proxy to use the CONNECT method
+#         to reach the VNC server (e.g. your firewall requires a proxy).
+#
+#         For the "double proxy" case use -proxy host1:port1,host2:port2
+#         (the first CONNECT is done through host1:port1 to host2:port2
+#         and then a 2nd CONNECT to the destination VNC server.)
+#
+#         Use socks://host:port, socks4://host:port, or socks5://host,port
+#         to force usage of a SOCKS proxy.  Also repeater://host:port and
+#         sslrepeater://host:port.
+#
+# -showcert  Only fetch the certificate using the 'openssl s_client'
+#            command (openssl(1) must in installed).  On ssvnc 1.0.27 and
+#            later the bundled command 'ultravnc_dsm_helper' is used.
+#
+#    See http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-ca for details on
+#    SSL certificates with VNC.
+#
+# A few other args (not related to SSL and certs):
+#
+# -2nd    Run the vncviewer a 2nd time if the first connections fails.
+#
+# -ssh    Use ssh instead of stunnel SSL.  ssh(1) must be installed and you
+#         must be able to log into the remote machine via ssh.
+#
+#         In this case "host:display" may be of the form "user@host:display"
+#         where "user@host" is used for the ssh login (see ssh(1) manpage).
+#
+#         If -proxy is supplied it can be of the forms: "gwhost" "gwhost:port"
+#         "user@gwhost" or "user@gwhost:port".  "gwhost" is an incoming ssh 
+#         gateway machine (the VNC server is not running there), an ssh -L
+#         redir is used to "host" in "host:display" from "gwhost". Any "user@"
+#         part must be in the -proxy string (not in "host:display").
+#
+#         Under -proxy use "gwhost:port" if connecting to any ssh port
+#         other than the default (22).  (even for the non-gateway case,
+#         -proxy must be used to specify a non-standard ssh port)
+#
+#         A "double ssh" can be specified via a -proxy string with the two
+#         hosts separated by a comma:
+#
+#             [user1@]host1[:port1],[user2@]host2[:port2]
+#
+#         in which case a ssh to host1 and thru it via a -L redir a 2nd
+#         ssh is established to host2.  
+#
+#         Examples:
+#
+#         ss_vncviewer -ssh bob@bobs-home.net:0
+#         ss_vncviewer -ssh -sshcmd 'x11vnc -localhost' bob@bobs-home.net:0
+#
+#         ss_vncviewer -ssh -proxy fred@mygate.com:2022 mymachine:0
+#         ss_vncviewer -ssh -proxy bob@bobs-home.net:2222 localhost:0
+#
+#         ss_vncviewer -ssh -proxy fred@gw-host,fred@peecee localhost:0
+#
+# -sshcmd cmd   Run "cmd" via ssh instead of the default "sleep 15"
+#               e.g. -sshcmd 'x11vnc -display :0 -localhost -rfbport 5900'
+#
+# -sshargs "args"  pass "args" to the ssh process, e.g. -L/-R port redirs.
+#
+# -sshssl Tunnel the SSL connection thru a SSH connection.  The tunnel as
+#         under -ssh is set up and the SSL connection goes thru it.  Use
+#         this if you want to have and end-to-end SSL connection but must
+#         go thru a SSH gateway host (e.g. not the vnc server).  Or use
+#         this if you need to tunnel additional services via -R and -L 
+#         (see -sshargs above).
+#
+#         ss_vncviewer -sshssl -proxy fred@mygate.com mymachine:0
+#
+# -listen (or -reverse) set up a reverse connection.
+#
+# -alpha  turn on cursor alphablending hack if you are using the
+#         enhanced tightvnc vncviewer.
+#
+# -grab   turn on XGrabServer hack if you are using the enhanced tightvnc
+#         vncviewer (e.g. for fullscreen mode in some windowmanagers like
+#         fvwm that do not otherwise work in fullscreen mode)
+#
+#
+# set VNCVIEWERCMD to whatever vncviewer command you want to use.
+#
+VNCIPCMD=${VNCVIEWERCMD:-vncip}
+VNCVIEWERCMD=${VNCVIEWERCMD:-vncviewer}
+if [ "X$SSVNC_TURBOVNC" != "X" ]; then
+	if echo "$VNCVIEWERCMD" | grep '\.turbovnc' > /dev/null; then
+		:
+	else
+		if type "$VNCVIEWERCMD.turbovnc" > /dev/null 2>/dev/null; then
+			VNCVIEWERCMD="$VNCVIEWERCMD.turbovnc"
+		fi
+	fi
+fi
+#
+# Same for STUNNEL, e.g. set it to /path/to/stunnel or stunnel4, etc.
+#
+
+# turn on verbose debugging output
+if [ "X$SS_DEBUG" != "X" -a "X$SS_DEBUG" != "X0" ]; then
+	set -xv 
+fi
+
+PATH=$PATH:/usr/sbin:/usr/local/sbin:/dist/sbin; export PATH
+
+localhost="localhost"
+if uname | grep Darwin >/dev/null; then
+	localhost="127.0.0.1"
+fi
+
+# work out which stunnel to use (debian installs as stunnel4)
+stunnel_set_here=""
+if [ "X$STUNNEL" = "X" ]; then
+	check_stunnel=1
+	if [ "X$SSVNC_BASEDIRNAME" != "X" ]; then
+		if [ -x "$SSVNC_BASEDIRNAME/stunnel" ]; then
+			type stunnel > /dev/null 2>&1
+			if [ $? = 0 ]; then
+				# found ours
+				STUNNEL=stunnel
+				check_stunnel=0
+			fi
+		fi
+	fi
+	if [ "X$check_stunnel" = "X1" ]; then
+		type stunnel4 > /dev/null 2>&1
+		if [ $? = 0 ]; then
+			STUNNEL=stunnel4
+		else
+			STUNNEL=stunnel
+		fi
+	fi
+	stunnel_set_here=1
+fi
+
+help() {
+	tail -n +2 "$0" | sed -e '/^$/ q'
+}
+
+secondtry=""
+gotalpha=""
+use_ssh=""
+use_sshssl=""
+direct_connect=""
+ssh_sleep=15
+
+# sleep longer in -listen mode:
+if echo "$*" | grep '.*-listen' > /dev/null; then
+	ssh_sleep=1800
+fi
+
+
+ssh_cmd=""
+# env override of ssh_cmd:
+if [ "X$SS_VNCVIEWER_SSH_CMD" != "X" ]; then
+	ssh_cmd="$SS_VNCVIEWER_SSH_CMD"
+fi
+
+ssh_args=""
+showcert=""
+reverse=""
+
+ciphers=""
+anondh="ALL:RC4+RSA:+SSLv2:@STRENGTH"
+anondh_set=""
+stunnel_debug="6"
+if [ "X$SS_DEBUG" != "X" -o "X$SSVNC_VENCRYPT_DEBUG" != "X" -o "X$SSVNC_STUNNEL_DEBUG" != "X" ]; then
+	stunnel_debug="7"
+fi
+
+if [ "X$1" = "X-viewerflavor" ]; then
+	# special case, try to guess which viewer:
+	#
+	if echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+		echo "unknown"
+		exit 0
+	fi
+	if echo "$VNCVIEWERCMD" | grep -i chicken.of > /dev/null; then
+		echo "cotvnc"
+		exit 0
+	fi
+	if echo "$VNCVIEWERCMD" | grep -i ultra > /dev/null; then
+		echo "ultravnc"
+		exit 0
+	fi
+	# OK, run it for help output...
+	str=`$VNCVIEWERCMD -h 2>&1 | head -n 5`
+	if echo "$str" | grep -i 'TightVNC.viewer' > /dev/null; then
+		echo "tightvnc"
+	elif echo "$str" | grep -i 'VNC viewer version 3' > /dev/null; then
+		echo "realvnc3"
+	elif echo "$str" | grep -i 'VNC viewer .*Edition 4' > /dev/null; then
+		echo "realvnc4"
+	elif echo "$str" | grep -i 'RealVNC.Ltd' > /dev/null; then
+		echo "realvnc4"
+	else
+		echo "unknown"
+	fi
+	exit 0
+fi
+if [ "X$1" = "X-viewerhelp" ]; then
+	$VNCVIEWERCMD -h 2>&1
+	exit 0
+fi
+
+# grab our cmdline options:
+while [ "X$1" != "X" ]
+do
+    case $1 in 
+	"-verify")	shift; verify="$1"
+                ;;
+	"-mycert")	shift; mycert="$1"
+                ;;
+	"-crl")		shift; crl="$1"
+                ;;
+	"-proxy")	shift; proxy="$1"
+                ;;
+	"-ssh")		use_ssh=1
+                ;;
+	"-sshssl")	use_ssh=1
+			use_sshssl=1
+                ;;
+	"-sshcmd")	shift; ssh_cmd="$1"
+                ;;
+	"-sshargs")	shift; ssh_args="$1"
+                ;;
+	"-anondh")	ciphers="ciphers=$anondh"
+			ULTRAVNC_DSM_HELPER_SHOWCERT_ADH=1
+			export ULTRAVNC_DSM_HELPER_SHOWCERT_ADH
+			anondh_set=1
+                ;;
+	"-ciphers")	shift; ciphers="ciphers=$1"
+                ;;
+	"-alpha")	gotalpha=1
+                ;;
+	"-showcert")	showcert=1
+                ;;
+	"-listen")	reverse=1
+                ;;
+	"-reverse")	reverse=1
+                ;;
+	"-2nd")		secondtry=1
+                ;;
+	"-grab")	VNCVIEWER_GRAB_SERVER=1; export VNCVIEWER_GRAB_SERVER
+                ;;
+	"-x11cursor")	VNCVIEWER_X11CURSOR=1; export VNCVIEWER_X11CURSOR
+                ;;
+	"-rawlocal")	VNCVIEWER_RAWLOCAL=1; export VNCVIEWER_RAWLOCAL
+                ;;
+	"-scale")	shift; SSVNC_SCALE="$1"; export SSVNC_SCALE
+                ;;
+	"-onelisten")	SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+                ;;
+	"-sendclipboard")	VNCVIEWER_SEND_CLIPBOARD=1; export VNCVIEWER_SEND_CLIPBOARD
+                ;;
+	"-sendalways")	VNCVIEWER_SEND_ALWAYS=1; export VNCVIEWER_SEND_ALWAYS
+                ;;
+	"-recvtext")	shift; VNCVIEWER_RECV_TEXT="$1"; export VNCVIEWER_RECV_TEXT
+                ;;
+	"-escape")	shift; VNCVIEWER_ESCAPE="$1"; export VNCVIEWER_ESCAPE
+                ;;
+	"-ssvnc_encodings")	shift; VNCVIEWER_ENCODINGS="$1"; export VNCVIEWER_ENCODINGS
+                ;;
+	"-ssvnc_extra_opts")	shift; VNCVIEWERCMD_EXTRA_OPTS="$1"; export VNCVIEWERCMD_EXTRA_OPTS
+                ;;
+	"-rfbversion")	shift; VNCVIEWER_RFBVERSION="$1"; export VNCVIEWER_RFBVERSION
+                ;;
+	"-nobell")	VNCVIEWER_NOBELL=1; export VNCVIEWER_NOBELL
+                ;;
+	"-popupfix")	VNCVIEWER_POPUP_FIX=1; export VNCVIEWER_POPUP_FIX
+                ;;
+	"-realvnc4")	VNCVIEWER_IS_REALVNC4=1; export VNCVIEWER_IS_REALVNC4
+                ;;
+	"-h"*)	help; exit 0
+                ;;
+	"--h"*)	help; exit 0
+                ;;
+	*)	break
+                ;;
+    esac
+    shift
+done
+
+# maxconn is something we added to stunnel, this disables it:
+if [ "X$SS_VNCVIEWER_NO_MAXCONN" != "X" ]; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+elif echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+elif [ "X$reverse" != "X" ]; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+else
+	# new way (our patches).  other than the above, we set these:
+	if [ "X$SKIP_STUNNEL_ONCE" = "X" ]; then
+		STUNNEL_ONCE=1; export STUNNEL_ONCE
+	fi
+	if [ "X$SKIP_STUNNEL_MAX_CLIENTS" = "X" ]; then
+		STUNNEL_MAX_CLIENTS=1; export STUNNEL_MAX_CLIENTS
+	fi
+fi
+# always set this one:
+if [ "X$SKIP_STUNNEL_NO_SYSLOG" = "X" ]; then
+	STUNNEL_NO_SYSLOG=1; export STUNNEL_NO_SYSLOG
+fi
+
+# this is the -t ssh option (gives better keyboard response thru SSH tunnel)
+targ="-t"
+if [ "X$SS_VNCVIEWER_NO_T" != "X" ]; then
+	targ=""
+fi
+
+# set the alpha blending env. hack: 
+if [ "X$gotalpha" = "X1" ]; then
+	VNCVIEWER_ALPHABLEND=1
+	export VNCVIEWER_ALPHABLEND
+else
+	NO_ALPHABLEND=1
+	export NO_ALPHABLEND
+fi
+
+if [ "X$reverse" != "X" ]; then
+	ssh_sleep=1800
+	if [ "X$proxy" != "X" ]; then
+		# check proxy usage under reverse connection:
+		if [ "X$use_ssh" = "X" -a "X$use_sshssl" = "X" ]; then
+			echo ""
+			if echo "$proxy" | egrep -i "(repeater|vencrypt)://" > /dev/null; then
+				:
+			else
+				echo "*Warning*: SSL -listen and a Web proxy does not make sense."
+				sleep 2
+			fi
+		elif echo "$proxy" | grep "," > /dev/null; then
+			:
+		else
+			echo ""
+			echo "*Warning*: -listen and a single proxy/gateway does not make sense."
+			sleep 2
+		fi
+
+		# we now try to PPROXY_LOOP_THYSELF, set this var to disable that.
+		#SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+	fi
+fi
+if [ "X$ssh_cmd" = "X" ]; then
+	# if no remote ssh cmd, sleep a bit:
+	ssh_cmd="sleep $ssh_sleep"
+fi
+
+# this should be a host:display:
+#
+orig="$1"
+shift
+
+dL="-L"
+if uname -sr | egrep 'SunOS 5\.[5-8]' > /dev/null; then
+	dL="-h"
+fi
+
+have_uvnc_dsm_helper_showcert=""
+if [ "X$showcert" = "X1" -a "X$SSVNC_USE_S_CLIENT" = "X" -a "X$reverse" = "X" ]; then
+	if type ultravnc_dsm_helper >/dev/null 2>&1; then
+		if ultravnc_dsm_helper -help 2>&1 | grep -w showcert >/dev/null; then
+			have_uvnc_dsm_helper_showcert=1
+		fi
+	fi
+fi
+have_uvnc_dsm_helper_ipv6=""
+if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+	if type ultravnc_dsm_helper >/dev/null 2>&1; then
+		if ultravnc_dsm_helper -help 2>&1 | grep -iw ipv6 >/dev/null; then
+			have_uvnc_dsm_helper_ipv6=1
+		fi
+	fi
+fi
+
+rchk() {
+	# a kludge to set $RANDOM if we are not bash:
+	if [ "X$BASH_VERSION" = "X" ]; then
+		RANDOM=`date +%S``sh -c 'echo $$'``ps -elf 2>&1 | sum 2>&1 | awk '{print $1}'`
+	fi
+}
+rchk
+
+# a portable, but not absolutely safe, tmp file creator
+mytmp() {
+	tf=$1
+	if type mktemp > /dev/null 2>&1; then
+		# if we have mktemp(1), use it:
+		tf2="$tf.XXXXXX"
+		tf2=`mktemp "$tf2"`
+		if [ "X$tf2" != "X" -a -f "$tf2" ]; then
+			if [ "X$DEBUG_MKTEMP" != "X" ]; then
+				echo "mytmp-mktemp: $tf2" 1>&2
+			fi
+			echo "$tf2"
+			return
+		fi
+	fi
+	# fallback to multiple cmds:
+	rm -rf "$tf" || exit 1
+	if [ -d "$tf" ]; then
+		echo "tmp file $tf still exists as a directory."
+		exit 1
+	elif [ $dL "$tf" ]; then
+		echo "tmp file $tf still exists as a symlink."
+		exit 1
+	elif [ -f "$tf" ]; then
+		echo "tmp file $tf still exists."
+		exit 1
+	fi
+	touch "$tf" || exit 1
+	chmod 600 "$tf" || exit 1
+	rchk
+	if [ "X$DEBUG_MKTEMP" != "X" ]; then
+		echo "mytmp-touch: $tf" 1>&2
+	fi
+	echo "$tf"
+}
+
+# set up special case of ultravnc single click III mode:
+if echo "$proxy" | egrep "^sslrepeater://" > /dev/null; then
+	pstr=`echo "$proxy" | sed -e 's,sslrepeater://,,'`
+	pstr1=`echo "$pstr" | sed -e 's/+.*$//'`
+	pstr2=`echo "$pstr" | sed -e 's/^[^+]*+//'`
+	SSVNC_REPEATER="SCIII=$pstr2"; export SSVNC_REPEATER
+	orig=$pstr1
+	echo
+	echo "reset: SSVNC_REPEATER=$SSVNC_REPEATER orig=$orig proxy=''"
+	proxy=""
+fi
+if echo "$proxy" | egrep "vencrypt://" > /dev/null; then
+	vtmp="/tmp/ss_handshake${RANDOM}.$$.txt"
+	vtmp=`mytmp "$vtmp"`
+	SSVNC_PREDIGESTED_HANDSHAKE="$vtmp"
+	export SSVNC_PREDIGESTED_HANDSHAKE
+	if [ "X$SSVNC_USE_OURS" = "X" ]; then
+		NEED_VENCRYPT_VIEWER_BRIDGE=1
+	fi
+fi
+if [ "X$SSVNC_USE_OURS" = "X" ]; then
+	VNCVIEWERCMD_EXTRA_OPTS=""
+fi
+
+
+# check -ssh and -mycert/-verify conflict:
+if [ "X$use_ssh" = "X1" -a "X$use_sshssl" = "X" ]; then
+	if [ "X$mycert" != "X" -o "X$verify" != "X" ]; then
+		echo "-mycert and -verify cannot be used in -ssh mode" 
+		exit 1
+	fi
+fi
+
+# direct mode Vnc:// means show no warnings.
+# direct mode vnc:// will show warnings.
+if echo "$orig" | grep '^V[Nn][Cc]://' > /dev/null; then
+	SSVNC_NO_ENC_WARN=1
+	export SSVNC_NO_ENC_WARN
+	orig=`echo "$orig" | sed -e 's/^...:/vnc:/'`
+fi
+
+# interprest the pseudo URL proto:// strings:
+if echo "$orig" | grep '^vnc://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc://,,'`
+	verify=""
+	mycert=""
+	crl=""
+	use_ssh=""
+	use_sshssl=""
+	direct_connect=1
+elif echo "$orig" | grep '^vncs://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncs://,,'`
+elif echo "$orig" | grep '^vncssl://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncssl://,,'`
+elif echo "$orig" | grep '^vnc+ssl://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc.ssl://,,'`
+elif echo "$orig" | grep '^vncssh://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncssh://,,'`
+	use_ssh=1
+elif echo "$orig" | grep '^vnc+ssh://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc.ssh://,,'`
+	use_ssh=1
+fi
+
+if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+        verify=""
+        mycert=""
+        crl=""
+        use_ssh=""
+        use_sshssl=""
+        direct_connect=1
+	if echo "$SSVNC_ULTRA_DSM" | grep 'noultra:' > /dev/null; then
+		SSVNC_NO_ULTRA_DSM=1; export SSVNC_NO_ULTRA_DSM
+	fi
+fi
+
+# rsh mode is an internal/secret thing only I use.
+rsh=""
+if echo "$orig" | grep '^rsh://' > /dev/null; then
+	use_ssh=1
+	rsh=1
+	orig=`echo "$orig" | sed -e 's,rsh://,,'`
+elif echo "$orig" | grep '^rsh:' > /dev/null; then
+	use_ssh=1
+	rsh=1
+	orig=`echo "$orig" | sed -e 's,rsh:,,'`
+fi
+
+# play around with host:display port:
+if echo "$orig" | grep ':[0-9][0-9]*$' > /dev/null; then
+	:
+else
+	# add or assume :0 if no ':'
+	if [ "X$reverse" = "X" ]; then
+		orig="$orig:0"
+	elif [ "X$orig" = "X" ]; then
+		orig=":0"
+	fi
+fi
+
+# extract host and disp number:
+
+# try to see if it is ipv6 address:
+ipv6=0
+if echo "$orig" | grep '\[' > /dev/null; then
+	# ipv6 [fe80::219:dbff:fee5:3f92%eth1]:5900
+	host=`echo "$orig" | sed -e 's/\].*$//' -e 's/\[//'`
+	disp=`echo "$orig" | sed -e 's/^.*\]://'`
+	ipv6=1
+elif echo "$orig" | grep ':..*:' > /dev/null; then
+	# ipv6 fe80::219:dbff:fee5:3f92%eth1:5900
+	host=`echo "$orig" | sed -e 's/:[^:]*$//'`
+	disp=`echo "$orig" | sed -e 's/^.*://'`
+	ipv6=1
+else
+	# regular host:port
+	host=`echo "$orig" | awk -F: '{print $1}'`
+	disp=`echo "$orig" | awk -F: '{print $2}'`
+fi
+
+if [ "X$reverse" != "X" -a "X$STUNNEL_LISTEN" = "X" -a "X$host" != "X" ]; then
+	STUNNEL_LISTEN=$host
+	echo "set STUNNEL_LISTEN=$STUNNEL_LISTEN"
+fi
+
+if [ "X$host" = "X" ]; then
+	host=$localhost
+fi
+
+if [ "X$SSVNC_IPV6" = "X0" ]; then
+	# disable checking for it.
+	ipv6=0
+#elif [ "X$reverse" != "X" -a "X$ipv6" = "X1" ]; then
+#	ipv6=0
+elif [ "X$ipv6" = "X1" ]; then
+	:
+elif echo "$host" | grep '^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null; then
+	:
+else
+	# regular hostname, can't be sure...
+	gout=""
+	if type getent > /dev/null 2>/dev/null; then
+		gout=`getent hosts "$host" 2>/dev/null`
+	fi
+	if echo "$gout" | grep ':.*:' > /dev/null; then
+		if echo "$gout" | grep '^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null; then
+			:
+		else
+			echo "ipv6: "`echo "$gout" | grep ':.*:' | head -n 1`
+			ipv6=1
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		hout=""
+		if type host > /dev/null 2>/dev/null; then
+			host "$host" >/dev/null 2>&1
+			host "$host" >/dev/null 2>&1
+			hout=`host "$host" 2>/dev/null`
+		fi
+		if echo "$hout" | grep -i 'has ipv6 address' > /dev/null; then
+			if echo "$hout" | grep -i 'has address' > /dev/null; then
+				:
+			else
+				echo "ipv6: "`echo "$hout" | grep -i 'has ipv6 address' | head -n 1`
+				ipv6=1
+			fi
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		dout=""
+		if type dig > /dev/null 2>/dev/null; then
+		dout=`dig -t any "$host" 2>/dev/null`
+		fi
+		if echo "$dout" | grep -i "^$host" | grep '[ 	]AAAA[ 	]' > /dev/null; then
+			if echo "$dout" | grep -i "^$host" | grep '[ 	]A[ 	]' > /dev/null; then
+				:
+			else
+				echo "ipv6: "`echo "$dout" | grep -i '[ 	]AAAA[ 	]' | head -n 1`
+				ipv6=1
+			fi
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		sout=`env LOOKUP="$host" \
+		      perl -e '	eval {use Socket};  exit 0 if $@;
+				eval {use Socket6}; exit 0 if $@;
+				@res = getaddrinfo($ENV{LOOKUP}, "daytime", AF_UNSPEC, SOCK_STREAM);
+				$ipv4 = 0;
+				$ipv6 = 0;
+				$ip6 = "";
+				while (scalar(@res) >= 5) {
+					($family, $socktype, $proto, $saddr, $canon, @res) = @res;
+					$ipv4 = 1 if $family == AF_INET;
+					$ipv6 = 1 if $family == AF_INET6;
+					if ($family == AF_INET6 && $ip6 eq "") {
+						my ($host, $port) = getnameinfo($saddr, NI_NUMERICHOST | NI_NUMERICSERV);
+						$ip6 = $host;
+					}
+				}
+				if (! $ipv4 && $ipv6) {
+					print "AF_INET6_ONLY: $ENV{LOOKUP}: $ip6\n";
+				}
+				exit 0;
+			' 2>/dev/null`
+		if echo "$sout" | grep AF_INET6_ONLY > /dev/null; then
+			echo "$sout"
+			ipv6=1
+		fi
+	fi
+fi
+if [ "X$ipv6" = "X1" ]; then
+	echo "ipv6: addr=$host disp=$disp"
+fi
+if [ "X$disp" = "X" ]; then
+	port=""	# probably -listen mode.
+elif [ $disp -lt 0 ]; then
+	# negative means use |n| without question:
+	port=`expr 0 - $disp`
+elif [ $disp -lt 200 ]; then
+	# less than 200 means 5900+n
+	if [ "X$reverse" = "X" ]; then
+		port=`expr $disp + 5900`
+	else
+		port=`expr $disp + 5500`
+	fi
+else
+	# otherwise use the number directly, e.g. 443, 2345
+	port=$disp
+fi
+
+if [ "X$ipv6" = "X1" -a "X$direct_connect" = "X1" ]; then
+	if [ "X$proxy" = "X" -a "X$reverse" = "X" ]; then
+		if [ "X$SSVNC_ULTRA_DSM" != "X" -a "X$have_uvnc_dsm_helper_ipv6" = "X1" ]; then
+			:
+		elif [ "X$SSVNC_NO_IPV6_PROXY" != "X" ]; then
+			:
+		elif [ "X$SSVNC_NO_IPV6_PROXY_DIRECT" != "X" ]; then
+			:
+		elif [ "X$SSVNC_USE_OURS" = "X1" ]; then
+			# requires 1.0.27 and later ssvncviewer binary
+			:
+		else
+			proxy="ipv6://$host:$port"
+			echo "direct connect: set proxy=$proxy"
+		fi
+	fi
+fi
+
+# (possibly) tell the vncviewer to only listen on lo: 
+if [ "X$reverse" != "X" ]; then
+	if [ "X$direct_connect" = "X" -o "X$proxy" != "X" -o "X$STUNNEL_LISTEN" != "X" ]; then
+		VNCVIEWER_LISTEN_LOCALHOST=1
+		export VNCVIEWER_LISTEN_LOCALHOST
+	fi
+fi
+
+# try to find an open listening port via netstat(1):
+inuse=""
+if uname | grep Linux > /dev/null; then
+	inuse=`netstat -ant | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*://'`
+elif uname | grep SunOS > /dev/null; then
+	inuse=`netstat -an -f inet -P tcp | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $1}' | sed 's/^.*\.//'`
+elif uname | egrep -i 'bsd|darwin' > /dev/null; then
+	inuse=`netstat -ant -f inet | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*\.//'`
+# add others...
+fi
+
+# this is a crude attempt for unique ports tags, etc.
+date_sec=`date +%S`
+
+# these are special cases of no vnc, e.g. sleep or xmessage.
+# these are for using ssvnc as a general port redirector.
+if echo "$VNCVIEWERCMD" | grep '^sleep[ 	][ 	]*[0-9][0-9]*' > /dev/null; then
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" = "X" ]; then
+		p=`echo "$VNCVIEWERCMD" | awk '{print $3}'`
+		if [ "X$p" != "X" ]; then
+			SS_VNCVIEWER_LISTEN_PORT=$p
+		fi
+	fi
+	p2=`echo "$VNCVIEWERCMD" | awk '{print $2}'`
+	VNCVIEWERCMD="eval sleep $p2; echo Local "
+elif echo "$VNCVIEWERCMD" | grep '^xmessage[ 	][ 	]*[0-9][0-9]*' > /dev/null; then
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" = "X" ]; then
+		p=`echo "$VNCVIEWERCMD" | awk '{print $2}'`
+		SS_VNCVIEWER_LISTEN_PORT=$p
+	fi
+fi
+
+# utility to find a free port to listen on.
+findfree() {
+	try0=$1
+	try=$try0
+	use0=""
+
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" != "X" ]; then
+		echo "$SS_VNCVIEWER_LISTEN_PORT"
+		return	
+	fi
+	if [ $try -ge 6000 ]; then
+		fmax=`expr $try + 1000`
+	else
+		fmax=6000
+	fi
+
+	while [ $try -lt $fmax ]
+	do
+		if [ "X$inuse" = "X" ]; then
+			break
+		fi
+		if echo "$inuse" | grep -w $try > /dev/null; then
+			:
+		else
+			use0=$try
+			break
+		fi
+		try=`expr $try + 1`
+	done
+	if [ "X$use0" = "X" ]; then
+		use0=`expr $date_sec + $try0`
+	fi
+
+	echo $use0
+}
+
+# utility for exiting; kills some helper processes,
+# removes files, etc.
+final() {
+	echo ""
+	if [ "X$tmp_cfg" != "X" ]; then
+		rm -f $tmp_cfg
+	fi
+	if [ "X$SS_VNCVIEWER_RM" != "X" ]; then
+		rm -f $SS_VNCVIEWER_RM 2>/dev/null
+	fi
+	if [ "X$tcert" != "X" ]; then
+		rm -f $tcert
+	fi
+	if [ "X$pssh" != "X" ]; then
+		echo "Terminating background ssh process"
+		echo kill -TERM "$pssh"
+		kill -TERM "$pssh" 2>/dev/null
+		sleep 1
+		kill -KILL "$pssh" 2>/dev/null
+		pssh=""
+	fi
+	if [ "X$stunnel_pid" != "X" ]; then
+		echo "Terminating background stunnel process"
+		echo kill -TERM "$stunnel_pid"
+		kill -TERM "$stunnel_pid" 2>/dev/null
+		sleep 1
+		kill -KILL "$stunnel_pid" 2>/dev/null
+		stunnel_pid=""
+	fi
+	if [ "X$dsm_pid" != "X" ]; then
+		echo "Terminating background ultravnc_dsm_helper process"
+		echo kill -TERM "$dsm_pid"
+		kill -TERM "$dsm_pid" 2>/dev/null
+		sleep 1
+		kill -KILL "$dsm_pid" 2>/dev/null
+		stunnel_pid=""
+	fi
+	if [ "X$tail_pid" != "X" ]; then
+		kill -TERM $tail_pid
+	fi
+	if [ "X$tail_pid2" != "X" ]; then
+		kill -TERM $tail_pid2
+	fi
+}
+
+if [ "X$reverse" = "X" ]; then
+	# normal connections try 5930-5999:
+	if [ "X$showcert" = "X" ]; then
+		use=`findfree 5930`
+	else
+		# move away from normal place for (possibly many) -showcert
+		pstart=`date +%S`
+		pstart=`expr 6130 + $pstart + $pstart`
+		use=`findfree $pstart`
+	fi
+	if [ $use -ge 5900 ]; then
+		N=`expr $use - 5900`
+	else
+		N=$use
+	fi
+else
+	# reverse connections:
+	p2=`expr $port + 30`
+	use=`findfree $p2`
+	if [ $use -ge 5500 ]; then
+		N=`expr $use - 5500`
+	else
+		N=$use
+	fi
+fi
+
+# this is for my special use of ss_vncip -> vncip viewer.
+if echo "$0" | grep vncip > /dev/null; then
+	VNCVIEWERCMD="$VNCIPCMD"
+fi
+
+if echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+	:
+elif [ "X$VNCVIEWERCMD_EXTRA_OPTS" != "X" ]; then
+	VNCVIEWERCMD="$VNCVIEWERCMD $VNCVIEWERCMD_EXTRA_OPTS"
+fi
+
+# trick for the undocumented rsh://host:port method.
+rsh_setup() {
+	if echo "$ssh_host" | grep '@' > /dev/null; then
+		ul=`echo "$ssh_host" | awk -F@ '{print $1}'`
+		ul="-l $ul"
+		ssh_host=`echo "$ssh_host" | awk -F@ '{print $2}'`
+	else
+		ul=""
+	fi
+	ssh_cmd=`echo "$ssh_cmd" | sed -e 's/ -localhost/ /g'`
+}
+
+# trick for the undocumented rsh://host:port method.
+rsh_viewer() {
+	trap "final" 0 2 15
+	if [ "X$PORT" = "X" ]; then
+		exit 1
+	elif [ $PORT -ge 5900 ]; then
+		vdpy=`expr $PORT - 5900`
+	else
+		vdpy=":$PORT"
+	fi
+	stty sane
+	echo "$VNCVIEWERCMD" "$@" $ssh_host:$vdpy
+	echo ""
+	$VNCVIEWERCMD "$@" $ssh_host:$vdpy
+	if [ $? != 0 ]; then
+		sleep 2
+		$VNCVIEWERCMD "$@" $ssh_host:$vdpy
+	fi
+}
+
+check_perl() {
+	if type "$1" > /dev/null 2>&1; then
+		:
+	elif [ ! -x "$1" ]; then
+		echo ""
+		echo "*******************************************************"
+		echo "** Problem finding the Perl command '$1': **"
+		echo ""
+		type "perl"
+		echo ""
+		echo "** Perhaps you need to install the Perl package. **"
+		echo "*******************************************************"
+		echo ""
+		sleep 5
+	fi
+}
+
+# this is the PPROXY tool.  used only here for now... 
+pcode() {
+	tf=$1
+	PPROXY_PROXY=$proxy; export PPROXY_PROXY
+	PPROXY_DEST="$host:$port"; export PPROXY_DEST
+	check_perl /usr/bin/perl
+
+	cod='#!/usr/bin/perl
+
+# A hack to glue stunnel to a Web or SOCKS proxy, UltraVNC repeater for
+# client connections.
+# Also acts as a VeNCrypt bridge (by redirecting to stunnel.)
+
+use IO::Socket::INET;
+
+my $have_inet6 = "";
+eval "use IO::Socket::INET6;";
+$have_inet6 = 1 if $@ eq "";
+
+#my $have_sock6 = "";
+#eval "use Socket; use Socket6;";
+#$have_sock6 = 1 if $@ eq "";
+
+if (exists $ENV{PPROXY_LOOP_THYSELF}) {
+	# used for reverse vnc, run a repeating outer loop.
+	print STDERR "PPROXY_LOOP: $ENV{PPROXY_LOOP_THYSELF}\n";
+	my $rm = $ENV{PPROXY_REMOVE};
+	my $lp = $ENV{PPROXY_LOOP_THYSELF};
+	delete $ENV{PPROXY_REMOVE};
+	delete $ENV{PPROXY_LOOP_THYSELF};
+	$ENV{PPROXY_LOOP_THYSELF_MASTER} = $$;
+	my $pid = $$;
+	my $dbg = 0;
+	my $c = 0;
+	use POSIX ":sys_wait_h";
+	while (1) {
+		$pid = fork();
+		last if ! defined $pid;
+		if ($pid eq "0") {
+			last;
+		}
+		$c++;
+		print STDERR "\nPPROXY_LOOP: pid=$$ child=$pid count=$c\n";
+		while (1) {
+			waitpid(-1, WNOHANG);
+			fsleep(0.25);
+			if (! kill 0, $pid) {
+				print STDERR "PPROXY_LOOP: child=$pid gone.\n";
+				last;
+			}
+			print STDERR "PPROXY_LOOP: child=$pid alive.\n" if $dbg;
+			if (! -f $lp) {
+				print STDERR "PPROXY_LOOP: flag file $lp gone, killing $pid\n";
+				kill TERM, $pid;
+				fsleep(0.1);
+				wait;
+				last;
+			}
+			print STDERR "PPROXY_LOOP: file exists $lp\n" if $dbg;
+		}
+		last if ! -f $lp;
+		fsleep(0.25);
+	}
+	if ($pid ne "0") {
+		unlink($0) if $rm;
+		exit 0;
+	}
+}
+
+if (exists $ENV{PPROXY_SLEEP} && $ENV{PPROXY_SLEEP} > 0) {
+	print STDERR "PPROXY_PID: $$\n";
+	sleep $ENV{PPROXY_SLEEP};
+}
+
+foreach my $var (qw(
+		PPROXY_DEST
+		PPROXY_KILLPID
+		PPROXY_LISTEN
+		PPROXY_PROXY
+		PPROXY_REMOVE
+		PPROXY_REPEATER
+		PPROXY_REVERSE
+		PPROXY_SLEEP
+		PPROXY_SOCKS
+		PPROXY_VENCRYPT
+		PPROXY_VENCRYPT_VIEWER_BRIDGE
+    )) {
+	if (0 || $ENV{SS_DEBUG} || $ENV{SSVNC_VENCRYPT_DEBUG}) {
+		print STDERR "$var: $ENV{$var}\n";
+	}
+} 
+
+if ($ENV{PPROXY_SOCKS} ne "" && $ENV{PPROXY_PROXY} !~ m,^socks5?://,i) {
+	if ($ENV{PPROXY_SOCKS} eq "5") {
+		$ENV{PPROXY_PROXY} = "socks5://$ENV{PPROXY_PROXY}";
+	} else {
+		$ENV{PPROXY_PROXY} = "socks://$ENV{PPROXY_PROXY}";
+	}
+}
+
+my $rfbSecTypeAnonTls  = 18;
+my $rfbSecTypeVencrypt = 19;
+
+my $rfbVencryptPlain        = 256;
+my $rfbVencryptTlsNone      = 257;
+my $rfbVencryptTlsVnc       = 258;
+my $rfbVencryptTlsPlain     = 259;
+my $rfbVencryptX509None     = 260;
+my $rfbVencryptX509Vnc      = 261;
+my $rfbVencryptX509Plain    = 262;
+
+my $handshake_file = "";
+if (exists $ENV{SSVNC_PREDIGESTED_HANDSHAKE})  {
+	$handshake_file = $ENV{SSVNC_PREDIGESTED_HANDSHAKE};
+}
+
+my $have_gettimeofday = 0;
+eval "use Time::HiRes;";
+if ($@ eq "") {
+	$have_gettimeofday = 1;
+}
+sub gettime {
+	my $t = "0.0";
+	if ($have_gettimeofday) {
+		$t = Time::HiRes::gettimeofday();
+	}
+	return $t;
+}
+
+my $listen_handle = "";
+my $sock = "";
+my $parent = $$;
+
+my $initial_data = "";
+
+if ($ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE}) {
+	my ($from, $to) = split(/,/, $ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE});
+	do_vencrypt_viewer_bridge($from, $to);
+	exit 0;
+}
+
+my ($first, $second, $third) = split(/,/, $ENV{PPROXY_PROXY}, 3);
+my ($mode_1st, $mode_2nd, $mode_3rd) = ("", "", "");
+
+($first, $mode_1st) = url_parse($first);
+
+my ($proxy_host, $proxy_port) = ($first, "");
+if ($proxy_host =~ /^(.*):(\d+)$/) {
+	$proxy_host = $1;
+	$proxy_port = $2;
+}
+my $connect = $ENV{PPROXY_DEST};
+
+if ($second ne "") {
+	($second, $mode_2nd) = url_parse($second);
+}
+
+if ($third ne "") {
+	($third, $mode_3rd) = url_parse($third);
+}
+
+
+print STDERR "\n";
+print STDERR "PPROXY v0.4: a tool for Web, SOCKS, and UltraVNC proxies and for\n";
+print STDERR "PPROXY v0.4: IPv6 and VNC VeNCrypt bridging.\n";
+print STDERR "proxy_host:       $proxy_host\n";
+print STDERR "proxy_port:       $proxy_port\n";
+print STDERR "proxy_connect:    $connect\n";
+print STDERR "pproxy_params:    $ENV{PPROXY_PROXY}\n";
+print STDERR "pproxy_listen:    $ENV{PPROXY_LISTEN}\n";
+print STDERR "pproxy_reverse:   $ENV{PPROXY_REVERSE}\n";
+print STDERR "io_socket_inet6:  $have_inet6\n";
+print STDERR "\n";
+if (! $have_inet6) {
+	print STDERR "PPROXY: To enable IPv6 connections, install the IO::Socket::INET6 perl module.\n\n";
+}
+
+if (1) {
+	print STDERR "pproxy 1st: $first\t- $mode_1st\n";
+	print STDERR "pproxy 2nd: $second\t- $mode_2nd\n";
+	print STDERR "pproxy 3rd: $third\t- $mode_3rd\n";
+	print STDERR "\n";
+}
+
+sub pdie {
+	my $msg = shift;
+	kill_proxy_pids();
+	die "$msg";
+}
+
+if ($ENV{PPROXY_REVERSE} ne "") {
+	my ($rhost, $rport) = ($ENV{PPROXY_REVERSE}, "");
+	if ($rhost =~ /^(.*):(\d+)$/) {
+		$rhost = $1;
+		$rport = $2;
+	}
+	$rport = 5900 unless $rport;
+	my $emsg = "";
+	$listen_handle = IO::Socket::INET->new(
+		PeerAddr => $rhost,
+		PeerPort => $rport,
+		Proto => "tcp"
+	);
+	$emsg = $!;
+	if (! $listen_handle && $have_inet6) {
+		eval {$listen_handle = IO::Socket::INET6->new(
+			PeerAddr => $rhost,
+			PeerPort => $rport,
+			Proto => "tcp"
+		);};
+		$emsg .= " / $!";
+	}
+	if (! $listen_handle) {
+		pdie "pproxy: $emsg -- PPROXY_REVERSE\n";
+	}
+	print STDERR "PPROXY_REVERSE: connected to $rhost $rport\n";
+
+} elsif ($ENV{PPROXY_LISTEN} ne "") {
+	my $listen_sock = "";
+	my $maxtry = 12;
+	my $sleep = 5;
+	my $p2 = "";
+	my $emsg = "";
+	for (my $i=0; $i < $maxtry; $i++)  {
+		my ($if, $p) = ("", $ENV{PPROXY_LISTEN});
+		if ($p =~ /^(.*):(\d+)$/) {
+			$if = $1;
+			$p = $2;
+		}
+		$p2 = "*:$p";
+		if ($if eq "") {
+			$if = "localhost";
+		}
+		print STDERR "pproxy interface: $if\n";
+
+		$emsg = "";
+		if (($if eq "INADDR_ANY6" || $if eq "::") && $have_inet6) {
+			eval {$listen_sock = IO::Socket::INET6->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				Domain    => AF_INET6,
+				LocalAddr => "::",
+				LocalPort => $p,
+				Proto     => "tcp"
+			);};
+			$p2 = ":::$p";
+		} elsif ($if =~ /^INADDR_ANY/) {
+			$listen_sock = IO::Socket::INET->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				LocalPort => $p,
+				Proto     => "tcp"
+			);
+		} elsif (($if eq "INADDR_LOOPBACK6" || $if eq "::1") && $have_inet6) {
+			$p2 = "::1:$p";
+			eval {$listen_sock = IO::Socket::INET6->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				Domain    => AF_INET6,
+				LocalAddr => "::1",
+				LocalPort => $p,
+				Proto     => "tcp"
+			);};
+			$p2 = "::1:$p";
+		} else {
+			$p2 = "$if:$p";
+			$listen_sock = IO::Socket::INET->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				LocalAddr => $if,
+				LocalPort => $p,
+				Proto     => "tcp"
+			);
+			$emsg = $!;
+			
+			if (! $listen_sock && $have_inet6) {
+				print STDERR "PPROXY_LISTEN: retry with INET6\n";
+				eval {$listen_sock = IO::Socket::INET6->new(
+					Listen    => 2,
+					ReuseAddr => 1,
+					Domain    => AF_INET6,
+					LocalAddr => $if,
+					LocalPort => $p,
+					Proto     => "tcp"
+				);};
+				$emsg .= " / $!";
+			}
+		}
+		if (! $listen_sock) {
+			if ($i < $maxtry - 1) {
+				warn "pproxy: $emsg $!\n";
+				warn "Could not listen on port $p2, retrying in $sleep seconds... (Ctrl-C to quit)\n";
+				sleep $sleep;
+			}
+		} else {
+			last;
+		}
+	}
+	if (! $listen_sock) {
+		pdie "pproxy: $emsg -- PPROXY_LISTEN\n";
+	}
+	print STDERR "pproxy: listening on $p2\n";
+	my $ip;
+	($listen_handle, $ip) = $listen_sock->accept();
+	my $err = $!;
+	close $listen_sock;
+	if (! $listen_handle) {
+		pdie "pproxy: $err\n";
+	}
+
+	if ($ENV{PPROXY_LOOP_THYSELF_MASTER}) {
+		my $sml = $ENV{SSVNC_MULTIPLE_LISTEN}; 
+		if ($sml ne "" && $sml ne "0") {
+			setpgrp(0, 0);
+			if (fork()) {
+				close $viewer_sock;
+				wait;
+				exit 0;
+			}
+			if (fork()) {
+				close $viewer_sock;
+				exit 0;
+			}
+			setpgrp(0, 0);
+			$parent = $$;
+		}
+	}
+}
+
+$sock = IO::Socket::INET->new(
+	PeerAddr => $proxy_host,
+	PeerPort => $proxy_port,
+	Proto => "tcp"
+);
+
+my $err = "";
+
+if (! $sock && $have_inet6) {
+	$err = $!;
+
+	print STDERR "pproxy: $!\n";
+
+	eval {$sock = IO::Socket::INET6->new(
+		PeerAddr => $proxy_host,
+		PeerPort => $proxy_port,
+		Proto => "tcp"
+	);};
+	$err .= " / $!";
+}
+
+if (! $sock && ($proxy_host =~ /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i || $proxy_host =~ /^::ffff:([\da-f]+:[\da-f]+)$/i)) {
+	print STDERR "pproxy: $!\n";
+	my $ipv4_addr = $1;
+	if ($ipv4_addr =~ /:/) {
+		my ($a, $b) = split(/:/, $ipv4_addr);
+		$a = hex($a);
+		$b = hex($b);
+		$ipv4_addr  = sprintf("%d.", ($a & 0xff00) >> 8);
+		$ipv4_addr .= sprintf("%d.", ($a & 0x00ff));
+		$ipv4_addr .= sprintf("%d.", ($b & 0xff00) >> 8);
+		$ipv4_addr .= sprintf("%d",  ($b & 0x00ff));
+	}
+
+	print STDERR "pproxy: re-trying with ipv4 addr: $ipv4_addr\n";
+
+	eval {$sock = IO::Socket::INET->new(
+		PeerAddr => $ipv4_addr,
+		PeerPort => $proxy_port,
+		Proto => "tcp"
+	);};
+	$err .= " / $!";
+}
+
+if (! $sock) {
+	unlink($0) if $ENV{PPROXY_REMOVE};
+	pdie "pproxy: $err\n";
+}
+
+unlink($0) if $ENV{PPROXY_REMOVE};
+
+if ($ENV{PPROXY_PROXY} =~ /^vencrypt:/ && $ENV{PPROXY_VENCRYPT_REVERSE}) {
+	print STDERR "\nPPROXY: vencrypt+reverse: swapping listen socket with connect socket.\n";
+	my $tmp_swap = $sock;
+	$sock = $listen_handle;
+	$listen_handle = $tmp_swap;
+}
+
+$cur_proxy = $first;
+setmode($mode_1st);
+
+if ($second ne "") {
+	connection($second, 1);
+
+	setmode($mode_2nd);
+	$cur_proxy = $second;
+
+	if ($third ne "") {
+		connection($third, 2);
+		setmode($mode_3rd);
+		$cur_proxy = $third;
+		connection($connect, 3);
+	} else {
+		connection($connect, 2);
+	}
+} else {
+	connection($connect, 1);
+}
+
+sub kill_proxy_pids() {
+	if ($ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE}) {
+		return;
+	}
+	if ($ENV{PPROXY_KILLPID}) {
+		foreach my $p (split(/,/, $ENV{PPROXY_KILLPID})) {
+			if ($p =~ /^(\+|-)/) {
+				$p = $parent + $p;
+			}
+			print STDERR "kill TERM, $p (PPROXY_KILLPID)\n";
+			kill "TERM", $p;
+		}
+	}
+}
+
+sub xfer {
+	my($in, $out) = @_;
+	$RIN = $WIN = $EIN = "";
+	$ROUT = "";
+	vec($RIN, fileno($in), 1) = 1;
+	vec($WIN, fileno($in), 1) = 1;
+	$EIN = $RIN | $WIN;
+
+	while (1) {
+		my $nf = 0;
+		while (! $nf) {
+			$nf = select($ROUT=$RIN, undef, undef, undef);
+		}
+		my $len = sysread($in, $buf, 8192);
+		if (! defined($len)) {
+			next if $! =~ /^Interrupted/;
+			print STDERR "pproxy[$$]: $!\n";
+			last;
+		} elsif ($len == 0) {
+			print STDERR "pproxy[$$]: Input is EOF.\n";
+			last;
+		}
+		my $offset = 0;
+		my $quit = 0;
+		while ($len) {
+			my $written = syswrite($out, $buf, $len, $offset);
+			if (! defined $written) {
+				print STDERR "pproxy[$$]: Output is EOF. $!\n";
+				$quit = 1;
+				last;
+			}
+			$len -= $written;
+			$offset += $written;
+		}
+		last if $quit;
+	}
+	close($out);
+	close($in);
+	print STDERR "pproxy[$$]: finished xfer.\n";
+}
+
+sub handler {
+	print STDERR "pproxy[$$]: got SIGTERM.\n";
+	close $listen_handle if $listen_handle;
+	close $sock if $sock;
+	exit;
+}
+
+sub xfer_both {
+	$child = fork;
+
+	if (! defined $child) {
+		kill_proxy_pids();
+		exit 1;
+	}
+
+	$SIG{TERM} = "handler";
+
+	if ($child) {
+		if ($listen_handle) {
+			print STDERR "pproxy parent[$$]  listen_handle -> socket\n";
+			xfer($listen_handle, $sock);
+		} else {
+			print STDERR "pproxy parent[$$]  STDIN -> socket\n";
+			xfer(STDIN, $sock);
+		}
+		select(undef, undef, undef, 0.25);
+		if (kill 0, $child) {
+			select(undef, undef, undef, 0.9);
+			if (kill 0, $child) {
+				print STDERR "pproxy[$$]: kill TERM child $child\n";
+				kill "TERM", $child;
+			} else {
+				print STDERR "pproxy[$$]: child  $child gone.\n";
+			}
+		}
+	} else {
+		select(undef, undef, undef, 0.05);
+		if ($listen_handle) {
+			print STDERR "pproxy child [$$]  socket -> listen_handle\n";
+			if ($initial_data ne "") {
+				my $len = length $initial_data;
+				print STDERR "pproxy child [$$]  sending initial_data, length $len\n\n";
+				syswrite($listen_handle, $initial_data, $len);
+			} else {
+				print STDERR "\n";
+			}
+			xfer($sock, $listen_handle);
+		} else {
+			print STDERR "pproxy child [$$]  socket -> STDOUT\n";
+			if ($initial_data ne "") {
+				my $len = length $initial_data;
+				print STDERR "pproxy child [$$]  sending initial_data, length $len\n\n";
+				syswrite(STDOUT, $initial_data, $len);
+			} else {
+				print STDERR "\n";
+			}
+			xfer($sock, STDOUT);
+		}
+		select(undef, undef, undef, 0.25);
+		if (kill 0, $parent) {
+			select(undef, undef, undef, 0.8);
+			if (kill 0, $parent) {
+				print STDERR "pproxy[$$]: kill TERM parent $parent\n";
+				kill "TERM", $parent;
+			} else {
+				print STDERR "pproxy[$$]: parent $parent gone.\n";
+			}
+		}
+	}
+
+	kill_proxy_pids();
+}
+
+xfer_both();
+
+exit;
+
+sub fsleep {
+	select(undef, undef, undef, shift);
+}
+
+sub url_parse {
+	my $hostport = shift;
+	my $mode = "http";
+	if ($hostport =~ m,^socks4?://(\S*)$,i) {
+		$mode = "socks4";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^socks5://(\S*)$,i) {
+		$mode = "socks5";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^https?://(\S*)$,i) {
+		$mode = "http";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^ipv6://(\S*)$,i) {
+		$mode = "ipv6";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^repeater://(\S*)\+(\S*)$,i) {
+		# ultravnc repeater proxy.
+		$hostport = $1;
+		$mode = "repeater:$2";
+		if ($hostport !~ /:\d+$/) {
+			$hostport .= ":5900";
+		}
+	} elsif ($hostport =~ m,^vencrypt://(\S*)$,i) {
+		# vencrypt handshake.
+		$hostport = $1;
+		my $m = "connect";
+		if ($hostpost =~ /^(\S+)\+(\S+)$/) {
+			$hostport = $1;
+			$mode = $2;
+		}
+		$mode = "vencrypt:$m";
+		if ($hostport !~ /:\d+$/) {
+			$hostport .= ":5900";
+		}
+	}
+	return ($hostport, $mode);
+}
+
+sub setmode {
+	my $mode = shift;
+	$ENV{PPROXY_REPEATER} = "";
+	$ENV{PPROXY_VENCRYPT} = "";
+	if ($mode =~ /^socks/) {
+		if ($mode =~ /^socks5/) {
+			$ENV{PPROXY_SOCKS} = 5;
+		} else {
+			$ENV{PPROXY_SOCKS} = 1;
+		}
+	} elsif ($mode =~ /^ipv6/i) {
+		$ENV{PPROXY_SOCKS} = 0;
+	} elsif ($mode =~ /^repeater:(.*)/) {
+		$ENV{PPROXY_REPEATER} = $1;
+		$ENV{PPROXY_SOCKS} = "";
+	} elsif ($mode =~ /^vencrypt:(.*)/) {
+		$ENV{PPROXY_VENCRYPT} = $1;
+		$ENV{PPROXY_SOCKS} = "";
+	} else {
+		$ENV{PPROXY_SOCKS} = "";
+	}
+}
+
+sub connection {
+	my ($CONNECT, $w) = @_;
+
+	my $con = "";
+	my $msg = "";
+
+	if ($ENV{PPROXY_SOCKS} eq "5") {
+		# SOCKS5
+		my ($h, $p) = ($CONNECT, "");
+		if ($h =~ /^(.*):(\d+)$/) {
+			$h = $1;
+			$p = $2;
+		}
+		$con .= pack("C", 0x05);
+		$con .= pack("C", 0x01);
+		$con .= pack("C", 0x00);
+
+		$msg = "SOCKS5 via $cur_proxy to $h:$p\n\n";
+		print STDERR "proxy_request$w: $msg";
+
+		syswrite($sock, $con, length($con));
+
+		my ($n1, $n2, $n3, $n4, $n5, $n6);
+		my ($r1, $r2, $r3, $r4, $r5, $r6);
+		my ($s1, $s2, $s3, $s4, $s5, $s6);
+
+		$n1 = sysread($sock, $r1, 1);
+		$n2 = sysread($sock, $r2, 1);
+
+		$s1 = unpack("C", $r1);
+		$s2 = unpack("C", $r2);
+		if ($s1 != 0x05 || $s2 != 0x00) {
+			print STDERR "SOCKS5 fail s1=$s1 s2=$s2 n1=$n1 n2=$n2\n";
+			close $sock;
+			exit(1);
+		}
+
+		$con = "";
+		$con .= pack("C", 0x05);
+		$con .= pack("C", 0x01);
+		$con .= pack("C", 0x00);
+		$con .= pack("C", 0x03);
+		$con .= pack("C", length($h));
+		$con .= $h;
+		$con .= pack("C", $p >> 8);
+		$con .= pack("C", $p & 0xff);
+
+		syswrite($sock, $con, length($con));
+
+		$n1 = sysread($sock, $r1, 1);
+		$n2 = sysread($sock, $r2, 1);
+		$n3 = sysread($sock, $r3, 1);
+		$n4 = sysread($sock, $r4, 1);
+		$s1 = unpack("C", $r1);
+		$s2 = unpack("C", $r2);
+		$s3 = unpack("C", $r3);
+		$s4 = unpack("C", $r4);
+
+		if ($s4 == 0x1) {
+			sysread($sock, $r5, 4 + 2);
+		} elsif ($s4 == 0x3) {
+			sysread($sock, $r5, 1);
+			$s5 = unpack("C", $r5);
+			sysread($sock, $r6, $s5 + 2);
+		} elsif ($s4 == 0x4) {
+			sysread($sock, $r5, 16 + 2);
+		}
+
+		if ($s1 != 0x5 || $s2 != 0x0 || $s3 != 0x0) {
+			print STDERR "SOCKS5 failed: s1=$s1 s2=$s2 s3=$s3 s4=$s4 n1=$n1 n2=$n2 n3=$n3 n4=$n4\n";
+			close $sock;
+			exit(1);
+		}
+
+	} elsif ($ENV{PPROXY_SOCKS} eq "1") {
+		# SOCKS4 SOCKS4a
+		my ($h, $p) = ($CONNECT, "");
+		if ($h =~ /^(.*):(\d+)$/) {
+			$h = $1;
+			$p = $2;
+		}
+		$con .= pack("C", 0x04);
+		$con .= pack("C", 0x01);
+		$con .= pack("n", $p);
+
+		my $SOCKS_4a = 0;
+		if ($h eq "localhost" || $h eq "127.0.0.1") {
+			$con .= pack("C", 127);
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 1);
+		} elsif ($h =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
+			$con .= pack("C", $1);
+			$con .= pack("C", $2);
+			$con .= pack("C", $3);
+			$con .= pack("C", $4);
+		} else {
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 3);
+			$SOCKS_4a = 1;
+		}
+
+		$con .= "nobody";
+		$con .= pack("C", 0);
+
+		$msg = "SOCKS4 via $cur_proxy to $h:$p\n\n";
+		if ($SOCKS_4a) {
+			$con .= $h;
+			$con .= pack("C", 0);
+			$msg =~ s/SOCKS4/SOCKS4a/;
+		}
+		print STDERR "proxy_request$w: $msg";
+		syswrite($sock, $con, length($con));
+
+		my $ok = 1;
+		for (my $i = 0; $i < 8; $i++) {
+			my $c;
+			sysread($sock, $c, 1);
+			my $s = unpack("C", $c);
+			if ($i == 0) {
+				$ok = 0 if $s != 0x0;
+			} elsif ($i == 1) {
+				$ok = 0 if $s != 0x5a;
+			}
+		}
+		if (! $ok) {
+			print STDERR "SOCKS4 failed.\n";
+			close $sock;
+			exit(1);
+		}
+	} elsif ($ENV{PPROXY_SOCKS} eq "0") {
+		# hack for ipv6 "proxy", nothing to do, assume INET6 call worked.
+		;
+	} elsif ($ENV{PPROXY_REPEATER} ne "") {
+		my $rep = $ENV{PPROXY_REPEATER};
+		print STDERR "repeater: $rep\n";
+		$rep .= pack("x") x 250;
+		syswrite($sock, $rep, 250);
+
+		my $rfb = "";
+
+		my $ok = 1;
+		for (my $i = 0; $i < 12; $i++) {
+			my $c;
+			last if $ENV{PPROXY_GENERIC_REPEATER};
+			sysread($sock, $c, 1);
+			print STDERR $c;
+			$rfb .= $c;
+		}
+		if ($rfb ne "" && $rfb !~ /^RFB 000\.000/) {
+			$initial_data = $rfb;
+			$rfb =~ s/\n//g;
+			print STDERR "detected non-UltraVNC repeater; forwarding \"$rfb\"\nlength: ", length($initial_data), "\n";
+		}
+	} elsif ($ENV{PPROXY_VENCRYPT} ne "") {
+		my $vencrypt = $ENV{PPROXY_VENCRYPT};
+		vencrypt_dialog($vencrypt);
+
+	} else {
+		# Web Proxy:
+		$con = "CONNECT $CONNECT HTTP/1.1\r\n";
+		$con   .= "Host: $CONNECT\r\n";
+		$con   .= "Connection: close\r\n\r\n";
+		$msg = $con;
+
+		print STDERR "proxy_request$w: via $cur_proxy:\n$msg";
+		syswrite($sock, $con, length($con));
+
+		my $rep = "";
+		my $n = 0;
+		while ($rep !~ /\r\n\r\n/ && $n < 30000) {
+			my $c;
+			sysread($sock, $c, 1);
+			print STDERR $c;
+			$rep .= $c;
+			$n++;
+		}
+		if ($rep !~ m,HTTP/.* 200,) {
+			print STDERR "HTTP CONNECT failed.\n";
+			close $sock;
+			exit(1);
+		}
+	}
+}
+
+sub vdie {
+	append_handshake("done\n");
+	close $sock;
+	kill_proxy_pids();
+	exit(1);
+}
+
+sub anontls_handshake {
+	my ($vmode, $db) = @_;
+
+	print STDERR "\nPPROXY: Doing ANONTLS Handshake\n";
+
+	my $psec = pack("C", $rfbSecTypeAnonTls);
+	syswrite($sock, $psec, 1);
+
+	append_handshake("done\n");
+}
+
+sub vencrypt_handshake {
+	
+	my ($vmode, $db) = @_;
+
+	print STDERR "\nPPROXY: Doing VeNCrypt Handshake\n";
+
+	my $psec = pack("C", $rfbSecTypeVencrypt);
+
+	if (exists $ENV{SSVNC_TEST_SEC_TYPE}) {
+		my $fake = $ENV{SSVNC_TEST_SEC_TYPE};
+		print STDERR "PPROXY: sending sec-type: $fake\n";
+		$psec = pack("C", $fake);
+	}
+
+	syswrite($sock, $psec, 1);
+
+	my $vmajor;
+	my $vminor;
+	sysread($sock, $vmajor, 1);
+	sysread($sock, $vminor, 1);
+
+	vdie if $vmajor eq "" || $vminor eq "";
+
+	$vmajor = unpack("C", $vmajor);
+	$vminor = unpack("C", $vminor);
+	print STDERR "server vencrypt version $vmajor.$vminor\n" if $db;
+
+	if (exists $ENV{SSVNC_TEST_SEC_TYPE}) {
+		print STDERR "PPROXY: continuing on in test mode.\n";
+	} else {
+		vdie if $vmajor ne 0;
+		vdie if $vminor < 2;
+	}
+
+	$vmajor = pack("C", 0);
+	$vminor = pack("C", 2);
+	append_handshake("subversion=0.2\n");
+
+	syswrite($sock, $vmajor, 1);
+	syswrite($sock, $vminor, 1);
+
+	my $result;
+	sysread($sock, $result, 1);
+	print STDERR "result empty\n" if $db && $result eq "";
+
+	vdie if $result eq "";
+	$result = unpack("C", $result);
+	print STDERR "result=$result\n" if $db;
+
+	vdie if $result ne 0;
+
+	my $nsubtypes;
+	sysread($sock, $nsubtypes, 1);
+
+	vdie if $nsubtypes eq "";
+	$nsubtypes = unpack("C", $nsubtypes);
+	print STDERR "nsubtypes=$nsubtypes\n" if $db;
+
+	my %subtypes;
+
+	for (my $i = 0; $i < $nsubtypes; $i++) {
+		my $subtype = ""; 
+		sysread($sock, $subtype, 4);
+		vdie if length($subtype) != 4;
+
+		# XXX fix 64bit.
+		$subtype = unpack("N", $subtype);
+		print STDERR "subtype: $subtype\n" if $db;
+		$subtypes{$subtype} = 1;
+		append_handshake("sst$i=$subtype\n");
+	}
+
+	my $subtype = 0;
+	if (exists $subtypes{$rfbVencryptX509None})  {
+		$subtype = $rfbVencryptX509None;
+		print STDERR "selected rfbVencryptX509None\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptX509Vnc})  {
+		$subtype = $rfbVencryptX509Vnc;
+		print STDERR "selected rfbVencryptX509Vnc\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptX509Plain})  {
+		$subtype = $rfbVencryptX509Plain;
+		print STDERR "selected rfbVencryptX509Plain\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsNone})  {
+		$subtype = $rfbVencryptTlsNone;
+		print STDERR "selected rfbVencryptTlsNone\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsVnc})  {
+		$subtype = $rfbVencryptTlsVnc;
+		print STDERR "selected rfbVencryptTlsVnc\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsPlain})  {
+		$subtype = $rfbVencryptTlsPlain;
+		print STDERR "selected rfbVencryptTlsPlain\n" if $db;
+	}
+
+	if (exists $ENV{SSVNC_TEST_SEC_SUBTYPE}) {
+		my $fake = $ENV{SSVNC_TEST_SEC_SUBTYPE};
+		print STDERR "PPROXY: sending sec-subtype: $fake\n";
+		$subtype = $fake;
+	}
+
+	append_handshake("subtype=$subtype\n");
+
+	my $pst = pack("N", $subtype);
+	syswrite($sock, $pst, 4); 
+
+	if (exists $ENV{SSVNC_TEST_SEC_SUBTYPE}) {
+		print STDERR "PPROXY: continuing on in test mode.\n";
+	} else {
+		vdie if $subtype == 0;
+	}
+
+	my $ok;
+	sysread($sock, $ok, 1);
+	$ok = unpack("C", $ok);
+	print STDERR "ok=$ok\n" if $db;
+
+	append_handshake("done\n");
+
+	vdie if $ok == 0;
+}
+
+sub vencrypt_dialog {
+	my $vmode = shift;
+	my $db = 0;
+
+	$db = 1 if exists $ENV{SS_DEBUG};
+	$db = 1 if exists $ENV{SSVNC_VENCRYPT_DEBUG};
+
+	append_handshake("mode=$vmode\n");
+
+	my $server_rfb = "";
+	#syswrite($sock, $rep, 250);
+	for (my $i = 0; $i < 12; $i++) {
+		my $c;
+		sysread($sock, $c, 1);
+		$server_rfb .= $c;
+		print STDERR $c;
+	}
+	print STDERR "server_rfb: $server_rfb\n" if $db;
+	append_handshake("server=$server_rfb");
+
+	my $minor = "";
+	if ($server_rfb =~ /^RFB 003\.(\d+)/) {
+		$minor = $1;
+	} else {
+		vdie;
+	}
+	my $viewer_rfb = "RFB 003.008\n";
+	if ($minor < 7) {
+		vdie;
+	} elsif ($minor == 7) {
+		$viewer_rfb = "RFB 003.007\n";
+	}
+	my $nsec;
+	my $t1 = gettime();
+	my $t0 = gettime();
+
+	syswrite($sock, $viewer_rfb, 12);
+	sysread($sock, $nsec, 1);
+
+	$t1 = gettime();
+	$t1 = sprintf("%.6f", $t1 - $t0);
+
+	append_handshake("viewer=$viewer_rfb");
+	append_handshake("latency=$t1\n");
+
+	vdie if $nsec eq "";
+
+	$nsec = unpack("C", $nsec);
+
+	print STDERR "nsec: $nsec\n" if $db;
+	vdie if $nsec eq 0 || $nsec > 100;
+
+	my %sectypes = ();
+
+	for (my $i = 0; $i < $nsec; $i++) {
+		my $sec;
+		sysread($sock, $sec, 1);
+		vdie if $sec eq "";
+		$sec = unpack("C", $sec);
+		print STDERR "sec: $sec\n" if $db;
+		$sectypes{$sec} = 1;
+	}
+	
+	if (exists $sectypes{$rfbSecTypeVencrypt}) {
+		print STDERR "found rfbSecTypeVencrypt\n" if $db;
+		append_handshake("sectype=$rfbSecTypeVencrypt\n");
+		vencrypt_handshake($vmode, $db);
+	} elsif (exists $sectypes{$rfbSecTypeAnonTls}) {
+		print STDERR "found rfbSecTypeAnonTls\n" if $db;
+		append_handshake("sectype=$rfbSecTypeAnonTls\n");
+		anontls_handshake($vmode, $db);
+	} else {
+		print STDERR "No supported sec-type found\n" if $db;
+		vdie;
+	}
+}
+
+sub append_handshake {
+	my $str = shift;
+	if ($handshake_file) {
+		if (open(HSF, ">>$handshake_file")) {
+			print HSF $str;
+			close HSF;
+		}
+	}
+}
+
+sub do_vencrypt_viewer_bridge {
+	my ($listen, $connect) = @_;
+	print STDERR "\npproxy: starting vencrypt_viewer_bridge[$$]: $listen \-> $connect\n";
+	my $db = 0;
+	my $backwards = 0;
+	if ($listen < 0) {
+		$backwards = 1;
+		$listen = -$listen;
+	}
+	if ($handshake_file eq "") {
+		die "pproxy: vencrypt_viewer_bridge[$$]: no SSVNC_PREDIGESTED_HANDSHAKE\n";
+	}
+	my $listen_sock;
+	my $maxtry = 12;
+	my $sleep = 5;
+	for (my $i=0; $i < $maxtry; $i++)  {
+		$listen_sock = IO::Socket::INET->new(
+			Listen    => 2,
+			ReuseAddr => 1,
+			LocalAddr => "127.0.0.1",
+			LocalPort => $listen,
+			Proto     => "tcp"
+		);
+		if (! $listen_sock) {
+			if ($i < $maxtry - 1) {
+				warn "pproxy: vencrypt_viewer_bridge[$$]: $!\n";
+				warn "Could not listen on port $listen, retrying in $sleep seconds... (Ctrl-C to quit)\n";
+				sleep $sleep;
+			}
+		} else {
+			last;
+		}
+	}
+	if (! $listen_sock) {
+		die "pproxy: vencrypt_viewer_bridge[$$]: $!\n";
+	}
+	print STDERR "pproxy: vencrypt_viewer_bridge[$$]: listening on port $listen\n\n";
+	my ($viewer_sock, $ip) = $listen_sock->accept();
+	my $err = $!;
+	close $listen_sock;
+	if (! $viewer_sock) {
+		die "pproxy: vencrypt_viewer_bridge[$$]: $err\n";
+	}
+	if ($ENV{PPROXY_LOOP_THYSELF_MASTER}) {
+		my $sml = $ENV{SSVNC_MULTIPLE_LISTEN}; 
+		if ($sml ne "" && $sml ne "0") {
+			setpgrp(0, 0);
+			if (fork()) {
+				close $viewer_sock;
+				wait;
+				exit 0;
+			}
+			if (fork()) {
+				close $viewer_sock;
+				exit 0;
+			}
+			setpgrp(0, 0);
+			$parent = $$;
+		}
+	}
+	print STDERR "vencrypt_viewer_bridge[$$]: viewer_sock $viewer_sock\n" if $db;
+
+	print STDERR "pproxy: vencrypt_viewer_bridge[$$]: connecting to 127.0.0.1:$connect\n";
+	my $server_sock = IO::Socket::INET->new(
+		PeerAddr => "127.0.0.1",
+		PeerPort => $connect,
+		Proto => "tcp"
+	);
+	print STDERR "vencrypt_viewer_bridge[$$]: server_sock $server_sock\n" if $db;
+	if (! $server_sock) {
+		my $err = $!;
+		die "pproxy: vencrypt_viewer_bridge[$$]: $err\n";
+	}
+
+	if ($backwards) {
+		print STDERR "vencrypt_viewer_bridge[$$]: reversing roles of viewer and server.\n";
+		my $t = $viewer_sock;
+		$viewer_sock = $server_sock;
+		$server_sock = $t;
+	}
+
+	my %hs = ();
+	my $dt = 0.2;
+	my $slept = 0.0;
+	while ($slept < 20.0) {
+		select(undef, undef, undef, $dt);
+		$slept += $dt;
+		if (-f $handshake_file && open(HSF, "<$handshake_file")) {
+			my $done = 0;
+			%hs = ();
+			my $str = "";
+			while (<HSF>) {
+				print STDERR "vencrypt_viewer_bridge[$$]: $_" if $ENV{VENCRYPT_VIEWER_BRIDGE_DEBUG};
+				$str .= "vencrypt_viewer_bridge[$$]: $_";
+				chomp;
+				if ($_ eq "done") {
+					$done = 1;
+				} else {
+					my ($k, $v) = split(/=/, $_, 2);
+					if ($k ne "" && $v ne "") {
+						$hs{$k} = $v;
+					}
+				}
+			}
+			close HSF;
+			if ($done) {
+				print STDERR "\n" . $str;
+				last;
+			}
+		}
+	}
+	if (! exists $hs{server}) {
+		$hs{server} = "RFB 003.008";
+	}
+	if (! exists $hs{sectype}) {
+		unlink($handshake_file);
+		die "pproxy: vencrypt_viewer_bridge[$$]: no sectype.\n";
+	}
+	syswrite($viewer_sock, "$hs{server}\n", length($hs{server}) + 1);
+	my $viewer_rfb = "";
+	for (my $i = 0; $i < 12; $i++) {
+		my $c;
+		sysread($viewer_sock, $c, 1);
+		$viewer_rfb .= $c;
+		print STDERR $c;
+	}
+	my $viewer_major = 3;
+	my $viewer_minor = 8;
+	if ($viewer_rfb =~ /RFB (\d+)\.(\d+)/) {
+		$viewer_major = $1;	
+		$viewer_minor = $2;	
+	}
+	my $u0 = pack("C", 0);
+	my $u1 = pack("C", 1);
+	my $u2 = pack("C", 2);
+	if ($hs{sectype} == $rfbSecTypeAnonTls) {
+		unlink($handshake_file);
+		print STDERR "\npproxy: vencrypt_viewer_bridge[$$]: rfbSecTypeAnonTls\n";
+		if ($viewer_major > 3 || $viewer_minor >= 7) {
+			;	# setup ok, proceed to xfer.
+		} else {
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: faking RFB version 3.3 to viewer.\n";
+			my $n;
+			sysread($server_sock, $n, 1);
+			$n = unpack("C", $n);
+			if ($n == 0) {
+				die "pproxy: vencrypt_viewer_bridge[$$]: nsectypes == $n.\n";
+			}
+			my %types;
+			for (my $i = 0; $i < $n; $i++) {
+				my $t;
+				sysread($server_sock, $t, 1);
+				$t = unpack("C", $t);
+				$types{$t} = 1;
+			}
+			my $use = 1;	# None
+			if (exists $types{1}) {
+				$use = 1;	# None
+			} elsif (exists $types{2}) {
+				$use = 2;	# VncAuth
+			} else {
+				die "pproxy: vencrypt_viewer_bridge[$$]: no valid sectypes" . join(",", keys %types) . "\n";
+			}
+				
+			# send 4 bytes sectype to viewer: 
+			# (note this should be MSB, network byte order...)
+			my $up = pack("C", $use);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $up, 1);
+			# and tell server the one we selected:
+			syswrite($server_sock, $up, 1);
+			if ($use == 1) {
+				# even None has security result, so read it here and discard it.
+				my $sr = "";
+				sysread($server_sock, $sr, 4);
+			}
+		}
+	} elsif ($hs{sectype} == $rfbSecTypeVencrypt) {
+		print STDERR "\npproxy: vencrypt_viewer_bridge[$$]: rfbSecTypeVencrypt\n";
+		if (! exists $hs{subtype}) {
+			unlink($handshake_file);
+			die "pproxy: vencrypt_viewer_bridge[$$]: no subtype.\n";
+		}
+		my $fake_type = "None";
+		my $plain = 0;
+		my $sub_type = $hs{subtype};
+		if ($sub_type == $rfbVencryptTlsNone) {
+			$fake_type = "None";
+		} elsif ($sub_type == $rfbVencryptTlsVnc) {
+			$fake_type = "VncAuth";
+		} elsif ($sub_type == $rfbVencryptTlsPlain) {
+			$fake_type = "None";
+			$plain = 1;
+		} elsif ($sub_type == $rfbVencryptX509None) {
+			$fake_type = "None";
+		} elsif ($sub_type == $rfbVencryptX509Vnc) {
+			$fake_type = "VncAuth";
+		} elsif ($sub_type == $rfbVencryptX509Plain) {
+			$fake_type = "None";
+			$plain = 1;
+		}
+		if ($plain) {
+			if (!open(W, ">$handshake_file")) {
+				unlink($handshake_file);
+				die "pproxy: vencrypt_viewer_bridge[$$]: $handshake_file $!\n";
+			}
+			print W <<"END";
+
+			proc print_out {} {
+				global user pass env
+
+				if [info exists env(SSVNC_UP_DEBUG)] {
+					toplevel .b
+					button .b.b -text "user=\$user pass=\$pass" -command {destroy .b}
+					pack .b.b
+					update
+					tkwait window .b
+				}
+				
+				if [info exists env(SSVNC_UP_FILE)] {
+					set fh "" 
+					catch {set fh [open \$env(SSVNC_UP_FILE) w]}
+					if {\$fh != ""} {
+						puts \$fh user=\$user\\npass=\$pass
+						flush \$fh
+						close \$fh
+						return
+					}
+				}
+				puts stdout user=\$user\\npass=\$pass
+				flush stdout
+			}
+
+			proc center_win {w} {
+				update
+				set W [winfo screenwidth  \$w]
+				set W [expr \$W + 1]
+				wm geometry \$w +\$W+0
+				update
+				set x [expr [winfo screenwidth  \$w]/2 - [winfo width  \$w]/2]
+				set y [expr [winfo screenheight \$w]/2 - [winfo height \$w]/2]
+
+				wm geometry \$w +\$x+\$y
+				wm deiconify \$w
+				update
+			}
+
+			wm withdraw .
+
+			global env
+			set up {}
+			if [info exists env(SSVNC_UNIXPW)] {
+				set rm 0
+				set up \$env(SSVNC_UNIXPW)
+				if [regexp {^rm:} \$up]  {
+					set rm 1
+					regsub {^rm:} \$up {} up
+				}
+				if [file exists \$up] {
+					set fh ""
+					set f \$up
+					catch {set fh [open \$up r]}
+					if {\$fh != ""} {
+						gets \$fh u	
+						gets \$fh p	
+						close \$fh
+						set up "\$u@\$p"
+					}
+					if {\$rm} {
+						catch {file delete \$f}
+					}
+				}
+			} elseif [info exists env(SSVNC_VENCRYPT_USERPASS)] {
+				set up \$env(SSVNC_VENCRYPT_USERPASS)
+			}
+			#puts stderr up=\$up
+			if {\$up != ""} {
+				if [regexp {@} \$up] {
+					global user pass
+					set user \$up
+					set pass \$up
+					regsub {@.*\$}  \$user "" user
+					regsub {^[^@]*@} \$pass "" pass
+					print_out
+					exit
+				}
+			}
+
+			wm title . {VeNCrypt Viewer Bridge User/Pass}
+
+			set user {}
+			set pass {}
+
+			label .l -text {SSVNC VeNCrypt Viewer Bridge}
+
+			frame .f0
+			frame .f0.fL
+			label .f0.fL.la -text {Username: }
+			label .f0.fL.lb -text {Password: }
+
+			pack .f0.fL.la .f0.fL.lb -side top
+
+			frame .f0.fR
+			entry .f0.fR.ea -width 24 -textvariable user
+			entry .f0.fR.eb -width 24 -textvariable pass -show *
+
+			pack .f0.fR.ea .f0.fR.eb -side top -fill x
+
+			pack .f0.fL -side left
+			pack .f0.fR -side right -expand 1 -fill x
+
+			button .no -text Cancel -command {destroy .}
+			button .ok -text Done   -command {print_out; destroy .}
+
+			center_win .
+			pack .l .f0 .no .ok -side top -fill x
+			update
+			wm deiconify .
+
+			bind .f0.fR.ea <Return> {focus .f0.fR.eb}
+			bind .f0.fR.eb <Return> {print_out; destroy .}
+			focus .f0.fR.ea
+
+			wm resizable . 1 0
+			wm minsize . [winfo reqwidth .] [winfo reqheight .]
+END
+			close W;
+
+			#system("cat $handshake_file");
+			my $w = "wish";
+			if ($ENV{WISH}) {
+				$w = $ENV{WISH};	
+			}
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: prompt  VencryptPlain user and passwd.\n";
+			my $res = "";
+			if (`uname` =~ /Darwin/) {
+				my $mtmp = `mktemp /tmp/hsup.XXXXXX`;
+				chomp $mtmp;
+				system("env SSVNC_UP_FILE=$mtmp $w $handshake_file");
+				$res = `cat $mtmp`;
+				unlink $mtmp;
+			} else {
+				$res = `$w $handshake_file`;
+			}
+			my $user = "";
+			my $pass = "";
+			if ($res =~ /user=(\S*)/) {
+				$user = $1;
+			}
+			if ($res =~ /pass=(\S*)/) {
+				$pass = $1;
+			}
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: sending VencryptPlain user and passwd.\n";
+			my $ulen = pack("C", length($user));
+			my $plen = pack("C", length($pass));
+			# (note this should be MSB, network byte order...)
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $ulen, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $plen, 1);
+			syswrite($server_sock, $user, length($user));
+			syswrite($server_sock, $pass, length($pass));
+		}
+		unlink($handshake_file);
+
+		my $ft = 0;
+		if ($fake_type eq "None") {
+			$ft = 1;
+		} elsif ($fake_type eq "VncAuth") {
+			$ft = 2;
+		} else {
+			die "pproxy: vencrypt_viewer_bridge[$$]: unknown fake type: $fake_type\n";
+		}
+		my $fp = pack("C", $ft);
+		if ($viewer_major > 3 || $viewer_minor >= 7) {
+			syswrite($viewer_sock, $u1, 1);
+			syswrite($viewer_sock, $fp, 1);
+			my $cr;
+			sysread($viewer_sock, $cr, 1);
+			$cr = unpack("C", $cr);
+			if ($cr != $ft) {
+				die "pproxy: vencrypt_viewer_bridge[$$]: client selected wrong type: $cr / $ft\n";
+			}
+		} else {
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: faking RFB version 3.3 to viewer.\n";
+			# send 4 bytes sect type to viewer: 
+			# (note this should be MSB, network byte order...)
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $fp, 1);
+			if ($ft == 1) {
+				# even None has security result, so read it here and discard it.
+				my $sr = "";
+				sysread($server_sock, $sr, 4);
+			}
+		}
+	}
+
+	$listen_handle = $viewer_sock;
+	$sock = $server_sock;
+
+	xfer_both();
+}
+'
+	# '
+	# xpg_echo will expand \n \r, etc.
+	# try to unset and then test for it.
+	if type shopt > /dev/null 2>&1; then
+		shopt -u xpg_echo >/dev/null 2>&1
+	fi
+	v='print STDOUT "abc\n";'
+	echo "$v" > $tf
+	chmod 700 $tf
+
+	lc=`wc -l $tf | awk '{print $1}'`
+	if [ "X$lc" = "X1" ]; then
+		echo "$cod" > $tf
+	else
+		printf "%s" "$cod" > $tf
+		echo "" >> $tf
+	fi
+	# prime perl
+	perl -e 'use IO::Socket::INET; select(undef, undef, undef, 0.01)' >/dev/null 2>&1
+}
+
+# make_tcert is no longer invoked via the ssvnc gui (Listen mode).
+# make_tcert is for testing only now via -mycert BUILTIN
+make_tcert() {
+	tcert="/tmp/ss_vnc_viewer_tcert${RANDOM}.$$"
+	tcert=`mytmp "$tcert"`
+	cat > $tcert <<END
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAvkfXxb0wcxgrjV2ziFikjII+ze8iKcTBt47L0GM/c21efelN
++zZpJUUXLu4zz8Ryq8Q+sQgfNy7uTOpN9bUUaOk1TnD7gaDQnQWiNHmqbW2kL+DS
+OKngJVPo9dETAS8hf7+D1e1DBZxjTc1a4RQqWJixwpYj99ixWzu8VC2m/xXsjvOs
+jp4+DLBB490nbkwvstmhmiWm1CmI5O5xOkgioVNQqHvQMdVKOSz9PpbjvZiRX1Uo
+qoMrk+2NOqwP90TB35yPASXb9zXKpO7DLhkube+yYGf+yk46aD707L07Eb7cosFP
+S84vNZ9gX7rQ0UOwm5rYA/oZTBskgaqhtIzkLwIDAQABAoIBAD4ot/sXt5kRn0Ca
+CIkU9AQWlC+v28grR2EQW9JiaZrqcoDNUzUqbCTJsi4ZkIFh2lf0TsqELbZYNW6Y
+6AjJM7al4E0UqYSKJTv2WCuuRxdiRs2BMwthqyBmjeanev7bB6V0ybt7u3Y8xU/o
+MrTuYnr4vrEjXPKdLirwk7AoDbKsRXHSIiHEIBOq1+dUQ32t36ukdnnza4wKDLZc
+PKHiCdCk/wOGhuDlxD6RspqUAlRnJ8/aEhrgWxadFXw1hRhRsf/v1shtB0T3DmTe
+Jchjwyiw9mryb9JZAcKxW+fUc4EVvj6VdQGqYInQJY5Yxm5JAlVQUJicuuJEvn6A
+rj5osQECgYEA552CaHpUiFlB4HGkjaH00kL+f0+gRF4PANCPk6X3UPDVYzKnzmuu
+yDvIdEETGFWBwoztUrOOKqVvPEQ+kBa2+DWWYaERZLtg2cI5byfDJxQ3ldzilS3J
+1S3WgCojqcsG/hlxoQJ1dZFanUy/QhUZ0B+wlC+Zp1Q8AyuGQvhHp68CgYEA0lBI
+eqq2GGCdJuNHMPFbi8Q0BnX55LW5C1hWjhuYiEkb3hOaIJuJrqvayBlhcQa2cGqp
+uP34e9UCfoeLgmoCQ0b4KpL2NGov/mL4i8bMgog4hcoYuIi3qxN18vVR14VKEh4U
+RLk0igAYPU+IK2QByaQlBo9OSaKkcfm7U1/pK4ECgYAxr6VpGk0GDvfF2Tsusv6d
+GIgV8ZP09qSLTTJvvxvF/lQYeqZq7sjI5aJD5i3de4JhpO/IXQJzfZfWOuGc8XKA
+3qYK/Y2IqXXGYRcHFGWV/Y1LFd55mCADHlk0l1WdOBOg8P5iRu/Br9PbiLpCx9oI
+vrOXpnp03eod1/luZmqguwKBgQCWFRSj9Q7ddpSvG6HCG3ro0qsNsUMTI1tZ7UBX
+SPogx4tLf1GN03D9ZUZLZVFUByZKMtPLX/Hi7K9K/A9ikaPrvsl6GEX6QYzeTGJx
+3Pw0amFrmDzr8ySewNR6/PXahxPEuhJcuI31rPufRRI3ZLah3rFNbRbBFX+klkJH
+zTnoAQKBgDbUK/aQFGduSy7WUT7LlM3UlGxJ2sA90TQh4JRQwzur0ACN5GdYZkqM
+YBts4sBJVwwJoxD9OpbvKu3uKCt41BSj0/KyoBzjT44S2io2tj1syujtlVUsyyBy
+/ca0A7WBB8lD1D7QMIhYUm2O9kYtSCLlUTHt5leqGaRG38DqlX36
+-----END RSA PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDzDCCArQCCQDSzxzxqhyqLzANBgkqhkiG9w0BAQQFADCBpzELMAkGA1UEBhMC
+VVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNVBAcTBkJvc3RvbjETMBEG
+A1UEChMKTXkgQ29tcGFueTEcMBoGA1UECxMTUHJvZHVjdCBEZXZlbG9wbWVudDEZ
+MBcGA1UEAxMQd3d3Lm5vd2hlcmUubm9uZTEhMB8GCSqGSIb3DQEJARYSYWRtaW5A
+bm93aGVyZS5ub25lMB4XDTA3MDMyMzE4MDc0NVoXDTI2MDUyMjE4MDc0NVowgacx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYDVQQHEwZC
+b3N0b24xEzARBgNVBAoTCk15IENvbXBhbnkxHDAaBgNVBAsTE1Byb2R1Y3QgRGV2
+ZWxvcG1lbnQxGTAXBgNVBAMTEHd3dy5ub3doZXJlLm5vbmUxITAfBgkqhkiG9w0B
+CQEWEmFkbWluQG5vd2hlcmUubm9uZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAL5H18W9MHMYK41ds4hYpIyCPs3vIinEwbeOy9BjP3NtXn3pTfs2aSVF
+Fy7uM8/EcqvEPrEIHzcu7kzqTfW1FGjpNU5w+4Gg0J0FojR5qm1tpC/g0jip4CVT
+6PXREwEvIX+/g9XtQwWcY03NWuEUKliYscKWI/fYsVs7vFQtpv8V7I7zrI6ePgyw
+QePdJ25ML7LZoZolptQpiOTucTpIIqFTUKh70DHVSjks/T6W472YkV9VKKqDK5Pt
+jTqsD/dEwd+cjwEl2/c1yqTuwy4ZLm3vsmBn/spOOmg+9Oy9OxG+3KLBT0vOLzWf
+YF+60NFDsJua2AP6GUwbJIGqobSM5C8CAwEAATANBgkqhkiG9w0BAQQFAAOCAQEA
+vGomHEp6TVU83X2EBUgnbOhzKJ9u3fOI/Uf5L7p//Vxqow7OR1cguzh/YEzmXOIL
+ilMVnzX9nj/bvcLAuqEP7MR1A8f4+E807p/L/Sf49BiCcwQq5I966sGKYXjkve+T
+2GTBNwMSq+5kLSf6QY8VZI+qnrAudEQMeJByQhTZZ0dH8Njeq8EGl9KUio+VWaiW
+CQK6xJuAvAHqa06OjLmwu1fYD4GLGSrOIiRVkSXV8qLIUmzxdJaIRznkFWsrCEKR
+wAH966SAOvd2s6yOHMvyDRIL7WHxfESB6rDHsdIW/yny1fBePjv473KrxyXtbz7I
+dMw1yW09l+eEo4A7GzwOdw==
+-----END CERTIFICATE-----
+END
+	chmod 600 $tcert
+	echo "$tcert"
+}
+
+Kecho() {
+	NO_KECHO=1
+	if [ "X$USER" = "Xrunge" -a "X$NO_KECHO" = "X" ]; then
+		echo "dbg: $*"
+	fi
+}
+
+NHAFL_warning() {
+	echo "" 
+	echo "** Warning: For the proxy: $proxy" 
+	echo "** Warning: the ssh(1) option: $ssh_NHAFL" 
+	echo "** Warning: will be used to avoid frequent 'ssh key has changed for localhost'"
+	echo "** Warning: dialogs and connection failures (for example, ssh will exit asking"
+	echo "** Warning: you to manually remove a key from ~/.ssh/known_hosts.)"
+	echo "** Warning: "
+	echo "** Warning: This decreases security: a Man-In-The-Middle attack is possible."
+	echo "** Warning: For chained ssh connections the first ssh leg is secure but the"
+	echo "** Warning: 2nd ssh leg is vulnerable.  For an ssh connection going through"
+	echo "** Warning: a HTTP or SOCKS proxy the ssh connection is vulnerable."
+	echo "** Warning: "
+	echo "** Warning: You can set the SSVNC_SSH_LOCALHOST_AUTH=1 env. var. to disable" 
+	echo "** Warning: using the NoHostAuthenticationForLocalhost=yes ssh option." 
+	echo "** Warning: "
+	echo "** Warning: A better solution is to configure (in the SSVNC GUI) the setting:"
+	echo "** Warning: 'Options -> Advanced -> Private SSH KnownHosts file' (or set" 
+	echo "** Warning: SSVNC_KNOWN_HOSTS_FILE directly) to a per-connection known hosts" 
+	echo "** Warning: file.  That file holds the 'localhost' cert for this specific" 
+	echo "** Warning: connection.  This yields a both secure and convenient solution." 
+	echo "" 
+}
+
+space_expand() {
+	str=`echo "$1" | sed -e 's/%SPACE/ /g' -e 's/%TAB/\t/g'`
+	echo "$str"
+}
+
+# handle ssh case:
+#
+if [ "X$use_ssh" = "X1" ]; then
+	#
+	# USING SSH
+	#
+	ssh_port="22"
+	ssh_host="$host"
+	vnc_host="$localhost"
+	ssh_UKHF=""
+	localhost_extra=""
+	# let user override ssh via $SSH
+	ssh=${SSH:-"ssh -x"}
+
+	sshword=`echo "$ssh" | awk '{print $1}'`
+	if [ "X$sshword" != "X" ]; then
+		if [ -x "$sshword" ]; then
+			:
+		elif type "$sshword" > /dev/null 2>&1; then
+			:
+		else
+			echo ""
+			echo "*********************************************************"
+			echo "** Problem finding the SSH command '$sshword': **"
+			echo ""
+			type "$sshword"
+			echo ""
+			echo "** Perhaps you need to install the SSH client package. **"
+			echo "*********************************************************"
+			echo ""
+			sleep 5
+		fi
+	fi
+
+	ssh_NHAFL="-o NoHostAuthenticationForLocalhost=yes"
+	if [ "X$SSVNC_SSH_LOCALHOST_AUTH" = "X1" ]; then
+		ssh_NHAFL=""
+	fi
+	if [ "X$SSVNC_KNOWN_HOSTS_FILE" != "X" ]; then
+		ssh_NHAFL=""
+	
+		ssh_UKHF="-o UserKnownHostsFile=$SSVNC_KNOWN_HOSTS_FILE"
+		ssh_args="$ssh_args $ssh_UKHF"
+		if [ ! -f "$SSVNC_KNOWN_HOSTS_FILE" ]; then
+			touch "$SSVNC_KNOWN_HOSTS_FILE" >/dev/null 2>&1
+		fi
+		chmod 600 "$SSVNC_KNOWN_HOSTS_FILE" >/dev/null 2>&1
+	fi
+	did_ssh_NHAFL=""
+
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ]; then
+		SSVNC_LIM_ACCEPT_PRELOAD="$SSVNC_BASEDIR/$SSVNC_UNAME/$SSVNC_LIM_ACCEPT_PRELOAD"
+	fi
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ]; then
+		echo ""
+		echo "SSVNC_LIM_ACCEPT_PRELOAD=$SSVNC_LIM_ACCEPT_PRELOAD"
+	fi
+
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" -a -f "$SSVNC_LIM_ACCEPT_PRELOAD" ]; then
+		plvar=LD_PRELOAD
+		if uname | grep Darwin >/dev/null; then
+			plvar="DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES"
+		fi
+		ssh="env $plvar=$SSVNC_LIM_ACCEPT_PRELOAD $ssh"
+	else
+		SSVNC_LIM_ACCEPT_PRELOAD=""
+	fi
+
+	ssh_vencrypt_proxy=""
+	# We handle vencrypt for SSH+SSL mode.
+	if echo "$proxy" | grep 'vencrypt://' > /dev/null; then
+		proxynew=""
+		for part in `echo "$proxy" | tr ',' ' '`
+		do
+			if echo "$part" | egrep -i '^vencrypt://' > /dev/null; then
+				ssh_vencrypt_proxy=$part
+			else
+				if [ "X$proxynew" = "X" ]; then
+					proxynew="$part"
+				else
+					proxynew="$proxynew,$part"
+				fi
+			fi
+		done
+		proxy=$proxynew
+	fi 
+	Kecho ssh_vencrypt_proxy=$ssh_vencrypt_proxy
+
+	# note that user must supply http:// for web proxy in SSH and SSH+SSL.
+	# No xxxx:// implies ssh server+port.
+	#
+	if echo "$proxy" | egrep '(http|https|socks|socks4|socks5)://' > /dev/null; then
+		# Handle Web or SOCKS proxy(ies) for the initial connect.
+		Kecho host=$host
+		Kecho port=$port
+		pproxy=""
+		sproxy1=""
+		sproxy_rest=""
+		for part in `echo "$proxy" | tr ',' ' '`
+		do
+			Kecho proxy_part=$part
+			if [ "X$part" = "X" ]; then
+				continue
+			elif echo "$part" | egrep -i '^(http|https|socks|socks4|socks5)://' > /dev/null; then
+				pproxy="$pproxy,$part"
+			else
+				if [ "X$sproxy1" = "X" ]; then
+					sproxy1="$part"
+				else
+					sproxy_rest="$sproxy_rest,$part"
+				fi
+			fi
+		done
+		pproxy=`echo "$pproxy" | sed -e 's/^,,*//' -e 's/,,*/,/g'`
+		sproxy_rest=`echo "$sproxy_rest" | sed -e 's/^,,*//' -e 's/,,*/,/g'`
+
+		Kecho pproxy=$pproxy
+		Kecho sproxy1=$sproxy1
+		Kecho sproxy_rest=$sproxy_rest
+
+		sproxy1_host=""
+		sproxy1_port=""
+		sproxy1_user=""
+
+		if [ "X$sproxy1" != "X" ]; then
+			# XXX fix ipv6 ip adder here and below.
+			sproxy1_host=`echo "$sproxy1" | awk -F: '{print $1}'`
+			sproxy1_user=`echo "$sproxy1_host" | awk -F@ '{print $1}'`
+			sproxy1_host=`echo "$sproxy1_host" | awk -F@ '{print $2}'`
+			if [ "X$sproxy1_host" = "X" ]; then
+				sproxy1_host=$sproxy1_user
+				sproxy1_user=""
+			else
+				sproxy1_user="${sproxy1_user}@"
+			fi
+			sproxy1_port=`echo "$sproxy1" | awk -F: '{print $2}'`
+			if [ "X$sproxy1_port" = "X" ]; then
+				sproxy1_port="22"
+			fi
+		else
+			sproxy1_host=`echo "$host" | awk -F: '{print $1}'`
+			sproxy1_user=`echo "$sproxy1_host" | awk -F@ '{print $1}'`
+			sproxy1_host=`echo "$sproxy1_host" | awk -F@ '{print $2}'`
+			if [ "X$sproxy1_host" = "X" ]; then
+				sproxy1_host=$sproxy1_user
+				sproxy1_user=""
+			else
+				sproxy1_user="${sproxy1_user}@"
+			fi
+			sproxy1_port=`echo "$host" | awk -F: '{print $2}'`
+			if [ "X$sproxy1_port" = "X" ]; then
+				sproxy1_port="22"
+			fi
+		fi
+
+		Kecho sproxy1_host=$sproxy1_host
+		Kecho sproxy1_port=$sproxy1_port
+		Kecho sproxy1_user=$sproxy1_user
+
+		ptmp="/tmp/ss_vncviewer_ssh${RANDOM}.$$.pl"
+		ptmp=`mytmp "$ptmp"`
+		PPROXY_REMOVE=1; export PPROXY_REMOVE
+		proxy=$pproxy
+		port_save=$port
+		host_save=$host
+		if [ "X$sproxy1_host" != "X" ]; then
+			host=$sproxy1_host
+		fi
+		if [ "X$sproxy1_port" != "X" ]; then
+			port=$sproxy1_port
+		fi
+		host=`echo "$host" | sed -e 's/^.*@//'`
+		port=`echo "$port" | sed -e 's/^.*://'`
+		pcode "$ptmp"
+		port=$port_save
+		host=$host_save
+
+		nd=`findfree 6600`
+		PPROXY_LISTEN=$nd; export PPROXY_LISTEN
+		# XXX no reverse forever PPROXY_LOOP_THYSELF ...
+		$ptmp &
+		sleep 1
+		if [ "X$ssh_NHAFL" != "X" -a "X$did_ssh_NHAFL" != "X1" ]; then
+			NHAFL_warning
+			ssh_args="$ssh_args $ssh_NHAFL"
+			did_ssh_NHAFL=1
+		fi
+		sleep 1
+		if [ "X$sproxy1" = "X" ]; then
+			u=""
+			if echo "$host" | grep '@' > /dev/null; then
+				u=`echo "$host" | sed -e 's/@.*$/@/'`
+			fi
+			
+			proxy="${u}$localhost:$nd"
+		else
+			proxy="${sproxy1_user}$localhost:$nd"
+		fi
+		localhost_extra=".2"
+		if [ "X$sproxy_rest" != "X" ]; then
+			proxy="$proxy,$sproxy_rest"
+		fi
+		Kecho proxy=$proxy
+	fi
+
+	if echo "$proxy" | grep "," > /dev/null; then
+
+		proxy1=`echo "$proxy" | awk -F, '{print $1}'`
+		proxy2=`echo "$proxy" | awk -F, '{print $2}'`
+
+		# user1@gw1.com:port1,user2@ws2:port2
+		ssh_host1=`echo "$proxy1" | awk -F: '{print $1}'`
+		ssh_port1=`echo "$proxy1" | awk -F: '{print $2}'`
+		if [ "X$ssh_port1" != "X" ]; then
+			ssh_port1="-p $ssh_port1"
+		fi
+		ssh_host2=`echo "$proxy2" | awk -F: '{print $1}'`
+		ssh_user2=`echo "$ssh_host2" | awk -F@ '{print $1}'`
+		ssh_host2=`echo "$ssh_host2" | awk -F@ '{print $2}'`
+		if [ "X$ssh_host2" = "X" ]; then
+			ssh_host2=$ssh_user2
+			ssh_user2=""
+		else
+			ssh_user2="${ssh_user2}@"
+		fi
+		ssh_port2=`echo "$proxy2" | awk -F: '{print $2}'`
+		if [ "X$ssh_port2" = "X" ]; then
+			ssh_port2="22"
+		fi
+		proxport=`findfree 3500`
+		if [ "X$ssh_NHAFL" != "X" -a "X$did_ssh_NHAFL" != "X1" ]; then
+			NHAFL_warning
+			did_ssh_NHAFL=1
+			sleep 1
+		fi
+		echo
+		echo "Running 1st ssh proxy:"
+		ukhf=""
+		if [ "X$ssh_UKHF" != "X" ]; then 
+			ukhf="$ssh_UKHF$localhost_extra"
+		fi
+		if echo "$ssh_host1" | grep '%' > /dev/null; then
+			uath=`space_expand "$ssh_host1"`
+		else
+			uath="$ssh_host1"
+		fi
+		echo "$ssh -f -x $ssh_port1 $targ -e none $ssh_NHAFL $ukhf -L $proxport:$ssh_host2:$ssh_port2 \"$uath\" \"sleep 30\""
+		echo ""
+		      $ssh -f -x $ssh_port1 $targ -e none $ssh_NHAFL $ukhf -L $proxport:$ssh_host2:$ssh_port2 "$uath" "sleep 30"
+		ssh_args="$ssh_args $ssh_NHAFL"
+		sleep 1
+		stty sane
+		proxy="${ssh_user2}$localhost:$proxport"
+	fi
+
+	if [ "X$proxy" != "X" ]; then
+		ssh_port=`echo "$proxy" | awk -F: '{print $2}'`
+		if [ "X$ssh_port" = "X" ]; then
+			ssh_port="22"
+		fi
+		ssh_host=`echo "$proxy" | awk -F: '{print $1}'`
+		vnc_host="$host"
+	fi
+
+	echo ""
+	echo "Running ssh:"
+	sz=`echo "$ssh_cmd" | wc -c`
+	if [ "$sz" -gt 300 ]; then
+		info="..."
+	else
+		info="$ssh_cmd"
+	fi
+
+	C=""
+	if [ "X$SS_VNCVIEWER_USE_C" != "X" ]; then
+		C="-C"
+	fi
+
+	getport=""
+	teeport=""
+	if echo "$ssh_cmd" | egrep "(PORT=|P=) " > /dev/null; then
+		getport=1
+		if echo "$ssh_cmd" | egrep "P= " > /dev/null; then
+			teeport=1
+		fi
+
+		PORT=""
+		ssh_cmd=`echo "$ssh_cmd" | sed -e 's/PORT=[ 	]*//' -e 's/P=//'`
+		SSVNC_NO_ENC_WARN=1
+		if [ "X$use_sshssl" = "X" ]; then
+			direct_connect=1
+		fi
+	fi
+	if [ "X$getport" != "X" ]; then
+		ssh_redir="-D ${use}"
+	elif [ "X$reverse" = "X" ]; then
+		ssh_redir="-L ${use}:${vnc_host}:${port}"
+	else
+		ssh_redir="-R ${port}:${vnc_host}:${use}"
+	fi
+	pmark=`sh -c 'echo $$'`
+
+	# the -t option actually speeds up typing response via VNC!!
+	if [ "X$ssh_port" = "X22" ]; then
+		ssh_port=""
+	else
+		ssh_port="-p $ssh_port"
+	fi
+
+	if echo "$ssh_host" | grep '%' > /dev/null; then
+		uath=`space_expand "$ssh_host"`
+	else
+		uath="$ssh_host"
+	fi
+	if [ "X$SS_VNCVIEWER_SSH_ONLY" != "X" ]; then
+		echo "$ssh -x $ssh_port $targ $C $ssh_args \"$uath\" \"$info\""
+		echo ""
+		$ssh -x $ssh_port $targ $C $ssh_args "$uath" "$ssh_cmd"
+		exit $?
+
+	elif [ "X$SS_VNCVIEWER_NO_F" != "X" ]; then
+		echo "$ssh -x $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+		echo ""
+		$ssh -x $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd"
+		rc=$?
+
+	elif [ "X$getport" != "X" ]; then
+		tport=/tmp/ss_vncviewer_tport${RANDOM}.$$
+		tport=`mytmp "$tport"`
+		tport2=/tmp/ss_vncviewer_tport2${RANDOM}.$$
+		tport2=`mytmp "$tport2"`
+
+		if [ "X$rsh" != "X1" ]; then
+			if echo "$ssh_cmd" | grep "sudo " > /dev/null; then
+				echo ""
+				echo "Initial ssh with 'sudo id' to prime sudo so hopefully the next one"
+				echo "will require no password..."
+				echo ""
+				targ="-t"
+				$ssh -x $ssh_port $targ $ssh_args "$uath" "sudo id; tty"
+				echo ""
+			fi
+			echo "$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+			echo ""
+			$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd" > $tport 2> $tport2
+			if [ "X$teeport" = "X1" ]; then
+				tail -f $tport  1>&2 &
+				tail_pid=$!
+				tail -f $tport2 1>&2 &
+				tail_pid2=$!
+			fi
+			rc=$?
+		else
+			rsh_setup
+			echo "rsh $ul \"$ssh_host\" \"$ssh_cmd\""
+			echo ""
+			rsh $ul "$ssh_host" "$ssh_cmd" > $tport &
+			sleep 1
+			rc=0
+		fi
+
+		if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+			echo "sleep $SSVNC_EXTRA_SLEEP"
+			sleep $SSVNC_EXTRA_SLEEP
+		fi
+
+		stty sane
+		i=0
+		if type perl > /dev/null 2>&1; then
+			imax=50
+			sleepit="perl -e 'select(undef, undef, undef, 0.20)'"
+		else
+			imax=10
+			sleepit="sleep 1"
+		fi
+		while [ $i -lt $imax ]; do
+			#echo $sleepit
+			eval $sleepit
+			PORT=`grep "^PORT=" $tport | tr '\r' ' ' | head -n 1 | sed -e 's/PORT=//' -e 's/\r//g' -e 's/ *$//'`
+			if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+				break
+			fi
+			vnss=`sed -e 's/\r//g' $tport $tport2 | egrep -i '^(New.* desktop is|A VNC server is already running).*:[0-9[0-9]*$' | head -n 1 | awk '{print $NF}'`
+			if [ "X$vnss" != "X" ]; then
+				PORT=`echo "$vnss" | awk -F: '{print $2}'`
+				if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+					if [ $PORT -lt 100 ]; then
+						PORT=`expr $PORT + 5900`
+					fi
+				fi
+				if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+					vnss=`sed -e 's/\r//g' $tport | egrep -i '^(New.* desktop is|A VNC server is already running).*:[0-9[0-9]*$' | head -n 1`
+					echo "vncserver string: $vnss" 1>&2
+					break
+				fi
+			fi
+			i=`expr $i + 1`
+		done
+
+		echo "found: PORT='$PORT'" 1>&2
+		lh6=""
+		if [ "X$SSVNC_PORT_IPV6" != "X" ]; then
+			lh6=1
+		elif egrep 'Info: listening on IPv6 only|Info: listening only on IPv6' $tport > /dev/null; then
+			lh6=1
+		fi
+		if [ "X$lh6" = "X1" ]; then
+			echo "set SOCKS5 localhost to ::1" 1>&2
+		fi
+		rm -f $tport $tport2
+		if [ "X$rsh" = "X1" ]; then
+			rsh_viewer "$@"
+			exit $?
+		fi
+		PPROXY_SOCKS=5
+		if [ "X$SSVNC_SOCKS5" != "X" ]; then
+			PPROXY_SOCKS=5
+		elif [ "X$SSVNC_SOCKS4" != "X" ]; then
+			PPROXY_SOCKS=1
+		fi
+		export PPROXY_SOCKS
+		if [ "X$lh6" = "X" ]; then
+			host="$localhost"
+		else
+			host="::1"
+		fi
+		port="$PORT"
+		proxy="$localhost:$use"
+
+	else
+		if [ "X$rsh" != "X1" ]; then
+			echo "$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+			echo ""
+			$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd"
+			rc=$?
+		else
+			rsh_setup
+			echo "rsh $ul \"$ssh_host\" \"$ssh_cmd\""
+			echo ""
+			rsh $ul "$ssh_host" "$ssh_cmd" &
+			sleep 1
+			PORT=$port
+			rsh_viewer "$@"
+			exit $?
+		fi
+	fi
+
+	if [ "$rc" != "0" ]; then
+		echo ""
+		echo "ssh to \"$uath\" failed."
+		exit 1
+	fi
+	stty sane
+
+	c=0
+	pssh=""
+	while [ $c -lt 40 ]
+	do
+		p=`expr $pmark + $c`
+		pout=`ps -p "$p" 2>/dev/null | grep -v '^[ 	]*PID' | sed -e 's/-L.*$//' -e 's/-x .*$//'`
+		if echo "$pout" | grep "ssh" > /dev/null; then
+			if echo "$pout" | egrep -i 'ssh.*(-add|-agent|-ask|-keygen|-argv0|vnc)' >/dev/null; then
+				:
+			elif echo "$pout" | egrep -i 'scp|sshd' >/dev/null; then
+				:
+			else
+				pssh=$p
+				break
+			fi
+		fi
+		c=`expr $c + 1`
+	done
+	if [ "X$getport" != "X" ]; then
+		:
+	elif [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ] ; then
+		sleep 2
+	elif [ "X$ssh_cmd" = "Xsleep $ssh_sleep" ] ; then
+		#echo T sleep 1
+		sleep 1
+	elif echo "$ssh_cmd" | grep '^sleep ' >/dev/null; then
+		#echo T sleep 2
+		sleep 2
+	else
+		# let any command get started a bit.
+		#echo T sleep 5
+		sleep 5
+	fi
+	echo ""
+	#reset
+	stty sane
+	if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+		echo "sleep $SSVNC_EXTRA_SLEEP"
+		sleep $SSVNC_EXTRA_SLEEP
+	fi
+	echo "ssh_pid='$pssh'"; echo
+	if [ "X$use_sshssl" = "X" -a "X$getport" = "X" ]; then
+		if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+			(sh -c "$SSVNC_EXTRA_COMMAND") &
+			echo "($SSVNC_EXTRA_COMMAND) &"; echo
+		fi
+		echo "Running viewer:"
+
+		trap "final" 0 2 15
+		if [ "X$reverse" = "X" ]; then
+			echo "$VNCVIEWERCMD" "$@" $localhost:$N
+			echo ""
+			$VNCVIEWERCMD "$@" $localhost:$N
+			if [ $? != 0 ]; then
+				echo "vncviewer command failed: $?"
+				if [ "X$secondtry" = "X1" ]; then
+					sleep 2
+					$VNCVIEWERCMD "$@" $localhost:$N
+				fi
+			fi
+		else
+			echo ""
+			echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+			echo ""
+			N2=$N
+			if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+				N2=`echo "$N2" | sed -e 's/://g'`
+				if [ $N2 -le 200 ]; then
+					N2=`expr $N2 + 5500`
+				fi
+			fi
+			echo "$VNCVIEWERCMD" "$@" -listen $N2
+			echo ""
+			$VNCVIEWERCMD "$@" -listen $N2
+		fi
+
+		exit $?
+	else
+		use2=`findfree 5960`
+		host0=$host
+		port0=$port
+		host=$localhost
+		port=$use
+		use=$use2
+		N=`expr $use - 5900`
+		if [ "X$getport" != "X" ]; then
+			host="$host0"
+			port="$port0"
+		else
+			proxy=""
+		fi
+		if [ "X$ssh_vencrypt_proxy" != "X" ]; then
+			ssh_vencrypt_proxy="vencrypt://$host:$port"
+			if [ "X$proxy" = "X" ]; then
+				proxy=$ssh_vencrypt_proxy
+			else
+				proxy="$proxy,$ssh_vencrypt_proxy"
+			fi
+			Kecho "proxy_now=$proxy"
+			unset PPROXY_LISTEN
+		fi
+	fi
+fi
+
+if [ "X$stunnel_set_here" = "X1" -a "X$showcert" = "X" ]; then
+	if type $STUNNEL > /dev/null 2>&1; then
+		:
+	else
+		echo ""
+		echo "***************************************************************"
+		echo "** Problem finding the Stunnel command '$STUNNEL': **"
+		echo ""
+		type $STUNNEL
+		echo ""
+		echo "** Perhaps you need to install the stunnel/stunnel4 package. **"
+		echo "***************************************************************"
+		echo ""
+		sleep 5
+	fi
+fi
+
+# create the stunnel config file:
+if [ "X$verify" != "X" ]; then
+	if [ -d $verify ]; then
+		verify="CApath = $verify"
+	else
+		verify="CAfile = $verify"
+	fi
+	verify="$verify
+verify = 2"
+fi
+if [ "X$SSVNC_STUNNEL_VERIFY3" != "X" ]; then
+	verify=`echo "$verify" | sed -e 's/verify = 2/verify = 3/'`
+fi
+if [ "X$mycert" != "X" ]; then
+	cert="cert = $mycert"
+fi
+if [ "X$crl" != "X" ]; then
+	if [ -d $crl ]; then
+		crl="CRLpath = $crl"
+	else
+		crl="CRLfile = $crl"
+	fi
+fi
+
+if [ "X$showcert" = "X1" ]; then
+	if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+		:
+	elif [ "X$SSVNC_NO_IPV6_PROXY" != "X" ]; then
+		:
+	elif [ "X$ipv6" = "X1" -a "X$proxy" = "X" ]; then
+		proxy="ipv6://$host:$port"
+	fi
+fi
+
+if [ "X$direct_connect" != "X" -a "X$STUNNEL_LISTEN" != "X" ]; then
+	proxy=reverse_direct
+fi
+
+ptmp=""
+if [ "X$proxy" != "X" ]; then
+	ptmp="/tmp/ss_vncviewer${RANDOM}.$$.pl"
+	ptmp=`mytmp "$ptmp"`
+	PPROXY_REMOVE=1; export PPROXY_REMOVE
+	pcode "$ptmp"
+	if [ "X$showcert" != "X1" -a "X$direct_connect" = "X" ]; then
+		if uname | egrep 'Darwin|SunOS' >/dev/null; then
+			vout=`echo "$proxy" | grep -i vencrypt`
+			if [ "X$vout" != "X" -a "X$reverse" = "X1" ]; then
+				# need to exec for reverse vencrypt
+				connect="exec = $ptmp"
+			else
+				# on mac and solaris we need to listen on socket instead of stdio:
+				nd=`findfree 6700`
+				PPROXY_LISTEN=$nd
+				export PPROXY_LISTEN
+				if [ "X$reverse" = "X" ]; then
+					$ptmp &
+				fi
+				sleep 2
+				host="$localhost"
+				port="$nd"
+				connect="connect = $localhost:$nd"
+			fi
+		else
+			# otherwise on unix we can exec it:
+			connect="exec = $ptmp"
+		fi
+	else
+		connect="exec = $ptmp"
+	fi
+else
+	connect="connect = $host:$port"
+fi
+
+# handle showcert case:
+#
+if [ "X$showcert" = "X1" ]; then
+	if [ "X$proxy" != "X" ]; then
+		PPROXY_LISTEN=$use
+		export PPROXY_LISTEN
+		if [ "X$SS_DEBUG" != "X" ]; then
+			$ptmp &
+		else
+			$ptmp 2>/dev/null &
+		fi
+		sleep 1
+		more_sleep=1
+		if uname | grep Linux > /dev/null; then
+			if netstat -ant | grep LISTEN | grep "127.0.0.1:$use" > /dev/null; then
+				more_sleep=""
+			fi
+		elif uname | grep SunOS > /dev/null; then
+			if netstat -an -f inet -P tcp | grep LISTEN | grep "127.0.0.1.$use" > /dev/null; then
+				more_sleep=""
+			fi
+		elif uname | egrep -i 'bsd|darwin' > /dev/null; then
+			if netstat -ant -f inet | grep LISTEN | grep "127.0.0.1.$use" > /dev/null; then
+				more_sleep=""
+			fi
+		fi
+		if [ "X$more_sleep" = "X1" ]; then
+			sleep 1
+		fi
+		host="$localhost"
+		port="$use"
+	fi
+	cipher_args=""
+	if [ "X$ciphers" != "X" ]; then
+		cipher_args=`echo "$ciphers" | sed -e 's/ciphers=/-cipher /'`
+	fi
+	if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+		:
+	elif type openssl > /dev/null 2>&1; then
+		:
+	else
+		echo ""
+		echo "********************************************************"
+		echo "** Problem finding the OpenSSL command 'openssl': **" 
+		echo ""
+		type openssl 2>&1
+		echo ""
+		echo "** Perhaps you need to install the 'openssl' package. **"
+		echo "********************************************************"
+		echo ""
+	fi
+	#echo "openssl s_client $cipher_args -connect $host:$port" 
+	if [ "X$reverse" = "X" ]; then
+		if type host > /dev/null 2>/dev/null; then
+			host $host >/dev/null 2>&1
+			host $host >/dev/null 2>&1
+		fi
+		timeout=15
+		if [ "X$SSVNC_FETCH_TIMEOUT" != "X" ]; then
+			timeout=$SSVNC_FETCH_TIMEOUT
+		fi
+		if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+			if type pkill >/dev/null 2>&1; then
+				(sleep $timeout; if kill -0 $$; then pkill -TERM -f "ultravnc_dsm_helper.*$host.*$port"; fi) >/dev/null 2>&1 &
+			fi
+			ultravnc_dsm_helper showcert $host:$port 2>&1
+		else
+			if type pkill >/dev/null 2>&1; then
+				(sleep $timeout; if kill -0 $$; then pkill -TERM -f "openssl.*s_client.*$host.*$port"; fi) >/dev/null 2>&1 &
+			fi
+			openssl s_client $cipher_args -prexit -connect $host:$port 2>&1 < /dev/null
+		fi
+		rc=$?
+	else
+		tcert=""
+		if [ "X$mycert" = "X" ]; then
+			tcert=`make_tcert`
+			cert_args="-cert $tcert -CAfile $tcert"
+		else
+			cert_args="-cert $mycert -CAfile $mycert"
+		fi
+		tmp_out=/tmp/showcert_out${RANDOM}.$$
+		tmp_out=`mytmp "$tmp_out"`
+		tmp_err=/tmp/showcert_err${RANDOM}.$$
+		tmp_err=`mytmp "$tmp_err"`
+
+		#echo "openssl s_server $cipher_args $cert_args -accept $port -verify 2 > $tmp_out 2> $tmp_err" 1>&2
+
+		# assume we have perl:
+		check_perl perl
+
+		perl -e "
+			\$p = open(O, \"|openssl s_server $cipher_args $cert_args -accept $port -verify 2 1>$tmp_out 2> $tmp_err\");
+			exit 1 unless \$p;
+			while (1) {
+				sleep 1;
+				if (!open(F, \"<$tmp_out\")) {
+					kill \$p;
+					exit 1;
+				}
+				while (<F>) {
+					if (/RFB 00/) {
+						fsleep(0.25);
+						print O \"RFB 000.000\\n\";
+						fsleep(1.00);
+						kill \$p;
+						fsleep(0.25);
+						exit 0;
+					}
+				}
+				close F;
+			}
+			sub fsleep {
+				select(undef, undef, undef, shift);
+			}
+		";
+
+		echo ""
+		cat $tmp_out
+		echo ""
+		echo "----2----"
+		cat $tmp_err
+		if grep BEGIN.CERTIFICATE $tmp_out >/dev/null; then
+			rc=0
+		else
+			rc=1
+		fi
+
+		rm -f $tmp_out $tmp_err
+	fi
+	if [ "X$SSVNC_PREDIGESTED_HANDSHAKE" != "X" ]; then
+		rm -f $SSVNC_PREDIGESTED_HANDSHAKE
+	fi
+	if [ "X$SSVNC_SHOWCERT_EXIT_0" = "X1" ]; then
+		exit 0
+	else
+		exit $rc
+	fi
+fi
+
+# handle direct connect case:
+#
+if [ "X$direct_connect" != "X" ]; then
+	if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+		SSVNC_NO_ENC_WARN=1
+		echo ""
+		echo "Using UltraVNC DSM Plugin key for encryption:"
+		echo ""
+		ustr=`echo "$SSVNC_ULTRA_DSM" | sed -e 's/pw=[^ ]*/pw=******/g'`
+		echo "  $ustr PORT HOST:PORT"
+		echo ""
+	elif [ "X$getport" = "X" ]; then
+		echo ""
+		echo "Running viewer for direct connection:"
+		if echo X"$@" | grep chatonly > /dev/null; then
+			:
+		else
+			echo ""
+			echo "** WARNING: THERE WILL BE NO SSL OR SSH ENCRYPTION **"
+			echo ""
+		fi
+	fi
+	x=""
+	if [ "X$SSVNC_NO_ENC_WARN" != "X" ]; then
+		if [ "X$getport" = "X" ]; then
+			sleep 1
+		fi
+	elif type printf > /dev/null 2>&1; then
+		printf  "Are you sure you want to continue? [y]/n "
+		read x
+	else
+		echo -n "Are you sure you want to continue? [y]/n "
+		read x
+	fi
+	if [ "X$x" = "Xn" ]; then
+		exit 1
+	fi
+	echo ""
+	if [ "X$ptmp" != "X" ]; then
+		if [ "X$reverse" = "X" ]; then
+			PPROXY_LISTEN=$use
+			export PPROXY_LISTEN
+		else
+			if [ "X$proxy" = "Xreverse_direct" ]; then
+				PPROXY_LISTEN="$STUNNEL_LISTEN:`expr 5500 + $disp`"
+				PPROXY_DEST="$localhost:$use"
+				PPROXY_PROXY="ipv6://$localhost:$use"	# not always ipv6..
+				export PPROXY_LISTEN PPROXY_DEST PPROXY_PROXY
+				pps=1
+			else
+				PPROXY_REVERSE="$localhost:$use"
+				export PPROXY_LISTEN
+				pps=3
+			fi
+			if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+				PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself.${RANDOM}.$$"`
+				export PPROXY_LOOP_THYSELF
+				pps=2
+			fi
+			if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+				pps=`expr $pps + $SSVNC_EXTRA_SLEEP`
+			fi
+			PPROXY_SLEEP=$pps; export PPROXY_SLEEP;
+			PPROXY_KILLPID=+1; export PPROXY_KILLPID;
+		fi
+
+		$ptmp &
+
+		if [ "X$reverse" = "X" ]; then
+			#sleep 2
+			#echo T sleep 1
+			sleep 1
+		fi
+		host="$localhost"
+		disp="$N"
+		port=`expr $disp + 5900`
+	fi
+	if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+		echo "T sleep $SSVNC_EXTRA_SLEEP"
+		sleep $SSVNC_EXTRA_SLEEP
+	fi
+	if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+		(sh -c "$SSVNC_EXTRA_COMMAND") &
+		echo "($SSVNC_EXTRA_COMMAND) &"; echo
+	fi
+	if [ "X$reverse" = "X" ]; then
+		hostdisp="$host:$disp"
+		if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+			if [ "X$SSVNC_USE_OURS" = "X1" ]; then
+				hostdisp="exec=$SSVNC_ULTRA_DSM 0 $host:$port"
+			else
+				pf=`findfree 5970`
+				cmd="$SSVNC_ULTRA_DSM -$pf $host:$port"
+				pf=`expr $pf - 5900`
+				hostdisp="$localhost:$pf"
+				ustr=`echo "$cmd" | sed -e 's/pw=[^ ]*/pw=******/g'`
+				echo "Running:"
+				echo
+				echo "$ustr &"
+				echo
+				$cmd &
+				dsm_pid=$!
+				sleep 2
+			fi
+		fi
+		hostdisp2=`echo "$hostdisp" | sed -e 's/pw=[^ ]*/pw=******/g'`
+		echo "$VNCVIEWERCMD" "$@" "$hostdisp2"
+		trap "final" 0 2 15
+		echo ""
+		$VNCVIEWERCMD "$@" "$hostdisp"
+		if [ $? != 0 ]; then
+			echo "vncviewer command failed: $?"
+			if [ "X$secondtry" = "X1" ]; then
+				sleep 2
+				$VNCVIEWERCMD "$@" "$hostdisp"
+			fi
+		fi
+	else
+		echo ""
+		echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+		echo ""
+		trap "final" 0 2 15
+		if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+			if [ "X$SSVNC_LISTEN_ONCE" = "X1" ]; then
+				echo "NOTE: The ultravnc_dsm_helper only runs once.  So after the first LISTEN"
+				echo "      ends you must restart the Listening mode.  You may also need to"
+				echo "      Press Ctrl-C to stop the viewer and restart for another connection."
+				echo ""
+			fi
+			#SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+			VNCVIEWER_LISTEN_LOCALHOST=1
+			export VNCVIEWER_LISTEN_LOCALHOST
+			dport=`expr 5500 + $disp`
+			cmd="$SSVNC_ULTRA_DSM $dport $localhost:$use"
+			ustr=`echo "$cmd" | sed -e 's/pw=[^ ]*/pw=******/g'`
+			echo "Running:"
+			echo
+			echo "$ustr &"
+			echo
+			if [ "X$SSVNC_LISTEN_ONCE" = "X1" ]; then
+				$cmd &
+				dsm_pid=$!
+			else
+				while [ 1 ]; do $cmd; sleep 1; done &
+				dsm_pid=$!
+			fi
+			sleep 2
+			disp=$use
+			if [ $disp -ge 5500 ]; then
+				disp=`expr $disp - 5500`
+			fi
+		fi
+		disp2=$disp
+		if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+			disp2=`echo "$disp2" | sed -e 's/://g'`
+			if [ $disp2 -le 200 ]; then
+				disp2=`expr $disp2 + 5500`
+			fi
+		fi
+		echo "$VNCVIEWERCMD" "$@" -listen $disp2
+		echo ""
+		$VNCVIEWERCMD "$@" -listen $disp2
+		if [ "X$PPROXY_LOOP_THYSELF" != "X" ]; then
+			rm -f $PPROXY_LOOP_THYSELF
+		fi
+	fi
+	exit $?
+fi
+
+tmp_cfg=/tmp/ss_vncviewer${RANDOM}.$$
+tmp_cfg=`mytmp "$tmp_cfg"`
+
+stunnel_exec=""
+if [ "X$SSVNC_USE_OURS" != "X1" ]; then
+	:
+elif echo $STUNNEL_EXTRA_SVC_OPTS | grep '#stunnel-exec' > /dev/null; then
+	stunnel_exec="#"
+fi
+
+if [ "X$reverse" = "X" ]; then
+
+	if echo "$proxy" | grep "^repeater://" > /dev/null; then
+		if [ "X$cert" = "XBUILTIN" ]; then
+			ttcert=`make_tcert`
+			cert="cert = $ttcert"
+		fi
+		# Note for listen mode, an empty cert will cause stunnel to fail.
+		# The ssvnc gui will have already taken care of this.
+	fi
+
+	cat > "$tmp_cfg" <<END
+foreground = yes
+pid =
+client = yes
+debug = $stunnel_debug
+$ciphers
+$STUNNEL_EXTRA_OPTS
+$STUNNEL_EXTRA_OPTS_USER
+$cert
+$crl
+$verify
+
+${stunnel_exec}[vnc_stunnel]
+${stunnel_exec}accept = $localhost:$use
+$connect
+$STUNNEL_EXTRA_SVC_OPTS
+$STUNNEL_EXTRA_SVC_OPTS_USER
+
+END
+
+else
+	# REVERSE case:
+
+	stunnel_exec=""	# doesn't work for listening.
+
+	p2=`expr 5500 + $N`
+	connect="connect = $localhost:$p2"
+	if [ "X$cert" = "XBUILTIN" ]; then
+		ttcert=`make_tcert`
+		cert="cert = $ttcert"
+	fi
+	# Note for listen mode, an empty cert will cause stunnel to fail.
+	# The ssvnc gui will have already taken care of this.
+
+
+	hloc=""
+	if [ "X$use_ssh" = "X1" ]; then
+		hloc="$localhost:"
+	elif [ "X$STUNNEL_LISTEN" != "X" ]; then
+		hloc="$STUNNEL_LISTEN:"
+	fi
+	if echo "$proxy" | grep -i '^vencrypt:' > /dev/null; then
+		hloc="$localhost:"
+		pv=`findfree 5570`
+		proxy="vencrypt:$pv:$port"
+		port=$pv
+		if [ "X$anondh_set" = "X1" ]; then
+			# not needed for ANONDH in this mode
+			#ciphers="ciphers = ADH:@STRENGTH"
+			:
+		fi
+	fi
+	cat > "$tmp_cfg" <<END
+foreground = yes
+pid =
+client = no
+debug = $stunnel_debug
+$ciphers
+$STUNNEL_EXTRA_OPTS
+$STUNNEL_EXTRA_OPTS_USER
+$cert
+$crl
+$verify
+
+[vnc_stunnel]
+accept = $hloc$port
+$connect
+$STUNNEL_EXTRA_SVC_OPTS
+$STUNNEL_EXTRA_SVC_OPTS_USER
+
+END
+
+fi
+
+echo ""
+echo "Using this stunnel configuration:"
+echo ""
+cat "$tmp_cfg" | uniq
+echo ""
+if egrep -i '^[ 	]*(CApath|CAfile) =' "$tmp_cfg" > /dev/null ; then
+	:
+else
+	echo "** WARNING: THE STUNNEL CONFIG HAS NO SERVER CERTIFICATE SPECIFIED       **"
+	echo "** WARNING: (the CApath or CAfile stunnel option) THE VNC SERVER WILL    **"
+	echo "** WARNING: NOT BE AUTHENTICATED. A MAN-IN-THE-MIDDLE ATTACK IS POSSIBLE **"
+	echo ""
+fi
+sleep 1
+
+if [ "X$stunnel_exec" = "X" ]; then
+	echo ""
+	echo "Running stunnel:"
+	echo "$STUNNEL $tmp_cfg"
+	st=`echo "$STUNNEL" | awk '{print $1}'`
+	$st -help > /dev/null 2>&1
+	$STUNNEL "$tmp_cfg" < /dev/tty > /dev/tty &
+	stunnel_pid=$!
+	echo ""
+
+	# pause here to let the user supply a possible passphrase for the
+	# mycert key:
+	if [ "X$mycert" != "X" ]; then
+		nsl=10
+		dsl=0
+		if [ ! -f $mycert ]; then
+			dsl=0
+		elif grep -i 'Proc-Type.*ENCRYPTED' "$mycert" > /dev/null 2>/dev/null; then
+			dsl=1
+		fi
+		if [ "X$dsl" = "X1" ]; then
+			echo ""
+			echo "(** pausing $nsl secs for possible certificate passphrase dialog **)"
+			echo ""
+			sleep $nsl
+			echo "(** done pausing for passphrase **)"
+			echo ""
+		fi
+	fi
+	#echo T sleep 1
+	sleep 1
+	rm -f "$tmp_cfg"
+fi
+
+
+echo ""
+if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+	echo "sleep $SSVNC_EXTRA_SLEEP"
+	sleep $SSVNC_EXTRA_SLEEP
+fi
+if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+	(sh -c "$SSVNC_EXTRA_COMMAND") &
+	echo "($SSVNC_EXTRA_COMMAND) &"; echo
+fi
+
+if [ "X$reverse" = "X" ]; then
+	if [ "X$NEED_VENCRYPT_VIEWER_BRIDGE" = "X1" -a "X$ptmp" != "X" ] ; then
+		port1=`expr 5900 + $N`		# stunnel port
+		port2=`findfree 5970`		# bridge port (viewer connects to it.)
+		N=`expr $port2 - 5900`
+		env PPROXY_REMOVE=0 PPROXY_SLEEP=0 PPROXY_VENCRYPT_VIEWER_BRIDGE="$port2,$port1" $ptmp &
+		sleep 1
+	fi
+	echo "Running viewer:"
+	vnc_hp=$localhost:$N
+	if [ "X$stunnel_exec" != "X" ]; then
+		vnc_hp="exec=$STUNNEL $tmp_cfg"
+	fi
+	echo "$VNCVIEWERCMD" "$@" "$vnc_hp"
+	trap "final" 0 2 15
+	echo ""
+	$VNCVIEWERCMD "$@" "$vnc_hp"
+	if [ $? != 0 ]; then
+		echo "vncviewer command failed: $?"
+		if [ "X$secondtry" = "X1" ]; then
+			sleep 2
+			$VNCVIEWERCMD "$@" "$vnc_hp"
+		fi
+	fi
+else
+	echo "Running viewer:"
+	echo ""
+	echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+	echo ""
+	trap "final" 0 2 15
+	N2=$N
+	N2_trim=`echo "$N2" | sed -e 's/://g'`
+	if [ $N2_trim -le 200 ]; then
+		N2_trim=`expr $N2_trim + 5500`
+	fi
+	if [ "X$proxy" != "X" ]; then
+		if echo "$proxy" | grep -i '^vencrypt:' > /dev/null; then
+			pstunnel=`echo "$proxy" | awk -F: '{print $2}'`
+			plisten=`echo "$proxy" | awk -F: '{print $3}'`
+			IF=INADDR_ANY
+			if [ "X$STUNNEL_LISTEN" != "X" ]; then
+				IF=$STUNNEL_LISTEN
+			fi
+			PPROXY_VENCRYPT_REVERSE=1; export PPROXY_VENCRYPT_REVERSE
+			PPROXY_LISTEN="$IF:$plisten"; export PPROXY_LISTEN
+			PPROXY_PROXY="vencrypt://$localhost:$pstunnel"; export PPROXY_PROXY
+			PPROXY_DEST="$localhost:$pstunnel"; export PPROXY_DEST
+			STUNNEL_ONCE=1; export STUNNEL_ONCE
+			STUNNEL_MAX_CLIENTS=1; export STUNNEL_MAX_CLIENTS
+			if [ "X$NEED_VENCRYPT_VIEWER_BRIDGE" = "X1" -a "X$ptmp" != "X" ] ; then
+				port1=`expr 5500 + $N2`
+				port2=`findfree 5580`
+				N2=`expr $port2 - 5500`
+				N2_trim=`echo "$N2" | sed -e 's/://g'`
+				if [ $N2_trim -le 200 ]; then
+					N2_trim=`expr $N2_trim + 5500`
+				fi
+				if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+					PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself1.${RANDOM}.$$"`
+					export PPROXY_LOOP_THYSELF
+					PPROXY_LOOP_THYSELF0=$PPROXY_LOOP_THYSELF
+				fi
+				env PPROXY_REMOVE=0 PPROXY_SLEEP=0 PPROXY_VENCRYPT_VIEWER_BRIDGE="-$port1,$port2" $ptmp &
+				sleep 1
+			fi
+		else
+			PPROXY_REVERSE="$localhost:$port"; export PPROXY_REVERSE
+			PPROXY_SLEEP=1; export PPROXY_SLEEP;
+		fi
+		PPROXY_KILLPID=+1; export PPROXY_KILLPID;
+		if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+			PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself2.${RANDOM}.$$"`
+			export PPROXY_LOOP_THYSELF
+		fi
+		$ptmp &
+		# Important to have no extra pids generated between here and VNCVIEWERCMD
+	fi
+	if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+		N2=$N2_trim
+	fi
+	echo "$VNCVIEWERCMD" "$@" -listen $N2
+	echo ""
+	$VNCVIEWERCMD "$@" -listen $N2
+
+	if [ "X$PPROXY_LOOP_THYSELF" != "X" ]; then
+		rm -f $PPROXY_LOOP_THYSELF
+	fi
+	if [ "X$PPROXY_LOOP_THYSELF0" != "X" ]; then
+		rm -f $PPROXY_LOOP_THYSELF0
+	fi
+fi
+
+sleep 1

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultra.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=UltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultraproxy.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedUltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+<param name=VNCSERVERPORT value=$PORT>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultrasigned.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedUltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 35 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/LICENSE.txt

@@ -0,0 +1,35 @@
+noVNC is Copyright (C) 2011 Joel Martin <github@martintribe.org>
+
+Some portions of noVNC are copyright to their individual authors.
+Please refer to the individual source files and/or to the noVNC commit
+history: https://github.com/kanaka/noVNC/commits/master
+
+noVNC is licensed under the LGPL (GNU Lesser General Public License)
+version 3 with the following exceptions (all LGPL-3 compatible):
+
+    include/input.js           : LGPL-2 or any later version
+   
+    include/base64.js          : Dual GPL-2 or LGPL-2.1
+   
+    include/des.js             : Various BSD style licenses
+
+    include/jsunzip.js         : zlib/libpng license
+
+    include/web-socket-js/     : New BSD license. Source code at
+                                 http://github.com/gimite/web-socket-js
+
+    include/Orbitron*          : SIL Open Font License 1.1
+                                 (Copyright 2009 Matt McInerney)
+
+    images/                    : Creative Commons Attribution-ShareAlike
+                                 http://creativecommons.org/licenses/by-sa/3.0/
+
+The license texts are included at:
+    docs/LICENSE.LGPL-3 and
+    docs/LICENSE.GPL-3
+    docs/LICENSE.OFL-1.1
+
+Or alternatively the license texts may be found here:
+    http://www.gnu.org/licenses/lgpl.html and
+    http://www.gnu.org/licenses/gpl.html
+    http://scripts.sil.org/OFL

+ 102 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/README.md

@@ -0,0 +1,102 @@
+## noVNC: HTML5 VNC Client
+
+
+### Description
+
+noVNC is a HTML5 VNC client that runs well in any modern browser
+including mobile browsers (iPhone/iPad and Android).
+
+Notable commits, announcements and news are posted to
+@<a href="http://www.twitter.com/noVNC">noVNC</a>
+
+There are many companies/projects that have integrated noVNC into
+their products including: [Ganeti Web Manager](http://code.osuosl.org/projects/ganeti-webmgr), [Archipel](http://archipelproject.org), [openQRM](http://www.openqrm.com/), [OpenNode](http://www.opennodecloud.com/), [OpenStack](http://www.openstack.org), [Broadway (HTML5 GDK/GTK+ backend)](http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/), [OpenNebula](http://opennebula.org/), [CloudSigma](http://www.cloudsigma.com/), [Zentyal (formerly eBox)](http://www.zentyal.org/), [SlapOS](http://www.slapos.org), [Intel MeshCentral](https://meshcentral.com), [Amahi](http://amahi.org), [Brightbox](http://brightbox.com/), [Foreman](http://theforeman.org) and [LibVNCServer](http://libvncserver.sourceforge.net). See [this wiki page](https://github.com/kanaka/noVNC/wiki/ProjectsCompanies-using-noVNC) for more info and links.
+
+
+### Features
+
+* Supports all modern browsers including mobile (iOS, Android)
+* Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
+* WebSocket SSL/TLS encryption (i.e. "wss://") support
+* 24-bit true color and 8 bit colour mapped
+* Supports desktop resize notification/pseudo-encoding
+* Local or remote cursor
+* Clipboard copy/paste
+* Clipping or scolling modes for large remote screens
+* Easy site integration and theming (3 example themes included)
+* Licensed under the [LGPLv3](http://www.gnu.org/licenses/lgpl.html)
+
+### Screenshots
+
+Running in Chrome before and after connecting:
+
+<img src="http://kanaka.github.com/noVNC/img/noVNC-5.png" width=400>&nbsp;<img src="http://kanaka.github.com/noVNC/img/noVNC-7.jpg" width=400>
+
+See more screenshots <a href="http://kanaka.github.com/noVNC/screenshots.html">here</a>.
+
+
+### Browser Requirements
+
+* HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS
+  Safari, Opera 11+, Internet Explorer 9+, etc.
+
+* HTML5 WebSockets: For browsers that do not have builtin
+  WebSockets support, the project includes
+  <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>,
+  a WebSockets emulator using Adobe Flash. iOS 4.2+ has built-in
+  WebSocket support.
+
+* Fast Javascript Engine: this is not strictly a requirement, but
+  without a fast Javascript engine, noVNC might be painfully slow.
+
+* I maintain a more detailed browser compatibility list <a
+  href="https://github.com/kanaka/noVNC/wiki/Browser-support">here</a>.
+
+
+### Server Requirements
+
+Unless you are using a VNC server with support for WebSockets
+connections (such as [x11vnc/libvncserver](http://libvncserver.sourceforge.net/)),
+you need to use a WebSockets to TCP socket proxy. There is
+a python proxy included ('websockify').
+
+
+### Quick Start
+
+* Use the launch script to start a mini-webserver and the WebSockets
+  proxy (websockify). The `--vnc` option is used to specify the location of
+  a running VNC server:
+
+    `./utils/launch.sh --vnc localhost:5901`
+
+* Point your browser to the cut-and-paste URL that is output by the
+  launch script. Enter a password if the VNC server has one
+  configured. Hit the Connect button and enjoy!
+
+
+### Other Pages
+
+* [Advanced Usage](https://github.com/kanaka/noVNC/wiki/Advanced-usage). Generating an SSL
+  certificate, starting a VNC server, advanced websockify usage, etc.
+
+* [Integrating noVNC](https://github.com/kanaka/noVNC/wiki/Integration) into existing projects.
+
+* [Troubleshooting noVNC](https://github.com/kanaka/noVNC/wiki/Troubleshooting) problems.
+
+
+### Authors/Contributors
+
+* noVNC : Joel Martin (github.com/kanaka)
+    * New UI and Icons : Chris Gordon
+    * Original Logo : Michael Sersen
+    * tight encoding : Michael Tinglof (Mercuri.ca)
+
+* Included libraries:
+    * web-socket-js : Hiroshi Ichikawa (github.com/gimite/web-socket-js)
+    * as3crypto : Henri Torgemane (code.google.com/p/as3crypto)
+    * base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
+    * jsunzip : Erik Moller (github.com/operasoftware/jsunzip),
+    * tinflate : Joergen Ibsen (ibsensoftware.com)
+    * DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
+
+

+ 0 - 56
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/error-handler.js

@@ -1,56 +0,0 @@
-// NB: this should *not* be included as a module until we have
-// native support in the browsers, so that our error handler
-// can catch script-loading errors.
-
-
-(function(){
-    "use strict";
-
-    // Fallback for all uncought errors
-    function handleError (event, err) {
-        try {
-            var msg = document.getElementById('noVNC_fallback_errormsg');
-
-            // Only show the initial error
-            if (msg.hasChildNodes()) {
-                return false;
-            }
-
-            var div = document.createElement("div");
-            div.classList.add('noVNC_message');
-            div.appendChild(document.createTextNode(event.message));
-            msg.appendChild(div);
-
-            if (event.filename) {
-                div = document.createElement("div");
-                div.className = 'noVNC_location';
-                var text = event.filename;
-                if (event.lineno !== undefined) {
-                    text += ":" + event.lineno;
-                    if (event.colno !== undefined) {
-                        text += ":" + event.colno;
-                    }
-                }
-                div.appendChild(document.createTextNode(text));
-                msg.appendChild(div);
-            }
-
-            if (err && (err.stack !== undefined)) {
-                div = document.createElement("div");
-                div.className = 'noVNC_stack';
-                div.appendChild(document.createTextNode(err.stack));
-                msg.appendChild(div);
-            }
-
-            document.getElementById('noVNC_fallback_error')
-                .classList.add("noVNC_open");
-        } catch (exc) {
-            document.write("noVNC encountered an error.");
-        }
-        // Don't return true since this would prevent the error
-        // from being printed to the browser console.
-        return false;
-    }
-    window.addEventListener('error', function (evt) { handleError(evt, evt.error); });
-    window.addEventListener('unhandledrejection', function (evt) { handleError(evt.reason, evt.reason); });
-})();

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/alt.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="alt.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 9.9560547,1042.3329 -2.9394531,0 -0.4638672,1.3281 -1.8896485,0 2.7001953,-7.29 2.241211,0 2.7001958,7.29 -1.889649,0 -0.4589843,-1.3281 z m -2.4707031,-1.3526 1.9970703,0 -0.9960938,-2.9003 -1.0009765,2.9003 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5340" />
-      <path
-         d="m 13.188477,1036.0634 1.748046,0 0,7.5976 -1.748046,0 0,-7.5976 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5342" />
-      <path
-         d="m 18.535156,1036.6395 0,1.5528 1.801758,0 0,1.25 -1.801758,0 0,2.3193 q 0,0.3809 0.151367,0.5176 0.151368,0.1318 0.600586,0.1318 l 0.898438,0 0,1.25 -1.499024,0 q -1.035156,0 -1.469726,-0.4297 -0.429688,-0.4345 -0.429688,-1.4697 l 0,-2.3193 -0.86914,0 0,-1.25 0.86914,0 0,-1.5528 1.748047,0 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5344" />
-    </g>
-  </g>
-</svg>

+ 0 - 106
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/clipboard.svg

@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="clipboard.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.366606"
-     inkscape:cy="16.42981"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 9,6 6,6 C 5.4459889,6 5,6.4459889 5,7 l 0,13 c 0,0.554011 0.4459889,1 1,1 l 13,0 c 0.554011,0 1,-0.445989 1,-1 L 20,7 C 20,6.4459889 19.554011,6 19,6 l -3,0"
-       transform="translate(0,1027.3622)"
-       id="rect6083"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cssssssssc" />
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6085"
-       width="7"
-       height="4"
-       x="9"
-       y="1031.3622"
-       ry="1.00002" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1038.8622 7.9999998,0"
-       id="path6087"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1041.8622 3.9999998,0"
-       id="path6089"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1044.8622 5.9999998,0"
-       id="path6091"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 96
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/connect.svg

@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="connect.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="37.14834"
-     inkscape:cy="1.9525926"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       id="g5103"
-       transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-729.15757,315.8823)">
-      <path
-         sodipodi:nodetypes="cssssc"
-         inkscape:connector-curvature="0"
-         id="rect5096"
-         d="m 11,1040.3622 -5,0 c -1.108,0 -2,-0.892 -2,-2 l 0,-4 c 0,-1.108 0.892,-2 2,-2 l 5,0"
-         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         d="m 14,1032.3622 5,0 c 1.108,0 2,0.892 2,2 l 0,4 c 0,1.108 -0.892,2 -2,2 l -5,0"
-         id="path5099"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cssssc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path5101"
-         d="m 9,1036.3622 7,0"
-         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>

+ 0 - 96
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrl.svg

@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="ctrl.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 9.1210938,1043.1898 q -0.5175782,0.2686 -1.0791016,0.4053 -0.5615235,0.1367 -1.171875,0.1367 -1.8212891,0 -2.8857422,-1.0156 -1.0644531,-1.0205 -1.0644531,-2.7637 0,-1.748 1.0644531,-2.7637 1.0644531,-1.0205 2.8857422,-1.0205 0.6103515,0 1.171875,0.1368 0.5615234,0.1367 1.0791016,0.4052 l 0,1.5088 q -0.522461,-0.3564 -1.0302735,-0.5224 -0.5078125,-0.1661 -1.0693359,-0.1661 -1.0058594,0 -1.5820313,0.6446 -0.5761719,0.6445 -0.5761719,1.7773 0,1.1279 0.5761719,1.7725 0.5761719,0.6445 1.5820313,0.6445 0.5615234,0 1.0693359,-0.166 0.5078125,-0.166 1.0302735,-0.5225 l 0,1.5088 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5370" />
-      <path
-         d="m 12.514648,1036.5687 0,1.5528 1.801758,0 0,1.25 -1.801758,0 0,2.3193 q 0,0.3809 0.151368,0.5176 0.151367,0.1318 0.600586,0.1318 l 0.898437,0 0,1.25 -1.499023,0 q -1.035157,0 -1.469727,-0.4297 -0.429687,-0.4345 -0.429687,-1.4697 l 0,-2.3193 -0.8691411,0 0,-1.25 0.8691411,0 0,-1.5528 1.748046,0 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5372" />
-      <path
-         d="m 19.453125,1039.6107 q -0.229492,-0.1074 -0.458984,-0.1562 -0.22461,-0.054 -0.454102,-0.054 -0.673828,0 -1.040039,0.4345 -0.361328,0.4297 -0.361328,1.2354 l 0,2.5195 -1.748047,0 0,-5.4687 1.748047,0 0,0.8984 q 0.336914,-0.5371 0.771484,-0.7813 0.439453,-0.249 1.049805,-0.249 0.08789,0 0.19043,0.01 0.102539,0 0.297851,0.029 l 0.0049,1.582 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5374" />
-      <path
-         d="m 20.332031,1035.9926 1.748047,0 0,7.5976 -1.748047,0 0,-7.5976 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5376" />
-    </g>
-  </g>
-</svg>

+ 0 - 100
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrlaltdel.svg

@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="ctrlaltdel.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="8"
-     inkscape:cx="11.135667"
-     inkscape:cy="16.407428"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <rect
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5253"
-       width="5"
-       height="5.0000172"
-       x="16"
-       y="1031.3622"
-       ry="1.0000174" />
-    <rect
-       y="1043.3622"
-       x="4"
-       height="5.0000172"
-       width="5"
-       id="rect5255"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       ry="1.0000174" />
-    <rect
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5257"
-       width="5"
-       height="5.0000172"
-       x="13"
-       y="1043.3622"
-       ry="1.0000174" />
-  </g>
-</svg>

+ 0 - 94
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/disconnect.svg

@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="disconnect.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="25.05707"
-     inkscape:cy="11.594858"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       id="g5171"
-       transform="translate(-24.062499,-6.15775e-4)">
-      <path
-         id="path5110"
-         transform="translate(0,1027.3622)"
-         d="m 39.744141,3.4960938 c -0.769923,0 -1.539607,0.2915468 -2.121094,0.8730468 l -2.566406,2.5664063 1.414062,1.4140625 2.566406,-2.5664063 c 0.403974,-0.404 1.010089,-0.404 1.414063,0 l 2.828125,2.828125 c 0.40398,0.4039 0.403907,1.0101621 0,1.4140629 l -2.566406,2.566406 1.414062,1.414062 2.566406,-2.566406 c 1.163041,-1.1629 1.162968,-3.0791874 0,-4.2421874 L 41.865234,4.3691406 C 41.283747,3.7876406 40.514063,3.4960937 39.744141,3.4960938 Z M 39.017578,9.015625 a 1.0001,1.0001 0 0 0 -0.6875,0.3027344 l -0.445312,0.4453125 1.414062,1.4140621 0.445313,-0.445312 A 1.0001,1.0001 0 0 0 39.017578,9.015625 Z m -6.363281,0.7070312 a 1.0001,1.0001 0 0 0 -0.6875,0.3027348 L 28.431641,13.5625 c -1.163042,1.163 -1.16297,3.079187 0,4.242188 l 2.828125,2.828124 c 1.162974,1.163101 3.079213,1.163101 4.242187,0 l 3.535156,-3.535156 a 1.0001,1.0001 0 1 0 -1.414062,-1.414062 l -3.535156,3.535156 c -0.403974,0.404 -1.010089,0.404 -1.414063,0 l -2.828125,-2.828125 c -0.403981,-0.404 -0.403908,-1.010162 0,-1.414063 l 3.535156,-3.537109 A 1.0001,1.0001 0 0 0 32.654297,9.7226562 Z m 3.109375,2.1621098 -2.382813,2.384765 a 1.0001,1.0001 0 1 0 1.414063,1.414063 l 2.382812,-2.384766 -1.414062,-1.414062 z"
-         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
-         y="752.29541"
-         x="-712.31262"
-         height="18.000017"
-         width="3"
-         id="rect5116"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>

Разница между файлами не показана из-за своего большого размера
+ 0 - 71
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/drag.svg


+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/error.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="error.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="14.00357"
-     inkscape:cy="12.443398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 7 3 C 4.7839905 3 3 4.7839905 3 7 L 3 18 C 3 20.21601 4.7839905 22 7 22 L 18 22 C 20.21601 22 22 20.21601 22 18 L 22 7 C 22 4.7839905 20.21601 3 18 3 L 7 3 z M 7.6992188 6 A 1.6916875 1.6924297 0 0 1 8.9121094 6.5117188 L 12.5 10.101562 L 16.087891 6.5117188 A 1.6916875 1.6924297 0 0 1 17.251953 6 A 1.6916875 1.6924297 0 0 1 18.480469 8.90625 L 14.892578 12.496094 L 18.480469 16.085938 A 1.6916875 1.6924297 0 1 1 16.087891 18.478516 L 12.5 14.888672 L 8.9121094 18.478516 A 1.6916875 1.6924297 0 1 1 6.5214844 16.085938 L 10.109375 12.496094 L 6.5214844 8.90625 A 1.6916875 1.6924297 0 0 1 7.6992188 6 z "
-       transform="translate(0,1027.3622)"
-       id="rect4135" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/esc.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="esc.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="text5290"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 3.9331055,1036.1464 5.0732422,0 0,1.4209 -3.1933594,0 0,1.3574 3.0029297,0 0,1.4209 -3.0029297,0 0,1.6699 3.3007812,0 0,1.4209 -5.180664,0 0,-7.29 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5314" />
-      <path
-         d="m 14.963379,1038.1385 0,1.3282 q -0.561524,-0.2344 -1.083984,-0.3516 -0.522461,-0.1172 -0.986329,-0.1172 -0.498046,0 -0.742187,0.127 -0.239258,0.122 -0.239258,0.3808 0,0.21 0.180664,0.3223 0.185547,0.1123 0.65918,0.166 l 0.307617,0.044 q 1.342773,0.1709 1.806641,0.5615 0.463867,0.3906 0.463867,1.2256 0,0.874 -0.644531,1.3134 -0.644532,0.4395 -1.923829,0.4395 -0.541992,0 -1.123046,-0.088 -0.576172,-0.083 -1.186524,-0.2539 l 0,-1.3281 q 0.522461,0.2539 1.069336,0.3808 0.551758,0.127 1.118164,0.127 0.512695,0 0.771485,-0.1416 0.258789,-0.1416 0.258789,-0.4199 0,-0.2344 -0.180664,-0.3467 -0.175782,-0.1172 -0.708008,-0.1807 l -0.307617,-0.039 q -1.166993,-0.1465 -1.635743,-0.542 -0.46875,-0.3955 -0.46875,-1.2012 0,-0.8691 0.595703,-1.2891 0.595704,-0.4199 1.826172,-0.4199 0.483399,0 1.015625,0.073 0.532227,0.073 1.157227,0.2294 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5316" />
-      <path
-         d="m 21.066895,1038.1385 0,1.4258 q -0.356446,-0.2441 -0.717774,-0.3613 -0.356445,-0.1172 -0.742187,-0.1172 -0.732422,0 -1.142579,0.4297 -0.405273,0.4248 -0.405273,1.1914 0,0.7666 0.405273,1.1963 0.410157,0.4248 1.142579,0.4248 0.410156,0 0.776367,-0.1221 0.371094,-0.122 0.683594,-0.3613 l 0,1.4307 q -0.410157,0.1513 -0.834961,0.2246 -0.419922,0.078 -0.844727,0.078 -1.479492,0 -2.314453,-0.7568 -0.834961,-0.7618 -0.834961,-2.1143 0,-1.3525 0.834961,-2.1094 0.834961,-0.7617 2.314453,-0.7617 0.429688,0 0.844727,0.078 0.419921,0.073 0.834961,0.2246 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5318" />
-    </g>
-  </g>
-</svg>

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/expander.svg

@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="9"
-   height="10"
-   viewBox="0 0 9 10"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="expander.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.254834"
-     inkscape:cx="9.8737281"
-     inkscape:cy="6.4583132"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-object-midpoints="false"
-     inkscape:object-nodes="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1042.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 2.0800781,1042.3633 A 2.0002,2.0002 0 0 0 0,1044.3613 l 0,6 a 2.0002,2.0002 0 0 0 3.0292969,1.7168 l 5,-3 a 2.0002,2.0002 0 0 0 0,-3.4316 l -5,-3 a 2.0002,2.0002 0 0 0 -0.9492188,-0.2832 z"
-       id="path4138"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 93
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/fullscreen.svg

@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="fullscreen.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="16.400723"
-     inkscape:cy="15.083758"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5006"
-       width="17"
-       height="17.000017"
-       x="4"
-       y="1031.3622"
-       ry="3.0000174" />
-    <path
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
-       d="m 7.5,1044.8622 4,0 -1.5,-1.5 1.5,-1.5 -1,-1 -1.5,1.5 -1.5,-1.5 0,4 z"
-       id="path5017"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path5025"
-       d="m 17.5,1034.8622 -4,0 1.5,1.5 -1.5,1.5 1,1 1.5,-1.5 1.5,1.5 0,-4 z"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
-  </g>
-</svg>

+ 0 - 82
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle.svg

@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="5"
-   height="6"
-   viewBox="0 0 5 6"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="handle.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32"
-     inkscape:cx="1.3551778"
-     inkscape:cy="8.7800329"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1046.3622)">
-    <path
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 4.0000803,1049.3622 -3,-2 0,4 z"
-       id="path4247"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-  </g>
-</svg>

+ 0 - 172
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle_bg.svg

@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="15"
-   height="50"
-   viewBox="0 0 15 50"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="handle_bg.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="-10.001409"
-     inkscape:cy="24.512566"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1002.3622)">
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4249"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1008.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1013.8622"
-       x="9.5"
-       height="1.0000174"
-       width="1"
-       id="rect4255"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       ry="1.7382812e-05"
-       y="1008.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4261"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4263"
-       width="1"
-       height="1.0000174"
-       x="4.5"
-       y="1013.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1039.8622"
-       x="9.5"
-       height="1.0000174"
-       width="1"
-       id="rect4265"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4267"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1044.8622"
-       ry="1.7382812e-05" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4269"
-       width="1"
-       height="1.0000174"
-       x="4.5"
-       y="1039.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1044.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4271"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4273"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1018.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1018.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4275"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4277"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1034.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1034.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4279"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-  </g>
-</svg>

+ 0 - 42
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/Makefile

@@ -1,42 +0,0 @@
-ICONS := \
-	novnc-16x16.png \
-	novnc-24x24.png \
-	novnc-32x32.png \
-	novnc-48x48.png \
-	novnc-64x64.png
-
-ANDROID_LAUNCHER := \
-	novnc-48x48.png \
-	novnc-72x72.png \
-	novnc-96x96.png \
-	novnc-144x144.png \
-	novnc-192x192.png
-
-IPHONE_LAUNCHER := \
-	novnc-60x60.png \
-	novnc-120x120.png
-
-IPAD_LAUNCHER := \
-	novnc-76x76.png \
-	novnc-152x152.png
-
-ALL_ICONS := $(ICONS) $(ANDROID_LAUNCHER) $(IPHONE_LAUNCHER) $(IPAD_LAUNCHER)
-
-all: $(ALL_ICONS)
-
-novnc-16x16.png: novnc-icon-sm.svg
-	convert -density 90 \
-		-background transparent "$<" "$@"
-novnc-24x24.png: novnc-icon-sm.svg
-	convert -density 135 \
-		-background transparent "$<" "$@"
-novnc-32x32.png: novnc-icon-sm.svg
-	convert -density 180 \
-		-background transparent "$<" "$@"
-
-novnc-%.png: novnc-icon.svg
-	convert -density $$[`echo $* | cut -d x -f 1` * 90 / 48] \
-		-background transparent "$<" "$@"
-
-clean:
-	rm -f *.png

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-120x120.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-144x144.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-152x152.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-16x16.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-192x192.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-24x24.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-32x32.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-48x48.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-60x60.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-64x64.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-72x72.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-76x76.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-96x96.png


+ 0 - 163
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon-sm.svg

@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   viewBox="0 0 16 16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="novnc-icon-sm.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.254834"
-     inkscape:cx="9.722703"
-     inkscape:cy="5.5311896"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:object-nodes="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4169" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3621)">
-    <rect
-       style="opacity:1;fill:#494949;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4167"
-       width="16"
-       height="15.999992"
-       x="0"
-       y="1036.3622"
-       ry="2.6666584" />
-    <path
-       style="opacity:1;fill:#313131;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 2.6666667,1036.3621 C 1.1893373,1036.3621 0,1037.5515 0,1039.0288 l 0,10.6666 c 0,1.4774 1.1893373,2.6667 2.6666667,2.6667 l 4,0 C 11.837333,1052.3621 16,1046.7128 16,1039.6955 l 0,-0.6667 c 0,-1.4773 -1.189337,-2.6667 -2.666667,-2.6667 l -10.6666663,0 z"
-       id="rect4173"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4381">
-      <g
-         transform="translate(0.25,0.25)"
-         style="fill:#000000;fill-opacity:1"
-         id="g4365">
-        <g
-           style="fill:#000000;fill-opacity:1"
-           id="g4367">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4369"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 4.3289754,1039.3621 c 0.1846149,0 0.3419956,0.071 0.4716623,0.2121 C 4.933546,1039.7121 5,1039.8793 5,1040.0759 l 0,3.2862 -1,0 0,-2.964 c 0,-0.024 -0.011592,-0.036 -0.034038,-0.036 l -1.931924,0 C 2.011349,1040.3621 2,1040.3741 2,1040.3981 l 0,2.964 -1,0 0,-4 z"
-             sodipodi:nodetypes="scsccsssscccs" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4371"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 6.6710244,1039.3621 2.6579513,0 c 0.184775,0 0.3419957,0.071 0.471662,0.2121 C 9.933546,1039.7121 10,1039.8793 10,1040.0759 l 0,2.5724 c 0,0.1966 -0.066454,0.3655 -0.1993623,0.5069 -0.1296663,0.1379 -0.286887,0.2069 -0.471662,0.2069 l -2.6579513,0 c -0.184775,0 -0.3436164,-0.069 -0.4765247,-0.2069 C 6.0648334,1043.0138 6,1042.8449 6,1042.6483 l 0,-2.5724 c 0,-0.1966 0.064833,-0.3638 0.1944997,-0.5017 0.1329083,-0.1414 0.2917497,-0.2121 0.4765247,-0.2121 z m 2.2949386,1 -1.931926,0 C 7.011344,1040.3621 7,1040.3741 7,1040.3981 l 0,1.928 c 0,0.024 0.011347,0.036 0.034037,0.036 l 1.931926,0 c 0.02269,0 0.034037,-0.012 0.034037,-0.036 l 0,-1.928 c 0,-0.024 -0.011347,-0.036 -0.034037,-0.036 z"
-             sodipodi:nodetypes="sscsscsscsscssssssssss" />
-        </g>
-        <g
-           style="fill:#000000;fill-opacity:1"
-           id="g4373">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4375"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 3,1047.1121 1,-2.75 1,0 -1.5,4 -1,0 -1.5,-4 1,0 z"
-             sodipodi:nodetypes="cccccccc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4377"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 9,1046.8621 0,-2.5 1,0 0,4 -1,0 -2,-2.5 0,2.5 -1,0 0,-4 1,0 z"
-             sodipodi:nodetypes="ccccccccccc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4379"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 15,1045.3621 -2.96596,0 c -0.02269,0 -0.03404,0.012 -0.03404,0.036 l 0,1.928 c 0,0.024 0.01135,0.036 0.03404,0.036 l 2.96596,0 0,1 -3.324113,0 c -0.188017,0 -0.348479,-0.068 -0.481388,-0.2037 C 11.064833,1048.0192 11,1047.8511 11,1047.6542 l 0,-2.5842 c 0,-0.1969 0.06483,-0.3633 0.194499,-0.4991 0.132909,-0.1392 0.293371,-0.2088 0.481388,-0.2088 l 3.324113,0 z"
-             sodipodi:nodetypes="cssssccscsscscc" />
-        </g>
-      </g>
-      <g
-         id="g4356">
-        <g
-           id="g4347">
-          <path
-             sodipodi:nodetypes="scsccsssscccs"
-             d="m 4.3289754,1039.3621 c 0.1846149,0 0.3419956,0.071 0.4716623,0.2121 C 4.933546,1039.7121 5,1039.8793 5,1040.0759 l 0,3.2862 -1,0 0,-2.964 c 0,-0.024 -0.011592,-0.036 -0.034038,-0.036 l -1.931924,0 c -0.022689,0 -0.034038,0.012 -0.034038,0.036 l 0,2.964 -1,0 0,-4 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4143"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="sscsscsscsscssssssssss"
-             d="m 6.6710244,1039.3621 2.6579513,0 c 0.184775,0 0.3419957,0.071 0.471662,0.2121 C 9.933546,1039.7121 10,1039.8793 10,1040.0759 l 0,2.5724 c 0,0.1966 -0.066454,0.3655 -0.1993623,0.5069 -0.1296663,0.1379 -0.286887,0.2069 -0.471662,0.2069 l -2.6579513,0 c -0.184775,0 -0.3436164,-0.069 -0.4765247,-0.2069 C 6.0648334,1043.0138 6,1042.8449 6,1042.6483 l 0,-2.5724 c 0,-0.1966 0.064833,-0.3638 0.1944997,-0.5017 0.1329083,-0.1414 0.2917497,-0.2121 0.4765247,-0.2121 z m 2.2949386,1 -1.931926,0 C 7.011344,1040.3621 7,1040.3741 7,1040.3981 l 0,1.928 c 0,0.024 0.011347,0.036 0.034037,0.036 l 1.931926,0 c 0.02269,0 0.034037,-0.012 0.034037,-0.036 l 0,-1.928 c 0,-0.024 -0.011347,-0.036 -0.034037,-0.036 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4145"
-             inkscape:connector-curvature="0" />
-        </g>
-        <g
-           id="g4351">
-          <path
-             sodipodi:nodetypes="cccccccc"
-             d="m 3,1047.1121 1,-2.75 1,0 -1.5,4 -1,0 -1.5,-4 1,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4147"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="ccccccccccc"
-             d="m 9,1046.8621 0,-2.5 1,0 0,4 -1,0 -2,-2.5 0,2.5 -1,0 0,-4 1,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4149"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="cssssccscsscscc"
-             d="m 15,1045.3621 -2.96596,0 c -0.02269,0 -0.03404,0.012 -0.03404,0.036 l 0,1.928 c 0,0.024 0.01135,0.036 0.03404,0.036 l 2.96596,0 0,1 -3.324113,0 c -0.188017,0 -0.348479,-0.068 -0.481388,-0.2037 C 11.064833,1048.0192 11,1047.8511 11,1047.6542 l 0,-2.5842 c 0,-0.1969 0.06483,-0.3633 0.194499,-0.4991 0.132909,-0.1392 0.293371,-0.2088 0.481388,-0.2088 l 3.324113,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4151"
-             inkscape:connector-curvature="0" />
-        </g>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 163
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon.svg

@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48"
-   height="48"
-   viewBox="0 0 48 48.000001"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="novnc-icon.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="27.187245"
-     inkscape:cy="17.700974"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:object-nodes="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4169" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1004.3621)">
-    <rect
-       style="opacity:1;fill:#494949;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4167"
-       width="48"
-       height="48"
-       x="0"
-       y="1004.3621"
-       ry="7.9999785" />
-    <path
-       style="opacity:1;fill:#313131;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="m 8,1004.3621 c -4.4319881,0 -8,3.568 -8,8 l 0,32 c 0,4.432 3.5680119,8 8,8 l 12,0 c 15.512,0 28,-16.948 28,-38 l 0,-2 c 0,-4.432 -3.568012,-8 -8,-8 l -32,0 z"
-       id="rect4173"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4300"
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       transform="translate(0.5,0.5)">
-      <g
-         id="g4302"
-         style="fill:#000000;fill-opacity:1;stroke:none">
-        <path
-           sodipodi:nodetypes="scsccsssscccs"
-           d="m 11.986926,1016.3621 c 0.554325,0 1.025987,0.2121 1.414987,0.6362 0.398725,0.4138 0.600909,0.9155 0.598087,1.5052 l 0,6.8586 -2,0 0,-6.8914 c 0,-0.072 -0.03404,-0.1086 -0.102113,-0.1086 l -4.7957745,0 C 7.0340375,1018.3621 7,1018.3983 7,1018.4707 l 0,6.8914 -2,0 0,-9 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4304"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="sscsscsscsscssssssssss"
-           d="m 17.013073,1016.3621 4.973854,0 c 0.554325,0 1.025987,0.2121 1.414986,0.6362 0.398725,0.4138 0.598087,0.9155 0.598087,1.5052 l 0,4.7172 c 0,0.5897 -0.199362,1.0966 -0.598087,1.5207 -0.388999,0.4138 -0.860661,0.6207 -1.414986,0.6207 l -4.973854,0 c -0.554325,0 -1.030849,-0.2069 -1.429574,-0.6207 C 15.1945,1024.3173 15,1023.8104 15,1023.2207 l 0,-4.7172 c 0,-0.5897 0.1945,-1.0914 0.583499,-1.5052 0.398725,-0.4241 0.875249,-0.6362 1.429574,-0.6362 z m 4.884815,2 -4.795776,0 c -0.06808,0 -0.102112,0.036 -0.102112,0.1086 l 0,4.7828 c 0,0.072 0.03404,0.1086 0.102112,0.1086 l 4.795776,0 c 0.06807,0 0.102112,-0.036 0.102112,-0.1086 l 0,-4.7828 c 0,-0.072 -0.03404,-0.1086 -0.102112,-0.1086 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4306"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4308"
-         style="fill:#000000;fill-opacity:1;stroke:none">
-        <path
-           sodipodi:nodetypes="cccccccc"
-           d="m 12,1036.9177 4.768114,-8.5556 2.231886,0 -6,11 -2,0 -6,-11 2.2318854,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4310"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="ccccccccccc"
-           d="m 29,1036.3621 0,-8 2,0 0,11 -2,0 -7,-8 0,8 -2,0 0,-11 2,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4312"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cssssccscsscscc"
-           d="m 43,1030.3621 -8.897887,0 c -0.06808,0 -0.102113,0.036 -0.102113,0.1069 l 0,6.7862 c 0,0.071 0.03404,0.1069 0.102113,0.1069 l 8.897887,0 0,2 -8.972339,0 c -0.56405,0 -1.045437,-0.2037 -1.444162,-0.6111 C 32.1945,1038.3334 32,1037.8292 32,1037.2385 l 0,-6.7528 c 0,-0.5907 0.1945,-1.0898 0.583499,-1.4972 0.398725,-0.4176 0.880112,-0.6264 1.444162,-0.6264 l 8.972339,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4314"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g4291"
-       style="stroke:none">
-      <g
-         id="g4282"
-         style="stroke:none">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4143"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 11.986926,1016.3621 c 0.554325,0 1.025987,0.2121 1.414987,0.6362 0.398725,0.4138 0.600909,0.9155 0.598087,1.5052 l 0,6.8586 -2,0 0,-6.8914 c 0,-0.072 -0.03404,-0.1086 -0.102113,-0.1086 l -4.7957745,0 C 7.0340375,1018.3621 7,1018.3983 7,1018.4707 l 0,6.8914 -2,0 0,-9 z"
-           sodipodi:nodetypes="scsccsssscccs" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4145"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 17.013073,1016.3621 4.973854,0 c 0.554325,0 1.025987,0.2121 1.414986,0.6362 0.398725,0.4138 0.598087,0.9155 0.598087,1.5052 l 0,4.7172 c 0,0.5897 -0.199362,1.0966 -0.598087,1.5207 -0.388999,0.4138 -0.860661,0.6207 -1.414986,0.6207 l -4.973854,0 c -0.554325,0 -1.030849,-0.2069 -1.429574,-0.6207 C 15.1945,1024.3173 15,1023.8104 15,1023.2207 l 0,-4.7172 c 0,-0.5897 0.1945,-1.0914 0.583499,-1.5052 0.398725,-0.4241 0.875249,-0.6362 1.429574,-0.6362 z m 4.884815,2 -4.795776,0 c -0.06808,0 -0.102112,0.036 -0.102112,0.1086 l 0,4.7828 c 0,0.072 0.03404,0.1086 0.102112,0.1086 l 4.795776,0 c 0.06807,0 0.102112,-0.036 0.102112,-0.1086 l 0,-4.7828 c 0,-0.072 -0.03404,-0.1086 -0.102112,-0.1086 z"
-           sodipodi:nodetypes="sscsscsscsscssssssssss" />
-      </g>
-      <g
-         id="g4286"
-         style="stroke:none">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4147"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 12,1036.9177 4.768114,-8.5556 2.231886,0 -6,11 -2,0 -6,-11 2.2318854,0 z"
-           sodipodi:nodetypes="cccccccc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4149"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 29,1036.3621 0,-8 2,0 0,11 -2,0 -7,-8 0,8 -2,0 0,-11 2,0 z"
-           sodipodi:nodetypes="ccccccccccc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4151"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 43,1030.3621 -8.897887,0 c -0.06808,0 -0.102113,0.036 -0.102113,0.1069 l 0,6.7862 c 0,0.071 0.03404,0.1069 0.102113,0.1069 l 8.897887,0 0,2 -8.972339,0 c -0.56405,0 -1.045437,-0.2037 -1.444162,-0.6111 C 32.1945,1038.3334 32,1037.8292 32,1037.2385 l 0,-6.7528 c 0,-0.5907 0.1945,-1.0898 0.583499,-1.4972 0.398725,-0.4176 0.880112,-0.6264 1.444162,-0.6264 l 8.972339,0 z"
-           sodipodi:nodetypes="cssssccscsscscc" />
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/info.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="info.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.720838"
-     inkscape:cy="8.9111233"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 12.5 3 A 9.5 9.4999914 0 0 0 3 12.5 A 9.5 9.4999914 0 0 0 12.5 22 A 9.5 9.4999914 0 0 0 22 12.5 A 9.5 9.4999914 0 0 0 12.5 3 z M 12.5 5 A 1.5 1.5000087 0 0 1 14 6.5 A 1.5 1.5000087 0 0 1 12.5 8 A 1.5 1.5000087 0 0 1 11 6.5 A 1.5 1.5000087 0 0 1 12.5 5 z M 10.521484 8.9785156 L 12.521484 8.9785156 A 1.50015 1.50015 0 0 1 14.021484 10.478516 L 14.021484 15.972656 A 1.50015 1.50015 0 0 1 14.498047 18.894531 C 14.498047 18.894531 13.74301 19.228309 12.789062 18.912109 C 12.312092 18.754109 11.776235 18.366625 11.458984 17.828125 C 11.141734 17.289525 11.021484 16.668469 11.021484 15.980469 L 11.021484 11.980469 L 10.521484 11.980469 A 1.50015 1.50015 0 1 1 10.521484 8.9804688 L 10.521484 8.9785156 z "
-       transform="translate(0,1027.3622)"
-       id="path4136" />
-  </g>
-</svg>

Разница между файлами не показана из-за своего большого размера
+ 0 - 75
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/keyboard.svg


+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_left.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_left.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_middle.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_middle.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_none.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_none.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="23.160825"
-     inkscape:cy="13.208262"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_right.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_right.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 87
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/power.svg

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="power.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="9.3159849"
-     inkscape:cy="13.436208"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 9 6.8183594 C 6.3418164 8.1213032 4.5 10.849161 4.5 14 C 4.5 18.4065 8.0935666 22 12.5 22 C 16.906433 22 20.5 18.4065 20.5 14 C 20.5 10.849161 18.658184 8.1213032 16 6.8183594 L 16 9.125 C 17.514327 10.211757 18.5 11.984508 18.5 14 C 18.5 17.3256 15.825553 20 12.5 20 C 9.1744469 20 6.5 17.3256 6.5 14 C 6.5 11.984508 7.4856727 10.211757 9 9.125 L 9 6.8183594 z "
-       transform="translate(0,1027.3622)"
-       id="path6140" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 12.5,1031.8836 0,6.4786"
-       id="path6142"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>

+ 0 - 76
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/settings.svg

@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="settings.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.627417"
-     inkscape:cx="14.69683"
-     inkscape:cy="8.8039511"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 11 3 L 11 5.1601562 A 7.5 7.5 0 0 0 8.3671875 6.2460938 L 6.84375 4.7226562 L 4.7226562 6.84375 L 6.2480469 8.3691406 A 7.5 7.5 0 0 0 5.1523438 11 L 3 11 L 3 14 L 5.1601562 14 A 7.5 7.5 0 0 0 6.2460938 16.632812 L 4.7226562 18.15625 L 6.84375 20.277344 L 8.3691406 18.751953 A 7.5 7.5 0 0 0 11 19.847656 L 11 22 L 14 22 L 14 19.839844 A 7.5 7.5 0 0 0 16.632812 18.753906 L 18.15625 20.277344 L 20.277344 18.15625 L 18.751953 16.630859 A 7.5 7.5 0 0 0 19.847656 14 L 22 14 L 22 11 L 19.839844 11 A 7.5 7.5 0 0 0 18.753906 8.3671875 L 20.277344 6.84375 L 18.15625 4.7226562 L 16.630859 6.2480469 A 7.5 7.5 0 0 0 14 5.1523438 L 14 3 L 11 3 z M 12.5 10 A 2.5 2.5 0 0 1 15 12.5 A 2.5 2.5 0 0 1 12.5 15 A 2.5 2.5 0 0 1 10 12.5 A 2.5 2.5 0 0 1 12.5 10 z "
-       transform="translate(0,1027.3622)"
-       id="rect4967" />
-  </g>
-</svg>

+ 0 - 86
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/tab.svg

@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="tab.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="11.67335"
-     inkscape:cy="17.881696"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="m 3,1031.3622 0,8 2,0 0,-4 0,-4 -2,0 z m 2,4 4,4 0,-3 13,0 0,-2 -13,0 0,-3 -4,4 z"
-       id="rect5194"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path5211"
-       d="m 22,1048.3622 0,-8 -2,0 0,4 0,4 2,0 z m -2,-4 -4,-4 0,3 -13,0 0,2 13,0 0,3 4,-4 z"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 90
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/toggleextrakeys.svg

@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="extrakeys.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.234555"
-     inkscape:cy="9.9710826"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1031.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,8.9996 c 0,2.1987 1.8012876,4 4,4 l 9,0 c 2.198712,0 4,-1.8013 4,-4 l 0,-8.9996 c 0,-2.1987 -1.801288,-4 -4,-4 z m 0,2 9,0 c 1.125307,0 2,0.8747 2,2 l 0,7.0005 c 0,1.1253 -0.874693,2 -2,2 l -9,0 c -1.1253069,0 -2,-0.8747 -2,-2 l 0,-7.0005 c 0,-1.1253 0.8746931,-2 2,-2 z"
-       id="rect5006"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ssssssssssssssssss" />
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text4167"
-       transform="matrix(0.96021948,0,0,0.96021948,0.18921715,41.80659)">
-      <path
-         d="m 14.292969,1040.6791 -2.939453,0 -0.463868,1.3281 -1.889648,0 2.700195,-7.29 2.241211,0 2.700196,7.29 -1.889649,0 -0.458984,-1.3281 z m -2.470703,-1.3526 1.99707,0 -0.996094,-2.9004 -1.000976,2.9004 z"
-         id="path4172"
-         inkscape:connector-curvature="0" />
-    </g>
-  </g>
-</svg>

+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/warning.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="warning.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="16.457343"
-     inkscape:cy="12.179552"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 12.513672 3.0019531 C 11.751609 2.9919531 11.052563 3.4242687 10.710938 4.1054688 L 3.2109375 19.105469 C 2.5461937 20.435369 3.5132277 21.9999 5 22 L 20 22 C 21.486772 21.9999 22.453806 20.435369 21.789062 19.105469 L 14.289062 4.1054688 C 13.951849 3.4330688 13.265888 3.0066531 12.513672 3.0019531 z M 12.478516 6.9804688 A 1.50015 1.50015 0 0 1 14 8.5 L 14 14.5 A 1.50015 1.50015 0 1 1 11 14.5 L 11 8.5 A 1.50015 1.50015 0 0 1 12.478516 6.9804688 z M 12.5 17 A 1.5 1.5 0 0 1 14 18.5 A 1.5 1.5 0 0 1 12.5 20 A 1.5 1.5 0 0 1 11 18.5 A 1.5 1.5 0 0 1 12.5 17 z "
-       transform="translate(0,1027.3622)"
-       id="path4208" />
-  </g>
-</svg>

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/de.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Verbinden...",
-    "Disconnecting...": "Verbindung trennen...",
-    "Reconnecting...": "Verbindung wiederherstellen...",
-    "Internal error": "Interner Fehler",
-    "Must set host": "Richten Sie den Server ein",
-    "Connected (encrypted) to ": "Verbunden mit (verschlüsselt) ",
-    "Connected (unencrypted) to ": "Verbunden mit (unverschlüsselt) ",
-    "Something went wrong, connection is closed": "Etwas lief schief, Verbindung wurde getrennt",
-    "Disconnected": "Verbindung zum Server getrennt",
-    "New connection has been rejected with reason: ": "Verbindung wurde aus folgendem Grund abgelehnt: ",
-    "New connection has been rejected": "Verbindung wurde abgelehnt",
-    "Password is required": "Passwort ist erforderlich",
-    "noVNC encountered an error:": "Ein Fehler ist aufgetreten:",
-    "Hide/Show the control bar": "Kontrollleiste verstecken/anzeigen",
-    "Move/Drag Viewport": "Ansichtsfenster verschieben/ziehen",
-    "viewport drag": "Ansichtsfenster ziehen",
-    "Active Mouse Button": "Aktive Maustaste",
-    "No mousebutton": "Keine Maustaste",
-    "Left mousebutton": "Linke Maustaste",
-    "Middle mousebutton": "Mittlere Maustaste",
-    "Right mousebutton": "Rechte Maustaste",
-    "Keyboard": "Tastatur",
-    "Show Keyboard": "Tastatur anzeigen",
-    "Extra keys": "Zusatztasten",
-    "Show Extra Keys": "Zusatztasten anzeigen",
-    "Ctrl": "Strg",
-    "Toggle Ctrl": "Strg umschalten",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt umschalten",
-    "Send Tab": "Tab senden",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Escape senden",
-    "Ctrl+Alt+Del": "Strg+Alt+Entf",
-    "Send Ctrl-Alt-Del": "Strg+Alt+Entf senden",
-    "Shutdown/Reboot": "Herunterfahren/Neustarten",
-    "Shutdown/Reboot...": "Herunterfahren/Neustarten...",
-    "Power": "Energie",
-    "Shutdown": "Herunterfahren",
-    "Reboot": "Neustarten",
-    "Reset": "Zurücksetzen",
-    "Clipboard": "Zwischenablage",
-    "Clear": "Löschen",
-    "Fullscreen": "Vollbild",
-    "Settings": "Einstellungen",
-    "Shared Mode": "Geteilter Modus",
-    "View Only": "Nur betrachten",
-    "Clip to Window": "Auf Fenster begrenzen",
-    "Scaling Mode:": "Skalierungsmodus:",
-    "None": "Keiner",
-    "Local Scaling": "Lokales skalieren",
-    "Remote Resizing": "Serverseitiges skalieren",
-    "Advanced": "Erweitert",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Verschlüsselt",
-    "Host:": "Server:",
-    "Port:": "Port:",
-    "Path:": "Pfad:",
-    "Automatic Reconnect": "Automatisch wiederverbinden",
-    "Reconnect Delay (ms):": "Wiederverbindungsverzögerung (ms):",
-    "Logging:": "Protokollierung:",
-    "Disconnect": "Verbindung trennen",
-    "Connect": "Verbinden",
-    "Password:": "Passwort:",
-    "Cancel": "Abbrechen",
-    "Canvas not supported.": "Canvas nicht unterstützt."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/el.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Συνδέεται...",
-    "Disconnecting...": "Aποσυνδέεται...",
-    "Reconnecting...": "Επανασυνδέεται...",
-    "Internal error": "Εσωτερικό σφάλμα",
-    "Must set host": "Πρέπει να οριστεί ο διακομιστής",
-    "Connected (encrypted) to ": "Συνδέθηκε (κρυπτογραφημένα) με το ",
-    "Connected (unencrypted) to ": "Συνδέθηκε (μη κρυπτογραφημένα) με το ",
-    "Something went wrong, connection is closed": "Κάτι πήγε στραβά, η σύνδεση διακόπηκε",
-    "Disconnected": "Αποσυνδέθηκε",
-    "New connection has been rejected with reason: ": "Η νέα σύνδεση απορρίφθηκε διότι: ",
-    "New connection has been rejected": "Η νέα σύνδεση απορρίφθηκε ",
-    "Password is required": "Απαιτείται ο κωδικός πρόσβασης",
-    "noVNC encountered an error:": "το noVNC αντιμετώπισε ένα σφάλμα:",
-    "Hide/Show the control bar": "Απόκρυψη/Εμφάνιση γραμμής ελέγχου",
-    "Move/Drag Viewport": "Μετακίνηση/Σύρσιμο Θεατού πεδίου",
-    "viewport drag": "σύρσιμο θεατού πεδίου",
-    "Active Mouse Button": "Ενεργό Πλήκτρο Ποντικιού",
-    "No mousebutton": "Χωρίς Πλήκτρο Ποντικιού",
-    "Left mousebutton": "Αριστερό Πλήκτρο Ποντικιού",
-    "Middle mousebutton": "Μεσαίο Πλήκτρο Ποντικιού",
-    "Right mousebutton": "Δεξί Πλήκτρο Ποντικιού",
-    "Keyboard": "Πληκτρολόγιο",
-    "Show Keyboard": "Εμφάνιση Πληκτρολογίου",
-    "Extra keys": "Επιπλέον πλήκτρα",
-    "Show Extra Keys": "Εμφάνιση Επιπλέον Πλήκτρων",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Εναλλαγή Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Εναλλαγή Alt",
-    "Send Tab": "Αποστολή Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Αποστολή Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Αποστολή Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Κλείσιμο/Επανεκκίνηση",
-    "Shutdown/Reboot...": "Κλείσιμο/Επανεκκίνηση...",
-    "Power": "Απενεργοποίηση",
-    "Shutdown": "Κλείσιμο",
-    "Reboot": "Επανεκκίνηση",
-    "Reset": "Επαναφορά",
-    "Clipboard": "Πρόχειρο",
-    "Clear": "Καθάρισμα",
-    "Fullscreen": "Πλήρης Οθόνη",
-    "Settings": "Ρυθμίσεις",
-    "Shared Mode": "Κοινόχρηστη Λειτουργία",
-    "View Only": "Μόνο Θέαση",
-    "Clip to Window": "Αποκοπή στο όριο του Παράθυρου",
-    "Scaling Mode:": "Λειτουργία Κλιμάκωσης:",
-    "None": "Καμία",
-    "Local Scaling": "Τοπική Κλιμάκωση",
-    "Remote Resizing": "Απομακρυσμένη Αλλαγή μεγέθους",
-    "Advanced": "Για προχωρημένους",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Κρυπτογράφηση",
-    "Host:": "Όνομα διακομιστή:",
-    "Port:": "Πόρτα διακομιστή:",
-    "Path:": "Διαδρομή:",
-    "Automatic Reconnect": "Αυτόματη επανασύνδεση",
-    "Reconnect Delay (ms):": "Καθυστέρηση επανασύνδεσης (ms):",
-    "Logging:": "Καταγραφή:",
-    "Disconnect": "Αποσύνδεση",
-    "Connect": "Σύνδεση",
-    "Password:": "Κωδικός Πρόσβασης:",
-    "Cancel": "Ακύρωση",
-    "Canvas not supported.": "Δεν υποστηρίζεται το στοιχείο Canvas"
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/es.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Conectando...",
-    "Connected (encrypted) to ": "Conectado (con encriptación) a",
-    "Connected (unencrypted) to ": "Conectado (sin encriptación) a",
-    "Disconnecting...": "Desconectando...",
-    "Disconnected": "Desconectado",
-    "Must set host": "Debes configurar el host",
-    "Reconnecting...": "Reconectando...",
-    "Password is required": "Contraseña es obligatoria",
-    "Disconnect timeout": "Tiempo de desconexión agotado",
-    "noVNC encountered an error:": "noVNC ha encontrado un error:",
-    "Hide/Show the control bar": "Ocultar/Mostrar la barra de control",
-    "Move/Drag Viewport": "Mover/Arrastrar la ventana",
-    "viewport drag": "Arrastrar la ventana",
-    "Active Mouse Button": "Botón activo del ratón",
-    "No mousebutton": "Ningún botón del ratón",
-    "Left mousebutton": "Botón izquierdo del ratón",
-    "Middle mousebutton": "Botón central del ratón",
-    "Right mousebutton": "Botón derecho del ratón",
-    "Keyboard": "Teclado",
-    "Show Keyboard": "Mostrar teclado",
-    "Extra keys": "Teclas adicionales",
-    "Show Extra Keys": "Mostrar Teclas Adicionales",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Pulsar/Soltar Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Pulsar/Soltar Alt",
-    "Send Tab": "Enviar Tabulación",
-    "Tab": "Tabulación",
-    "Esc": "Esc",
-    "Send Escape": "Enviar Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Enviar Ctrl+Alt+Del",
-    "Shutdown/Reboot": "Apagar/Reiniciar",
-    "Shutdown/Reboot...": "Apagar/Reiniciar...",
-    "Power": "Encender",
-    "Shutdown": "Apagar",
-    "Reboot": "Reiniciar",
-    "Reset": "Restablecer",
-    "Clipboard": "Portapapeles",
-    "Clear": "Vaciar",
-    "Fullscreen": "Pantalla Completa",
-    "Settings": "Configuraciones",
-    "Shared Mode": "Modo Compartido",
-    "View Only": "Solo visualización",
-    "Clip to Window": "Recortar al tamaño de la ventana",
-    "Scaling Mode:": "Modo de escalado:",
-    "None": "Ninguno",
-    "Local Scaling": "Escalado Local",
-    "Local Downscaling": "Reducción de escala local",
-    "Remote Resizing": "Cambio de tamaño remoto",
-    "Advanced": "Avanzado",
-    "Local Cursor": "Cursor Local",
-    "Repeater ID:": "ID del Repetidor",
-    "WebSocket": "WebSocket",
-    "Encrypt": "",
-    "Host:": "Host",
-    "Port:": "Puesto",
-    "Path:": "Ruta",
-    "Automatic Reconnect": "Reconexión automática",
-    "Reconnect Delay (ms):": "Retraso en la reconexión (ms)",
-    "Logging:": "Logging",
-    "Disconnect": "Desconectar",
-    "Connect": "Conectar",
-    "Password:": "Contraseña",
-    "Cancel": "Cancelar",
-    "Canvas not supported.": "Canvas no está soportado"
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/nl.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Verbinden...",
-    "Connected (encrypted) to ": "Verbonden (versleuteld) met ",
-    "Connected (unencrypted) to ": "Verbonden (onversleuteld) met ",
-    "Disconnecting...": "Verbinding verbreken...",
-    "Disconnected": "Verbinding verbroken",
-    "Must set host": "Host moeten worden ingesteld",
-    "Reconnecting...": "Opnieuw verbinding maken...",
-    "Password is required": "Wachtwoord is vereist",
-    "Disconnect timeout": "Timeout tijdens verbreken van verbinding",
-    "noVNC encountered an error:": "noVNC heeft een fout bemerkt:",
-    "Hide/Show the control bar": "Verberg/Toon de bedieningsbalk",
-    "Move/Drag Viewport": "Verplaats/Versleep Kijkvenster",
-    "viewport drag": "kijkvenster slepen",
-    "Active Mouse Button": "Actieve Muisknop",
-    "No mousebutton": "Geen muisknop",
-    "Left mousebutton": "Linker muisknop",
-    "Middle mousebutton": "Middelste muisknop",
-    "Right mousebutton": "Rechter muisknop",
-    "Keyboard": "Toetsenbord",
-    "Show Keyboard": "Toon Toetsenbord",
-    "Extra keys": "Extra toetsen",
-    "Show Extra Keys": "Toon Extra Toetsen",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Ctrl aan/uitzetten",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt aan/uitzetten",
-    "Send Tab": "Tab Sturen",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Escape Sturen",
-    "Ctrl+Alt+Del": "Ctrl-Alt-Del",
-    "Send Ctrl-Alt-Del": "Ctrl-Alt-Del Sturen",
-    "Shutdown/Reboot": "Uitschakelen/Herstarten",
-    "Shutdown/Reboot...": "Uitschakelen/Herstarten...",
-    "Power": "Systeem",
-    "Shutdown": "Uitschakelen",
-    "Reboot": "Herstarten",
-    "Reset": "Resetten",
-    "Clipboard": "Klembord",
-    "Clear": "Wissen",
-    "Fullscreen": "Volledig Scherm",
-    "Settings": "Instellingen",
-    "Shared Mode": "Gedeelde Modus",
-    "View Only": "Alleen Kijken",
-    "Clip to Window": "Randen buiten venster afsnijden",
-    "Scaling Mode:": "Schaalmodus:",
-    "None": "Geen",
-    "Local Scaling": "Lokaal Schalen",
-    "Local Downscaling": "Lokaal Neerschalen",
-    "Remote Resizing": "Op Afstand Formaat Wijzigen",
-    "Advanced": "Geavanceerd",
-    "Local Cursor": "Lokale Cursor",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Versleutelen",
-    "Host:": "Host:",
-    "Port:": "Poort:",
-    "Path:": "Pad:",
-    "Automatic Reconnect": "Automatisch Opnieuw Verbinden",
-    "Reconnect Delay (ms):": "Vertraging voor Opnieuw Verbinden (ms):",
-    "Logging:": "Logmeldingen:",
-    "Disconnect": "Verbinding verbreken",
-    "Connect": "Verbinden",
-    "Password:": "Wachtwoord:",
-    "Cancel": "Annuleren",
-    "Canvas not supported.": "Canvas wordt niet ondersteund."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/pl.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Łączenie...",
-    "Disconnecting...": "Rozłączanie...",
-    "Reconnecting...": "Łączenie...",
-    "Internal error": "Błąd wewnętrzny",
-    "Must set host": "Host i port są wymagane",
-    "Connected (encrypted) to ": "Połączenie (szyfrowane) z ",
-    "Connected (unencrypted) to ": "Połączenie (nieszyfrowane) z ",
-    "Something went wrong, connection is closed": "Coś poszło źle, połączenie zostało zamknięte",
-    "Disconnected": "Rozłączony",
-    "New connection has been rejected with reason: ": "Nowe połączenie zostało odrzucone z powodu: ",
-    "New connection has been rejected": "Nowe połączenie zostało odrzucone",
-    "Password is required": "Hasło jest wymagane",
-    "noVNC encountered an error:": "noVNC napotkało błąd:",
-    "Hide/Show the control bar": "Pokaż/Ukryj pasek ustawień",
-    "Move/Drag Viewport": "Ruszaj/Przeciągaj Viewport",
-    "viewport drag": "przeciągnij viewport",
-    "Active Mouse Button": "Aktywny Przycisk Myszy",
-    "No mousebutton": "Brak przycisku myszy",
-    "Left mousebutton": "Lewy przycisk myszy",
-    "Middle mousebutton": "Środkowy przycisk myszy",
-    "Right mousebutton": "Prawy przycisk myszy",
-    "Keyboard": "Klawiatura",
-    "Show Keyboard": "Pokaż klawiaturę",
-    "Extra keys": "Przyciski dodatkowe",
-    "Show Extra Keys": "Pokaż przyciski dodatkowe",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Przełącz Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Przełącz Alt",
-    "Send Tab": "Wyślij Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Wyślij Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Wyślij Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Wyłącz/Uruchom ponownie",
-    "Shutdown/Reboot...": "Wyłącz/Uruchom ponownie...",
-    "Power": "Włączony",
-    "Shutdown": "Wyłącz",
-    "Reboot": "Uruchom ponownie",
-    "Reset": "Resetuj",
-    "Clipboard": "Schowek",
-    "Clear": "Wyczyść",
-    "Fullscreen": "Pełny ekran",
-    "Settings": "Ustawienia",
-    "Shared Mode": "Tryb Współdzielenia",
-    "View Only": "Tylko Podgląd",
-    "Clip to Window": "Przytnij do Okna",
-    "Scaling Mode:": "Tryb Skalowania:",
-    "None": "Brak",
-    "Local Scaling": "Skalowanie lokalne",
-    "Remote Resizing": "Skalowanie zdalne",
-    "Advanced": "Zaawansowane",
-    "Repeater ID:": "ID Repeatera:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Szyfrowanie",
-    "Host:": "Host:",
-    "Port:": "Port:",
-    "Path:": "Ścieżka:",
-    "Automatic Reconnect": "Automatycznie wznawiaj połączenie",
-    "Reconnect Delay (ms):": "Opóźnienie wznawiania (ms):",
-    "Logging:": "Poziom logowania:",
-    "Disconnect": "Rozłącz",
-    "Connect": "Połącz",
-    "Password:": "Hasło:",
-    "Cancel": "Anuluj",
-    "Canvas not supported.": "Element Canvas nie jest wspierany."
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/sv.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Ansluter...",
-    "Connected (encrypted) to ": "Ansluten (krypterat) till ",
-    "Connected (unencrypted) to ": "Ansluten (okrypterat) till ",
-    "Disconnecting...": "Kopplar ner...",
-    "Disconnected": "Frånkopplad",
-    "Must set host": "Du måste specifiera en värd",
-    "Reconnecting...": "Återansluter...",
-    "Password is required": "Lösenord krävs",
-    "Disconnect timeout": "Det tog för lång tid att koppla ner",
-    "noVNC encountered an error:": "noVNC stötte på ett problem:",
-    "Hide/Show the control bar": "Göm/Visa kontrollbaren",
-    "Move/Drag Viewport": "Flytta/Dra Vyn",
-    "viewport drag": "dra vy",
-    "Active Mouse Button": "Aktiv musknapp",
-    "No mousebutton": "Ingen musknapp",
-    "Left mousebutton": "Vänster musknapp",
-    "Middle mousebutton": "Mitten-musknapp",
-    "Right mousebutton": "Höger musknapp",
-    "Keyboard": "Tangentbord",
-    "Show Keyboard": "Visa Tangentbord",
-    "Extra keys": "Extraknappar",
-    "Show Extra Keys": "Visa Extraknappar",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Växla Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Växla Alt",
-    "Send Tab": "Skicka Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Skicka Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Skicka Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Stäng av/Boota om",
-    "Shutdown/Reboot...": "Stäng av/Boota om...",
-    "Power": "Ström",
-    "Shutdown": "Stäng av",
-    "Reboot": "Boota om",
-    "Reset": "Återställ",
-    "Clipboard": "Urklipp",
-    "Clear": "Rensa",
-    "Fullscreen": "Fullskärm",
-    "Settings": "Inställningar",
-    "Shared Mode": "Delat Läge",
-    "View Only": "Endast Visning",
-    "Clip to Window": "Begränsa till Fönster",
-    "Scaling Mode:": "Skalningsläge:",
-    "None": "Ingen",
-    "Local Scaling": "Lokal Skalning",
-    "Local Downscaling": "Lokal Nedskalning",
-    "Remote Resizing": "Ändra Storlek",
-    "Advanced": "Avancerat",
-    "Local Cursor": "Lokal Muspekare",
-    "Repeater ID:": "Repeater-ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Kryptera",
-    "Host:": "Värd:",
-    "Port:": "Port:",
-    "Path:": "Sökväg:",
-    "Automatic Reconnect": "Automatisk Återanslutning",
-    "Reconnect Delay (ms):": "Fördröjning (ms):",
-    "Logging:": "Loggning:",
-    "Disconnect": "Koppla från",
-    "Connect": "Anslut",
-    "Password:": "Lösenord:",
-    "Cancel": "Avbryt",
-    "Canvas not supported.": "Canvas stöds ej"
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/tr.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Bağlanıyor...",
-    "Disconnecting...": "Bağlantı kesiliyor...",
-    "Reconnecting...": "Yeniden bağlantı kuruluyor...",
-    "Internal error": "İç hata",
-    "Must set host": "Sunucuyu kur",
-    "Connected (encrypted) to ": "Bağlı (şifrelenmiş)",
-    "Connected (unencrypted) to ": "Bağlandı (şifrelenmemiş)",
-    "Something went wrong, connection is closed": "Bir şeyler ters gitti, bağlantı kesildi",
-    "Disconnected": "Bağlantı kesildi",
-    "New connection has been rejected with reason: ": "Bağlantı aşağıdaki nedenlerden dolayı reddedildi: ",
-    "New connection has been rejected": "Bağlantı reddedildi",
-    "Password is required": "Şifre gerekli",
-    "noVNC encountered an error:": "Bir hata oluştu:",
-    "Hide/Show the control bar": "Denetim masasını Gizle/Göster",
-    "Move/Drag Viewport": "Görünümü Taşı/Sürükle",
-    "viewport drag": "Görüntü penceresini sürükle",
-    "Active Mouse Button": "Aktif Fare Düğmesi",
-    "No mousebutton": "Fare düğmesi yok",
-    "Left mousebutton": "Farenin sol düğmesi",
-    "Middle mousebutton": "Farenin orta düğmesi",
-    "Right mousebutton": "Farenin sağ düğmesi",
-    "Keyboard": "Klavye",
-    "Show Keyboard": "Klavye Düzenini Göster",
-    "Extra keys": "Ekstra tuşlar",
-    "Show Extra Keys": "Ekstra tuşları göster",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Ctrl Değiştir ",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt Değiştir",
-    "Send Tab": "Sekme Gönder",
-    "Tab": "Sekme",
-    "Esc": "Esc",
-    "Send Escape": "Boşluk Gönder",
-    "Ctrl+Alt+Del": "Ctrl + Alt + Del",
-    "Send Ctrl-Alt-Del": "Ctrl-Alt-Del Gönder",
-    "Shutdown/Reboot": "Kapat/Yeniden Başlat",
-    "Shutdown/Reboot...": "Kapat/Yeniden Başlat...",
-    "Power": "Güç",
-    "Shutdown": "Kapat",
-    "Reboot": "Yeniden Başlat",
-    "Reset": "Sıfırla",
-    "Clipboard": "Pano",
-    "Clear": "Temizle",
-    "Fullscreen": "Tam Ekran",
-    "Settings": "Ayarlar",
-    "Shared Mode": "Paylaşım Modu",
-    "View Only": "Sadece Görüntüle",
-    "Clip to Window": "Pencereye Tıkla",
-    "Scaling Mode:": "Ölçekleme Modu:",
-    "None": "Bilinmeyen",
-    "Local Scaling": "Yerel Ölçeklendirme",
-    "Remote Resizing": "Uzaktan Yeniden Boyutlandırma",
-    "Advanced": "Gelişmiş",
-    "Repeater ID:": "Tekralayıcı ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Şifrele",
-    "Host:": "Ana makine:",
-    "Port:": "Port:",
-    "Path:": "Yol:",
-    "Automatic Reconnect": "Otomatik Yeniden Bağlan",
-    "Reconnect Delay (ms):": "Yeniden Bağlanma Süreci (ms):",
-    "Logging:": "Giriş yapılıyor:",
-    "Disconnect": "Bağlantıyı Kes",
-    "Connect": "Bağlan",
-    "Password:": "Parola:",
-    "Cancel": "Vazgeç",
-    "Canvas not supported.": "Tuval desteklenmiyor."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/zh.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "連線中...",
-    "Disconnecting...": "正在中斷連線...",
-    "Reconnecting...": "重新連線中...",
-    "Internal error": "內部錯誤",
-    "Must set host": "請提供主機資訊",
-    "Connected (encrypted) to ": "已加密連線到",
-    "Connected (unencrypted) to ": "未加密連線到",
-    "Something went wrong, connection is closed": "發生錯誤,連線已關閉",
-    "Failed to connect to server": "無法連線到伺服器",
-    "Disconnected": "連線已中斷",
-    "New connection has been rejected with reason: ": "連線被拒絕,原因:",
-    "New connection has been rejected": "連線被拒絕",
-    "Password is required": "請提供密碼",
-    "noVNC encountered an error:": "noVNC 遇到一個錯誤:",
-    "Hide/Show the control bar": "顯示/隱藏控制列",
-    "Move/Drag Viewport": "拖放顯示範圍",
-    "viewport drag": "顯示範圍拖放",
-    "Active Mouse Button": "啟用滑鼠按鍵",
-    "No mousebutton": "無滑鼠按鍵",
-    "Left mousebutton": "滑鼠左鍵",
-    "Middle mousebutton": "滑鼠中鍵",
-    "Right mousebutton": "滑鼠右鍵",
-    "Keyboard": "鍵盤",
-    "Show Keyboard": "顯示鍵盤",
-    "Extra keys": "額外按鍵",
-    "Show Extra Keys": "顯示額外按鍵",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "切換 Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "切換 Alt",
-    "Send Tab": "送出 Tab 鍵",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "送出 Escape 鍵",
-    "Ctrl+Alt+Del": "Ctrl-Alt-Del",
-    "Send Ctrl-Alt-Del": "送出 Ctrl-Alt-Del 快捷鍵",
-    "Shutdown/Reboot": "關機/重新啟動",
-    "Shutdown/Reboot...": "關機/重新啟動...",
-    "Power": "電源",
-    "Shutdown": "關機",
-    "Reboot": "重新啟動",
-    "Reset": "重設",
-    "Clipboard": "剪貼簿",
-    "Clear": "清除",
-    "Fullscreen": "全螢幕",
-    "Settings": "設定",
-    "Shared Mode": "分享模式",
-    "View Only": "僅檢視",
-    "Clip to Window": "限制/裁切視窗大小",
-    "Scaling Mode:": "縮放模式:",
-    "None": "無",
-    "Local Scaling": "本機縮放",
-    "Remote Resizing": "遠端調整大小",
-    "Advanced": "進階",
-    "Repeater ID:": "中繼站 ID",
-    "WebSocket": "WebSocket",
-    "Encrypt": "加密",
-    "Host:": "主機:",
-    "Port:": "連接埠:",
-    "Path:": "路徑:",
-    "Automatic Reconnect": "自動重新連線",
-    "Reconnect Delay (ms):": "重新連線間隔 (ms):",
-    "Logging:": "日誌級別:",
-    "Disconnect": "中斷連線",
-    "Connect": "連線",
-    "Password:": "密碼:",
-    "Cancel": "取消"
-}

+ 0 - 170
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/localization.js

@@ -1,170 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
-
-/*
- * Localization Utilities
- */
-
-export function Localizer() {
-    // Currently configured language
-    this.language = 'en';
-
-    // Current dictionary of translations
-    this.dictionary = undefined;
-}
-
-Localizer.prototype = {
-    // Configure suitable language based on user preferences
-    setup: function (supportedLanguages) {
-        var userLanguages;
-
-        this.language = 'en'; // Default: US English
-
-        /*
-         * Navigator.languages only available in Chrome (32+) and FireFox (32+)
-         * Fall back to navigator.language for other browsers
-         */
-        if (typeof window.navigator.languages == 'object') {
-            userLanguages = window.navigator.languages;
-        } else {
-            userLanguages = [navigator.language || navigator.userLanguage];
-        }
-
-        for (var i = 0;i < userLanguages.length;i++) {
-            var userLang = userLanguages[i];
-            userLang = userLang.toLowerCase();
-            userLang = userLang.replace("_", "-");
-            userLang = userLang.split("-");
-
-            // Built-in default?
-            if ((userLang[0] === 'en') &&
-                ((userLang[1] === undefined) || (userLang[1] === 'us'))) {
-                return;
-            }
-
-            // First pass: perfect match
-            for (var j = 0;j < supportedLanguages.length;j++) {
-                var supLang = supportedLanguages[j];
-                supLang = supLang.toLowerCase();
-                supLang = supLang.replace("_", "-");
-                supLang = supLang.split("-");
-
-                if (userLang[0] !== supLang[0])
-                    continue;
-                if (userLang[1] !== supLang[1])
-                    continue;
-
-                this.language = supportedLanguages[j];
-                return;
-            }
-
-            // Second pass: fallback
-            for (var j = 0;j < supportedLanguages.length;j++) {
-                supLang = supportedLanguages[j];
-                supLang = supLang.toLowerCase();
-                supLang = supLang.replace("_", "-");
-                supLang = supLang.split("-");
-
-                if (userLang[0] !== supLang[0])
-                    continue;
-                if (supLang[1] !== undefined)
-                    continue;
-
-                this.language = supportedLanguages[j];
-                return;
-            }
-        }
-    },
-
-    // Retrieve localised text
-    get: function (id) {
-        if (typeof this.dictionary !== 'undefined' && this.dictionary[id]) {
-            return this.dictionary[id];
-        } else {
-            return id;
-        }
-    },
-
-    // Traverses the DOM and translates relevant fields
-    // See https://html.spec.whatwg.org/multipage/dom.html#attr-translate
-    translateDOM: function () {
-        var self = this;
-        function process(elem, enabled) {
-            function isAnyOf(searchElement, items) {
-                return items.indexOf(searchElement) !== -1;
-            }
-
-            function translateAttribute(elem, attr) {
-                var str = elem.getAttribute(attr);
-                str = self.get(str);
-                elem.setAttribute(attr, str);
-            }
-
-            function translateTextNode(node) {
-                var str = node.data.trim();
-                str = self.get(str);
-                node.data = str;
-            }
-
-            if (elem.hasAttribute("translate")) {
-                if (isAnyOf(elem.getAttribute("translate"), ["", "yes"])) {
-                    enabled = true;
-                } else if (isAnyOf(elem.getAttribute("translate"), ["no"])) {
-                    enabled = false;
-                }
-            }
-
-            if (enabled) {
-                if (elem.hasAttribute("abbr") &&
-                    elem.tagName === "TH") {
-                    translateAttribute(elem, "abbr");
-                }
-                if (elem.hasAttribute("alt") &&
-                    isAnyOf(elem.tagName, ["AREA", "IMG", "INPUT"])) {
-                    translateAttribute(elem, "alt");
-                }
-                if (elem.hasAttribute("download") &&
-                    isAnyOf(elem.tagName, ["A", "AREA"])) {
-                    translateAttribute(elem, "download");
-                }
-                if (elem.hasAttribute("label") &&
-                    isAnyOf(elem.tagName, ["MENUITEM", "MENU", "OPTGROUP",
-                                   "OPTION", "TRACK"])) {
-                    translateAttribute(elem, "label");
-                }
-                // FIXME: Should update "lang"
-                if (elem.hasAttribute("placeholder") &&
-                    isAnyOf(elem.tagName, ["INPUT", "TEXTAREA"])) {
-                    translateAttribute(elem, "placeholder");
-                }
-                if (elem.hasAttribute("title")) {
-                    translateAttribute(elem, "title");
-                }
-                if (elem.hasAttribute("value") &&
-                    elem.tagName === "INPUT" &&
-                    isAnyOf(elem.getAttribute("type"), ["reset", "button", "submit"])) {
-                    translateAttribute(elem, "value");
-                }
-            }
-
-            for (var i = 0;i < elem.childNodes.length;i++) {
-                var node = elem.childNodes[i];
-                if (node.nodeType === node.ELEMENT_NODE) {
-                    process(node, enabled);
-                } else if (node.nodeType === node.TEXT_NODE && enabled) {
-                    translateTextNode(node);
-                }
-            }
-        }
-
-        process(document.body, true);
-    },
-};
-
-export var l10n = new Localizer();
-export default l10n.get.bind(l10n);

+ 0 - 4
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/CREDITS

@@ -1,4 +0,0 @@
-bell
-        Copyright: Dr. Richard Boulanger et al
-        URL: http://www.archive.org/details/Berklee44v12
-        License: CC-BY Attribution 3.0 Unported

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/bell.mp3


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/sounds/bell.oga


+ 0 - 902
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/styles/base.css

@@ -1,902 +0,0 @@
-/*
- * noVNC base CSS
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2016 Samuel Mannehed for Cendio AB
- * Copyright (C) 2016 Pierre Ossman for Cendio AB
- * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
- * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
- */
-
-/*
- * Z index layers:
- *
- * 0: Main screen
- * 10: Control bar
- * 50: Transition blocker
- * 60: Connection popups
- * 100: Status bar
- * ...
- * 1000: Javascript crash
- * ...
- * 10000: Max (used for polyfills)
- */
-
-body {
-  margin:0;
-  padding:0;
-  font-family: Helvetica;
-  /*Background image with light grey curve.*/
-  background-color:#494949;
-  background-repeat:no-repeat;
-  background-position:right bottom;
-  height:100%;
-  touch-action: none;
-}
-
-html {
-  height:100%;
-}
-
-.noVNC_only_touch.noVNC_hidden {
-  display: none;
-}
-
-.noVNC_disabled {
-  color: rgb(128, 128, 128);
-}
-
-/* ----------------------------------------
- * Spinner
- * ----------------------------------------
- */
-
-.noVNC_spinner {
-  position: relative;
-}
-.noVNC_spinner, .noVNC_spinner::before, .noVNC_spinner::after {
-  width: 10px;
-  height: 10px;
-  border-radius: 2px;
-  box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
-  animation: noVNC_spinner 1.0s linear infinite;
-}
-.noVNC_spinner::before {
-  content: "";
-  position: absolute;
-  left: 0px;
-  top: 0px;
-  animation-delay: -0.1s;
-}
-.noVNC_spinner::after {
-  content: "";
-  position: absolute;
-  top: 0px;
-  left: 0px;
-  animation-delay: 0.1s;
-}
-@keyframes noVNC_spinner {
-  0% { box-shadow: -60px 10px 0 rgba(255, 255, 255, 0); width: 20px; }
-  25% { box-shadow: 20px 10px 0 rgba(255, 255, 255, 1); width: 10px; }
-  50% { box-shadow: 60px 10px 0 rgba(255, 255, 255, 0); width: 10px; }
-}
-
-/* ----------------------------------------
- * Input Elements
- * ----------------------------------------
- */
-
-input[type=input], input[type=password], input[type=number],
-input:not([type]), textarea {
-  /* Disable default rendering */
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  background: none;
-
-  margin: 2px;
-  padding: 2px;
-  border: 1px solid rgb(192, 192, 192);
-  border-radius: 5px;
-  color: black;
-  background: linear-gradient(to top, rgb(255, 255, 255) 80%, rgb(240, 240, 240));
-}
-
-input[type=button], input[type=submit], select {
-  /* Disable default rendering */
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  background: none;
-
-  margin: 2px;
-  padding: 2px;
-  border: 1px solid rgb(192, 192, 192);
-  border-bottom-width: 2px;
-  border-radius: 5px;
-  color: black;
-  background: linear-gradient(to top, rgb(255, 255, 255), rgb(240, 240, 240));
-
-  /* This avoids it jumping around when :active */
-  vertical-align: middle;
-}
-
-input[type=button], input[type=submit] {
-  padding-left: 20px;
-  padding-right: 20px;
-}
-
-option {
-  color: black;
-  background: white;
-}
-
-input[type=input]:focus, input[type=password]:focus,
-input:not([type]):focus, input[type=button]:focus,
-input[type=submit]:focus,
-textarea:focus, select:focus {
-  box-shadow: 0px 0px 3px rgba(74, 144, 217, 0.5);
-  border-color: rgb(74, 144, 217);
-  outline: none;
-}
-
-input[type=button]::-moz-focus-inner,
-input[type=submit]::-moz-focus-inner {
-  border: none;
-}
-
-input[type=input]:disabled, input[type=password]:disabled,
-input:not([type]):disabled, input[type=button]:disabled,
-input[type=submit]:disabled, input[type=number]:disabled,
-textarea:disabled, select:disabled {
-  color: rgb(128, 128, 128);
-  background: rgb(240, 240, 240);
-}
-
-input[type=button]:active, input[type=submit]:active,
-select:active {
-  border-bottom-width: 1px;
-  margin-top: 3px;
-}
-
-:root:not(.noVNC_touch) input[type=button]:hover:not(:disabled),
-:root:not(.noVNC_touch) input[type=submit]:hover:not(:disabled),
-:root:not(.noVNC_touch) select:hover:not(:disabled) {
-  background: linear-gradient(to top, rgb(255, 255, 255), rgb(250, 250, 250));
-}
-
-/* ----------------------------------------
- * WebKit centering hacks
- * ----------------------------------------
- */
-
-.noVNC_center {
-  /*
-   * This is a workaround because webkit misrenders transforms and
-   * uses non-integer coordinates, resulting in blurry content.
-   * Ideally we'd use "top: 50%; transform: translateY(-50%);" on
-   * the objects instead.
-   */
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  pointer-events: none;
-}
-.noVNC_center > * {
-  pointer-events: auto;
-}
-.noVNC_vcenter {
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  position: fixed;
-  top: 0;
-  left: 0;
-  height: 100%;
-  pointer-events: none;
-}
-.noVNC_vcenter > * {
-  pointer-events: auto;
-}
-
-/* ----------------------------------------
- * Layering
- * ----------------------------------------
- */
-
-.noVNC_connect_layer {
-  z-index: 60;
-}
-
-/* ----------------------------------------
- * Fallback error
- * ----------------------------------------
- */
-
-#noVNC_fallback_error {
-  z-index: 1000;
-  visibility: hidden;
-}
-#noVNC_fallback_error.noVNC_open {
-  visibility: visible;
-}
-
-#noVNC_fallback_error > div {
-  max-width: 90%;
-  padding: 15px;
-
-  transition: 0.5s ease-in-out;
-
-  transform: translateY(-50px);
-  opacity: 0;
-
-  text-align: center;
-  font-weight: bold;
-  color: #fff;
-
-  border-radius: 10px;
-  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
-  background: rgba(200,55,55,0.8);
-}
-#noVNC_fallback_error.noVNC_open > div {
-  transform: translateY(0);
-  opacity: 1;
-}
-
-#noVNC_fallback_errormsg {
-  font-weight: normal;
-}
-
-#noVNC_fallback_errormsg .noVNC_message {
-  display: inline-block;
-  text-align: left;
-  font-family: monospace;
-  white-space: pre-wrap;
-}
-
-#noVNC_fallback_error .noVNC_location {
-  font-style: italic;
-  font-size: 0.8em;
-  color: rgba(255, 255, 255, 0.8);
-}
-
-#noVNC_fallback_error .noVNC_stack {
-  max-height: 50vh;
-  padding: 10px;
-  margin: 10px;
-  font-size: 0.8em;
-  text-align: left;
-  font-family: monospace;
-  white-space: pre;
-  border: 1px solid rgba(0, 0, 0, 0.5);
-  background: rgba(0, 0, 0, 0.2);
-  overflow: auto;
-}
-
-/* ----------------------------------------
- * Control Bar
- * ----------------------------------------
- */
-
-#noVNC_control_bar_anchor {
-  /* The anchor is needed to get z-stacking to work */
-  position: fixed;
-  z-index: 10;
-
-  transition: 0.5s ease-in-out;
-
-  /* Edge misrenders animations wihthout this */
-  transform: translateX(0);
-}
-:root.noVNC_connected #noVNC_control_bar_anchor.noVNC_idle {
-  opacity: 0.8;
-}
-#noVNC_control_bar_anchor.noVNC_right {
-  left: auto;
-  right: 0;
-}
-
-#noVNC_control_bar {
-  position: relative;
-  left: -100%;
-
-  transition: 0.5s ease-in-out;
-
-  background-color: rgb(110, 132, 163);
-  border-radius: 0 10px 10px 0;
-
-}
-#noVNC_control_bar.noVNC_open {
-  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
-  left: 0;
-}
-#noVNC_control_bar::before {
-  /* This extra element is to get a proper shadow */
-  content: "";
-  position: absolute;
-  z-index: -1;
-  height: 100%;
-  width: 30px;
-  left: -30px;
-  transition: box-shadow 0.5s ease-in-out;
-}
-#noVNC_control_bar.noVNC_open::before {
-  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
-}
-.noVNC_right #noVNC_control_bar {
-  left: 100%;
-  border-radius: 10px 0 0 10px;
-}
-.noVNC_right #noVNC_control_bar.noVNC_open {
-  left: 0;
-}
-.noVNC_right #noVNC_control_bar::before {
-  visibility: hidden;
-}
-
-#noVNC_control_bar_handle {
-  position: absolute;
-  left: -15px;
-  top: 0;
-  transform: translateY(35px);
-  width: calc(100% + 30px);
-  height: 50px;
-  z-index: -1;
-  cursor: pointer;
-  border-radius: 5px;
-  background-color: rgb(83, 99, 122);
-  background-image: url("../images/handle_bg.svg");
-  background-repeat: no-repeat;
-  background-position: right;
-  box-shadow: 3px 3px 0px rgba(0, 0, 0, 0.5);
-}
-#noVNC_control_bar_handle:after {
-  content: "";
-  transition: transform 0.5s ease-in-out;
-  background: url("../images/handle.svg");
-  position: absolute;
-  top: 22px; /* (50px-6px)/2 */
-  right: 5px;
-  width: 5px;
-  height: 6px;
-}
-#noVNC_control_bar.noVNC_open #noVNC_control_bar_handle:after {
-  transform: translateX(1px) rotate(180deg);
-}
-:root:not(.noVNC_connected) #noVNC_control_bar_handle {
-  display: none;
-}
-.noVNC_right #noVNC_control_bar_handle {
-  background-position: left;
-}
-.noVNC_right #noVNC_control_bar_handle:after {
-  left: 5px;
-  right: 0;
-  transform: translateX(1px) rotate(180deg);
-}
-.noVNC_right #noVNC_control_bar.noVNC_open #noVNC_control_bar_handle:after {
-  transform: none;
-}
-#noVNC_control_bar_handle div {
-  position: absolute;
-  right: -35px;
-  top: 0;
-  width: 50px;
-  height: 50px;
-}
-:root:not(.noVNC_touch) #noVNC_control_bar_handle div {
-  display: none;
-}
-.noVNC_right #noVNC_control_bar_handle div {
-  left: -35px;
-  right: auto;
-}
-
-#noVNC_control_bar .noVNC_scroll {
-  max-height: 100vh; /* Chrome is buggy with 100% */
-  overflow-x: hidden;
-  overflow-y: auto;
-  padding: 0 10px 0 5px;
-}
-.noVNC_right #noVNC_control_bar .noVNC_scroll {
-  padding: 0 5px 0 10px;
-}
-
-/* Control bar hint */
-#noVNC_control_bar_hint {
-  position: fixed;
-  left: calc(100vw - 50px);
-  right: auto;
-  top: 50%;
-  transform: translateY(-50%) scale(0);
-  width: 100px;
-  height: 50%;
-  max-height: 600px;
-
-  visibility: hidden;
-  opacity: 0;
-  transition: 0.2s ease-in-out;
-  background: transparent;
-  box-shadow: 0 0 10px black, inset 0 0 10px 10px rgba(110, 132, 163, 0.8);
-  border-radius: 10px;
-  transition-delay: 0s;
-}
-#noVNC_control_bar_anchor.noVNC_right #noVNC_control_bar_hint{
-  left: auto;
-  right: calc(100vw - 50px);
-}
-#noVNC_control_bar_hint.noVNC_active {
-  visibility: visible;
-  opacity: 1;
-  transition-delay: 0.2s;
-  transform: translateY(-50%) scale(1);
-}
-
-/* General button style */
-.noVNC_button {
-  display: block;
-  padding: 4px 4px;
-  margin: 10px 0;
-  vertical-align: middle;
-  border:1px solid rgba(255, 255, 255, 0.2);
-  border-radius: 6px;
-}
-.noVNC_button.noVNC_selected {
-  border-color: rgba(0, 0, 0, 0.8);
-  background: rgba(0, 0, 0, 0.5);
-}
-.noVNC_button:disabled {
-  opacity: 0.4;
-}
-.noVNC_button:focus {
-  outline: none;
-}
-.noVNC_button:active {
-  padding-top: 5px;
-  padding-bottom: 3px;
-}
-/* Android browsers don't properly update hover state if touch events
- * are intercepted, but focus should be safe to display */
-:root:not(.noVNC_touch) .noVNC_button.noVNC_selected:hover,
-.noVNC_button.noVNC_selected:focus {
-  border-color: rgba(0, 0, 0, 0.4);
-  background: rgba(0, 0, 0, 0.2);
-}
-:root:not(.noVNC_touch) .noVNC_button:hover,
-.noVNC_button:focus {
-  background: rgba(255, 255, 255, 0.2);
-}
-.noVNC_button.noVNC_hidden {
-  display: none;
-}
-
-/* Panels */
-.noVNC_panel {
-  transform: translateX(25px);
-
-  transition: 0.5s ease-in-out;
-
-  max-height: 100vh; /* Chrome is buggy with 100% */
-  overflow-x: hidden;
-  overflow-y: auto;
-
-  visibility: hidden;
-  opacity: 0;
-
-  padding: 15px;
-
-  background: #fff;
-  border-radius: 10px;
-  color: #000;
-  border: 2px solid #E0E0E0;
-  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
-}
-.noVNC_panel.noVNC_open {
-  visibility: visible;
-  opacity: 1;
-  transform: translateX(75px);
-}
-.noVNC_right .noVNC_vcenter {
-  left: auto;
-  right: 0;
-}
-.noVNC_right .noVNC_panel {
-  transform: translateX(-25px);
-}
-.noVNC_right .noVNC_panel.noVNC_open {
-  transform: translateX(-75px);
-}
-
-.noVNC_panel hr {
-  border: none;
-  border-top: 1px solid rgb(192, 192, 192);
-}
-
-.noVNC_panel label {
-  display: block;
-  white-space: nowrap;
-}
-
-.noVNC_panel .noVNC_heading {
-  background-color: rgb(110, 132, 163);
-  border-radius: 5px;
-  padding: 5px;
-  /* Compensate for padding in image */
-  padding-right: 8px;
-  color: white;
-  font-size: 20px;
-  margin-bottom: 10px;
-  white-space: nowrap;
-}
-.noVNC_panel .noVNC_heading img {
-  vertical-align: bottom;
-}
-
-.noVNC_submit {
-  float: right;
-}
-
-/* Expanders */
-.noVNC_expander {
-  cursor: pointer;
-}
-.noVNC_expander::before {
-  content: url("../images/expander.svg");
-  display: inline-block;
-  margin-right: 5px;
-  transition: 0.2s ease-in-out;
-}
-.noVNC_expander.noVNC_open::before {
-  transform: rotateZ(90deg);
-}
-.noVNC_expander ~ * {
-  margin: 5px;
-  margin-left: 10px;
-  padding: 5px;
-  background: rgba(0, 0, 0, 0.05);
-  border-radius: 5px;
-}
-.noVNC_expander:not(.noVNC_open) ~ * {
-  display: none;
-}
-
-/* Control bar content */
-
-#noVNC_control_bar .noVNC_logo {
-  font-size: 13px;
-}
-
-:root:not(.noVNC_connected) #noVNC_view_drag_button {
-  display: none;
-}
-
-/* noVNC Touch Device only buttons */
-:root:not(.noVNC_connected) #noVNC_mobile_buttons {
-  display: none;
-}
-:root:not(.noVNC_touch) #noVNC_mobile_buttons {
-  display: none;
-}
-
-/* Extra manual keys */
-:root:not(.noVNC_connected) #noVNC_extra_keys {
-  display: none;
-}
-
-#noVNC_modifiers {
-  background-color: rgb(92, 92, 92);
-  border: none;
-  padding: 0 10px;
-}
-
-/* Shutdown/Reboot */
-:root:not(.noVNC_connected) #noVNC_power_button {
-  display: none;
-}
-#noVNC_power {
-}
-#noVNC_power_buttons {
-  display: none;
-}
-
-#noVNC_power input[type=button] {
-  width: 100%;
-}
-
-/* Clipboard */
-:root:not(.noVNC_connected) #noVNC_clipboard_button {
-  display: none;
-}
-#noVNC_clipboard {
-  /* Full screen, minus padding and left and right margins */
-  max-width: calc(100vw - 2*15px - 75px - 25px);
-}
-#noVNC_clipboard_text {
-  width: 500px;
-  max-width: 100%;
-}
-
-/* Settings */
-#noVNC_settings {
-}
-#noVNC_settings ul {
-  list-style: none;
-  margin: 0px;
-  padding: 0px;
-}
-#noVNC_setting_port {
-  width: 80px;
-}
-#noVNC_setting_path {
-  width: 100px;
-}
-
-/* Connection Controls */
-:root:not(.noVNC_connected) #noVNC_disconnect_button {
-  display: none;
-}
-
-/* ----------------------------------------
- * Status Dialog
- * ----------------------------------------
- */
-
-#noVNC_status {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  z-index: 100;
-  transform: translateY(-100%);
-
-  cursor: pointer;
-
-  transition: 0.5s ease-in-out;
-
-  visibility: hidden;
-  opacity: 0;
-
-  padding: 5px;
-
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  align-content: center;
-
-  line-height: 25px;
-  word-wrap: break-word;
-  color: #fff;
-
-  border-bottom: 1px solid rgba(0, 0, 0, 0.9);
-}
-#noVNC_status.noVNC_open {
-  transform: translateY(0);
-  visibility: visible;
-  opacity: 1;
-}
-
-#noVNC_status::before {
-  content: "";
-  display: inline-block;
-  width: 25px;
-  height: 25px;
-  margin-right: 5px;
-}
-
-#noVNC_status.noVNC_status_normal {
-  background: rgba(128,128,128,0.9);
-}
-#noVNC_status.noVNC_status_normal::before {
-  content: url("../images/info.svg") " ";
-}
-#noVNC_status.noVNC_status_error {
-  background: rgba(200,55,55,0.9);
-}
-#noVNC_status.noVNC_status_error::before {
-  content: url("../images/error.svg") " ";
-}
-#noVNC_status.noVNC_status_warn {
-  background: rgba(180,180,30,0.9);
-}
-#noVNC_status.noVNC_status_warn::before {
-  content: url("../images/warning.svg") " ";
-}
-
-/* ----------------------------------------
- * Connect Dialog
- * ----------------------------------------
- */
-
-#noVNC_connect_dlg {
-  transition: 0.5s ease-in-out;
-
-  transform: scale(0, 0);
-  visibility: hidden;
-  opacity: 0;
-}
-#noVNC_connect_dlg.noVNC_open {
-  transform: scale(1, 1);
-  visibility: visible;
-  opacity: 1;
-}
-#noVNC_connect_dlg .noVNC_logo {
-  transition: 0.5s ease-in-out;
-  padding: 10px;
-  margin-bottom: 10px;
-
-  font-size: 80px;
-  text-align: center;
-
-  border-radius: 5px;
-}
-@media (max-width: 440px) {
-  #noVNC_connect_dlg {
-    max-width: calc(100vw - 100px);
-  }
-  #noVNC_connect_dlg .noVNC_logo {
-    font-size: calc(25vw - 30px);
-  }
-}
-#noVNC_connect_button {
-  cursor: pointer;
-
-  padding: 10px;
-
-  color: white;
-  background-color: rgb(110, 132, 163);
-  border-radius: 12px;
-
-  text-align: center;
-  font-size: 20px;
-
-  box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
-}
-#noVNC_connect_button div {
-  margin: 2px;
-  padding: 5px 30px;
-  border: 1px solid rgb(83, 99, 122);
-  border-bottom-width: 2px;
-  border-radius: 5px;
-  background: linear-gradient(to top, rgb(110, 132, 163), rgb(99, 119, 147));
-
-  /* This avoids it jumping around when :active */
-  vertical-align: middle;
-}
-#noVNC_connect_button div:active {
-  border-bottom-width: 1px;
-  margin-top: 3px;
-}
-:root:not(.noVNC_touch) #noVNC_connect_button div:hover {
-  background: linear-gradient(to top, rgb(110, 132, 163), rgb(105, 125, 155));
-}
-
-#noVNC_connect_button img {
-  vertical-align: bottom;
-  height: 1.3em;
-}
-
-/* ----------------------------------------
- * Password Dialog
- * ----------------------------------------
- */
-
-#noVNC_password_dlg {
-  position: relative;
-
-  transform: translateY(-50px);
-}
-#noVNC_password_dlg.noVNC_open {
-  transform: translateY(0);
-}
-#noVNC_password_dlg ul {
-  list-style: none;
-  margin: 0px;
-  padding: 0px;
-}
-
-/* ----------------------------------------
- * Main Area
- * ----------------------------------------
- */
-
-/* Transition screen */
-#noVNC_transition {
-  display: none;
-
-  position: fixed;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-
-  color: white;
-  background: rgba(0, 0, 0, 0.5);
-  z-index: 50;
-
-  /*display: flex;*/
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-:root.noVNC_loading #noVNC_transition,
-:root.noVNC_connecting #noVNC_transition,
-:root.noVNC_disconnecting #noVNC_transition,
-:root.noVNC_reconnecting #noVNC_transition {
-  display: flex;
-}
-:root:not(.noVNC_reconnecting) #noVNC_cancel_reconnect_button {
-  display: none;
-}
-#noVNC_transition_text {
-  font-size: 1.5em;
-}
-
-/* Main container */
-#noVNC_container {
-  width: 100%;
-  height: 100%;
-  background-color: #313131;
-  border-bottom-right-radius: 800px 600px;
-  /*border-top-left-radius: 800px 600px;*/
-}
-
-#noVNC_keyboardinput {
-  width: 1px;
-  height: 1px;
-  background-color: #fff;
-  color: #fff;
-  border: 0;
-  position: absolute;
-  left: -40px;
-  z-index: -1;
-  ime-mode: disabled;
-}
-
-/*Default noVNC logo.*/
-/* From: http://fonts.googleapis.com/css?family=Orbitron:700 */
-@font-face {
-  font-family: 'Orbitron';
-  font-style: normal;
-  font-weight: 700;
-  src: local('?'), url('Orbitron700.woff') format('woff'),
-                   url('Orbitron700.ttf') format('truetype');
-}
-
-.noVNC_logo {
-  color:yellow;
-  font-family: 'Orbitron', 'OrbitronTTF', sans-serif;
-  line-height:90%;
-  text-shadow: 0.1em 0.1em 0 black;
-}
-.noVNC_logo span{
-  color:green;
-}
-
-#noVNC_bell {
-  display: none;
-}
-
-/* ----------------------------------------
- * Media sizing
- * ----------------------------------------
- */
-
-@media screen and (max-width: 640px){
-  #noVNC_logo {
-    font-size: 150px;
-  }
-}
-
-@media screen and (min-width: 321px) and (max-width: 480px) {
-  #noVNC_logo {
-    font-size: 110px;
-  }
-}
-
-@media screen and (max-width: 320px) {
-  #noVNC_logo {
-    font-size: 90px;
-  }
-}

+ 0 - 63
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/styles/lite.css

@@ -1,63 +0,0 @@
-/*
- * noVNC auto CSS
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2017 Samuel Mannehed for Cendio AB
- * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
- * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
- */
-
-body {
-  margin:0;
-  background-color:#313131;
-  border-bottom-right-radius: 800px 600px;
-  height:100%;
-  display: flex;
-  flex-direction: column;
-}
-
-html {
-  background-color:#494949;
-  height:100%;
-}
-
-#noVNC_status_bar {
-  width: 100%;
-  display:flex;
-  justify-content: space-between;
-}
-
-#noVNC_status {
-  color: #fff;
-  font: bold 12px Helvetica;
-  margin: auto;
-}
-
-.noVNC_status_normal {
-  background: linear-gradient(#b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%);
-}
-
-.noVNC_status_error {
-  background: linear-gradient(#c83737 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%);
-}
-
-.noVNC_status_warn {
-  background: linear-gradient(#b4b41e 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%);
-}
-
-.noNVC_shown {
-  display: inline;
-}
-.noVNC_hidden {
-  display: none;
-}
-
-#noVNC_left_dummy_elem {
-  flex: 1;
-}
-
-#noVNC_buttons {
-  padding: 1px;
-  flex: 1;
-  display: flex;
-  justify-content: flex-end;
-}

+ 0 - 1669
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/ui.js

@@ -1,1669 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2016 Samuel Mannehed for Cendio AB
- * Copyright (C) 2016 Pierre Ossman for Cendio AB
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
-
-import * as Log from '../core/util/logging.js';
-import _, { l10n } from './localization.js';
-import { isTouchDevice } from '../core/util/browser.js';
-import { setCapture, getPointerEvent } from '../core/util/events.js';
-import KeyTable from "../core/input/keysym.js";
-import keysyms from "../core/input/keysymdef.js";
-import Keyboard from "../core/input/keyboard.js";
-import RFB from "../core/rfb.js";
-import Display from "../core/display.js";
-import * as WebUtil from "./webutil.js";
-
-var UI = {
-
-    connected: false,
-    desktopName: "",
-
-    statusTimeout: null,
-    hideKeyboardTimeout: null,
-    idleControlbarTimeout: null,
-    closeControlbarTimeout: null,
-
-    controlbarGrabbed: false,
-    controlbarDrag: false,
-    controlbarMouseDownClientY: 0,
-    controlbarMouseDownOffsetY: 0,
-
-    isSafari: false,
-    lastKeyboardinput: null,
-    defaultKeyboardinputLen: 100,
-
-    inhibit_reconnect: true,
-    reconnect_callback: null,
-    reconnect_password: null,
-
-    prime: function(callback) {
-        if (document.readyState === "interactive" || document.readyState === "complete") {
-            UI.load(callback);
-        } else {
-            document.addEventListener('DOMContentLoaded', UI.load.bind(UI, callback));
-        }
-    },
-
-    // Setup rfb object, load settings from browser storage, then call
-    // UI.init to setup the UI/menus
-    load: function(callback) {
-        WebUtil.initSettings(UI.start, callback);
-    },
-
-    // Render default UI and initialize settings menu
-    start: function(callback) {
-
-        // Setup global variables first
-        UI.isSafari = (navigator.userAgent.indexOf('Safari') !== -1 &&
-                       navigator.userAgent.indexOf('Chrome') === -1);
-
-        UI.initSettings();
-
-        // Translate the DOM
-        l10n.translateDOM();
-
-        // Adapt the interface for touch screen devices
-        if (isTouchDevice) {
-            document.documentElement.classList.add("noVNC_touch");
-            // Remove the address bar
-            setTimeout(function() { window.scrollTo(0, 1); }, 100);
-        }
-
-        // Restore control bar position
-        if (WebUtil.readSetting('controlbar_pos') === 'right') {
-            UI.toggleControlbarSide();
-        }
-
-        UI.initFullscreen();
-
-        // Setup event handlers
-        UI.addControlbarHandlers();
-        UI.addTouchSpecificHandlers();
-        UI.addExtraKeysHandlers();
-        UI.addMachineHandlers();
-        UI.addConnectionControlHandlers();
-        UI.addClipboardHandlers();
-        UI.addSettingsHandlers();
-        document.getElementById("noVNC_status")
-            .addEventListener('click', UI.hideStatus);
-
-        // Bootstrap fallback input handler
-        UI.keyboardinputReset();
-
-        UI.openControlbar();
-
-        UI.updateVisualState('init');
-
-        document.documentElement.classList.remove("noVNC_loading");
-
-        var autoconnect = WebUtil.getConfigVar('autoconnect', false);
-        if (autoconnect === 'true' || autoconnect == '1') {
-            autoconnect = true;
-            UI.connect();
-        } else {
-            autoconnect = false;
-            // Show the connect panel on first load unless autoconnecting
-            UI.openConnectPanel();
-        }
-
-        if (typeof callback === "function") {
-            callback(UI.rfb);
-        }
-    },
-
-    initFullscreen: function() {
-        // Only show the button if fullscreen is properly supported
-        // * Safari doesn't support alphanumerical input while in fullscreen
-        if (!UI.isSafari &&
-            (document.documentElement.requestFullscreen ||
-             document.documentElement.mozRequestFullScreen ||
-             document.documentElement.webkitRequestFullscreen ||
-             document.body.msRequestFullscreen)) {
-            document.getElementById('noVNC_fullscreen_button')
-                .classList.remove("noVNC_hidden");
-            UI.addFullscreenHandlers();
-        }
-    },
-
-    initSettings: function() {
-        var i;
-
-        // Logging selection dropdown
-        var llevels = ['error', 'warn', 'info', 'debug'];
-        for (i = 0; i < llevels.length; i += 1) {
-            UI.addOption(document.getElementById('noVNC_setting_logging'),llevels[i], llevels[i]);
-        }
-
-        // Settings with immediate effects
-        UI.initSetting('logging', 'warn');
-        UI.updateLogging();
-
-        // if port == 80 (or 443) then it won't be present and should be
-        // set manually
-        var port = window.location.port;
-        if (!port) {
-            if (window.location.protocol.substring(0,5) == 'https') {
-                port = 443;
-            }
-            else if (window.location.protocol.substring(0,4) == 'http') {
-                port = 80;
-            }
-        }
-
-        /* Populate the controls if defaults are provided in the URL */
-        UI.initSetting('host', window.location.hostname);
-        UI.initSetting('port', port);
-        UI.initSetting('encrypt', (window.location.protocol === "https:"));
-        UI.initSetting('view_clip', false);
-        UI.initSetting('resize', 'off');
-        UI.initSetting('shared', true);
-        UI.initSetting('view_only', false);
-        UI.initSetting('path', 'websockify');
-        UI.initSetting('repeaterID', '');
-        UI.initSetting('reconnect', false);
-        UI.initSetting('reconnect_delay', 5000);
-
-        UI.setupSettingLabels();
-    },
-    // Adds a link to the label elements on the corresponding input elements
-    setupSettingLabels: function() {
-        var labels = document.getElementsByTagName('LABEL');
-        for (var i = 0; i < labels.length; i++) {
-            var htmlFor = labels[i].htmlFor;
-            if (htmlFor != '') {
-                var elem = document.getElementById(htmlFor);
-                if (elem) elem.label = labels[i];
-            } else {
-                // If 'for' isn't set, use the first input element child
-                var children = labels[i].children;
-                for (var j = 0; j < children.length; j++) {
-                    if (children[j].form !== undefined) {
-                        children[j].label = labels[i];
-                        break;
-                    }
-                }
-            }
-        }
-    },
-
-/* ------^-------
-*     /INIT
-* ==============
-* EVENT HANDLERS
-* ------v------*/
-
-    addControlbarHandlers: function() {
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('mousemove', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('mouseup', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('mousedown', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('keydown', UI.activateControlbar);
-
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('mousedown', UI.keepControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('keydown', UI.keepControlbar);
-
-        document.getElementById("noVNC_view_drag_button")
-            .addEventListener('click', UI.toggleViewDrag);
-
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('mousedown', UI.controlbarHandleMouseDown);
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('mouseup', UI.controlbarHandleMouseUp);
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('mousemove', UI.dragControlbarHandle);
-        // resize events aren't available for elements
-        window.addEventListener('resize', UI.updateControlbarHandle);
-
-        var exps = document.getElementsByClassName("noVNC_expander");
-        for (var i = 0;i < exps.length;i++) {
-            exps[i].addEventListener('click', UI.toggleExpander);
-        }
-    },
-
-    addTouchSpecificHandlers: function() {
-        document.getElementById("noVNC_mouse_button0")
-            .addEventListener('click', function () { UI.setMouseButton(1); });
-        document.getElementById("noVNC_mouse_button1")
-            .addEventListener('click', function () { UI.setMouseButton(2); });
-        document.getElementById("noVNC_mouse_button2")
-            .addEventListener('click', function () { UI.setMouseButton(4); });
-        document.getElementById("noVNC_mouse_button4")
-            .addEventListener('click', function () { UI.setMouseButton(0); });
-        document.getElementById("noVNC_keyboard_button")
-            .addEventListener('click', UI.toggleVirtualKeyboard);
-
-        UI.touchKeyboard = new Keyboard(document.getElementById('noVNC_keyboardinput'));
-        UI.touchKeyboard.onkeyevent = UI.keyEvent;
-        UI.touchKeyboard.grab();
-        document.getElementById("noVNC_keyboardinput")
-            .addEventListener('input', UI.keyInput);
-        document.getElementById("noVNC_keyboardinput")
-            .addEventListener('focus', UI.onfocusVirtualKeyboard);
-        document.getElementById("noVNC_keyboardinput")
-            .addEventListener('blur', UI.onblurVirtualKeyboard);
-        document.getElementById("noVNC_keyboardinput")
-            .addEventListener('submit', function () { return false; });
-
-        document.documentElement
-            .addEventListener('mousedown', UI.keepVirtualKeyboard, true);
-
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('touchstart', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('touchmove', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('touchend', UI.activateControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('input', UI.activateControlbar);
-
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('touchstart', UI.keepControlbar);
-        document.getElementById("noVNC_control_bar")
-            .addEventListener('input', UI.keepControlbar);
-
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('touchstart', UI.controlbarHandleMouseDown);
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('touchend', UI.controlbarHandleMouseUp);
-        document.getElementById("noVNC_control_bar_handle")
-            .addEventListener('touchmove', UI.dragControlbarHandle);
-    },
-
-    addExtraKeysHandlers: function() {
-        document.getElementById("noVNC_toggle_extra_keys_button")
-            .addEventListener('click', UI.toggleExtraKeys);
-        document.getElementById("noVNC_toggle_ctrl_button")
-            .addEventListener('click', UI.toggleCtrl);
-        document.getElementById("noVNC_toggle_alt_button")
-            .addEventListener('click', UI.toggleAlt);
-        document.getElementById("noVNC_send_tab_button")
-            .addEventListener('click', UI.sendTab);
-        document.getElementById("noVNC_send_esc_button")
-            .addEventListener('click', UI.sendEsc);
-        document.getElementById("noVNC_send_ctrl_alt_del_button")
-            .addEventListener('click', UI.sendCtrlAltDel);
-    },
-
-    addMachineHandlers: function() {
-        document.getElementById("noVNC_shutdown_button")
-            .addEventListener('click', function() { UI.rfb.machineShutdown(); });
-        document.getElementById("noVNC_reboot_button")
-            .addEventListener('click', function() { UI.rfb.machineReboot(); });
-        document.getElementById("noVNC_reset_button")
-            .addEventListener('click', function() { UI.rfb.machineReset(); });
-        document.getElementById("noVNC_power_button")
-            .addEventListener('click', UI.togglePowerPanel);
-    },
-
-    addConnectionControlHandlers: function() {
-        document.getElementById("noVNC_disconnect_button")
-            .addEventListener('click', UI.disconnect);
-        document.getElementById("noVNC_connect_button")
-            .addEventListener('click', UI.connect);
-        document.getElementById("noVNC_cancel_reconnect_button")
-            .addEventListener('click', UI.cancelReconnect);
-
-        document.getElementById("noVNC_password_button")
-            .addEventListener('click', UI.setPassword);
-    },
-
-    addClipboardHandlers: function() {
-        document.getElementById("noVNC_clipboard_button")
-            .addEventListener('click', UI.toggleClipboardPanel);
-        document.getElementById("noVNC_clipboard_text")
-            .addEventListener('change', UI.clipboardSend);
-        document.getElementById("noVNC_clipboard_clear_button")
-            .addEventListener('click', UI.clipboardClear);
-    },
-
-    // Add a call to save settings when the element changes,
-    // unless the optional parameter changeFunc is used instead.
-    addSettingChangeHandler: function(name, changeFunc) {
-        var settingElem = document.getElementById("noVNC_setting_" + name);
-        if (changeFunc === undefined) {
-            changeFunc = function () { UI.saveSetting(name); };
-        }
-        settingElem.addEventListener('change', changeFunc);
-    },
-
-    addSettingsHandlers: function() {
-        document.getElementById("noVNC_settings_button")
-            .addEventListener('click', UI.toggleSettingsPanel);
-
-        UI.addSettingChangeHandler('encrypt');
-        UI.addSettingChangeHandler('resize');
-        UI.addSettingChangeHandler('resize', UI.enableDisableViewClip);
-        UI.addSettingChangeHandler('resize', UI.applyResizeMode);
-        UI.addSettingChangeHandler('view_clip');
-        UI.addSettingChangeHandler('view_clip', UI.updateViewClip);
-        UI.addSettingChangeHandler('shared');
-        UI.addSettingChangeHandler('view_only');
-        UI.addSettingChangeHandler('view_only', UI.updateViewOnly);
-        UI.addSettingChangeHandler('host');
-        UI.addSettingChangeHandler('port');
-        UI.addSettingChangeHandler('path');
-        UI.addSettingChangeHandler('repeaterID');
-        UI.addSettingChangeHandler('logging');
-        UI.addSettingChangeHandler('logging', UI.updateLogging);
-        UI.addSettingChangeHandler('reconnect');
-        UI.addSettingChangeHandler('reconnect_delay');
-    },
-
-    addFullscreenHandlers: function() {
-        document.getElementById("noVNC_fullscreen_button")
-            .addEventListener('click', UI.toggleFullscreen);
-
-        window.addEventListener('fullscreenchange', UI.updateFullscreenButton);
-        window.addEventListener('mozfullscreenchange', UI.updateFullscreenButton);
-        window.addEventListener('webkitfullscreenchange', UI.updateFullscreenButton);
-        window.addEventListener('msfullscreenchange', UI.updateFullscreenButton);
-    },
-
-/* ------^-------
- * /EVENT HANDLERS
- * ==============
- *     VISUAL
- * ------v------*/
-
-    // Disable/enable controls depending on connection state
-    updateVisualState: function(state) {
-
-        document.documentElement.classList.remove("noVNC_connecting");
-        document.documentElement.classList.remove("noVNC_connected");
-        document.documentElement.classList.remove("noVNC_disconnecting");
-        document.documentElement.classList.remove("noVNC_reconnecting");
-
-        let transition_elem = document.getElementById("noVNC_transition_text");
-        switch (state) {
-            case 'init':
-                break;
-            case 'connecting':
-                transition_elem.textContent = _("Connecting...");
-                document.documentElement.classList.add("noVNC_connecting");
-                break;
-            case 'connected':
-                document.documentElement.classList.add("noVNC_connected");
-                break;
-            case 'disconnecting':
-                transition_elem.textContent = _("Disconnecting...");
-                document.documentElement.classList.add("noVNC_disconnecting");
-                break;
-            case 'disconnected':
-                break;
-            case 'reconnecting':
-                transition_elem.textContent = _("Reconnecting...");
-                document.documentElement.classList.add("noVNC_reconnecting");
-                break;
-            default:
-                Log.Error("Invalid visual state: " + state);
-                UI.showStatus(_("Internal error"), 'error');
-                return;
-        }
-
-        UI.enableDisableViewClip();
-
-        if (UI.connected) {
-            UI.disableSetting('encrypt');
-            UI.disableSetting('shared');
-            UI.disableSetting('host');
-            UI.disableSetting('port');
-            UI.disableSetting('path');
-            UI.disableSetting('repeaterID');
-            UI.setMouseButton(1);
-
-            // Hide the controlbar after 2 seconds
-            UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000);
-        } else {
-            UI.enableSetting('encrypt');
-            UI.enableSetting('shared');
-            UI.enableSetting('host');
-            UI.enableSetting('port');
-            UI.enableSetting('path');
-            UI.enableSetting('repeaterID');
-            UI.updatePowerButton();
-            UI.keepControlbar();
-        }
-
-        // State change disables viewport dragging.
-        // It is enabled (toggled) by direct click on the button
-        UI.setViewDrag(false);
-
-        // State change also closes the password dialog
-        document.getElementById('noVNC_password_dlg')
-            .classList.remove('noVNC_open');
-    },
-
-    showStatus: function(text, status_type, time) {
-        var statusElem = document.getElementById('noVNC_status');
-
-        clearTimeout(UI.statusTimeout);
-
-        if (typeof status_type === 'undefined') {
-            status_type = 'normal';
-        }
-
-        // Don't overwrite more severe visible statuses and never
-        // errors. Only shows the first error.
-        let visible_status_type = 'none';
-        if (statusElem.classList.contains("noVNC_open")) {
-            if (statusElem.classList.contains("noVNC_status_error")) {
-                visible_status_type = 'error';
-            } else if (statusElem.classList.contains("noVNC_status_warn")) {
-                visible_status_type = 'warn';
-            } else {
-                visible_status_type = 'normal';
-            }
-        }
-        if (visible_status_type === 'error' ||
-            (visible_status_type === 'warn' && status_type === 'normal')) {
-            return;
-        }
-
-        switch (status_type) {
-            case 'error':
-                statusElem.classList.remove("noVNC_status_warn");
-                statusElem.classList.remove("noVNC_status_normal");
-                statusElem.classList.add("noVNC_status_error");
-                break;
-            case 'warning':
-            case 'warn':
-                statusElem.classList.remove("noVNC_status_error");
-                statusElem.classList.remove("noVNC_status_normal");
-                statusElem.classList.add("noVNC_status_warn");
-                break;
-            case 'normal':
-            case 'info':
-            default:
-                statusElem.classList.remove("noVNC_status_error");
-                statusElem.classList.remove("noVNC_status_warn");
-                statusElem.classList.add("noVNC_status_normal");
-                break;
-        }
-
-        statusElem.textContent = text;
-        statusElem.classList.add("noVNC_open");
-
-        // If no time was specified, show the status for 1.5 seconds
-        if (typeof time === 'undefined') {
-            time = 1500;
-        }
-
-        // Error messages do not timeout
-        if (status_type !== 'error') {
-            UI.statusTimeout = window.setTimeout(UI.hideStatus, time);
-        }
-    },
-
-    hideStatus: function() {
-        clearTimeout(UI.statusTimeout);
-        document.getElementById('noVNC_status').classList.remove("noVNC_open");
-    },
-
-    activateControlbar: function(event) {
-        clearTimeout(UI.idleControlbarTimeout);
-        // We manipulate the anchor instead of the actual control
-        // bar in order to avoid creating new a stacking group
-        document.getElementById('noVNC_control_bar_anchor')
-            .classList.remove("noVNC_idle");
-        UI.idleControlbarTimeout = window.setTimeout(UI.idleControlbar, 2000);
-    },
-
-    idleControlbar: function() {
-        document.getElementById('noVNC_control_bar_anchor')
-            .classList.add("noVNC_idle");
-    },
-
-    keepControlbar: function() {
-        clearTimeout(UI.closeControlbarTimeout);
-    },
-
-    openControlbar: function() {
-        document.getElementById('noVNC_control_bar')
-            .classList.add("noVNC_open");
-    },
-
-    closeControlbar: function() {
-        UI.closeAllPanels();
-        document.getElementById('noVNC_control_bar')
-            .classList.remove("noVNC_open");
-    },
-
-    toggleControlbar: function() {
-        if (document.getElementById('noVNC_control_bar')
-            .classList.contains("noVNC_open")) {
-            UI.closeControlbar();
-        } else {
-            UI.openControlbar();
-        }
-    },
-
-    toggleControlbarSide: function () {
-        // Temporarily disable animation to avoid weird movement
-        var bar = document.getElementById('noVNC_control_bar');
-        bar.style.transitionDuration = '0s';
-        bar.addEventListener('transitionend', function () { this.style.transitionDuration = ""; });
-
-        var anchor = document.getElementById('noVNC_control_bar_anchor');
-        if (anchor.classList.contains("noVNC_right")) {
-            WebUtil.writeSetting('controlbar_pos', 'left');
-            anchor.classList.remove("noVNC_right");
-        } else {
-            WebUtil.writeSetting('controlbar_pos', 'right');
-            anchor.classList.add("noVNC_right");
-        }
-
-        // Consider this a movement of the handle
-        UI.controlbarDrag = true;
-    },
-
-    showControlbarHint: function (show) {
-        var hint = document.getElementById('noVNC_control_bar_hint');
-        if (show) {
-            hint.classList.add("noVNC_active");
-        } else {
-            hint.classList.remove("noVNC_active");
-        }
-    },
-
-    dragControlbarHandle: function (e) {
-        if (!UI.controlbarGrabbed) return;
-
-        var ptr = getPointerEvent(e);
-
-        var anchor = document.getElementById('noVNC_control_bar_anchor');
-        if (ptr.clientX < (window.innerWidth * 0.1)) {
-            if (anchor.classList.contains("noVNC_right")) {
-                UI.toggleControlbarSide();
-            }
-        } else if (ptr.clientX > (window.innerWidth * 0.9)) {
-            if (!anchor.classList.contains("noVNC_right")) {
-                UI.toggleControlbarSide();
-            }
-        }
-
-        if (!UI.controlbarDrag) {
-            // The goal is to trigger on a certain physical width, the
-            // devicePixelRatio brings us a bit closer but is not optimal.
-            var dragThreshold = 10 * (window.devicePixelRatio || 1);
-            var dragDistance = Math.abs(ptr.clientY - UI.controlbarMouseDownClientY);
-
-            if (dragDistance < dragThreshold) return;
-
-            UI.controlbarDrag = true;
-        }
-
-        var eventY = ptr.clientY - UI.controlbarMouseDownOffsetY;
-
-        UI.moveControlbarHandle(eventY);
-
-        e.preventDefault();
-        e.stopPropagation();
-        UI.keepControlbar();
-        UI.activateControlbar();
-    },
-
-    // Move the handle but don't allow any position outside the bounds
-    moveControlbarHandle: function (viewportRelativeY) {
-        var handle = document.getElementById("noVNC_control_bar_handle");
-        var handleHeight = handle.getBoundingClientRect().height;
-        var controlbarBounds = document.getElementById("noVNC_control_bar")
-            .getBoundingClientRect();
-        var margin = 10;
-
-        // These heights need to be non-zero for the below logic to work
-        if (handleHeight === 0 || controlbarBounds.height === 0) {
-            return;
-        }
-
-        var newY = viewportRelativeY;
-
-        // Check if the coordinates are outside the control bar
-        if (newY < controlbarBounds.top + margin) {
-            // Force coordinates to be below the top of the control bar
-            newY = controlbarBounds.top + margin;
-
-        } else if (newY > controlbarBounds.top +
-                   controlbarBounds.height - handleHeight - margin) {
-            // Force coordinates to be above the bottom of the control bar
-            newY = controlbarBounds.top +
-                controlbarBounds.height - handleHeight - margin;
-        }
-
-        // Corner case: control bar too small for stable position
-        if (controlbarBounds.height < (handleHeight + margin * 2)) {
-            newY = controlbarBounds.top +
-                (controlbarBounds.height - handleHeight) / 2;
-        }
-
-        // The transform needs coordinates that are relative to the parent
-        var parentRelativeY = newY - controlbarBounds.top;
-        handle.style.transform = "translateY(" + parentRelativeY + "px)";
-    },
-
-    updateControlbarHandle: function () {
-        // Since the control bar is fixed on the viewport and not the page,
-        // the move function expects coordinates relative the the viewport.
-        var handle = document.getElementById("noVNC_control_bar_handle");
-        var handleBounds = handle.getBoundingClientRect();
-        UI.moveControlbarHandle(handleBounds.top);
-    },
-
-    controlbarHandleMouseUp: function(e) {
-        if ((e.type == "mouseup") && (e.button != 0)) return;
-
-        // mouseup and mousedown on the same place toggles the controlbar
-        if (UI.controlbarGrabbed && !UI.controlbarDrag) {
-            UI.toggleControlbar();
-            e.preventDefault();
-            e.stopPropagation();
-            UI.keepControlbar();
-            UI.activateControlbar();
-        }
-        UI.controlbarGrabbed = false;
-        UI.showControlbarHint(false);
-    },
-
-    controlbarHandleMouseDown: function(e) {
-        if ((e.type == "mousedown") && (e.button != 0)) return;
-
-        var ptr = getPointerEvent(e);
-
-        var handle = document.getElementById("noVNC_control_bar_handle");
-        var bounds = handle.getBoundingClientRect();
-
-        // Touch events have implicit capture
-        if (e.type === "mousedown") {
-            setCapture(handle);
-        }
-
-        UI.controlbarGrabbed = true;
-        UI.controlbarDrag = false;
-
-        UI.showControlbarHint(true);
-
-        UI.controlbarMouseDownClientY = ptr.clientY;
-        UI.controlbarMouseDownOffsetY = ptr.clientY - bounds.top;
-        e.preventDefault();
-        e.stopPropagation();
-        UI.keepControlbar();
-        UI.activateControlbar();
-    },
-
-    toggleExpander: function(e) {
-        if (this.classList.contains("noVNC_open")) {
-            this.classList.remove("noVNC_open");
-        } else {
-            this.classList.add("noVNC_open");
-        }
-    },
-
-/* ------^-------
- *    /VISUAL
- * ==============
- *    SETTINGS
- * ------v------*/
-
-    // Initial page load read/initialization of settings
-    initSetting: function(name, defVal) {
-        // Check Query string followed by cookie
-        var val = WebUtil.getConfigVar(name);
-        if (val === null) {
-            val = WebUtil.readSetting(name, defVal);
-        }
-        UI.updateSetting(name, val);
-        return val;
-    },
-
-    // Update cookie and form control setting. If value is not set, then
-    // updates from control to current cookie setting.
-    updateSetting: function(name, value) {
-
-        // Save the cookie for this session
-        if (typeof value !== 'undefined') {
-            WebUtil.writeSetting(name, value);
-        }
-
-        // Update the settings control
-        value = UI.getSetting(name);
-
-        var ctrl = document.getElementById('noVNC_setting_' + name);
-        if (ctrl.type === 'checkbox') {
-            ctrl.checked = value;
-
-        } else if (typeof ctrl.options !== 'undefined') {
-            for (var i = 0; i < ctrl.options.length; i += 1) {
-                if (ctrl.options[i].value === value) {
-                    ctrl.selectedIndex = i;
-                    break;
-                }
-            }
-        } else {
-            /*Weird IE9 error leads to 'null' appearring
-            in textboxes instead of ''.*/
-            if (value === null) {
-                value = "";
-            }
-            ctrl.value = value;
-        }
-    },
-
-    // Save control setting to cookie
-    saveSetting: function(name) {
-        var val, ctrl = document.getElementById('noVNC_setting_' + name);
-        if (ctrl.type === 'checkbox') {
-            val = ctrl.checked;
-        } else if (typeof ctrl.options !== 'undefined') {
-            val = ctrl.options[ctrl.selectedIndex].value;
-        } else {
-            val = ctrl.value;
-        }
-        WebUtil.writeSetting(name, val);
-        //Log.Debug("Setting saved '" + name + "=" + val + "'");
-        return val;
-    },
-
-    // Read form control compatible setting from cookie
-    getSetting: function(name) {
-        var ctrl = document.getElementById('noVNC_setting_' + name);
-        var val = WebUtil.readSetting(name);
-        if (typeof val !== 'undefined' && val !== null && ctrl.type === 'checkbox') {
-            if (val.toString().toLowerCase() in {'0':1, 'no':1, 'false':1}) {
-                val = false;
-            } else {
-                val = true;
-            }
-        }
-        return val;
-    },
-
-    // These helpers compensate for the lack of parent-selectors and
-    // previous-sibling-selectors in CSS which are needed when we want to
-    // disable the labels that belong to disabled input elements.
-    disableSetting: function(name) {
-        var ctrl = document.getElementById('noVNC_setting_' + name);
-        ctrl.disabled = true;
-        ctrl.label.classList.add('noVNC_disabled');
-    },
-
-    enableSetting: function(name) {
-        var ctrl = document.getElementById('noVNC_setting_' + name);
-        ctrl.disabled = false;
-        ctrl.label.classList.remove('noVNC_disabled');
-    },
-
-/* ------^-------
- *   /SETTINGS
- * ==============
- *    PANELS
- * ------v------*/
-
-    closeAllPanels: function() {
-        UI.closeSettingsPanel();
-        UI.closePowerPanel();
-        UI.closeClipboardPanel();
-        UI.closeExtraKeys();
-    },
-
-/* ------^-------
- *   /PANELS
- * ==============
- * SETTINGS (panel)
- * ------v------*/
-
-    openSettingsPanel: function() {
-        UI.closeAllPanels();
-        UI.openControlbar();
-
-        // Refresh UI elements from saved cookies
-        UI.updateSetting('encrypt');
-        UI.updateSetting('view_clip');
-        UI.updateSetting('resize');
-        UI.updateSetting('shared');
-        UI.updateSetting('view_only');
-        UI.updateSetting('path');
-        UI.updateSetting('repeaterID');
-        UI.updateSetting('logging');
-        UI.updateSetting('reconnect');
-        UI.updateSetting('reconnect_delay');
-
-        document.getElementById('noVNC_settings')
-            .classList.add("noVNC_open");
-        document.getElementById('noVNC_settings_button')
-            .classList.add("noVNC_selected");
-    },
-
-    closeSettingsPanel: function() {
-        document.getElementById('noVNC_settings')
-            .classList.remove("noVNC_open");
-        document.getElementById('noVNC_settings_button')
-            .classList.remove("noVNC_selected");
-    },
-
-    toggleSettingsPanel: function() {
-        if (document.getElementById('noVNC_settings')
-            .classList.contains("noVNC_open")) {
-            UI.closeSettingsPanel();
-        } else {
-            UI.openSettingsPanel();
-        }
-    },
-
-/* ------^-------
- *   /SETTINGS
- * ==============
- *     POWER
- * ------v------*/
-
-    openPowerPanel: function() {
-        UI.closeAllPanels();
-        UI.openControlbar();
-
-        document.getElementById('noVNC_power')
-            .classList.add("noVNC_open");
-        document.getElementById('noVNC_power_button')
-            .classList.add("noVNC_selected");
-    },
-
-    closePowerPanel: function() {
-        document.getElementById('noVNC_power')
-            .classList.remove("noVNC_open");
-        document.getElementById('noVNC_power_button')
-            .classList.remove("noVNC_selected");
-    },
-
-    togglePowerPanel: function() {
-        if (document.getElementById('noVNC_power')
-            .classList.contains("noVNC_open")) {
-            UI.closePowerPanel();
-        } else {
-            UI.openPowerPanel();
-        }
-    },
-
-    // Disable/enable power button
-    updatePowerButton: function() {
-        if (UI.connected &&
-            UI.rfb.capabilities.power &&
-            !UI.rfb.viewOnly) {
-            document.getElementById('noVNC_power_button')
-                .classList.remove("noVNC_hidden");
-        } else {
-            document.getElementById('noVNC_power_button')
-                .classList.add("noVNC_hidden");
-            // Close power panel if open
-            UI.closePowerPanel();
-        }
-    },
-
-/* ------^-------
- *    /POWER
- * ==============
- *   CLIPBOARD
- * ------v------*/
-
-    openClipboardPanel: function() {
-        UI.closeAllPanels();
-        UI.openControlbar();
-
-        document.getElementById('noVNC_clipboard')
-            .classList.add("noVNC_open");
-        document.getElementById('noVNC_clipboard_button')
-            .classList.add("noVNC_selected");
-    },
-
-    closeClipboardPanel: function() {
-        document.getElementById('noVNC_clipboard')
-            .classList.remove("noVNC_open");
-        document.getElementById('noVNC_clipboard_button')
-            .classList.remove("noVNC_selected");
-    },
-
-    toggleClipboardPanel: function() {
-        if (document.getElementById('noVNC_clipboard')
-            .classList.contains("noVNC_open")) {
-            UI.closeClipboardPanel();
-        } else {
-            UI.openClipboardPanel();
-        }
-    },
-
-    clipboardReceive: function(e) {
-        Log.Debug(">> UI.clipboardReceive: " + e.detail.text.substr(0,40) + "...");
-        document.getElementById('noVNC_clipboard_text').value = e.detail.text;
-        Log.Debug("<< UI.clipboardReceive");
-    },
-
-    clipboardClear: function() {
-        document.getElementById('noVNC_clipboard_text').value = "";
-        UI.rfb.clipboardPasteFrom("");
-    },
-
-    clipboardSend: function() {
-        var text = document.getElementById('noVNC_clipboard_text').value;
-        Log.Debug(">> UI.clipboardSend: " + text.substr(0,40) + "...");
-        UI.rfb.clipboardPasteFrom(text);
-        Log.Debug("<< UI.clipboardSend");
-    },
-
-/* ------^-------
- *  /CLIPBOARD
- * ==============
- *  CONNECTION
- * ------v------*/
-
-    openConnectPanel: function() {
-        document.getElementById('noVNC_connect_dlg')
-            .classList.add("noVNC_open");
-    },
-
-    closeConnectPanel: function() {
-        document.getElementById('noVNC_connect_dlg')
-            .classList.remove("noVNC_open");
-    },
-
-    connect: function(event, password) {
-
-        // Ignore when rfb already exists
-        if (typeof UI.rfb !== 'undefined') {
-            return;
-        }
-
-        var host = UI.getSetting('host');
-        var port = UI.getSetting('port');
-        var path = UI.getSetting('path');
-
-        if (typeof password === 'undefined') {
-            password = WebUtil.getConfigVar('password');
-            UI.reconnect_password = password;
-        }
-
-        if (password === null) {
-            password = undefined;
-        }
-
-        UI.hideStatus();
-
-        if (!host) {
-            Log.Error("Can't connect when host is: " + host);
-            UI.showStatus(_("Must set host"), 'error');
-            return;
-        }
-
-        UI.closeAllPanels();
-        UI.closeConnectPanel();
-
-        UI.updateVisualState('connecting');
-
-        var url;
-
-        url = UI.getSetting('encrypt') ? 'wss' : 'ws';
-
-        url += '://' + host;
-        if(port) {
-            url += ':' + port;
-        }
-        url += '/' + path;
-
-        UI.rfb = new RFB(document.getElementById('noVNC_container'), url,
-                         { shared: UI.getSetting('shared'),
-                           repeaterID: UI.getSetting('repeaterID'),
-                           credentials: { password: password } });
-        UI.rfb.addEventListener("connect", UI.connectFinished);
-        UI.rfb.addEventListener("disconnect", UI.disconnectFinished);
-        UI.rfb.addEventListener("credentialsrequired", UI.credentials);
-        UI.rfb.addEventListener("securityfailure", UI.securityFailed);
-        UI.rfb.addEventListener("capabilities", function () { UI.updatePowerButton(); });
-        UI.rfb.addEventListener("clipboard", UI.clipboardReceive);
-        UI.rfb.addEventListener("bell", UI.bell);
-        UI.rfb.addEventListener("desktopname", UI.updateDesktopName);
-        UI.rfb.clipViewport = UI.getSetting('view_clip');
-        UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale';
-        UI.rfb.resizeSession = UI.getSetting('resize') === 'remote';
-
-        UI.updateViewOnly(); // requires UI.rfb
-    },
-
-    disconnect: function() {
-        UI.closeAllPanels();
-        UI.rfb.disconnect();
-
-        UI.connected = false;
-
-        // Disable automatic reconnecting
-        UI.inhibit_reconnect = true;
-
-        UI.updateVisualState('disconnecting');
-
-        // Don't display the connection settings until we're actually disconnected
-    },
-
-    reconnect: function() {
-        UI.reconnect_callback = null;
-
-        // if reconnect has been disabled in the meantime, do nothing.
-        if (UI.inhibit_reconnect) {
-            return;
-        }
-
-        UI.connect(null, UI.reconnect_password);
-    },
-
-    cancelReconnect: function() {
-        if (UI.reconnect_callback !== null) {
-            clearTimeout(UI.reconnect_callback);
-            UI.reconnect_callback = null;
-        }
-
-        UI.updateVisualState('disconnected');
-
-        UI.openControlbar();
-        UI.openConnectPanel();
-    },
-
-    connectFinished: function (e) {
-        UI.connected = true;
-        UI.inhibit_reconnect = false;
-
-        let msg;
-        if (UI.getSetting('encrypt')) {
-            msg = _("Connected (encrypted) to ") + UI.desktopName;
-        } else {
-            msg = _("Connected (unencrypted) to ") + UI.desktopName;
-        }
-        UI.showStatus(msg);
-        UI.updateVisualState('connected');
-
-        // Do this last because it can only be used on rendered elements
-        UI.rfb.focus();
-    },
-
-    disconnectFinished: function (e) {
-        let wasConnected = UI.connected;
-
-        // This variable is ideally set when disconnection starts, but
-        // when the disconnection isn't clean or if it is initiated by
-        // the server, we need to do it here as well since
-        // UI.disconnect() won't be used in those cases.
-        UI.connected = false;
-
-        UI.rfb = undefined;
-
-        if (!e.detail.clean) {
-            UI.updateVisualState('disconnected');
-            if (wasConnected) {
-                UI.showStatus(_("Something went wrong, connection is closed"),
-                              'error');
-            } else {
-                UI.showStatus(_("Failed to connect to server"), 'error');
-            }
-        } else if (UI.getSetting('reconnect', false) === true && !UI.inhibit_reconnect) {
-            UI.updateVisualState('reconnecting');
-
-            var delay = parseInt(UI.getSetting('reconnect_delay'));
-            UI.reconnect_callback = setTimeout(UI.reconnect, delay);
-            return;
-        } else {
-            UI.updateVisualState('disconnected');
-            UI.showStatus(_("Disconnected"), 'normal');
-        }
-
-        UI.openControlbar();
-        UI.openConnectPanel();
-    },
-
-    securityFailed: function (e) {
-        let msg = "";
-        // On security failures we might get a string with a reason
-        // directly from the server. Note that we can't control if
-        // this string is translated or not.
-        if ('reason' in e.detail) {
-            msg = _("New connection has been rejected with reason: ") +
-                e.detail.reason;
-        } else {
-            msg = _("New connection has been rejected");
-        }
-        UI.showStatus(msg, 'error');
-    },
-
-/* ------^-------
- *  /CONNECTION
- * ==============
- *   PASSWORD
- * ------v------*/
-
-    credentials: function(e) {
-        // FIXME: handle more types
-        document.getElementById('noVNC_password_dlg')
-            .classList.add('noVNC_open');
-
-        setTimeout(function () {
-                document.getElementById('noVNC_password_input').focus();
-            }, 100);
-
-        Log.Warn("Server asked for a password");
-        UI.showStatus(_("Password is required"), "warning");
-    },
-
-    setPassword: function(e) {
-        // Prevent actually submitting the form
-        e.preventDefault();
-
-        var inputElem = document.getElementById('noVNC_password_input');
-        var password = inputElem.value;
-        // Clear the input after reading the password
-        inputElem.value = "";
-        UI.rfb.sendCredentials({ password: password });
-        UI.reconnect_password = password;
-        document.getElementById('noVNC_password_dlg')
-            .classList.remove('noVNC_open');
-    },
-
-/* ------^-------
- *  /PASSWORD
- * ==============
- *   FULLSCREEN
- * ------v------*/
-
-    toggleFullscreen: function() {
-        if (document.fullscreenElement || // alternative standard method
-            document.mozFullScreenElement || // currently working methods
-            document.webkitFullscreenElement ||
-            document.msFullscreenElement) {
-            if (document.exitFullscreen) {
-                document.exitFullscreen();
-            } else if (document.mozCancelFullScreen) {
-                document.mozCancelFullScreen();
-            } else if (document.webkitExitFullscreen) {
-                document.webkitExitFullscreen();
-            } else if (document.msExitFullscreen) {
-                document.msExitFullscreen();
-            }
-        } else {
-            if (document.documentElement.requestFullscreen) {
-                document.documentElement.requestFullscreen();
-            } else if (document.documentElement.mozRequestFullScreen) {
-                document.documentElement.mozRequestFullScreen();
-            } else if (document.documentElement.webkitRequestFullscreen) {
-                document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
-            } else if (document.body.msRequestFullscreen) {
-                document.body.msRequestFullscreen();
-            }
-        }
-        UI.enableDisableViewClip();
-        UI.updateFullscreenButton();
-    },
-
-    updateFullscreenButton: function() {
-        if (document.fullscreenElement || // alternative standard method
-            document.mozFullScreenElement || // currently working methods
-            document.webkitFullscreenElement ||
-            document.msFullscreenElement ) {
-            document.getElementById('noVNC_fullscreen_button')
-                .classList.add("noVNC_selected");
-        } else {
-            document.getElementById('noVNC_fullscreen_button')
-                .classList.remove("noVNC_selected");
-        }
-    },
-
-/* ------^-------
- *  /FULLSCREEN
- * ==============
- *     RESIZE
- * ------v------*/
-
-    // Apply remote resizing or local scaling
-    applyResizeMode: function() {
-        if (!UI.rfb) return;
-
-        UI.rfb.scaleViewport = UI.getSetting('resize') === 'scale';
-        UI.rfb.resizeSession = UI.getSetting('resize') === 'remote';
-    },
-
-/* ------^-------
- *    /RESIZE
- * ==============
- * VIEW CLIPPING
- * ------v------*/
-
-    // Update parameters that depend on the viewport clip setting
-    updateViewClip: function() {
-        if (!UI.rfb) return;
-
-        var cur_clip = UI.rfb.clipViewport;
-        var new_clip = UI.getSetting('view_clip');
-
-        if (isTouchDevice) {
-            // Touch devices usually have shit scrollbars
-            new_clip = true;
-        }
-
-        if (cur_clip !== new_clip) {
-            UI.rfb.clipViewport = new_clip;
-        }
-
-        // Changing the viewport may change the state of
-        // the dragging button
-        UI.updateViewDrag();
-    },
-
-    // Handle special cases where viewport clipping is forced on/off or locked
-    enableDisableViewClip: function() {
-        var resizeSetting = UI.getSetting('resize');
-        // Disable clipping if we are scaling, connected or on touch
-        if (resizeSetting === 'scale' ||
-            isTouchDevice) {
-            UI.disableSetting('view_clip');
-        } else {
-            UI.enableSetting('view_clip');
-        }
-    },
-
-/* ------^-------
- * /VIEW CLIPPING
- * ==============
- *    VIEWDRAG
- * ------v------*/
-
-    toggleViewDrag: function() {
-        if (!UI.rfb) return;
-
-        var drag = UI.rfb.dragViewport;
-        UI.setViewDrag(!drag);
-     },
-
-    // Set the view drag mode which moves the viewport on mouse drags
-    setViewDrag: function(drag) {
-        if (!UI.rfb) return;
-
-        UI.rfb.dragViewport = drag;
-
-        UI.updateViewDrag();
-    },
-
-    updateViewDrag: function() {
-        if (!UI.connected) return;
-
-        var viewDragButton = document.getElementById('noVNC_view_drag_button');
-
-        if (!UI.rfb.clipViewport && UI.rfb.dragViewport) {
-            // We are no longer clipping the viewport. Make sure
-            // viewport drag isn't active when it can't be used.
-            UI.rfb.dragViewport = false;
-        }
-
-        if (UI.rfb.dragViewport) {
-            viewDragButton.classList.add("noVNC_selected");
-        } else {
-            viewDragButton.classList.remove("noVNC_selected");
-        }
-
-        // Different behaviour for touch vs non-touch
-        // The button is disabled instead of hidden on touch devices
-        if (isTouchDevice) {
-            viewDragButton.classList.remove("noVNC_hidden");
-
-            if (UI.rfb.clipViewport) {
-                viewDragButton.disabled = false;
-            } else {
-                viewDragButton.disabled = true;
-            }
-        } else {
-            viewDragButton.disabled = false;
-
-            if (UI.rfb.clipViewport) {
-                viewDragButton.classList.remove("noVNC_hidden");
-            } else {
-                viewDragButton.classList.add("noVNC_hidden");
-            }
-        }
-    },
-
-/* ------^-------
- *   /VIEWDRAG
- * ==============
- *    KEYBOARD
- * ------v------*/
-
-    showVirtualKeyboard: function() {
-        if (!isTouchDevice) return;
-
-        var input = document.getElementById('noVNC_keyboardinput');
-
-        if (document.activeElement == input) return;
-
-        input.focus();
-
-        try {
-            var l = input.value.length;
-            // Move the caret to the end
-            input.setSelectionRange(l, l);
-        } catch (err) {} // setSelectionRange is undefined in Google Chrome
-    },
-
-    hideVirtualKeyboard: function() {
-        if (!isTouchDevice) return;
-
-        var input = document.getElementById('noVNC_keyboardinput');
-
-        if (document.activeElement != input) return;
-
-        input.blur();
-    },
-
-    toggleVirtualKeyboard: function () {
-        if (document.getElementById('noVNC_keyboard_button')
-            .classList.contains("noVNC_selected")) {
-            UI.hideVirtualKeyboard();
-        } else {
-            UI.showVirtualKeyboard();
-        }
-    },
-
-    onfocusVirtualKeyboard: function(event) {
-        document.getElementById('noVNC_keyboard_button')
-            .classList.add("noVNC_selected");
-        if (UI.rfb) {
-            UI.rfb.focusOnClick = false;
-        }
-    },
-
-    onblurVirtualKeyboard: function(event) {
-        document.getElementById('noVNC_keyboard_button')
-            .classList.remove("noVNC_selected");
-        if (UI.rfb) {
-            UI.rfb.focusOnClick = true;
-        }
-    },
-
-    keepVirtualKeyboard: function(event) {
-        var input = document.getElementById('noVNC_keyboardinput');
-
-        // Only prevent focus change if the virtual keyboard is active
-        if (document.activeElement != input) {
-            return;
-        }
-
-        // Only allow focus to move to other elements that need
-        // focus to function properly
-        if (event.target.form !== undefined) {
-            switch (event.target.type) {
-                case 'text':
-                case 'email':
-                case 'search':
-                case 'password':
-                case 'tel':
-                case 'url':
-                case 'textarea':
-                case 'select-one':
-                case 'select-multiple':
-                    return;
-            }
-        }
-
-        event.preventDefault();
-    },
-
-    keyboardinputReset: function() {
-        var kbi = document.getElementById('noVNC_keyboardinput');
-        kbi.value = new Array(UI.defaultKeyboardinputLen).join("_");
-        UI.lastKeyboardinput = kbi.value;
-    },
-
-    keyEvent: function (keysym, code, down) {
-        if (!UI.rfb) return;
-
-        UI.rfb.sendKey(keysym, code, down);
-    },
-
-    // When normal keyboard events are left uncought, use the input events from
-    // the keyboardinput element instead and generate the corresponding key events.
-    // This code is required since some browsers on Android are inconsistent in
-    // sending keyCodes in the normal keyboard events when using on screen keyboards.
-    keyInput: function(event) {
-
-        if (!UI.rfb) return;
-
-        var newValue = event.target.value;
-
-        if (!UI.lastKeyboardinput) {
-            UI.keyboardinputReset();
-        }
-        var oldValue = UI.lastKeyboardinput;
-
-        var newLen;
-        try {
-            // Try to check caret position since whitespace at the end
-            // will not be considered by value.length in some browsers
-            newLen = Math.max(event.target.selectionStart, newValue.length);
-        } catch (err) {
-            // selectionStart is undefined in Google Chrome
-            newLen = newValue.length;
-        }
-        var oldLen = oldValue.length;
-
-        var backspaces;
-        var inputs = newLen - oldLen;
-        if (inputs < 0) {
-            backspaces = -inputs;
-        } else {
-            backspaces = 0;
-        }
-
-        // Compare the old string with the new to account for
-        // text-corrections or other input that modify existing text
-        var i;
-        for (i = 0; i < Math.min(oldLen, newLen); i++) {
-            if (newValue.charAt(i) != oldValue.charAt(i)) {
-                inputs = newLen - i;
-                backspaces = oldLen - i;
-                break;
-            }
-        }
-
-        // Send the key events
-        for (i = 0; i < backspaces; i++) {
-            UI.rfb.sendKey(KeyTable.XK_BackSpace, "Backspace");
-        }
-        for (i = newLen - inputs; i < newLen; i++) {
-            UI.rfb.sendKey(keysyms.lookup(newValue.charCodeAt(i)));
-        }
-
-        // Control the text content length in the keyboardinput element
-        if (newLen > 2 * UI.defaultKeyboardinputLen) {
-            UI.keyboardinputReset();
-        } else if (newLen < 1) {
-            // There always have to be some text in the keyboardinput
-            // element with which backspace can interact.
-            UI.keyboardinputReset();
-            // This sometimes causes the keyboard to disappear for a second
-            // but it is required for the android keyboard to recognize that
-            // text has been added to the field
-            event.target.blur();
-            // This has to be ran outside of the input handler in order to work
-            setTimeout(event.target.focus.bind(event.target), 0);
-        } else {
-            UI.lastKeyboardinput = newValue;
-        }
-    },
-
-/* ------^-------
- *   /KEYBOARD
- * ==============
- *   EXTRA KEYS
- * ------v------*/
-
-    openExtraKeys: function() {
-        UI.closeAllPanels();
-        UI.openControlbar();
-
-        document.getElementById('noVNC_modifiers')
-            .classList.add("noVNC_open");
-        document.getElementById('noVNC_toggle_extra_keys_button')
-            .classList.add("noVNC_selected");
-    },
-
-    closeExtraKeys: function() {
-        document.getElementById('noVNC_modifiers')
-            .classList.remove("noVNC_open");
-        document.getElementById('noVNC_toggle_extra_keys_button')
-            .classList.remove("noVNC_selected");
-    },
-
-    toggleExtraKeys: function() {
-        if(document.getElementById('noVNC_modifiers')
-            .classList.contains("noVNC_open")) {
-            UI.closeExtraKeys();
-        } else  {
-            UI.openExtraKeys();
-        }
-    },
-
-    sendEsc: function() {
-        UI.rfb.sendKey(KeyTable.XK_Escape, "Escape");
-    },
-
-    sendTab: function() {
-        UI.rfb.sendKey(KeyTable.XK_Tab);
-    },
-
-    toggleCtrl: function() {
-        var btn = document.getElementById('noVNC_toggle_ctrl_button');
-        if (btn.classList.contains("noVNC_selected")) {
-            UI.rfb.sendKey(KeyTable.XK_Control_L, "ControlLeft", false);
-            btn.classList.remove("noVNC_selected");
-        } else {
-            UI.rfb.sendKey(KeyTable.XK_Control_L, "ControlLeft", true);
-            btn.classList.add("noVNC_selected");
-        }
-    },
-
-    toggleAlt: function() {
-        var btn = document.getElementById('noVNC_toggle_alt_button');
-        if (btn.classList.contains("noVNC_selected")) {
-            UI.rfb.sendKey(KeyTable.XK_Alt_L, "AltLeft", false);
-            btn.classList.remove("noVNC_selected");
-        } else {
-            UI.rfb.sendKey(KeyTable.XK_Alt_L, "AltLeft", true);
-            btn.classList.add("noVNC_selected");
-        }
-    },
-
-    sendCtrlAltDel: function() {
-        UI.rfb.sendCtrlAltDel();
-    },
-
-/* ------^-------
- *   /EXTRA KEYS
- * ==============
- *     MISC
- * ------v------*/
-
-    setMouseButton: function(num) {
-        var view_only = UI.rfb.viewOnly;
-        if (UI.rfb && !view_only) {
-            UI.rfb.touchButton = num;
-        }
-
-        var blist = [0, 1,2,4];
-        for (var b = 0; b < blist.length; b++) {
-            var button = document.getElementById('noVNC_mouse_button' +
-                                                 blist[b]);
-            if (blist[b] === num && !view_only) {
-                button.classList.remove("noVNC_hidden");
-            } else {
-                button.classList.add("noVNC_hidden");
-            }
-        }
-    },
-
-    updateViewOnly: function() {
-        if (!UI.rfb) return;
-        UI.rfb.viewOnly = UI.getSetting('view_only');
-
-        // Hide input related buttons in view only mode
-        if (UI.rfb.viewOnly) {
-            document.getElementById('noVNC_keyboard_button')
-                .classList.add('noVNC_hidden');
-            document.getElementById('noVNC_toggle_extra_keys_button')
-                .classList.add('noVNC_hidden');
-        } else {
-            document.getElementById('noVNC_keyboard_button')
-                .classList.remove('noVNC_hidden');
-            document.getElementById('noVNC_toggle_extra_keys_button')
-                .classList.remove('noVNC_hidden');
-        }
-        UI.setMouseButton(1); //has it's own logic for hiding/showing
-    },
-
-    updateLogging: function() {
-        WebUtil.init_logging(UI.getSetting('logging'));
-    },
-
-    updateDesktopName: function(e) {
-        UI.desktopName = e.detail.name;
-        // Display the desktop name in the document title
-        document.title = e.detail.name + " - noVNC";
-    },
-
-    bell: function(e) {
-        if (WebUtil.getConfigVar('bell', 'on') === 'on') {
-            var promise = document.getElementById('noVNC_bell').play();
-            // The standards disagree on the return value here
-            if (promise) {
-                promise.catch(function(e) {
-                    if (e.name === "NotAllowedError") {
-                        // Ignore when the browser doesn't let us play audio.
-                        // It is common that the browsers require audio to be
-                        // initiated from a user action.
-                    } else {
-                        Log.Error("Unable to play bell: " + e);
-                    }
-                });
-            }
-        }
-    },
-
-    //Helper to add options to dropdown.
-    addOption: function(selectbox, text, value) {
-        var optn = document.createElement("OPTION");
-        optn.text = text;
-        optn.value = value;
-        selectbox.options.add(optn);
-    },
-
-/* ------^-------
- *    /MISC
- * ==============
- */
-};
-
-// Set up translations
-var LINGUAS = ["de", "el", "es", "nl", "pl", "sv", "tr", "zh"];
-l10n.setup(LINGUAS);
-if (l10n.language !== "en" && l10n.dictionary === undefined) {
-    WebUtil.fetchJSON('app/locale/' + l10n.language + '.json', function (translations) {
-        l10n.dictionary = translations;
-
-        // wait for translations to load before loading the UI
-        UI.prime();
-    }, function (err) {
-        Log.Error("Failed to load translations: " + err);
-        UI.prime();
-    });
-} else {
-    UI.prime();
-}
-
-export default UI;

+ 0 - 230
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/webutil.js

@@ -1,230 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2013 NTT corp.
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
-
-import { init_logging as main_init_logging } from '../core/util/logging.js';
-
-// init log level reading the logging HTTP param
-export function init_logging (level) {
-    "use strict";
-    if (typeof level !== "undefined") {
-        main_init_logging(level);
-    } else {
-        var param = document.location.href.match(/logging=([A-Za-z0-9\._\-]*)/);
-        main_init_logging(param || undefined);
-    }
-};
-
-// Read a query string variable
-export function getQueryVar (name, defVal) {
-    "use strict";
-    var re = new RegExp('.*[?&]' + name + '=([^&#]*)'),
-        match = document.location.href.match(re);
-    if (typeof defVal === 'undefined') { defVal = null; }
-    if (match) {
-        return decodeURIComponent(match[1]);
-    } else {
-        return defVal;
-    }
-};
-
-// Read a hash fragment variable
-export function getHashVar (name, defVal) {
-    "use strict";
-    var re = new RegExp('.*[&#]' + name + '=([^&]*)'),
-        match = document.location.hash.match(re);
-    if (typeof defVal === 'undefined') { defVal = null; }
-    if (match) {
-        return decodeURIComponent(match[1]);
-    } else {
-        return defVal;
-    }
-};
-
-// Read a variable from the fragment or the query string
-// Fragment takes precedence
-export function getConfigVar (name, defVal) {
-    "use strict";
-    var val = getHashVar(name);
-    if (val === null) {
-        val = getQueryVar(name, defVal);
-    }
-    return val;
-};
-
-/*
- * Cookie handling. Dervied from: http://www.quirksmode.org/js/cookies.html
- */
-
-// No days means only for this browser session
-export function createCookie (name, value, days) {
-    "use strict";
-    var date, expires;
-    if (days) {
-        date = new Date();
-        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
-        expires = "; expires=" + date.toGMTString();
-    } else {
-        expires = "";
-    }
-
-    var secure;
-    if (document.location.protocol === "https:") {
-        secure = "; secure";
-    } else {
-        secure = "";
-    }
-    document.cookie = name + "=" + value + expires + "; path=/" + secure;
-};
-
-export function readCookie (name, defaultValue) {
-    "use strict";
-    var nameEQ = name + "=",
-        ca = document.cookie.split(';');
-
-    for (var i = 0; i < ca.length; i += 1) {
-        var c = ca[i];
-        while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
-        if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); }
-    }
-    return (typeof defaultValue !== 'undefined') ? defaultValue : null;
-};
-
-export function eraseCookie (name) {
-    "use strict";
-    createCookie(name, "", -1);
-};
-
-/*
- * Setting handling.
- */
-
-var settings = {};
-
-export function initSettings (callback /*, ...callbackArgs */) {
-    "use strict";
-    var callbackArgs = Array.prototype.slice.call(arguments, 1);
-    if (window.chrome && window.chrome.storage) {
-        window.chrome.storage.sync.get(function (cfg) {
-            settings = cfg;
-            if (callback) {
-                callback.apply(this, callbackArgs);
-            }
-        });
-    } else {
-        // No-op
-        if (callback) {
-            callback.apply(this, callbackArgs);
-        }
-    }
-};
-
-// No days means only for this browser session
-export function writeSetting (name, value) {
-    "use strict";
-    if (window.chrome && window.chrome.storage) {
-        if (settings[name] !== value) {
-            settings[name] = value;
-            window.chrome.storage.sync.set(settings);
-        }
-    } else {
-        localStorage.setItem(name, value);
-    }
-};
-
-export function readSetting (name, defaultValue) {
-    "use strict";
-    var value;
-    if (window.chrome && window.chrome.storage) {
-        value = settings[name];
-    } else {
-        value = localStorage.getItem(name);
-    }
-    if (typeof value === "undefined") {
-        value = null;
-    }
-    if (value === null && typeof defaultValue !== "undefined") {
-        return defaultValue;
-    } else {
-        return value;
-    }
-};
-
-export function eraseSetting (name) {
-    "use strict";
-    if (window.chrome && window.chrome.storage) {
-        window.chrome.storage.sync.remove(name);
-        delete settings[name];
-    } else {
-        localStorage.removeItem(name);
-    }
-};
-
-export function injectParamIfMissing (path, param, value) {
-    // force pretend that we're dealing with a relative path
-    // (assume that we wanted an extra if we pass one in)
-    path = "/" + path;
-
-    var elem = document.createElement('a');
-    elem.href = path;
-
-    var param_eq = encodeURIComponent(param) + "=";
-    var query;
-    if (elem.search) {
-        query = elem.search.slice(1).split('&');
-    } else {
-        query = [];
-    }
-
-    if (!query.some(function (v) { return v.startsWith(param_eq); })) {
-        query.push(param_eq + encodeURIComponent(value));
-        elem.search = "?" + query.join("&");
-    }
-
-    // some browsers (e.g. IE11) may occasionally omit the leading slash
-    // in the elem.pathname string. Handle that case gracefully.
-    if (elem.pathname.charAt(0) == "/") {
-        return elem.pathname.slice(1) + elem.search + elem.hash;
-    } else {
-        return elem.pathname + elem.search + elem.hash;
-    }
-};
-
-// sadly, we can't use the Fetch API until we decide to drop
-// IE11 support or polyfill promises and fetch in IE11.
-// resolve will receive an object on success, while reject
-// will receive either an event or an error on failure.
-export function fetchJSON(path, resolve, reject) {
-    // NB: IE11 doesn't support JSON as a responseType
-    var req = new XMLHttpRequest();
-    req.open('GET', path);
-
-    req.onload = function () {
-        if (req.status === 200) {
-            try {
-                var resObj = JSON.parse(req.responseText);
-            } catch (err) {
-                reject(err);
-                return;
-            }
-            resolve(resObj);
-        } else {
-            reject(new Error("XHR got non-200 status while trying to load '" + path + "': " + req.status));
-        }
-    };
-
-    req.onerror = function (evt) {
-        reject(new Error("XHR encountered an error while trying to load '" + path + "': " + evt.message));
-    };
-
-    req.ontimeout = function (evt) {
-        reject(new Error("XHR timed out while trying to load '" + path + "'"));
-    };
-
-    req.send();
-}

+ 0 - 110
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/base64.js

@@ -1,110 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// From: http://hg.mozilla.org/mozilla-central/raw-file/ec10630b1a54/js/src/devtools/jint/sunspider/string-base64.js
-
-import * as Log from './util/logging.js';
-
-export default {
-    /* Convert data (an array of integers) to a Base64 string. */
-    toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''),
-    base64Pad     : '=',
-
-    encode: function (data) {
-        "use strict";
-        var result = '';
-        var toBase64Table = this.toBase64Table;
-        var length = data.length;
-        var lengthpad = (length % 3);
-        // Convert every three bytes to 4 ascii characters.
-
-        for (var i = 0; i < (length - 2); i += 3) {
-            result += toBase64Table[data[i] >> 2];
-            result += toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)];
-            result += toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)];
-            result += toBase64Table[data[i + 2] & 0x3f];
-        }
-
-        // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
-        var j = 0;
-        if (lengthpad === 2) {
-            j = length - lengthpad;
-            result += toBase64Table[data[j] >> 2];
-            result += toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)];
-            result += toBase64Table[(data[j + 1] & 0x0f) << 2];
-            result += toBase64Table[64];
-        } else if (lengthpad === 1) {
-            j = length - lengthpad;
-            result += toBase64Table[data[j] >> 2];
-            result += toBase64Table[(data[j] & 0x03) << 4];
-            result += toBase64Table[64];
-            result += toBase64Table[64];
-        }
-
-        return result;
-    },
-
-    /* Convert Base64 data to a string */
-    toBinaryTable : [
-        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-        -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
-        52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
-        -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
-        15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-        -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
-        41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-    ],
-
-    decode: function (data, offset) {
-        "use strict";
-        offset = typeof(offset) !== 'undefined' ? offset : 0;
-        var toBinaryTable = this.toBinaryTable;
-        var base64Pad = this.base64Pad;
-        var result, result_length;
-        var leftbits = 0; // number of bits decoded, but yet to be appended
-        var leftdata = 0; // bits decoded, but yet to be appended
-        var data_length = data.indexOf('=') - offset;
-
-        if (data_length < 0) { data_length = data.length - offset; }
-
-        /* Every four characters is 3 resulting numbers */
-        result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5);
-        result = new Array(result_length);
-
-        // Convert one by one.
-        for (var idx = 0, i = offset; i < data.length; i++) {
-            var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
-            var padding = (data.charAt(i) === base64Pad);
-            // Skip illegal characters and whitespace
-            if (c === -1) {
-                Log.Error("Illegal character code " + data.charCodeAt(i) + " at position " + i);
-                continue;
-            }
-
-            // Collect data into leftdata, update bitcount
-            leftdata = (leftdata << 6) | c;
-            leftbits += 6;
-
-            // If we have 8 or more bits, append 8 bits to the result
-            if (leftbits >= 8) {
-                leftbits -= 8;
-                // Append if not padding.
-                if (!padding) {
-                    result[idx++] = (leftdata >> leftbits) & 0xff;
-                }
-                leftdata &= (1 << leftbits) - 1;
-            }
-        }
-
-        // If there are any bits left, the base64 string was corrupted
-        if (leftbits) {
-            err = new Error('Corrupted base64 string');
-            err.name = 'Base64-Error';
-            throw err;
-        }
-
-        return result;
-    }
-}; /* End of Base64 namespace */

+ 0 - 271
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/des.js

@@ -1,271 +0,0 @@
-/*
- * Ported from Flashlight VNC ActionScript implementation:
- *     http://www.wizhelp.com/flashlight-vnc/
- *
- * Full attribution follows:
- *
- * -------------------------------------------------------------------------
- *
- * This DES class has been extracted from package Acme.Crypto for use in VNC.
- * The unnecessary odd parity code has been removed.
- *
- * These changes are:
- *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
-
- * DesCipher - the DES encryption method
- *
- * The meat of this code is by Dave Zimmerman <dzimm@widget.com>, and is:
- *
- * Copyright (c) 1996 Widget Workshop, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and
- * without fee is hereby granted, provided that this copyright notice is kept
- * intact.
- *
- * WIDGET WORKSHOP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY
- * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WIDGET WORKSHOP SHALL NOT BE LIABLE
- * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- *
- * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
- * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
- * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
- * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
- * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
- * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
- * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  WIDGET WORKSHOP
- * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
- * HIGH RISK ACTIVITIES.
- *
- *
- * The rest is:
- *
- * Copyright (C) 1996 by Jef Poskanzer <jef@acme.com>.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * Visit the ACME Labs Java page for up-to-date versions of this and other
- * fine Java utilities: http://www.acme.com/java/
- */
-
-export default function DES(passwd) {
-    "use strict";
-
-    // Tables, permutations, S-boxes, etc.
-    var PC2 = [13,16,10,23, 0, 4, 2,27,14, 5,20, 9,22,18,11, 3,
-               25, 7,15, 6,26,19,12, 1,40,51,30,36,46,54,29,39,
-               50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31 ],
-        totrot = [ 1, 2, 4, 6, 8,10,12,14,15,17,19,21,23,25,27,28],
-        z = 0x0, a,b,c,d,e,f, SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,
-        keys = [];
-
-    a=1<<16; b=1<<24; c=a|b; d=1<<2; e=1<<10; f=d|e;
-    SP1 = [c|e,z|z,a|z,c|f,c|d,a|f,z|d,a|z,z|e,c|e,c|f,z|e,b|f,c|d,b|z,z|d,
-           z|f,b|e,b|e,a|e,a|e,c|z,c|z,b|f,a|d,b|d,b|d,a|d,z|z,z|f,a|f,b|z,
-           a|z,c|f,z|d,c|z,c|e,b|z,b|z,z|e,c|d,a|z,a|e,b|d,z|e,z|d,b|f,a|f,
-           c|f,a|d,c|z,b|f,b|d,z|f,a|f,c|e,z|f,b|e,b|e,z|z,a|d,a|e,z|z,c|d];
-    a=1<<20; b=1<<31; c=a|b; d=1<<5; e=1<<15; f=d|e;
-    SP2 = [c|f,b|e,z|e,a|f,a|z,z|d,c|d,b|f,b|d,c|f,c|e,b|z,b|e,a|z,z|d,c|d,
-           a|e,a|d,b|f,z|z,b|z,z|e,a|f,c|z,a|d,b|d,z|z,a|e,z|f,c|e,c|z,z|f,
-           z|z,a|f,c|d,a|z,b|f,c|z,c|e,z|e,c|z,b|e,z|d,c|f,a|f,z|d,z|e,b|z,
-           z|f,c|e,a|z,b|d,a|d,b|f,b|d,a|d,a|e,z|z,b|e,z|f,b|z,c|d,c|f,a|e];
-    a=1<<17; b=1<<27; c=a|b; d=1<<3; e=1<<9; f=d|e;
-    SP3 = [z|f,c|e,z|z,c|d,b|e,z|z,a|f,b|e,a|d,b|d,b|d,a|z,c|f,a|d,c|z,z|f,
-           b|z,z|d,c|e,z|e,a|e,c|z,c|d,a|f,b|f,a|e,a|z,b|f,z|d,c|f,z|e,b|z,
-           c|e,b|z,a|d,z|f,a|z,c|e,b|e,z|z,z|e,a|d,c|f,b|e,b|d,z|e,z|z,c|d,
-           b|f,a|z,b|z,c|f,z|d,a|f,a|e,b|d,c|z,b|f,z|f,c|z,a|f,z|d,c|d,a|e];
-    a=1<<13; b=1<<23; c=a|b; d=1<<0; e=1<<7; f=d|e;
-    SP4 = [c|d,a|f,a|f,z|e,c|e,b|f,b|d,a|d,z|z,c|z,c|z,c|f,z|f,z|z,b|e,b|d,
-           z|d,a|z,b|z,c|d,z|e,b|z,a|d,a|e,b|f,z|d,a|e,b|e,a|z,c|e,c|f,z|f,
-           b|e,b|d,c|z,c|f,z|f,z|z,z|z,c|z,a|e,b|e,b|f,z|d,c|d,a|f,a|f,z|e,
-           c|f,z|f,z|d,a|z,b|d,a|d,c|e,b|f,a|d,a|e,b|z,c|d,z|e,b|z,a|z,c|e];
-    a=1<<25; b=1<<30; c=a|b; d=1<<8; e=1<<19; f=d|e;
-    SP5 = [z|d,a|f,a|e,c|d,z|e,z|d,b|z,a|e,b|f,z|e,a|d,b|f,c|d,c|e,z|f,b|z,
-           a|z,b|e,b|e,z|z,b|d,c|f,c|f,a|d,c|e,b|d,z|z,c|z,a|f,a|z,c|z,z|f,
-           z|e,c|d,z|d,a|z,b|z,a|e,c|d,b|f,a|d,b|z,c|e,a|f,b|f,z|d,a|z,c|e,
-           c|f,z|f,c|z,c|f,a|e,z|z,b|e,c|z,z|f,a|d,b|d,z|e,z|z,b|e,a|f,b|d];
-    a=1<<22; b=1<<29; c=a|b; d=1<<4; e=1<<14; f=d|e;
-    SP6 = [b|d,c|z,z|e,c|f,c|z,z|d,c|f,a|z,b|e,a|f,a|z,b|d,a|d,b|e,b|z,z|f,
-           z|z,a|d,b|f,z|e,a|e,b|f,z|d,c|d,c|d,z|z,a|f,c|e,z|f,a|e,c|e,b|z,
-           b|e,z|d,c|d,a|e,c|f,a|z,z|f,b|d,a|z,b|e,b|z,z|f,b|d,c|f,a|e,c|z,
-           a|f,c|e,z|z,c|d,z|d,z|e,c|z,a|f,z|e,a|d,b|f,z|z,c|e,b|z,a|d,b|f];
-    a=1<<21; b=1<<26; c=a|b; d=1<<1; e=1<<11; f=d|e;
-    SP7 = [a|z,c|d,b|f,z|z,z|e,b|f,a|f,c|e,c|f,a|z,z|z,b|d,z|d,b|z,c|d,z|f,
-           b|e,a|f,a|d,b|e,b|d,c|z,c|e,a|d,c|z,z|e,z|f,c|f,a|e,z|d,b|z,a|e,
-           b|z,a|e,a|z,b|f,b|f,c|d,c|d,z|d,a|d,b|z,b|e,a|z,c|e,z|f,a|f,c|e,
-           z|f,b|d,c|f,c|z,a|e,z|z,z|d,c|f,z|z,a|f,c|z,z|e,b|d,b|e,z|e,a|d];
-    a=1<<18; b=1<<28; c=a|b; d=1<<6; e=1<<12; f=d|e;
-    SP8 = [b|f,z|e,a|z,c|f,b|z,b|f,z|d,b|z,a|d,c|z,c|f,a|e,c|e,a|f,z|e,z|d,
-           c|z,b|d,b|e,z|f,a|e,a|d,c|d,c|e,z|f,z|z,z|z,c|d,b|d,b|e,a|f,a|z,
-           a|f,a|z,c|e,z|e,z|d,c|d,z|e,a|f,b|e,z|d,b|d,c|z,c|d,b|z,a|z,b|f,
-           z|z,c|f,a|d,b|d,c|z,b|e,b|f,z|z,c|f,a|e,a|e,z|f,z|f,a|d,b|z,c|e];
-
-    // Set the key.
-    function setKeys(keyBlock) {
-        var i, j, l, m, n, o, pc1m = [], pcr = [], kn = [],
-            raw0, raw1, rawi, KnLi;
-
-        for (j = 0, l = 56; j < 56; ++j, l -= 8) {
-            l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1
-            m = l & 0x7;
-            pc1m[j] = ((keyBlock[l >>> 3] & (1<<m)) !== 0) ? 1: 0;
-        }
-
-        for (i = 0; i < 16; ++i) {
-            m = i << 1;
-            n = m + 1;
-            kn[m] = kn[n] = 0;
-            for (o = 28; o < 59; o += 28) {
-                for (j = o - 28; j < o; ++j) {
-                    l = j + totrot[i];
-                    if (l < o) {
-                        pcr[j] = pc1m[l];
-                    } else {
-                        pcr[j] = pc1m[l - 28];
-                    }
-                }
-            }
-            for (j = 0; j < 24; ++j) {
-                if (pcr[PC2[j]] !== 0) {
-                    kn[m] |= 1 << (23 - j);
-                }
-                if (pcr[PC2[j + 24]] !== 0) {
-                    kn[n] |= 1 << (23 - j);
-                }
-            }
-        }
-
-        // cookey
-        for (i = 0, rawi = 0, KnLi = 0; i < 16; ++i) {
-            raw0 = kn[rawi++];
-            raw1 = kn[rawi++];
-            keys[KnLi] = (raw0 & 0x00fc0000) << 6;
-            keys[KnLi] |= (raw0 & 0x00000fc0) << 10;
-            keys[KnLi] |= (raw1 & 0x00fc0000) >>> 10;
-            keys[KnLi] |= (raw1 & 0x00000fc0) >>> 6;
-            ++KnLi;
-            keys[KnLi] = (raw0 & 0x0003f000) << 12;
-            keys[KnLi] |= (raw0 & 0x0000003f) << 16;
-            keys[KnLi] |= (raw1 & 0x0003f000) >>> 4;
-            keys[KnLi] |= (raw1 & 0x0000003f);
-            ++KnLi;
-        }
-    }
-
-    // Encrypt 8 bytes of text
-    function enc8(text) {
-        var i = 0, b = text.slice(), fval, keysi = 0,
-            l, r, x; // left, right, accumulator
-
-        // Squash 8 bytes to 2 ints
-        l = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];
-        r = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];
-
-        x = ((l >>> 4) ^ r) & 0x0f0f0f0f;
-        r ^= x;
-        l ^= (x << 4);
-        x = ((l >>> 16) ^ r) & 0x0000ffff;
-        r ^= x;
-        l ^= (x << 16);
-        x = ((r >>> 2) ^ l) & 0x33333333;
-        l ^= x;
-        r ^= (x << 2);
-        x = ((r >>> 8) ^ l) & 0x00ff00ff;
-        l ^= x;
-        r ^= (x << 8);
-        r = (r << 1) | ((r >>> 31) & 1);
-        x = (l ^ r) & 0xaaaaaaaa;
-        l ^= x;
-        r ^= x;
-        l = (l << 1) | ((l >>> 31) & 1);
-
-        for (i = 0; i < 8; ++i) {
-            x = (r << 28) | (r >>> 4);
-            x ^= keys[keysi++];
-            fval =  SP7[x & 0x3f];
-            fval |= SP5[(x >>> 8) & 0x3f];
-            fval |= SP3[(x >>> 16) & 0x3f];
-            fval |= SP1[(x >>> 24) & 0x3f];
-            x = r ^ keys[keysi++];
-            fval |= SP8[x & 0x3f];
-            fval |= SP6[(x >>> 8) & 0x3f];
-            fval |= SP4[(x >>> 16) & 0x3f];
-            fval |= SP2[(x >>> 24) & 0x3f];
-            l ^= fval;
-            x = (l << 28) | (l >>> 4);
-            x ^= keys[keysi++];
-            fval =  SP7[x & 0x3f];
-            fval |= SP5[(x >>> 8) & 0x3f];
-            fval |= SP3[(x >>> 16) & 0x3f];
-            fval |= SP1[(x >>> 24) & 0x3f];
-            x = l ^ keys[keysi++];
-            fval |= SP8[x & 0x0000003f];
-            fval |= SP6[(x >>> 8) & 0x3f];
-            fval |= SP4[(x >>> 16) & 0x3f];
-            fval |= SP2[(x >>> 24) & 0x3f];
-            r ^= fval;
-        }
-
-        r = (r << 31) | (r >>> 1);
-        x = (l ^ r) & 0xaaaaaaaa;
-        l ^= x;
-        r ^= x;
-        l = (l << 31) | (l >>> 1);
-        x = ((l >>> 8) ^ r) & 0x00ff00ff;
-        r ^= x;
-        l ^= (x << 8);
-        x = ((l >>> 2) ^ r) & 0x33333333;
-        r ^= x;
-        l ^= (x << 2);
-        x = ((r >>> 16) ^ l) & 0x0000ffff;
-        l ^= x;
-        r ^= (x << 16);
-        x = ((r >>> 4) ^ l) & 0x0f0f0f0f;
-        l ^= x;
-        r ^= (x << 4);
-
-        // Spread ints to bytes
-        x = [r, l];
-        for (i = 0; i < 8; i++) {
-            b[i] = (x[i>>>2] >>> (8 * (3 - (i % 4)))) % 256;
-            if (b[i] < 0) { b[i] += 256; } // unsigned
-        }
-        return b;
-    }
-
-    // Encrypt 16 bytes of text using passwd as key
-    function encrypt(t) {
-        return enc8(t.slice(0, 8)).concat(enc8(t.slice(8, 16)));
-    }
-
-    setKeys(passwd);             // Setup keys
-    return {'encrypt': encrypt}; // Public interface
-
-}; // function DES

+ 0 - 698
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/display.js

@@ -1,698 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2015 Samuel Mannehed for Cendio AB
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
-
-import * as Log from './util/logging.js';
-import Base64 from "./base64.js";
-
-export default function Display(target) {
-    this._drawCtx = null;
-    this._c_forceCanvas = false;
-
-    this._renderQ = [];  // queue drawing actions for in-oder rendering
-    this._flushing = false;
-
-    // the full frame buffer (logical canvas) size
-    this._fb_width = 0;
-    this._fb_height = 0;
-
-    this._prevDrawStyle = "";
-    this._tile = null;
-    this._tile16x16 = null;
-    this._tile_x = 0;
-    this._tile_y = 0;
-
-    Log.Debug(">> Display.constructor");
-
-    // The visible canvas
-    this._target = target;
-
-    if (!this._target) {
-        throw new Error("Target must be set");
-    }
-
-    if (typeof this._target === 'string') {
-        throw new Error('target must be a DOM element');
-    }
-
-    if (!this._target.getContext) {
-        throw new Error("no getContext method");
-    }
-
-    this._targetCtx = this._target.getContext('2d');
-
-    // the visible canvas viewport (i.e. what actually gets seen)
-    this._viewportLoc = { 'x': 0, 'y': 0, 'w': this._target.width, 'h': this._target.height };
-
-    // The hidden canvas, where we do the actual rendering
-    this._backbuffer = document.createElement('canvas');
-    this._drawCtx = this._backbuffer.getContext('2d');
-
-    this._damageBounds = { left:0, top:0,
-                           right: this._backbuffer.width,
-                           bottom: this._backbuffer.height };
-
-    Log.Debug("User Agent: " + navigator.userAgent);
-
-    this.clear();
-
-    // Check canvas features
-    if (!('createImageData' in this._drawCtx)) {
-        throw new Error("Canvas does not support createImageData");
-    }
-
-    this._tile16x16 = this._drawCtx.createImageData(16, 16);
-    Log.Debug("<< Display.constructor");
-};
-
-var SUPPORTS_IMAGEDATA_CONSTRUCTOR = false;
-try {
-    new ImageData(new Uint8ClampedArray(4), 1, 1);
-    SUPPORTS_IMAGEDATA_CONSTRUCTOR = true;
-} catch (ex) {
-    // ignore failure
-}
-
-Display.prototype = {
-    // ===== PROPERTIES =====
-
-    _scale: 1.0,
-    get scale() { return this._scale; },
-    set scale(scale) {
-        this._rescale(scale);
-    },
-
-    _clipViewport: false,
-    get clipViewport() { return this._clipViewport; },
-    set clipViewport(viewport) {
-        this._clipViewport = viewport;
-        // May need to readjust the viewport dimensions
-        var vp = this._viewportLoc;
-        this.viewportChangeSize(vp.w, vp.h);
-        this.viewportChangePos(0, 0);
-    },
-
-    get width() {
-        return this._fb_width;
-    },
-    get height() {
-        return this._fb_height;
-    },
-
-    logo: null,
-
-    // ===== EVENT HANDLERS =====
-
-    onflush: function () {},        // A flush request has finished
-
-    // ===== PUBLIC METHODS =====
-
-    viewportChangePos: function (deltaX, deltaY) {
-        var vp = this._viewportLoc;
-        deltaX = Math.floor(deltaX);
-        deltaY = Math.floor(deltaY);
-
-        if (!this._clipViewport) {
-            deltaX = -vp.w;  // clamped later of out of bounds
-            deltaY = -vp.h;
-        }
-
-        var vx2 = vp.x + vp.w - 1;
-        var vy2 = vp.y + vp.h - 1;
-
-        // Position change
-
-        if (deltaX < 0 && vp.x + deltaX < 0) {
-            deltaX = -vp.x;
-        }
-        if (vx2 + deltaX >= this._fb_width) {
-            deltaX -= vx2 + deltaX - this._fb_width + 1;
-        }
-
-        if (vp.y + deltaY < 0) {
-            deltaY = -vp.y;
-        }
-        if (vy2 + deltaY >= this._fb_height) {
-            deltaY -= (vy2 + deltaY - this._fb_height + 1);
-        }
-
-        if (deltaX === 0 && deltaY === 0) {
-            return;
-        }
-        Log.Debug("viewportChange deltaX: " + deltaX + ", deltaY: " + deltaY);
-
-        vp.x += deltaX;
-        vp.y += deltaY;
-
-        this._damage(vp.x, vp.y, vp.w, vp.h);
-
-        this.flip();
-    },
-
-    viewportChangeSize: function(width, height) {
-
-        if (!this._clipViewport ||
-            typeof(width) === "undefined" ||
-            typeof(height) === "undefined") {
-
-            Log.Debug("Setting viewport to full display region");
-            width = this._fb_width;
-            height = this._fb_height;
-        }
-
-        if (width > this._fb_width) {
-            width = this._fb_width;
-        }
-        if (height > this._fb_height) {
-            height = this._fb_height;
-        }
-
-        var vp = this._viewportLoc;
-        if (vp.w !== width || vp.h !== height) {
-            vp.w = width;
-            vp.h = height;
-
-            var canvas = this._target;
-            canvas.width = width;
-            canvas.height = height;
-
-            // The position might need to be updated if we've grown
-            this.viewportChangePos(0, 0);
-
-            this._damage(vp.x, vp.y, vp.w, vp.h);
-            this.flip();
-
-            // Update the visible size of the target canvas
-            this._rescale(this._scale);
-        }
-    },
-
-    absX: function (x) {
-        return x / this._scale + this._viewportLoc.x;
-    },
-
-    absY: function (y) {
-        return y / this._scale + this._viewportLoc.y;
-    },
-
-    resize: function (width, height) {
-        this._prevDrawStyle = "";
-
-        this._fb_width = width;
-        this._fb_height = height;
-
-        var canvas = this._backbuffer;
-        if (canvas.width !== width || canvas.height !== height) {
-
-            // We have to save the canvas data since changing the size will clear it
-            var saveImg = null;
-            if (canvas.width > 0 && canvas.height > 0) {
-                saveImg = this._drawCtx.getImageData(0, 0, canvas.width, canvas.height);
-            }
-
-            if (canvas.width !== width) {
-                canvas.width = width;
-            }
-            if (canvas.height !== height) {
-                canvas.height = height;
-            }
-
-            if (saveImg) {
-                this._drawCtx.putImageData(saveImg, 0, 0);
-            }
-        }
-
-        // Readjust the viewport as it may be incorrectly sized
-        // and positioned
-        var vp = this._viewportLoc;
-        this.viewportChangeSize(vp.w, vp.h);
-        this.viewportChangePos(0, 0);
-    },
-
-    // Track what parts of the visible canvas that need updating
-    _damage: function(x, y, w, h) {
-        if (x < this._damageBounds.left) {
-            this._damageBounds.left = x;
-        }
-        if (y < this._damageBounds.top) {
-            this._damageBounds.top = y;
-        }
-        if ((x + w) > this._damageBounds.right) {
-            this._damageBounds.right = x + w;
-        }
-        if ((y + h) > this._damageBounds.bottom) {
-            this._damageBounds.bottom = y + h;
-        }
-    },
-
-    // Update the visible canvas with the contents of the
-    // rendering canvas
-    flip: function(from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            this._renderQ_push({
-                'type': 'flip'
-            });
-        } else {
-            var x, y, vx, vy, w, h;
-
-            x = this._damageBounds.left;
-            y = this._damageBounds.top;
-            w = this._damageBounds.right - x;
-            h = this._damageBounds.bottom - y;
-
-            vx = x - this._viewportLoc.x;
-            vy = y - this._viewportLoc.y;
-
-            if (vx < 0) {
-                w += vx;
-                x -= vx;
-                vx = 0;
-            }
-            if (vy < 0) {
-                h += vy;
-                y -= vy;
-                vy = 0;
-            }
-
-            if ((vx + w) > this._viewportLoc.w) {
-                w = this._viewportLoc.w - vx;
-            }
-            if ((vy + h) > this._viewportLoc.h) {
-                h = this._viewportLoc.h - vy;
-            }
-
-            if ((w > 0) && (h > 0)) {
-                // FIXME: We may need to disable image smoothing here
-                //        as well (see copyImage()), but we haven't
-                //        noticed any problem yet.
-                this._targetCtx.drawImage(this._backbuffer,
-                                          x, y, w, h,
-                                          vx, vy, w, h);
-            }
-
-            this._damageBounds.left = this._damageBounds.top = 65535;
-            this._damageBounds.right = this._damageBounds.bottom = 0;
-        }
-    },
-
-    clear: function () {
-        if (this._logo) {
-            this.resize(this._logo.width, this._logo.height);
-            this.imageRect(0, 0, this._logo.type, this._logo.data);
-        } else {
-            this.resize(240, 20);
-            this._drawCtx.clearRect(0, 0, this._fb_width, this._fb_height);
-        }
-        this.flip();
-    },
-
-    pending: function() {
-        return this._renderQ.length > 0;
-    },
-
-    flush: function() {
-        if (this._renderQ.length === 0) {
-            this.onflush();
-        } else {
-            this._flushing = true;
-        }
-    },
-
-    fillRect: function (x, y, width, height, color, from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            this._renderQ_push({
-                'type': 'fill',
-                'x': x,
-                'y': y,
-                'width': width,
-                'height': height,
-                'color': color
-            });
-        } else {
-            this._setFillColor(color);
-            this._drawCtx.fillRect(x, y, width, height);
-            this._damage(x, y, width, height);
-        }
-    },
-
-    copyImage: function (old_x, old_y, new_x, new_y, w, h, from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            this._renderQ_push({
-                'type': 'copy',
-                'old_x': old_x,
-                'old_y': old_y,
-                'x': new_x,
-                'y': new_y,
-                'width': w,
-                'height': h,
-            });
-        } else {
-            // Due to this bug among others [1] we need to disable the image-smoothing to
-            // avoid getting a blur effect when copying data.
-            //
-            // 1. https://bugzilla.mozilla.org/show_bug.cgi?id=1194719
-            //
-            // We need to set these every time since all properties are reset
-            // when the the size is changed
-            this._drawCtx.mozImageSmoothingEnabled = false;
-            this._drawCtx.webkitImageSmoothingEnabled = false;
-            this._drawCtx.msImageSmoothingEnabled = false;
-            this._drawCtx.imageSmoothingEnabled = false;
-
-            this._drawCtx.drawImage(this._backbuffer,
-                                    old_x, old_y, w, h,
-                                    new_x, new_y, w, h);
-            this._damage(new_x, new_y, w, h);
-        }
-    },
-
-    imageRect: function(x, y, mime, arr) {
-        var img = new Image();
-        img.src = "data: " + mime + ";base64," + Base64.encode(arr);
-        this._renderQ_push({
-            'type': 'img',
-            'img': img,
-            'x': x,
-            'y': y
-        });
-    },
-
-    // start updating a tile
-    startTile: function (x, y, width, height, color) {
-        this._tile_x = x;
-        this._tile_y = y;
-        if (width === 16 && height === 16) {
-            this._tile = this._tile16x16;
-        } else {
-            this._tile = this._drawCtx.createImageData(width, height);
-        }
-
-        var red = color[2];
-        var green = color[1];
-        var blue = color[0];
-
-        var data = this._tile.data;
-        for (var i = 0; i < width * height * 4; i += 4) {
-            data[i] = red;
-            data[i + 1] = green;
-            data[i + 2] = blue;
-            data[i + 3] = 255;
-        }
-    },
-
-    // update sub-rectangle of the current tile
-    subTile: function (x, y, w, h, color) {
-        var red = color[2];
-        var green = color[1];
-        var blue = color[0];
-        var xend = x + w;
-        var yend = y + h;
-
-        var data = this._tile.data;
-        var width = this._tile.width;
-        for (var j = y; j < yend; j++) {
-            for (var i = x; i < xend; i++) {
-                var p = (i + (j * width)) * 4;
-                data[p] = red;
-                data[p + 1] = green;
-                data[p + 2] = blue;
-                data[p + 3] = 255;
-            }
-        }
-    },
-
-    // draw the current tile to the screen
-    finishTile: function () {
-        this._drawCtx.putImageData(this._tile, this._tile_x, this._tile_y);
-        this._damage(this._tile_x, this._tile_y,
-                     this._tile.width, this._tile.height);
-    },
-
-    blitImage: function (x, y, width, height, arr, offset, from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            // NB(directxman12): it's technically more performant here to use preallocated arrays,
-            // but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
-            // this probably isn't getting called *nearly* as much
-            var new_arr = new Uint8Array(width * height * 4);
-            new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length));
-            this._renderQ_push({
-                'type': 'blit',
-                'data': new_arr,
-                'x': x,
-                'y': y,
-                'width': width,
-                'height': height,
-            });
-        } else {
-            this._bgrxImageData(x, y, width, height, arr, offset);
-        }
-    },
-
-    blitRgbImage: function (x, y , width, height, arr, offset, from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            // NB(directxman12): it's technically more performant here to use preallocated arrays,
-            // but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
-            // this probably isn't getting called *nearly* as much
-            var new_arr = new Uint8Array(width * height * 3);
-            new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length));
-            this._renderQ_push({
-                'type': 'blitRgb',
-                'data': new_arr,
-                'x': x,
-                'y': y,
-                'width': width,
-                'height': height,
-            });
-        } else {
-            this._rgbImageData(x, y, width, height, arr, offset);
-        }
-    },
-
-    blitRgbxImage: function (x, y, width, height, arr, offset, from_queue) {
-        if (this._renderQ.length !== 0 && !from_queue) {
-            // NB(directxman12): it's technically more performant here to use preallocated arrays,
-            // but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
-            // this probably isn't getting called *nearly* as much
-            var new_arr = new Uint8Array(width * height * 4);
-            new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length));
-            this._renderQ_push({
-                'type': 'blitRgbx',
-                'data': new_arr,
-                'x': x,
-                'y': y,
-                'width': width,
-                'height': height,
-            });
-        } else {
-            this._rgbxImageData(x, y, width, height, arr, offset);
-        }
-    },
-
-    drawImage: function (img, x, y) {
-        this._drawCtx.drawImage(img, x, y);
-        this._damage(x, y, img.width, img.height);
-    },
-
-    changeCursor: function (pixels, mask, hotx, hoty, w, h) {
-        Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h);
-    },
-
-    defaultCursor: function () {
-        this._target.style.cursor = "default";
-    },
-
-    disableLocalCursor: function () {
-        this._target.style.cursor = "none";
-    },
-
-    autoscale: function (containerWidth, containerHeight) {
-        var vp = this._viewportLoc;
-        var targetAspectRatio = containerWidth / containerHeight;
-        var fbAspectRatio = vp.w / vp.h;
-
-        var scaleRatio;
-        if (fbAspectRatio >= targetAspectRatio) {
-            scaleRatio = containerWidth / vp.w;
-        } else {
-            scaleRatio = containerHeight / vp.h;
-        }
-
-        this._rescale(scaleRatio);
-    },
-
-    // ===== PRIVATE METHODS =====
-
-    _rescale: function (factor) {
-        this._scale = factor;
-        var vp = this._viewportLoc;
-
-        // NB(directxman12): If you set the width directly, or set the
-        //                   style width to a number, the canvas is cleared.
-        //                   However, if you set the style width to a string
-        //                   ('NNNpx'), the canvas is scaled without clearing.
-        var width = Math.round(factor * vp.w) + 'px';
-        var height = Math.round(factor * vp.h) + 'px';
-
-        if ((this._target.style.width !== width) ||
-            (this._target.style.height !== height)) {
-            this._target.style.width = width;
-            this._target.style.height = height;
-        }
-    },
-
-    _setFillColor: function (color) {
-        var newStyle = 'rgb(' + color[2] + ',' + color[1] + ',' + color[0] + ')';
-        if (newStyle !== this._prevDrawStyle) {
-            this._drawCtx.fillStyle = newStyle;
-            this._prevDrawStyle = newStyle;
-        }
-    },
-
-    _rgbImageData: function (x, y, width, height, arr, offset) {
-        var img = this._drawCtx.createImageData(width, height);
-        var data = img.data;
-        for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 3) {
-            data[i]     = arr[j];
-            data[i + 1] = arr[j + 1];
-            data[i + 2] = arr[j + 2];
-            data[i + 3] = 255;  // Alpha
-        }
-        this._drawCtx.putImageData(img, x, y);
-        this._damage(x, y, img.width, img.height);
-    },
-
-    _bgrxImageData: function (x, y, width, height, arr, offset) {
-        var img = this._drawCtx.createImageData(width, height);
-        var data = img.data;
-        for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 4) {
-            data[i]     = arr[j + 2];
-            data[i + 1] = arr[j + 1];
-            data[i + 2] = arr[j];
-            data[i + 3] = 255;  // Alpha
-        }
-        this._drawCtx.putImageData(img, x, y);
-        this._damage(x, y, img.width, img.height);
-    },
-
-    _rgbxImageData: function (x, y, width, height, arr, offset) {
-        // NB(directxman12): arr must be an Type Array view
-        var img;
-        if (SUPPORTS_IMAGEDATA_CONSTRUCTOR) {
-            img = new ImageData(new Uint8ClampedArray(arr.buffer, arr.byteOffset, width * height * 4), width, height);
-        } else {
-            img = this._drawCtx.createImageData(width, height);
-            img.data.set(new Uint8ClampedArray(arr.buffer, arr.byteOffset, width * height * 4));
-        }
-        this._drawCtx.putImageData(img, x, y);
-        this._damage(x, y, img.width, img.height);
-    },
-
-    _renderQ_push: function (action) {
-        this._renderQ.push(action);
-        if (this._renderQ.length === 1) {
-            // If this can be rendered immediately it will be, otherwise
-            // the scanner will wait for the relevant event
-            this._scan_renderQ();
-        }
-    },
-
-    _resume_renderQ: function() {
-        // "this" is the object that is ready, not the
-        // display object
-        this.removeEventListener('load', this._noVNC_display._resume_renderQ);
-        this._noVNC_display._scan_renderQ();
-    },
-
-    _scan_renderQ: function () {
-        var ready = true;
-        while (ready && this._renderQ.length > 0) {
-            var a = this._renderQ[0];
-            switch (a.type) {
-                case 'flip':
-                    this.flip(true);
-                    break;
-                case 'copy':
-                    this.copyImage(a.old_x, a.old_y, a.x, a.y, a.width, a.height, true);
-                    break;
-                case 'fill':
-                    this.fillRect(a.x, a.y, a.width, a.height, a.color, true);
-                    break;
-                case 'blit':
-                    this.blitImage(a.x, a.y, a.width, a.height, a.data, 0, true);
-                    break;
-                case 'blitRgb':
-                    this.blitRgbImage(a.x, a.y, a.width, a.height, a.data, 0, true);
-                    break;
-                case 'blitRgbx':
-                    this.blitRgbxImage(a.x, a.y, a.width, a.height, a.data, 0, true);
-                    break;
-                case 'img':
-                    if (a.img.complete) {
-                        this.drawImage(a.img, a.x, a.y);
-                    } else {
-                        a.img._noVNC_display = this;
-                        a.img.addEventListener('load', this._resume_renderQ);
-                        // We need to wait for this image to 'load'
-                        // to keep things in-order
-                        ready = false;
-                    }
-                    break;
-            }
-
-            if (ready) {
-                this._renderQ.shift();
-            }
-        }
-
-        if (this._renderQ.length === 0 && this._flushing) {
-            this._flushing = false;
-            this.onflush();
-        }
-    },
-};
-
-// Class Methods
-Display.changeCursor = function (target, pixels, mask, hotx, hoty, w, h) {
-    if ((w === 0) || (h === 0)) {
-        target.style.cursor = 'none';
-        return;
-    }
-
-    var cur = []
-    var y, x;
-    for (y = 0; y < h; y++) {
-        for (x = 0; x < w; x++) {
-            var idx = y * Math.ceil(w / 8) + Math.floor(x / 8);
-            var alpha = (mask[idx] << (x % 8)) & 0x80 ? 255 : 0;
-            idx = ((w * y) + x) * 4;
-            cur.push(pixels[idx + 2]); // red
-            cur.push(pixels[idx + 1]); // green
-            cur.push(pixels[idx]);     // blue
-            cur.push(alpha);           // alpha
-        }
-    }
-
-    var canvas = document.createElement('canvas');
-    var ctx = canvas.getContext('2d');
-
-    canvas.width = w;
-    canvas.height = h;
-
-    var img;
-    if (SUPPORTS_IMAGEDATA_CONSTRUCTOR) {
-        img = new ImageData(new Uint8ClampedArray(cur), w, h);
-    } else {
-        img = ctx.createImageData(w, h);
-        img.data.set(new Uint8ClampedArray(cur));
-    }
-    ctx.clearRect(0, 0, w, h);
-    ctx.putImageData(img, 0, 0);
-
-    var url = canvas.toDataURL();
-    target.style.cursor = 'url(' + url + ')' + hotx + ' ' + hoty + ', default';
-};

+ 0 - 40
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/encodings.js

@@ -1,40 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2017 Pierre Ossman for Cendio AB
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
-
-export var encodings = {
-    encodingRaw: 0,
-    encodingCopyRect: 1,
-    encodingRRE: 2,
-    encodingHextile: 5,
-    encodingTight: 7,
-
-    pseudoEncodingQualityLevel9: -23,
-    pseudoEncodingQualityLevel0: -32,
-    pseudoEncodingDesktopSize: -223,
-    pseudoEncodingLastRect: -224,
-    pseudoEncodingCursor: -239,
-    pseudoEncodingQEMUExtendedKeyEvent: -258,
-    pseudoEncodingTightPNG: -260,
-    pseudoEncodingExtendedDesktopSize: -308,
-    pseudoEncodingXvp: -309,
-    pseudoEncodingFence: -312,
-    pseudoEncodingContinuousUpdates: -313,
-    pseudoEncodingCompressLevel9: -247,
-    pseudoEncodingCompressLevel0: -256,
-};
-
-export function encodingName(num) {
-    switch (num) {
-        case encodings.encodingRaw:      return "Raw";
-        case encodings.encodingCopyRect: return "CopyRect";
-        case encodings.encodingRRE:      return "RRE";
-        case encodings.encodingHextile:  return "Hextile";
-        case encodings.encodingTight:    return "Tight";
-        default:                         return "[unknown encoding " + num + "]";
-    }
-}

+ 0 - 38
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/inflator.js

@@ -1,38 +0,0 @@
-import { inflateInit, inflate, inflateReset } from "../vendor/pako/lib/zlib/inflate.js";
-import ZStream from "../vendor/pako/lib/zlib/zstream.js";
-
-Inflate.prototype = {
-    inflate: function (data, flush, expected) {
-        this.strm.input = data;
-        this.strm.avail_in = this.strm.input.length;
-        this.strm.next_in = 0;
-        this.strm.next_out = 0;
-
-        // resize our output buffer if it's too small
-        // (we could just use multiple chunks, but that would cause an extra
-        // allocation each time to flatten the chunks)
-        if (expected > this.chunkSize) {
-            this.chunkSize = expected;
-            this.strm.output = new Uint8Array(this.chunkSize);
-        }
-
-        this.strm.avail_out = this.chunkSize;
-
-        inflate(this.strm, flush);
-
-        return new Uint8Array(this.strm.output.buffer, 0, this.strm.next_out);
-    },
-
-    reset: function () {
-        inflateReset(this.strm);
-    }
-};
-
-export default function Inflate() {
-    this.strm = new ZStream();
-    this.chunkSize = 1024 * 10 * 10;
-    this.strm.output = new Uint8Array(this.chunkSize);
-    this.windowBits = 5;
-
-    inflateInit(this.strm, this.windowBits);
-};

+ 0 - 310
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/domkeytable.js

@@ -1,310 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2017 Pierre Ossman for Cendio AB
- * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
- */
-
-import KeyTable from "./keysym.js";
-
-/*
- * Mapping between HTML key values and VNC/X11 keysyms for "special"
- * keys that cannot be handled via their Unicode codepoint.
- *
- * See https://www.w3.org/TR/uievents-key/ for possible values.
- */
-
-var DOMKeyTable = {};
-
-function addStandard(key, standard)
-{
-    if (standard === undefined) throw "Undefined keysym for key \"" + key + "\"";
-    if (key in DOMKeyTable) throw "Duplicate entry for key \"" + key + "\"";
-    DOMKeyTable[key] = [standard, standard, standard, standard];
-}
-
-function addLeftRight(key, left, right)
-{
-    if (left === undefined) throw "Undefined keysym for key \"" + key + "\"";
-    if (right === undefined) throw "Undefined keysym for key \"" + key + "\"";
-    if (key in DOMKeyTable) throw "Duplicate entry for key \"" + key + "\"";
-    DOMKeyTable[key] = [left, left, right, left];
-}
-
-function addNumpad(key, standard, numpad)
-{
-    if (standard === undefined) throw "Undefined keysym for key \"" + key + "\"";
-    if (numpad === undefined) throw "Undefined keysym for key \"" + key + "\"";
-    if (key in DOMKeyTable) throw "Duplicate entry for key \"" + key + "\"";
-    DOMKeyTable[key] = [standard, standard, standard, numpad];
-}
-
-// 2.2. Modifier Keys
-
-addLeftRight("Alt", KeyTable.XK_Alt_L, KeyTable.XK_Alt_R);
-addStandard("AltGraph", KeyTable.XK_ISO_Level3_Shift);
-addStandard("CapsLock", KeyTable.XK_Caps_Lock);
-addLeftRight("Control", KeyTable.XK_Control_L, KeyTable.XK_Control_R);
-// - Fn
-// - FnLock
-addLeftRight("Hyper", KeyTable.XK_Super_L, KeyTable.XK_Super_R);
-addLeftRight("Meta", KeyTable.XK_Super_L, KeyTable.XK_Super_R);
-addStandard("NumLock", KeyTable.XK_Num_Lock);
-addStandard("ScrollLock", KeyTable.XK_Scroll_Lock);
-addLeftRight("Shift", KeyTable.XK_Shift_L, KeyTable.XK_Shift_R);
-addLeftRight("Super", KeyTable.XK_Super_L, KeyTable.XK_Super_R);
-// - Symbol
-// - SymbolLock
-
-// 2.3. Whitespace Keys
-
-addNumpad("Enter", KeyTable.XK_Return, KeyTable.XK_KP_Enter);
-addStandard("Tab", KeyTable.XK_Tab);
-addNumpad(" ", KeyTable.XK_space, KeyTable.XK_KP_Space);
-
-// 2.4. Navigation Keys
-
-addNumpad("ArrowDown", KeyTable.XK_Down, KeyTable.XK_KP_Down);
-addNumpad("ArrowUp", KeyTable.XK_Up, KeyTable.XK_KP_Up);
-addNumpad("ArrowLeft", KeyTable.XK_Left, KeyTable.XK_KP_Left);
-addNumpad("ArrowRight", KeyTable.XK_Right, KeyTable.XK_KP_Right);
-addNumpad("End", KeyTable.XK_End, KeyTable.XK_KP_End);
-addNumpad("Home", KeyTable.XK_Home, KeyTable.XK_KP_Home);
-addNumpad("PageDown", KeyTable.XK_Next, KeyTable.XK_KP_Next);
-addNumpad("PageUp", KeyTable.XK_Prior, KeyTable.XK_KP_Prior);
-
-// 2.5. Editing Keys
-
-addStandard("Backspace", KeyTable.XK_BackSpace);
-addStandard("Clear", KeyTable.XK_Clear);
-addStandard("Copy", KeyTable.XF86XK_Copy);
-// - CrSel
-addStandard("Cut", KeyTable.XF86XK_Cut);
-addNumpad("Delete", KeyTable.XK_Delete, KeyTable.XK_KP_Delete);
-// - EraseEof
-// - ExSel
-addNumpad("Insert", KeyTable.XK_Insert, KeyTable.XK_KP_Insert);
-addStandard("Paste", KeyTable.XF86XK_Paste);
-addStandard("Redo", KeyTable.XK_Redo);
-addStandard("Undo", KeyTable.XK_Undo);
-
-// 2.6. UI Keys
-
-// - Accept
-// - Again (could just be XK_Redo)
-// - Attn
-addStandard("Cancel", KeyTable.XK_Cancel);
-addStandard("ContextMenu", KeyTable.XK_Menu);
-addStandard("Escape", KeyTable.XK_Escape);
-addStandard("Execute", KeyTable.XK_Execute);
-addStandard("Find", KeyTable.XK_Find);
-addStandard("Help", KeyTable.XK_Help);
-addStandard("Pause", KeyTable.XK_Pause);
-// - Play
-// - Props
-addStandard("Select", KeyTable.XK_Select);
-addStandard("ZoomIn", KeyTable.XF86XK_ZoomIn);
-addStandard("ZoomOut", KeyTable.XF86XK_ZoomOut);
-
-// 2.7. Device Keys
-
-addStandard("BrightnessDown", KeyTable.XF86XK_MonBrightnessDown);
-addStandard("BrightnessUp", KeyTable.XF86XK_MonBrightnessUp);
-addStandard("Eject", KeyTable.XF86XK_Eject);
-addStandard("LogOff", KeyTable.XF86XK_LogOff);
-addStandard("Power", KeyTable.XF86XK_PowerOff);
-addStandard("PowerOff", KeyTable.XF86XK_PowerDown);
-addStandard("PrintScreen", KeyTable.XK_Print);
-addStandard("Hibernate", KeyTable.XF86XK_Hibernate);
-addStandard("Standby", KeyTable.XF86XK_Standby);
-addStandard("WakeUp", KeyTable.XF86XK_WakeUp);
-
-// 2.8. IME and Composition Keys
-
-addStandard("AllCandidates", KeyTable.XK_MultipleCandidate);
-addStandard("Alphanumeric", KeyTable.XK_Eisu_Shift); // could also be _Eisu_Toggle
-addStandard("CodeInput", KeyTable.XK_Codeinput);
-addStandard("Compose", KeyTable.XK_Multi_key);
-addStandard("Convert", KeyTable.XK_Henkan);
-// - Dead
-// - FinalMode
-addStandard("GroupFirst", KeyTable.XK_ISO_First_Group);
-addStandard("GroupLast", KeyTable.XK_ISO_Last_Group);
-addStandard("GroupNext", KeyTable.XK_ISO_Next_Group);
-addStandard("GroupPrevious", KeyTable.XK_ISO_Prev_Group);
-// - ModeChange (XK_Mode_switch is often used for AltGr)
-// - NextCandidate
-addStandard("NonConvert", KeyTable.XK_Muhenkan);
-addStandard("PreviousCandidate", KeyTable.XK_PreviousCandidate);
-// - Process
-addStandard("SingleCandidate", KeyTable.XK_SingleCandidate);
-addStandard("HangulMode", KeyTable.XK_Hangul);
-addStandard("HanjaMode", KeyTable.XK_Hangul_Hanja);
-addStandard("JunjuaMode", KeyTable.XK_Hangul_Jeonja);
-addStandard("Eisu", KeyTable.XK_Eisu_toggle);
-addStandard("Hankaku", KeyTable.XK_Hankaku);
-addStandard("Hiragana", KeyTable.XK_Hiragana);
-addStandard("HiraganaKatakana", KeyTable.XK_Hiragana_Katakana);
-addStandard("KanaMode", KeyTable.XK_Kana_Shift); // could also be _Kana_Lock
-addStandard("KanjiMode", KeyTable.XK_Kanji);
-addStandard("Katakana", KeyTable.XK_Katakana);
-addStandard("Romaji", KeyTable.XK_Romaji);
-addStandard("Zenkaku", KeyTable.XK_Zenkaku);
-addStandard("ZenkakuHanaku", KeyTable.XK_Zenkaku_Hankaku);
-
-// 2.9. General-Purpose Function Keys
-
-addStandard("F1", KeyTable.XK_F1);
-addStandard("F2", KeyTable.XK_F2);
-addStandard("F3", KeyTable.XK_F3);
-addStandard("F4", KeyTable.XK_F4);
-addStandard("F5", KeyTable.XK_F5);
-addStandard("F6", KeyTable.XK_F6);
-addStandard("F7", KeyTable.XK_F7);
-addStandard("F8", KeyTable.XK_F8);
-addStandard("F9", KeyTable.XK_F9);
-addStandard("F10", KeyTable.XK_F10);
-addStandard("F11", KeyTable.XK_F11);
-addStandard("F12", KeyTable.XK_F12);
-addStandard("F13", KeyTable.XK_F13);
-addStandard("F14", KeyTable.XK_F14);
-addStandard("F15", KeyTable.XK_F15);
-addStandard("F16", KeyTable.XK_F16);
-addStandard("F17", KeyTable.XK_F17);
-addStandard("F18", KeyTable.XK_F18);
-addStandard("F19", KeyTable.XK_F19);
-addStandard("F20", KeyTable.XK_F20);
-addStandard("F21", KeyTable.XK_F21);
-addStandard("F22", KeyTable.XK_F22);
-addStandard("F23", KeyTable.XK_F23);
-addStandard("F24", KeyTable.XK_F24);
-addStandard("F25", KeyTable.XK_F25);
-addStandard("F26", KeyTable.XK_F26);
-addStandard("F27", KeyTable.XK_F27);
-addStandard("F28", KeyTable.XK_F28);
-addStandard("F29", KeyTable.XK_F29);
-addStandard("F30", KeyTable.XK_F30);
-addStandard("F31", KeyTable.XK_F31);
-addStandard("F32", KeyTable.XK_F32);
-addStandard("F33", KeyTable.XK_F33);
-addStandard("F34", KeyTable.XK_F34);
-addStandard("F35", KeyTable.XK_F35);
-// - Soft1...
-
-// 2.10. Multimedia Keys
-
-// - ChannelDown
-// - ChannelUp
-addStandard("Close", KeyTable.XF86XK_Close);
-addStandard("MailForward", KeyTable.XF86XK_MailForward);
-addStandard("MailReply", KeyTable.XF86XK_Reply);
-addStandard("MainSend", KeyTable.XF86XK_Send);
-addStandard("MediaFastForward", KeyTable.XF86XK_AudioForward);
-addStandard("MediaPause", KeyTable.XF86XK_AudioPause);
-addStandard("MediaPlay", KeyTable.XF86XK_AudioPlay);
-addStandard("MediaRecord", KeyTable.XF86XK_AudioRecord);
-addStandard("MediaRewind", KeyTable.XF86XK_AudioRewind);
-addStandard("MediaStop", KeyTable.XF86XK_AudioStop);
-addStandard("MediaTrackNext", KeyTable.XF86XK_AudioNext);
-addStandard("MediaTrackPrevious", KeyTable.XF86XK_AudioPrev);
-addStandard("New", KeyTable.XF86XK_New);
-addStandard("Open", KeyTable.XF86XK_Open);
-addStandard("Print", KeyTable.XK_Print);
-addStandard("Save", KeyTable.XF86XK_Save);
-addStandard("SpellCheck", KeyTable.XF86XK_Spell);
-
-// 2.11. Multimedia Numpad Keys
-
-// - Key11
-// - Key12
-
-// 2.12. Audio Keys
-
-// - AudioBalanceLeft
-// - AudioBalanceRight
-// - AudioBassDown
-// - AudioBassBoostDown
-// - AudioBassBoostToggle
-// - AudioBassBoostUp
-// - AudioBassUp
-// - AudioFaderFront
-// - AudioFaderRear
-// - AudioSurroundModeNext
-// - AudioTrebleDown
-// - AudioTrebleUp
-addStandard("AudioVolumeDown", KeyTable.XF86XK_AudioLowerVolume);
-addStandard("AudioVolumeUp", KeyTable.XF86XK_AudioRaiseVolume);
-addStandard("AudioVolumeMute", KeyTable.XF86XK_AudioMute);
-// - MicrophoneToggle
-// - MicrophoneVolumeDown
-// - MicrophoneVolumeUp
-addStandard("MicrophoneVolumeMute", KeyTable.XF86XK_AudioMicMute);
-
-// 2.13. Speech Keys
-
-// - SpeechCorrectionList
-// - SpeechInputToggle
-
-// 2.14. Application Keys
-
-addStandard("LaunchCalculator", KeyTable.XF86XK_Calculator);
-addStandard("LaunchCalendar", KeyTable.XF86XK_Calendar);
-addStandard("LaunchMail", KeyTable.XF86XK_Mail);
-addStandard("LaunchMediaPlayer", KeyTable.XF86XK_AudioMedia);
-addStandard("LaunchMusicPlayer", KeyTable.XF86XK_Music);
-addStandard("LaunchMyComputer", KeyTable.XF86XK_MyComputer);
-addStandard("LaunchPhone", KeyTable.XF86XK_Phone);
-addStandard("LaunchScreenSaver", KeyTable.XF86XK_ScreenSaver);
-addStandard("LaunchSpreadsheet", KeyTable.XF86XK_Excel);
-addStandard("LaunchWebBrowser", KeyTable.XF86XK_WWW);
-addStandard("LaunchWebCam", KeyTable.XF86XK_WebCam);
-addStandard("LaunchWordProcessor", KeyTable.XF86XK_Word);
-
-// 2.15. Browser Keys
-
-addStandard("BrowserBack", KeyTable.XF86XK_Back);
-addStandard("BrowserFavorites", KeyTable.XF86XK_Favorites);
-addStandard("BrowserForward", KeyTable.XF86XK_Forward);
-addStandard("BrowserHome", KeyTable.XF86XK_HomePage);
-addStandard("BrowserRefresh", KeyTable.XF86XK_Refresh);
-addStandard("BrowserSearch", KeyTable.XF86XK_Search);
-addStandard("BrowserStop", KeyTable.XF86XK_Stop);
-
-// 2.16. Mobile Phone Keys
-
-// - A whole bunch...
-
-// 2.17. TV Keys
-
-// - A whole bunch...
-
-// 2.18. Media Controller Keys
-
-// - A whole bunch...
-addStandard("Dimmer", KeyTable.XF86XK_BrightnessAdjust);
-addStandard("MediaAudioTrack", KeyTable.XF86XK_AudioCycleTrack);
-addStandard("RandomToggle", KeyTable.XF86XK_AudioRandomPlay);
-addStandard("SplitScreenToggle", KeyTable.XF86XK_SplitScreen);
-addStandard("Subtitle", KeyTable.XF86XK_Subtitle);
-addStandard("VideoModeNext", KeyTable.XF86XK_Next_VMode);
-
-// Extra: Numpad
-
-addNumpad("=", KeyTable.XK_equal, KeyTable.XK_KP_Equal);
-addNumpad("+", KeyTable.XK_plus, KeyTable.XK_KP_Add);
-addNumpad("-", KeyTable.XK_minus, KeyTable.XK_KP_Subtract);
-addNumpad("*", KeyTable.XK_asterisk, KeyTable.XK_KP_Multiply);
-addNumpad("/", KeyTable.XK_slash, KeyTable.XK_KP_Divide);
-addNumpad(".", KeyTable.XK_period, KeyTable.XK_KP_Decimal);
-addNumpad(",", KeyTable.XK_comma, KeyTable.XK_KP_Separator);
-addNumpad("0", KeyTable.XK_0, KeyTable.XK_KP_0);
-addNumpad("1", KeyTable.XK_1, KeyTable.XK_KP_1);
-addNumpad("2", KeyTable.XK_2, KeyTable.XK_KP_2);
-addNumpad("3", KeyTable.XK_3, KeyTable.XK_KP_3);
-addNumpad("4", KeyTable.XK_4, KeyTable.XK_KP_4);
-addNumpad("5", KeyTable.XK_5, KeyTable.XK_KP_5);
-addNumpad("6", KeyTable.XK_6, KeyTable.XK_KP_6);
-addNumpad("7", KeyTable.XK_7, KeyTable.XK_KP_7);
-addNumpad("8", KeyTable.XK_8, KeyTable.XK_KP_8);
-addNumpad("9", KeyTable.XK_9, KeyTable.XK_KP_9);
-
-export default DOMKeyTable;

+ 0 - 127
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/fixedkeys.js

@@ -1,127 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2017 Pierre Ossman for Cendio AB
- * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
- */
-
-/*
- * Fallback mapping between HTML key codes (physical keys) and
- * HTML key values. This only works for keys that don't vary
- * between layouts. We also omit those who manage fine by mapping the
- * Unicode representation.
- *
- * See https://www.w3.org/TR/uievents-code/ for possible codes.
- * See https://www.w3.org/TR/uievents-key/ for possible values.
- */
-
-export default {
-
-// 3.1.1.1. Writing System Keys
-
-    'Backspace':        'Backspace',
-
-// 3.1.1.2. Functional Keys
-
-    'AltLeft':          'Alt',
-    'AltRight':         'Alt', // This could also be 'AltGraph'
-    'CapsLock':         'CapsLock',
-    'ContextMenu':      'ContextMenu',
-    'ControlLeft':      'Control',
-    'ControlRight':     'Control',
-    'Enter':            'Enter',
-    'MetaLeft':         'Meta',
-    'MetaRight':        'Meta',
-    'ShiftLeft':        'Shift',
-    'ShiftRight':       'Shift',
-    'Tab':              'Tab',
-    // FIXME: Japanese/Korean keys
-
-// 3.1.2. Control Pad Section
-
-    'Delete':           'Delete',
-    'End':              'End',
-    'Help':             'Help',
-    'Home':             'Home',
-    'Insert':           'Insert',
-    'PageDown':         'PageDown',
-    'PageUp':           'PageUp',
-
-// 3.1.3. Arrow Pad Section
-
-    'ArrowDown':        'ArrowDown',
-    'ArrowLeft':        'ArrowLeft',
-    'ArrowRight':       'ArrowRight',
-    'ArrowUp':          'ArrowUp',
-
-// 3.1.4. Numpad Section
-
-    'NumLock':          'NumLock',
-    'NumpadBackspace':  'Backspace',
-    'NumpadClear':      'Clear',
-
-// 3.1.5. Function Section
-
-    'Escape':           'Escape',
-    'F1':               'F1',
-    'F2':               'F2',
-    'F3':               'F3',
-    'F4':               'F4',
-    'F5':               'F5',
-    'F6':               'F6',
-    'F7':               'F7',
-    'F8':               'F8',
-    'F9':               'F9',
-    'F10':              'F10',
-    'F11':              'F11',
-    'F12':              'F12',
-    'F13':              'F13',
-    'F14':              'F14',
-    'F15':              'F15',
-    'F16':              'F16',
-    'F17':              'F17',
-    'F18':              'F18',
-    'F19':              'F19',
-    'F20':              'F20',
-    'F21':              'F21',
-    'F22':              'F22',
-    'F23':              'F23',
-    'F24':              'F24',
-    'F25':              'F25',
-    'F26':              'F26',
-    'F27':              'F27',
-    'F28':              'F28',
-    'F29':              'F29',
-    'F30':              'F30',
-    'F31':              'F31',
-    'F32':              'F32',
-    'F33':              'F33',
-    'F34':              'F34',
-    'F35':              'F35',
-    'PrintScreen':      'PrintScreen',
-    'ScrollLock':       'ScrollLock',
-    'Pause':            'Pause',
-
-// 3.1.6. Media Keys
-
-    'BrowserBack':      'BrowserBack',
-    'BrowserFavorites': 'BrowserFavorites',
-    'BrowserForward':   'BrowserForward',
-    'BrowserHome':      'BrowserHome',
-    'BrowserRefresh':   'BrowserRefresh',
-    'BrowserSearch':    'BrowserSearch',
-    'BrowserStop':      'BrowserStop',
-    'Eject':            'Eject',
-    'LaunchApp1':       'LaunchMyComputer',
-    'LaunchApp2':       'LaunchCalendar',
-    'LaunchMail':       'LaunchMail',
-    'MediaPlayPause':   'MediaPlay',
-    'MediaStop':        'MediaStop',
-    'MediaTrackNext':   'MediaTrackNext',
-    'MediaTrackPrevious': 'MediaTrackPrevious',
-    'Power':            'Power',
-    'Sleep':            'Sleep',
-    'AudioVolumeDown':  'AudioVolumeDown',
-    'AudioVolumeMute':  'AudioVolumeMute',
-    'AudioVolumeUp':    'AudioVolumeUp',
-    'WakeUp':           'WakeUp',
-};

+ 0 - 314
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/core/input/keyboard.js

@@ -1,314 +0,0 @@
-/*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2013 Samuel Mannehed for Cendio AB
- * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
- */
-
-import * as Log from '../util/logging.js';
-import { stopEvent } from '../util/events.js';
-import * as KeyboardUtil from "./util.js";
-import KeyTable from "./keysym.js";
-import * as browser from "../util/browser.js";
-
-//
-// Keyboard event handler
-//
-
-export default function Keyboard(target) {
-    this._target = target || null;
-
-    this._keyDownList = {};         // List of depressed keys
-                                    // (even if they are happy)
-    this._pendingKey = null;        // Key waiting for keypress
-
-    // keep these here so we can refer to them later
-    this._eventHandlers = {
-        'keyup': this._handleKeyUp.bind(this),
-        'keydown': this._handleKeyDown.bind(this),
-        'keypress': this._handleKeyPress.bind(this),
-        'blur': this._allKeysUp.bind(this)
-    };
-};
-
-Keyboard.prototype = {
-    // ===== EVENT HANDLERS =====
-
-    onkeyevent: function () {},     // Handler for key press/release
-
-    // ===== PRIVATE METHODS =====
-
-    _sendKeyEvent: function (keysym, code, down) {
-        Log.Debug("onkeyevent " + (down ? "down" : "up") +
-                  ", keysym: " + keysym, ", code: " + code);
-
-        // Windows sends CtrlLeft+AltRight when you press
-        // AltGraph, which tends to confuse the hell out of
-        // remote systems. Fake a release of these keys until
-        // there is a way to detect AltGraph properly.
-        var fakeAltGraph = false;
-        if (down && browser.isWindows()) {
-            if ((code !== 'ControlLeft') &&
-                (code !== 'AltRight') &&
-                ('ControlLeft' in this._keyDownList) &&
-                ('AltRight' in this._keyDownList)) {
-                fakeAltGraph = true;
-                this.onkeyevent(this._keyDownList['AltRight'],
-                                 'AltRight', false);
-                this.onkeyevent(this._keyDownList['ControlLeft'],
-                                 'ControlLeft', false);
-            }
-        }
-
-        this.onkeyevent(keysym, code, down);
-
-        if (fakeAltGraph) {
-            this.onkeyevent(this._keyDownList['ControlLeft'],
-                             'ControlLeft', true);
-            this.onkeyevent(this._keyDownList['AltRight'],
-                             'AltRight', true);
-        }
-    },
-
-    _getKeyCode: function (e) {
-        var code = KeyboardUtil.getKeycode(e);
-        if (code !== 'Unidentified') {
-            return code;
-        }
-
-        // Unstable, but we don't have anything else to go on
-        // (don't use it for 'keypress' events thought since
-        // WebKit sets it to the same as charCode)
-        if (e.keyCode && (e.type !== 'keypress')) {
-            // 229 is used for composition events
-            if (e.keyCode !== 229) {
-                return 'Platform' + e.keyCode;
-            }
-        }
-
-        // A precursor to the final DOM3 standard. Unfortunately it
-        // is not layout independent, so it is as bad as using keyCode
-        if (e.keyIdentifier) {
-            // Non-character key?
-            if (e.keyIdentifier.substr(0, 2) !== 'U+') {
-                return e.keyIdentifier;
-            }
-
-            var codepoint = parseInt(e.keyIdentifier.substr(2), 16);
-            var char = String.fromCharCode(codepoint);
-            // Some implementations fail to uppercase the symbols
-            char = char.toUpperCase();
-
-            return 'Platform' + char.charCodeAt();
-        }
-
-        return 'Unidentified';
-    },
-
-    _handleKeyDown: function (e) {
-        var code = this._getKeyCode(e);
-        var keysym = KeyboardUtil.getKeysym(e);
-
-        // We cannot handle keys we cannot track, but we also need
-        // to deal with virtual keyboards which omit key info
-        // (iOS omits tracking info on keyup events, which forces us to
-        // special treat that platform here)
-        if ((code === 'Unidentified') || browser.isIOS()) {
-            if (keysym) {
-                // If it's a virtual keyboard then it should be
-                // sufficient to just send press and release right
-                // after each other
-                this._sendKeyEvent(keysym, code, true);
-                this._sendKeyEvent(keysym, code, false);
-            }
-
-            stopEvent(e);
-            return;
-        }
-
-        // Alt behaves more like AltGraph on macOS, so shuffle the
-        // keys around a bit to make things more sane for the remote
-        // server. This method is used by RealVNC and TigerVNC (and
-        // possibly others).
-        if (browser.isMac()) {
-            switch (keysym) {
-            case KeyTable.XK_Super_L:
-                keysym = KeyTable.XK_Alt_L;
-                break;
-            case KeyTable.XK_Super_R:
-                keysym = KeyTable.XK_Super_L;
-                break;
-            case KeyTable.XK_Alt_L:
-                keysym = KeyTable.XK_Mode_switch;
-                break;
-            case KeyTable.XK_Alt_R:
-                keysym = KeyTable.XK_ISO_Level3_Shift;
-                break;
-            }
-        }
-
-        // Is this key already pressed? If so, then we must use the
-        // same keysym or we'll confuse the server
-        if (code in this._keyDownList) {
-            keysym = this._keyDownList[code];
-        }
-
-        // macOS doesn't send proper key events for modifiers, only
-        // state change events. That gets extra confusing for CapsLock
-        // which toggles on each press, but not on release. So pretend
-        // it was a quick press and release of the button.
-        if (browser.isMac() && (code === 'CapsLock')) {
-            this._sendKeyEvent(KeyTable.XK_Caps_Lock, 'CapsLock', true);
-            this._sendKeyEvent(KeyTable.XK_Caps_Lock, 'CapsLock', false);
-            stopEvent(e);
-            return;
-        }
-
-        // If this is a legacy browser then we'll need to wait for
-        // a keypress event as well
-        // (IE and Edge has a broken KeyboardEvent.key, so we can't
-        // just check for the presence of that field)
-        if (!keysym && (!e.key || browser.isIE() || browser.isEdge())) {
-            this._pendingKey = code;
-            // However we might not get a keypress event if the key
-            // is non-printable, which needs some special fallback
-            // handling
-            setTimeout(this._handleKeyPressTimeout.bind(this), 10, e);
-            return;
-        }
-
-        this._pendingKey = null;
-        stopEvent(e);
-
-        this._keyDownList[code] = keysym;
-
-        this._sendKeyEvent(keysym, code, true);
-    },
-
-    // Legacy event for browsers without code/key
-    _handleKeyPress: function (e) {
-        stopEvent(e);
-
-        // Are we expecting a keypress?
-        if (this._pendingKey === null) {
-            return;
-        }
-
-        var code = this._getKeyCode(e);
-        var keysym = KeyboardUtil.getKeysym(e);
-
-        // The key we were waiting for?
-        if ((code !== 'Unidentified') && (code != this._pendingKey)) {
-            return;
-        }
-
-        code = this._pendingKey;
-        this._pendingKey = null;
-
-        if (!keysym) {
-            Log.Info('keypress with no keysym:', e);
-            return;
-        }
-
-        this._keyDownList[code] = keysym;
-
-        this._sendKeyEvent(keysym, code, true);
-    },
-    _handleKeyPressTimeout: function (e) {
-        // Did someone manage to sort out the key already?
-        if (this._pendingKey === null) {
-            return;
-        }
-
-        var code, keysym;
-
-        code = this._pendingKey;
-        this._pendingKey = null;
-
-        // We have no way of knowing the proper keysym with the
-        // information given, but the following are true for most
-        // layouts
-        if ((e.keyCode >= 0x30) && (e.keyCode <= 0x39)) {
-            // Digit
-            keysym = e.keyCode;
-        } else if ((e.keyCode >= 0x41) && (e.keyCode <= 0x5a)) {
-            // Character (A-Z)
-            var char = String.fromCharCode(e.keyCode);
-            // A feeble attempt at the correct case
-            if (e.shiftKey)
-                char = char.toUpperCase();
-            else
-                char = char.toLowerCase();
-            keysym = char.charCodeAt();
-        } else {
-            // Unknown, give up
-            keysym = 0;
-        }
-
-        this._keyDownList[code] = keysym;
-
-        this._sendKeyEvent(keysym, code, true);
-    },
-
-    _handleKeyUp: function (e) {
-        stopEvent(e);
-
-        var code = this._getKeyCode(e);
-
-        // See comment in _handleKeyDown()
-        if (browser.isMac() && (code === 'CapsLock')) {
-            this._sendKeyEvent(KeyTable.XK_Caps_Lock, 'CapsLock', true);
-            this._sendKeyEvent(KeyTable.XK_Caps_Lock, 'CapsLock', false);
-            return;
-        }
-
-        // Do we really think this key is down?
-        if (!(code in this._keyDownList)) {
-            return;
-        }
-
-        this._sendKeyEvent(this._keyDownList[code], code, false);
-
-        delete this._keyDownList[code];
-    },
-
-    _allKeysUp: function () {
-        Log.Debug(">> Keyboard.allKeysUp");
-        for (var code in this._keyDownList) {
-            this._sendKeyEvent(this._keyDownList[code], code, false);
-        };
-        this._keyDownList = {};
-        Log.Debug("<< Keyboard.allKeysUp");
-    },
-
-    // ===== PUBLIC METHODS =====
-
-    grab: function () {
-        //Log.Debug(">> Keyboard.grab");
-        var c = this._target;
-
-        c.addEventListener('keydown', this._eventHandlers.keydown);
-        c.addEventListener('keyup', this._eventHandlers.keyup);
-        c.addEventListener('keypress', this._eventHandlers.keypress);
-
-        // Release (key up) if window loses focus
-        window.addEventListener('blur', this._eventHandlers.blur);
-
-        //Log.Debug("<< Keyboard.grab");
-    },
-
-    ungrab: function () {
-        //Log.Debug(">> Keyboard.ungrab");
-        var c = this._target;
-
-        c.removeEventListener('keydown', this._eventHandlers.keydown);
-        c.removeEventListener('keyup', this._eventHandlers.keyup);
-        c.removeEventListener('keypress', this._eventHandlers.keypress);
-        window.removeEventListener('blur', this._eventHandlers.blur);
-
-        // Release (key up) all keys that are in a down state
-        this._allKeysUp();
-
-        //Log.Debug(">> Keyboard.ungrab");
-    },
-};

Некоторые файлы не были показаны из-за большого количества измененных файлов