##############################################################################
# Copyright (c) 2005,2006 Free Software Foundation, Inc.                     #
#                                                                            #
# Permission is hereby granted, free of charge, to any person obtaining a    #
# copy of this software and associated documentation files (the "Software"), #
# to deal in the Software without restriction, including without limitation  #
# the rights to use, copy, modify, merge, publish, distribute, distribute    #
# with modifications, sublicense, and/or sell copies of the Software, and to #
# permit persons to whom the Software is furnished to do so, subject to the  #
# following conditions:                                                      #
#                                                                            #
# The above copyright notice and this permission notice shall be included in #
# all copies or substantial portions of the Software.                        #
#                                                                            #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
# DEALINGS IN THE SOFTWARE.                                                  #
#                                                                            #
# Except as contained in this notice, the name(s) of the above copyright     #
# holders shall not be used in advertising or otherwise to promote the sale, #
# use or other dealings in this Software without prior written               #
# authorization.                                                             #
##############################################################################
# $Id: xterm-88color.dat,v 1.2 2006/04/22 21:40:00 tom Exp $
# This illustrates the predefined colors for XFree86 xterm's "xterm-16color". 
# If you set $TERM to "xterm-88color" (and have xterm compiled to support the
# 88-color or 256-color feature), you can use the ncurses 'd' screen to
# manipulate the colors shown in the screen.  The 'd' screen is limited to
# the first 16 colors, and xterm happens to use the same first 16 colors in
# the extended color models that support initc.
#
# The colors shown are for xterm patch #189.
scale:255
0:	  0   0   0		black
1:	205   0	  0		red3
2:	  0 205	  0		green3
3:	205 205	  0		yellow3
4:	 30 144 255		DodgerBlue1
5:	205   0 205		magenta3
6:	  0 205 205		cyan3
7:	229 229 229 		gray90
8:	127 127 127 		gray50
9:	255   0   0		red
10:	  0 255   0		green
11:	255 255   0		yellow
12:	 99 184 255		SteelBlue1
13:	255   0 255		magenta
14:	  0 255 255		cyan
15:	255 255 255		white
16:	  0   0   0
17:	  0   0 139
18:	  0   0 205
19:	  0   0 255
20:	  0 139   0
21:	  0 139 139
22:	  0 139 205
23:	  0 139 255
24:	  0 205   0
25:	  0 205 139
26:	  0 205 205
27:	  0 205 255
28:	  0 255   0
29:	  0 255 139
30:	  0 255 205
31:	  0 255 255
32:	139   0   0
33:	139   0 139
34:	139   0 205
35:	139   0 255
36:	139 139   0
37:	139 139 139
38:	139 139 205
39:	139 139 255
40:	139 205   0
41:	139 205 139
42:	139 205 205
43:	139 205 255
44:	139 255   0
45:	139 255 139
46:	139 255 205
47:	139 255 255
48:	205   0   0
49:	205   0 139
50:	205   0 205
51:	205   0 255
52:	205 139   0
53:	205 139 139
54:	205 139 205
55:	205 139 255
56:	205 205   0
57:	205 205 139
58:	205 205 205
59:	205 205 255
60:	205 255   0
61:	205 255 139
62:	205 255 205
63:	205 255 255
64:	255   0   0
65:	255   0 139
66:	255   0 205
67:	255   0 255
68:	255 139   0
69:	255 139 139
70:	255 139 205
71:	255 139 255
72:	255 205   0
73:	255 205 139
74:	255 205 205
75:	255 205 255
76:	255 255   0
77:	255 255 139
78:	255 255 205
79:	255 255 255
80:	 46  46  46
81:	 92  92  92
82:	113 113 113
83:	139 139 139
84:	162 162 162
85:	185 185 185
86:	208 208 208
87:	231 231 231
