osc-vnc 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +169 -0
- data/Rakefile +1 -0
- data/config/script.yml +35 -0
- data/examples/desktop/xstartup +5 -0
- data/examples/paraview/fvwm/fvwmrc +80 -0
- data/examples/paraview/fvwm/winxp/images/close-activedown.xpm +237 -0
- data/examples/paraview/fvwm/winxp/images/close-activeup.xpm +286 -0
- data/examples/paraview/fvwm/winxp/images/close-inactive.xpm +88 -0
- data/examples/paraview/fvwm/winxp/images/maximize-activedown.xpm +190 -0
- data/examples/paraview/fvwm/winxp/images/maximize-activeup.xpm +257 -0
- data/examples/paraview/fvwm/winxp/images/maximize-inactive.xpm +66 -0
- data/examples/paraview/fvwm/winxp/images/title-active.xpm +58 -0
- data/examples/paraview/fvwm/winxp/images/title-inactive.xpm +58 -0
- data/examples/paraview/xstartup +17 -0
- data/examples/totalsim-desktop/config/menus/applications.menu +84 -0
- data/examples/totalsim-desktop/config/menus/settings.menu +20 -0
- data/examples/totalsim-desktop/images/TS_LOGO.jpg +0 -0
- data/examples/totalsim-desktop/xlogout +8 -0
- data/examples/totalsim-desktop/xstartup +20 -0
- data/lib/osc/vnc/connview.rb +95 -0
- data/lib/osc/vnc/error.rb +6 -0
- data/lib/osc/vnc/listenable.rb +45 -0
- data/lib/osc/vnc/scriptview.rb +63 -0
- data/lib/osc/vnc/session.rb +116 -0
- data/lib/osc/vnc/version.rb +6 -0
- data/lib/osc/vnc.rb +23 -0
- data/osc-vnc.gemspec +26 -0
- data/templates/conn/awesim.mustache +1 -0
- data/templates/conn/jnlp.mustache +49 -0
- data/templates/conn/novnc.mustache +1 -0
- data/templates/conn/osxvnc.mustache +1 -0
- data/templates/conn/terminal.mustache +1 -0
- data/templates/conn/txt.mustache +4 -0
- data/templates/conn/vnc.mustache +1 -0
- data/templates/conn/yaml.mustache +6 -0
- data/templates/script/_port_helpers.mustache +28 -0
- data/templates/script/_setup_env.mustache +7 -0
- data/templates/script/_ssh_tunnel.mustache +28 -0
- data/templates/script/_start_vncserver.mustache +38 -0
- data/templates/script/_tcp_server.mustache +6 -0
- data/templates/script/server.mustache +46 -0
- data/templates/script/vnc.mustache +86 -0
- metadata +153 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cbe041b5ff1e10a7d5e977d28a299a3c58ccd8d5
|
4
|
+
data.tar.gz: 9f2a6dc121713f6124e3d29f79d59dfca43d0ab0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8a1d89ddb96dc57d38b0b42e1c4f5bf0bb2ef18852048c07bb7124fd8ec858e4e383e28ddbdea544447ed3f7a681c044b4e941eb24d7ec0297d8249f7a0a3c61
|
7
|
+
data.tar.gz: f4516b6091852f4433817a65085d96c8f37061626add5828aa792f3ee6c2e41dff999c7934d8f6a041b381fd0520d20ea1f9752e895fbe5d584f0fa008c7fca7
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
vendor/
|
19
|
+
*.lock
|
20
|
+
*.swp
|
21
|
+
*.output
|
22
|
+
*.log
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014-2016 Ohio Supercomputer Center
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
# OSC::VNC
|
2
|
+
|
3
|
+
Ruby library that provides VNC job submission to the OSC systems.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
Add this gem to your Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'osc-vnc'
|
11
|
+
```
|
12
|
+
|
13
|
+
Run Bundler to update your gems:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
$ bundle install
|
17
|
+
```
|
18
|
+
|
19
|
+
## Examples
|
20
|
+
|
21
|
+
### Run App on Oxymoron Batch System
|
22
|
+
|
23
|
+
For all cases we will need to create a new VNC session object. To create a VNC
|
24
|
+
session object you need to supply it the required information:
|
25
|
+
|
26
|
+
* a `PBS::Job` object that connects to the specified batch server
|
27
|
+
* the PBS script that will run when the job is submitted, defined by
|
28
|
+
* type of script (`:vnc` or `:server`)
|
29
|
+
* `:vnc` launches a VNC server
|
30
|
+
* `:server` doesn't launch a VNC server (expects developer specified server in `xstartup`)
|
31
|
+
* cluster type (`:glenn`, `:oakley`, `:ruby`), not to be confused with the
|
32
|
+
batch server (i.e., `quick-batch` can use `:oakley` or `:ruby`)
|
33
|
+
|
34
|
+
A bare bones setup would be:
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
job = PBS::Job.new(conn: PBS::Conn.batch('quick'))
|
38
|
+
script = OSC::VNC::ScriptView.new(
|
39
|
+
:vnc,
|
40
|
+
'oakley',
|
41
|
+
:subtype => :shared,
|
42
|
+
:xstartup => '/path/to/script',
|
43
|
+
:outdir => ENV['PWD']
|
44
|
+
)
|
45
|
+
|
46
|
+
session = OSC::VNC::Session.new(job, script)
|
47
|
+
```
|
48
|
+
|
49
|
+
In most cases we will want to supply more options for finer control of the
|
50
|
+
session:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
# Headers are the PBS headers you see at the top of a PBS batch job.
|
54
|
+
# They are defined similarly here accept the header argument
|
55
|
+
# is used as a key in the PBS::ATTR hash object
|
56
|
+
# e.g., for a PBS job name (#PBS -N MyVNCJob)
|
57
|
+
headers = { PBS::ATTR[:N] => "MyVNCJob" }
|
58
|
+
|
59
|
+
# Resources are the attributes in the PBS batch job given with `-l`.
|
60
|
+
# e.g., for walltime (#PBS -l walltime=24:00:00)
|
61
|
+
resources = { walltime: "24:00:00" }
|
62
|
+
|
63
|
+
# Environment variables can also be passed to the script
|
64
|
+
envvars = { DATAFILE: "/path/to/datafile" }
|
65
|
+
```
|
66
|
+
|
67
|
+
To submit the VNC session, use the `#submit` instance method on the object:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
session.submit(headers: headers, resources: resources, envvars: envvars)
|
71
|
+
```
|
72
|
+
|
73
|
+
After enough time has passed and the session is runninq in the batch system
|
74
|
+
(i.e., not queued) there are a variety of formats to output the connection
|
75
|
+
information. The most user-friendly being the `*.jnlp` format if the user has
|
76
|
+
Java installed:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
conn_info = OSC::VNC::ConnView.new(session)
|
80
|
+
conn_info.render(:jnlp)
|
81
|
+
```
|
82
|
+
|
83
|
+
**Note:** Once someone successfully authenticates with the VNC server the
|
84
|
+
password will change if using `vncauth` form of authentication. So it is
|
85
|
+
imperative that you run `ConnView#refresh` to update the connection
|
86
|
+
information.
|
87
|
+
|
88
|
+
### VNC Server options
|
89
|
+
|
90
|
+
You can specify different options when running a vnc session. You can use the
|
91
|
+
`default` set of VNC options to submit the job with or choose from pre-defined
|
92
|
+
subtypes (i.e., `:shared`) found in [config/script.yml](config/script.yml).
|
93
|
+
|
94
|
+
You can alter these options when creating a session by specifying them as a
|
95
|
+
hash in the when initializing the `ScriptView` object. An example:
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
# Specify your personal VNC session options to override defaults
|
99
|
+
script = OSC::VNC::ScriptView.new(
|
100
|
+
:vnc,
|
101
|
+
'oakley',
|
102
|
+
:subtype => :shared,
|
103
|
+
:geom => '1920x1200',
|
104
|
+
:'otp?' => false,
|
105
|
+
:'vncauth?' => true,
|
106
|
+
:'ssh_tunnel?' => true,
|
107
|
+
...
|
108
|
+
)
|
109
|
+
```
|
110
|
+
|
111
|
+
### xstartup
|
112
|
+
|
113
|
+
An `xstartup` script is treated like any other bash script that launches the
|
114
|
+
application you want. If no environment variables are needed, it could
|
115
|
+
theoretically be run directly on an OSC desktop session by itself.
|
116
|
+
|
117
|
+
One such example would be launching Paraview:
|
118
|
+
|
119
|
+
```bash
|
120
|
+
#!/bin/bash
|
121
|
+
|
122
|
+
# This loads up any Xresources the user specifies
|
123
|
+
# as well as gives the background a nice grey color
|
124
|
+
if [ -e $HOME/.Xresources ]; then
|
125
|
+
xrdb $HOME/.Xresources
|
126
|
+
fi
|
127
|
+
xsetroot -solid grey
|
128
|
+
|
129
|
+
# We need a window manager otherwise the windows will
|
130
|
+
# look horrendous, for this we use FVWM (please refer to
|
131
|
+
# FillSim for an example of the `fvwmrc` file used)
|
132
|
+
export XSTARTUP_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
133
|
+
XDIR=${XSTARTUP_DIR} /usr/bin/fvwm -f ${XSTARTUP_DIR}/fvwm/fvwmrc &
|
134
|
+
|
135
|
+
# Load the required modules on Oakley
|
136
|
+
. /etc/profile.d/lmod.sh
|
137
|
+
module load paraview/3.14.1
|
138
|
+
|
139
|
+
# If we are running this app on a node with an Xorg server running
|
140
|
+
# i.e., there is a GPU on this node that we can utilize for OpenGL
|
141
|
+
# graphics (which is true for the Oxymoron cluster)
|
142
|
+
module load virtualgl/2.3
|
143
|
+
|
144
|
+
# Now we start the application
|
145
|
+
vglrun paraview
|
146
|
+
|
147
|
+
# Be sure to clean up the VNC server after the user exits the above
|
148
|
+
# running process
|
149
|
+
vncserver -kill ${DISPLAY}
|
150
|
+
```
|
151
|
+
|
152
|
+
You may or may not need VirtualGL depending on the type of application. Be sure
|
153
|
+
to only use it on a node with an Xorg server running. For any other node you
|
154
|
+
should omit it and its binary `vglrun`.
|
155
|
+
|
156
|
+
You can find a very generic example of an `fvwmrc` file in the
|
157
|
+
`containerfillsim` GitHub repo under the path:
|
158
|
+
|
159
|
+
```bash
|
160
|
+
containerfillsim/jobs/vnc/paraview/fvwm/fvwmrc
|
161
|
+
```
|
162
|
+
|
163
|
+
## Contributing
|
164
|
+
|
165
|
+
1. Fork it
|
166
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
167
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
168
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
169
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/config/script.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
vnc:
|
2
|
+
default: &DEFAULT_VNC
|
3
|
+
name: 'vnc'
|
4
|
+
geom: '800x600'
|
5
|
+
dpi: 96
|
6
|
+
idletimeout: 0
|
7
|
+
extra_args: null
|
8
|
+
otp?: false
|
9
|
+
vncauth?: true
|
10
|
+
pam?: false
|
11
|
+
ssh_tunnel?: true
|
12
|
+
tcp_server?: false
|
13
|
+
novnc?: false
|
14
|
+
cluster:
|
15
|
+
oakley:
|
16
|
+
fonts: '/usr/share/X11/fonts/misc,/usr/share/X11/fonts/75dpi,/usr/share/X11/fonts/100dpi,/usr/share/X11/fonts/Type1,/usr/share/fonts/default/Type1'
|
17
|
+
load_turbovnc: |
|
18
|
+
module use /nfs/gpfs/PZS0645/local-oakley/share/modulefiles
|
19
|
+
module load turbovnc/2.0.0
|
20
|
+
novnc_launcher: '/usr/local/novnc/utils/launch.sh'
|
21
|
+
ruby:
|
22
|
+
fonts: '/usr/share/X11/fonts/misc,/usr/share/X11/fonts/100dpi,/usr/share/X11/fonts/Type1,/usr/share/fonts/default/Type1'
|
23
|
+
load_turbovnc: |
|
24
|
+
module use /nfs/gpfs/PZS0645/local-ruby/share/modulefiles
|
25
|
+
module load turbovnc/2.0.0
|
26
|
+
novnc_launcher: '/usr/local/novnc/utils/launch.sh'
|
27
|
+
shared:
|
28
|
+
<<: *DEFAULT_VNC
|
29
|
+
idletimeout: 300
|
30
|
+
tcp_server?: true
|
31
|
+
|
32
|
+
server:
|
33
|
+
default: &DEFAULT_SERVER
|
34
|
+
ssh_tunnel?: true
|
35
|
+
tcp_server?: false
|
@@ -0,0 +1,80 @@
|
|
1
|
+
SetEnv XPMPath $[XDIR]/fvwm/winxp/images
|
2
|
+
|
3
|
+
# Makes the Maximize button look pressed-in when the window is maximized
|
4
|
+
Style * MWMButtons
|
5
|
+
# Allows turns off the mwm hints completely
|
6
|
+
Style * NoFuncHint
|
7
|
+
# Attempt to recognize & respect the mwm decoration hints that applications occasionally use
|
8
|
+
Style * MWMDecor
|
9
|
+
# Causes transient windows, which are normally left undecorated, to be given the usual fvwm decorations (title bar, buttons, etc.)
|
10
|
+
Style * DecorateTransient
|
11
|
+
Style * SmartPlacement
|
12
|
+
|
13
|
+
# Tells fvwm the maximum size window with which opaque window movement should be used
|
14
|
+
OpaqueMoveSize 100
|
15
|
+
# Specifies the percentage of a page to scroll when the cursor hits the edge of a page
|
16
|
+
EdgeScroll 100 100
|
17
|
+
# The special flag Clear clears any existing flags
|
18
|
+
ButtonStyle 2 - Clear
|
19
|
+
TitleStyle Active AdjustedPixmap $[XPMPath]/title-active.xpm -- Flat
|
20
|
+
TitleStyle Inactive AdjustedPixmap $[XPMPath]/title-inactive.xpm -- Flat
|
21
|
+
ButtonStyle 2 ActiveUp AdjustedPixmap $[XPMPath]/close-activeup.xpm -- UseTitleStyle Flat
|
22
|
+
ButtonStyle 2 ActiveDown AdjustedPixmap $[XPMPath]/close-activedown.xpm -- UseTitleStyle Flat
|
23
|
+
ButtonStyle 2 AllInactive AdjustedPixmap $[XPMPath]/close-inactive.xpm -- UseTitleStyle Flat
|
24
|
+
TitleStyle Centered Height 24
|
25
|
+
BorderStyle Active Colorset
|
26
|
+
BorderStyle Inactive Solid Dodgerblue2 -- HiddenHandles NoInset
|
27
|
+
BorderStyle Active Solid Steelblue3 -- HiddenHandles NoInset
|
28
|
+
|
29
|
+
ButtonStyle 4 - Clear
|
30
|
+
ButtonStyle 4 ActiveUp AdjustedPixmap $[XPMPath]/maximize-activeup.xpm -- UseTitleStyle Flat
|
31
|
+
ButtonStyle 4 ActiveDown AdjustedPixmap $[XPMPath]/maximize-activedown.xpm -- UseTitleStyle Flat
|
32
|
+
ButtonStyle 4 AllInactive AdjustedPixmap $[XPMPath]/maximize-inactive.xpm -- UseTitleStyle Flat
|
33
|
+
|
34
|
+
# BorderWidth - width of the border to place the window if it does not have resize-handles
|
35
|
+
# HandleWidth - width of the border to place the window if it does have resize-handles
|
36
|
+
Style * BorderWidth 4, HandleWidth 4
|
37
|
+
# ForeColor - foreground color (black)
|
38
|
+
# BackColor - background color (steelblue3)
|
39
|
+
Style * ForeColor black, BackColor Steelblue3
|
40
|
+
# HilightFore - window has focus foreground color (white)
|
41
|
+
# HilightBack - window has focus background color (dodgerblue2)
|
42
|
+
Style * HilightFore white, HilightBack Dodgerblue2
|
43
|
+
# Font - name of the font r-regular 14-size
|
44
|
+
Style * Font -*-helvetica-medium-r-*-*-14-*-*-*-*-*-*-*
|
45
|
+
# Start Windows in the top left corner unless the application specifies otherwise
|
46
|
+
Style * PositionPlacement
|
47
|
+
#Style * PositionPlacement Center
|
48
|
+
|
49
|
+
# R - root window
|
50
|
+
# W - application window
|
51
|
+
# D - desktop application
|
52
|
+
# T - window title-bar
|
53
|
+
# S - window side, top, or bottom bar
|
54
|
+
# F - window frame (corners)
|
55
|
+
# I - icon window
|
56
|
+
# 2 - 0-9 title-bar buttons
|
57
|
+
Mouse 0 RI A -
|
58
|
+
Mouse 0 2 A Close
|
59
|
+
Mouse 1 2 A Close
|
60
|
+
Mouse 2 2 A Close
|
61
|
+
Mouse 1 RSFTI A -
|
62
|
+
Mouse 2 RSFTI A -
|
63
|
+
Mouse 0 4 A Maximize 100 100
|
64
|
+
Mouse 1 T A Maximize-or-Move
|
65
|
+
|
66
|
+
AddToFunc Maximize-or-Move
|
67
|
+
+ D Maximize
|
68
|
+
+ C Raise
|
69
|
+
+ C Focus
|
70
|
+
+ M Move
|
71
|
+
|
72
|
+
DesktopSize 1x1
|
73
|
+
|
74
|
+
# Added below 3 to remove root menu, F1 & all help menus
|
75
|
+
DestroyMenu MenuFvwmRoot
|
76
|
+
Key F1 R A -
|
77
|
+
Silent Key Help R A -
|
78
|
+
|
79
|
+
# Wine fix
|
80
|
+
Style * Lenience
|
@@ -0,0 +1,237 @@
|
|
1
|
+
/* XPM */
|
2
|
+
static char *close-activedown[] = {
|
3
|
+
/* columns rows colors chars-per-pixel */
|
4
|
+
"23 23 208 2",
|
5
|
+
" c black",
|
6
|
+
". c #003DAD",
|
7
|
+
"X c #053FB2",
|
8
|
+
"o c #0036CB",
|
9
|
+
"O c #0040AD",
|
10
|
+
"+ c #0041B3",
|
11
|
+
"@ c #0049B4",
|
12
|
+
"# c #0048C4",
|
13
|
+
"$ c #004ECD",
|
14
|
+
"% c #004CD2",
|
15
|
+
"& c #004EDA",
|
16
|
+
"* c #0056CA",
|
17
|
+
"= c #085ECB",
|
18
|
+
"- c #0052D3",
|
19
|
+
"; c #005BDC",
|
20
|
+
": c #0053E1",
|
21
|
+
"> c #015AE5",
|
22
|
+
", c #025FE8",
|
23
|
+
"< c #035CF4",
|
24
|
+
"1 c #0860CE",
|
25
|
+
"2 c #0864D8",
|
26
|
+
"3 c #1A64DF",
|
27
|
+
"4 c #0060E2",
|
28
|
+
"5 c #0164EA",
|
29
|
+
"6 c #096DEC",
|
30
|
+
"7 c #0165F3",
|
31
|
+
"8 c #0068F3",
|
32
|
+
"9 c #0269FD",
|
33
|
+
"0 c #486FAF",
|
34
|
+
"q c #4E78AE",
|
35
|
+
"w c #4D76B4",
|
36
|
+
"e c #A35642",
|
37
|
+
"r c #AD5E5E",
|
38
|
+
"t c #B2574F",
|
39
|
+
"y c #B35E46",
|
40
|
+
"u c #B5594F",
|
41
|
+
"i c #B05953",
|
42
|
+
"p c #B85C52",
|
43
|
+
"a c #B05F60",
|
44
|
+
"s c #B6614E",
|
45
|
+
"d c #B5615C",
|
46
|
+
"f c #B5695C",
|
47
|
+
"g c #BB6256",
|
48
|
+
"h c #B96359",
|
49
|
+
"j c #B96A5A",
|
50
|
+
"k c #AE6A6E",
|
51
|
+
"l c #B56362",
|
52
|
+
"z c #B96B64",
|
53
|
+
"x c #B2706C",
|
54
|
+
"c c #B87069",
|
55
|
+
"v c #B97A77",
|
56
|
+
"b c #EC6032",
|
57
|
+
"n c #EC6B3F",
|
58
|
+
"m c #F26839",
|
59
|
+
"M c #C0675A",
|
60
|
+
"N c #DC7155",
|
61
|
+
"B c #C36961",
|
62
|
+
"V c #C66C70",
|
63
|
+
"C c #C57075",
|
64
|
+
"Z c #C07079",
|
65
|
+
"A c #D07F65",
|
66
|
+
"S c #D17C76",
|
67
|
+
"D c #D57E7C",
|
68
|
+
"F c #EC6D45",
|
69
|
+
"G c #EC6F4A",
|
70
|
+
"H c #E3754E",
|
71
|
+
"J c #EA7242",
|
72
|
+
"K c #ED764D",
|
73
|
+
"L c #E77257",
|
74
|
+
"P c #E4715C",
|
75
|
+
"I c #E17957",
|
76
|
+
"U c #EB7451",
|
77
|
+
"Y c #EA7854",
|
78
|
+
"T c #ED7F5A",
|
79
|
+
"R c #F06C41",
|
80
|
+
"E c #F07348",
|
81
|
+
"W c #F27A4C",
|
82
|
+
"Q c #F8794F",
|
83
|
+
"! c #F07757",
|
84
|
+
"~ c #F37A53",
|
85
|
+
"^ c #E47F64",
|
86
|
+
"/ c #E57F6A",
|
87
|
+
"( c #EC7B63",
|
88
|
+
") c #F57F61",
|
89
|
+
"_ c #BE7980",
|
90
|
+
"` c #C2816C",
|
91
|
+
"' c #CE856E",
|
92
|
+
"] c #D4896F",
|
93
|
+
"[ c #DD896D",
|
94
|
+
"{ c #D38678",
|
95
|
+
"} c #D28D76",
|
96
|
+
"| c #D58E7A",
|
97
|
+
" . c #D88D70",
|
98
|
+
".. c #D6937C",
|
99
|
+
"X. c #DC917C",
|
100
|
+
"o. c #E78253",
|
101
|
+
"O. c #E3895F",
|
102
|
+
"+. c #EE805F",
|
103
|
+
"@. c #EE885E",
|
104
|
+
"#. c #F6814D",
|
105
|
+
"$. c #F48353",
|
106
|
+
"%. c #F3825B",
|
107
|
+
"&. c #E38362",
|
108
|
+
"*. c #E0846B",
|
109
|
+
"=. c #E78965",
|
110
|
+
"-. c #E68B6F",
|
111
|
+
";. c #EC8160",
|
112
|
+
":. c #E88B67",
|
113
|
+
">. c #EF8B6D",
|
114
|
+
",. c #E08B73",
|
115
|
+
"<. c #EB8D71",
|
116
|
+
"1. c #E69273",
|
117
|
+
"2. c #E3927A",
|
118
|
+
"3. c #ED9376",
|
119
|
+
"4. c #ED967B",
|
120
|
+
"5. c #EC9D7E",
|
121
|
+
"6. c #F38463",
|
122
|
+
"7. c #F18168",
|
123
|
+
"8. c #F38A6B",
|
124
|
+
"9. c #FA8E6F",
|
125
|
+
"0. c #F4926B",
|
126
|
+
"q. c #FD9063",
|
127
|
+
"w. c #F39172",
|
128
|
+
"e. c #F3947C",
|
129
|
+
"r. c #F3997B",
|
130
|
+
"t. c #FD9572",
|
131
|
+
"y. c #FC957B",
|
132
|
+
"u. c #F9997C",
|
133
|
+
"i. c #F6A27F",
|
134
|
+
"p. c #B08188",
|
135
|
+
"a. c #C59A8A",
|
136
|
+
"s. c #C09A94",
|
137
|
+
"d. c #D48A85",
|
138
|
+
"f. c #D48E88",
|
139
|
+
"g. c #D79181",
|
140
|
+
"h. c #D6938B",
|
141
|
+
"j. c #D39D8E",
|
142
|
+
"k. c #DB9483",
|
143
|
+
"l. c #D9938A",
|
144
|
+
"z. c #DB9A87",
|
145
|
+
"x. c #DD9A8C",
|
146
|
+
"c. c #D19A90",
|
147
|
+
"v. c #DC9799",
|
148
|
+
"b. c #DB9F91",
|
149
|
+
"n. c #DD9B9F",
|
150
|
+
"m. c #DB9FA0",
|
151
|
+
"M. c #D5A092",
|
152
|
+
"N. c #DDA398",
|
153
|
+
"B. c #D8AA9D",
|
154
|
+
"V. c #D7A5A4",
|
155
|
+
"C. c #DDA7A4",
|
156
|
+
"Z. c #D7B2B5",
|
157
|
+
"A. c #E5978C",
|
158
|
+
"S. c #E69B8A",
|
159
|
+
"D. c #E99780",
|
160
|
+
"F. c #EE998A",
|
161
|
+
"G. c #E59D90",
|
162
|
+
"H. c #F09787",
|
163
|
+
"J. c #F39A82",
|
164
|
+
"K. c #F99A81",
|
165
|
+
"L. c #F89F8A",
|
166
|
+
"P. c #E2A38C",
|
167
|
+
"I. c #E6A090",
|
168
|
+
"U. c #ECA59B",
|
169
|
+
"Y. c #F1A486",
|
170
|
+
"T. c #F3A48D",
|
171
|
+
"R. c #F8A181",
|
172
|
+
"E. c #FBA38E",
|
173
|
+
"W. c #F4A494",
|
174
|
+
"Q. c #F3AA9B",
|
175
|
+
"!. c #FCA391",
|
176
|
+
"~. c #F9A699",
|
177
|
+
"^. c #FCAC9A",
|
178
|
+
"/. c #FBB69E",
|
179
|
+
"(. c #FBBA9E",
|
180
|
+
"). c #E0A7A0",
|
181
|
+
"_. c #EBAFA6",
|
182
|
+
"`. c #E7B0A3",
|
183
|
+
"'. c #F4B4A4",
|
184
|
+
"]. c #F3B6AB",
|
185
|
+
"[. c #F6BAA3",
|
186
|
+
"{. c #F6BDAB",
|
187
|
+
"}. c #FBB7A2",
|
188
|
+
"|. c #FABBA4",
|
189
|
+
" X c #FAC4AC",
|
190
|
+
".X c #F1C4B6",
|
191
|
+
"XX c #F1C8BC",
|
192
|
+
"oX c #FFCFB6",
|
193
|
+
"OX c #FFD5B9",
|
194
|
+
"+X c #CEDEFC",
|
195
|
+
"@X c #EBC9CA",
|
196
|
+
"#X c #E5CFD8",
|
197
|
+
"$X c #FFD6C0",
|
198
|
+
"%X c #FFDDCF",
|
199
|
+
"&X c #FFDED4",
|
200
|
+
"*X c #E8DFF1",
|
201
|
+
"=X c #FFEAD5",
|
202
|
+
"-X c #FFECDC",
|
203
|
+
";X c #EBE2F3",
|
204
|
+
":X c #FFECE2",
|
205
|
+
">X c #F4E0F5",
|
206
|
+
",X c #FFF5E7",
|
207
|
+
"<X c #FFF4EB",
|
208
|
+
"1X c #FFF8ED",
|
209
|
+
"2X c #FFF3F3",
|
210
|
+
"3X c #FFF9F3",
|
211
|
+
"4X c #FFFBFE",
|
212
|
+
"5X c None",
|
213
|
+
/* pixels */
|
214
|
+
"5X6 = = = = = = = = = = = = = = = = = = 2 3 5X",
|
215
|
+
"4 * +X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X+X; o ",
|
216
|
+
"@ +X*Xd d d d d r d d r d d d d d d d d ;X+X; ",
|
217
|
+
"+ 4Xd v @XC.N.j.j.j.j.h.h.k.d.| } ' ..` p.4X$ ",
|
218
|
+
". 4Xd #X.X X|.|.Q.Q.Q.W.T.T.Y.J.J.e.<.^ x 4X$ ",
|
219
|
+
"X 4Xd Z. XoX(.}.Q.W.!.L.R.R.R.r.r.e.>.%.c 4X% ",
|
220
|
+
". 4Xd V.[. X[.'.'.W.L.K.0.u.5.2.D.2.=.@.f 4X% ",
|
221
|
+
". 4Xd n./.[.{.&X<XG.T.( t.<.[ z.,X$X=.H f 4X% ",
|
222
|
+
"X 4Xd n.^.Q.].:X3X1X..T./ ,.{ 1X1X=Xw.Y j 4X% ",
|
223
|
+
"+ 4Xd v.~.~.G.XX:X1X,Xz.{ b.1X1X,X<.L L z 4X% ",
|
224
|
+
"+ 4Xh l.K.!.H.G.`.1X3X4Xp.3X1X1XA N %.8.j 4X% ",
|
225
|
+
"+ 4Xr l.y.K.J.H.S.x.3X2X4X4X3X] ^ %.~ ! j 4X% ",
|
226
|
+
"+ 4Xd f.w.K.K.K.J.X.M.4X4X3Xa.*.U W F R g 4X& ",
|
227
|
+
"+ 4Xd d.8.u.u.e.H.S.1X4X4X3X1X1.@.E W Q j 4X& ",
|
228
|
+
"# 4Xd S 9.8.e.A.B.3X3X1XB.,X1X<X..o.#.R u 4X: ",
|
229
|
+
"$ 4Xd D ) t.e._.<X3X,XS...P.1X3X1XO.J ~ p 4X: ",
|
230
|
+
"$ 4Xd D 7.;.D.<X1X1X..T.=.1.] 1X1X=XY G u 4X> ",
|
231
|
+
"- 4Xd V 7.8.3.&X,Xk.5.N 0.0.O.2.-XOXK F s 4X> ",
|
232
|
+
"; 4Xr V ( ! T *.4.-.0.%.q.W $.Y @.W n m e 4X> ",
|
233
|
+
"5 4Xh Z P U %.8.^ ( 6.%.W $.#.W J E R b v 4X5 ",
|
234
|
+
"7 +X>Xv i B l r a l z r h g p p p p t k >X+X8 ",
|
235
|
+
"9 7 +X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X+X8 < ",
|
236
|
+
"5X9 7 , , , , , , , , , , , , , , , , , 7 < 5X"
|
237
|
+
};
|