graphicsdeviceinterface/screendriver/sbit/LUTAB.CPP
author jakl.martin@cell-telecom.com
Mon, 06 Dec 2010 18:07:30 +0100
branchNewGraphicsArchitecture
changeset 218 99b3451c560e
parent 0 5d03bc08d59c
permissions -rw-r--r--
Fix for Bug 3890

// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
//

#include <e32std.h>

extern const TUint32 wordlutab[256]=
	{	0x0000,	0x0003,	0x000c,	0x000f,	0x0030,	0x0033,	0x003c,	0x003f,
		0x00c0,	0x00c3,	0x00cc,	0x00cf,	0x00f0,	0x00f3,	0x00fc,	0x00ff,
		0x0300,	0x0303,	0x030c,	0x030f,	0x0330,	0x0333,	0x033c,	0x033f,
		0x03c0,	0x03c3,	0x03cc,	0x03cf,	0x03f0,	0x03f3,	0x03fc,	0x03ff,
		0x0c00,	0x0c03,	0x0c0c,	0x0c0f,	0x0c30,	0x0c33,	0x0c3c,	0x0c3f,
		0x0cc0,	0x0cc3,	0x0ccc,	0x0ccf,	0x0cf0,	0x0cf3,	0x0cfc,	0x0cff,
		0x0f00,	0x0f03,	0x0f0c,	0x0f0f,	0x0f30,	0x0f33,	0x0f3c,	0x0f3f,
		0x0fc0,	0x0fc3,	0x0fcc,	0x0fcf,	0x0ff0,	0x0ff3,	0x0ffc,	0x0fff,
		0x3000,	0x3003,	0x300c,	0x300f,	0x3030,	0x3033,	0x303c,	0x303f,
		0x30c0,	0x30c3,	0x30cc,	0x30cf,	0x30f0,	0x30f3,	0x30fc,	0x30ff,
		0x3300,	0x3303,	0x330c,	0x330f,	0x3330,	0x3333,	0x333c,	0x333f,
		0x33c0,	0x33c3,	0x33cc,	0x33cf,	0x33f0,	0x33f3,	0x33fc,	0x33ff,
		0x3c00,	0x3c03,	0x3c0c,	0x3c0f,	0x3c30,	0x3c33,	0x3c3c,	0x3c3f,
		0x3cc0,	0x3cc3,	0x3ccc,	0x3ccf,	0x3cf0,	0x3cf3,	0x3cfc,	0x3cff,
		0x3f00,	0x3f03,	0x3f0c,	0x3f0f,	0x3f30,	0x3f33,	0x3f3c,	0x3f3f,
		0x3fc0,	0x3fc3,	0x3fcc,	0x3fcf,	0x3ff0,	0x3ff3,	0x3ffc,	0x3fff,
		0xc000,	0xc003,	0xc00c,	0xc00f,	0xc030,	0xc033,	0xc03c,	0xc03f,
		0xc0c0,	0xc0c3,	0xc0cc,	0xc0cf,	0xc0f0,	0xc0f3,	0xc0fc,	0xc0ff,
		0xc300,	0xc303,	0xc30c,	0xc30f,	0xc330,	0xc333,	0xc33c,	0xc33f,
		0xc3c0,	0xc3c3,	0xc3cc,	0xc3cf,	0xc3f0,	0xc3f3,	0xc3fc,	0xc3ff,
		0xcc00,	0xcc03,	0xcc0c,	0xcc0f,	0xcc30,	0xcc33,	0xcc3c,	0xcc3f,
		0xccc0,	0xccc3,	0xcccc,	0xcccf,	0xccf0,	0xccf3,	0xccfc,	0xccff,
		0xcf00,	0xcf03,	0xcf0c,	0xcf0f,	0xcf30,	0xcf33,	0xcf3c,	0xcf3f,
		0xcfc0,	0xcfc3,	0xcfcc,	0xcfcf,	0xcff0,	0xcff3,	0xcffc,	0xcfff,
		0xf000,	0xf003,	0xf00c,	0xf00f,	0xf030,	0xf033,	0xf03c,	0xf03f,
		0xf0c0,	0xf0c3,	0xf0cc,	0xf0cf,	0xf0f0,	0xf0f3,	0xf0fc,	0xf0ff,
		0xf300,	0xf303,	0xf30c,	0xf30f,	0xf330,	0xf333,	0xf33c,	0xf33f,
		0xf3c0,	0xf3c3,	0xf3cc,	0xf3cf,	0xf3f0,	0xf3f3,	0xf3fc,	0xf3ff,
		0xfc00,	0xfc03,	0xfc0c,	0xfc0f,	0xfc30,	0xfc33,	0xfc3c,	0xfc3f,
		0xfcc0,	0xfcc3,	0xfccc,	0xfccf,	0xfcf0,	0xfcf3,	0xfcfc,	0xfcff,
		0xff00,	0xff03,	0xff0c,	0xff0f,	0xff30,	0xff33,	0xff3c,	0xff3f,
		0xffc0,	0xffc3,	0xffcc,	0xffcf,	0xfff0,	0xfff3,	0xfffc,	0xffff	};

extern const TUint32 modelutab[256]=
	{	0x0000,	0x0005,	0x000a,	0x000f,	0x0050,	0x0055,	0x005a,	0x005f,
		0x00a0,	0x00a5,	0x00aa,	0x00af,	0x00f0,	0x00f5,	0x00fa,	0x00ff,
		0x0500,	0x0505,	0x050a,	0x050f,	0x0550,	0x0555,	0x055a,	0x055f,
		0x05a0,	0x05a5,	0x05aa,	0x05af,	0x05f0,	0x05f5,	0x05fa,	0x05ff,
		0x0a00,	0x0a05,	0x0a0a,	0x0a0f,	0x0a50,	0x0a55,	0x0a5a,	0x0a5f,
		0x0aa0,	0x0aa5,	0x0aaa,	0x0aaf,	0x0af0,	0x0af5,	0x0afa,	0x0aff,
		0x0f00,	0x0f05,	0x0f0a,	0x0f0f,	0x0f50,	0x0f55,	0x0f5a,	0x0f5f,
		0x0fa0,	0x0fa5,	0x0faa,	0x0faf,	0x0ff0,	0x0ff5,	0x0ffa,	0x0fff,
		0x5000,	0x5005,	0x500a,	0x500f,	0x5050,	0x5055,	0x505a,	0x505f,
		0x50a0,	0x50a5,	0x50aa,	0x50af,	0x50f0,	0x50f5,	0x50fa,	0x50ff,
		0x5500,	0x5505,	0x550a,	0x550f,	0x5550,	0x5555,	0x555a,	0x555f,
		0x55a0,	0x55a5,	0x55aa,	0x55af,	0x55f0,	0x55f5,	0x55fa,	0x55ff,
		0x5a00,	0x5a05,	0x5a0a,	0x5a0f,	0x5a50,	0x5a55,	0x5a5a,	0x5a5f,
		0x5aa0,	0x5aa5,	0x5aaa,	0x5aaf,	0x5af0,	0x5af5,	0x5afa,	0x5aff,
		0x5f00,	0x5f05,	0x5f0a,	0x5f0f,	0x5f50,	0x5f55,	0x5f5a,	0x5f5f,
		0x5fa0,	0x5fa5,	0x5faa,	0x5faf,	0x5ff0,	0x5ff5,	0x5ffa,	0x5fff,
		0xa000,	0xa005,	0xa00a,	0xa00f,	0xa050,	0xa055,	0xa05a,	0xa05f,
		0xa0a0,	0xa0a5,	0xa0aa,	0xa0af,	0xa0f0,	0xa0f5,	0xa0fa,	0xa0ff,
		0xa500,	0xa505,	0xa50a,	0xa50f,	0xa550,	0xa555,	0xa55a,	0xa55f,
		0xa5a0,	0xa5a5,	0xa5aa,	0xa5af,	0xa5f0,	0xa5f5,	0xa5fa,	0xa5ff,
		0xaa00,	0xaa05,	0xaa0a,	0xaa0f,	0xaa50,	0xaa55,	0xaa5a,	0xaa5f,
		0xaaa0,	0xaaa5,	0xaaaa,	0xaaaf,	0xaaf0,	0xaaf5,	0xaafa,	0xaaff,
		0xaf00,	0xaf05,	0xaf0a,	0xaf0f,	0xaf50,	0xaf55,	0xaf5a,	0xaf5f,
		0xafa0,	0xafa5,	0xafaa,	0xafaf,	0xaff0,	0xaff5,	0xaffa,	0xafff,
		0xf000,	0xf005,	0xf00a,	0xf00f,	0xf050,	0xf055,	0xf05a,	0xf05f,
		0xf0a0,	0xf0a5,	0xf0aa,	0xf0af,	0xf0f0,	0xf0f5,	0xf0fa,	0xf0ff,
		0xf500,	0xf505,	0xf50a,	0xf50f,	0xf550,	0xf555,	0xf55a,	0xf55f,
		0xf5a0,	0xf5a5,	0xf5aa,	0xf5af,	0xf5f0,	0xf5f5,	0xf5fa,	0xf5ff,
		0xfa00,	0xfa05,	0xfa0a,	0xfa0f,	0xfa50,	0xfa55,	0xfa5a,	0xfa5f,
		0xfaa0,	0xfaa5,	0xfaaa,	0xfaaf,	0xfaf0,	0xfaf5,	0xfafa,	0xfaff,
		0xff00,	0xff05,	0xff0a,	0xff0f,	0xff50,	0xff55,	0xff5a,	0xff5f,
		0xffa0,	0xffa5,	0xffaa,	0xffaf,	0xfff0,	0xfff5,	0xfffa,	0xffff	};

extern const TUint8 ditherlutab[16][4]=
	{{	0x0,	0x0,	0x0,	0x0,	},
	{	0x5,	0x0,	0x0,	0x0,	},
	{	0x5,	0x0,	0x0,	0x5,	},
	{	0x5,	0x0,	0x0,	0x5,	},
	{	0x5,	0x0,	0x5,	0x5,	},
	{	0x5,	0x5,	0x5,	0x5,	},
	{	0xa,	0x5,	0x5,	0x5,	},
	{	0xa,	0x5,	0x5,	0xa,	},
	{	0xa,	0x5,	0x5,	0xa,	},
	{	0xa,	0x5,	0xa,	0xa,	},
	{	0xa,	0xa,	0xa,	0xa,	},
	{	0xf,	0xa,	0xa,	0xa,	},
	{	0xf,	0xa,	0xa,	0xf,	},
	{	0xf,	0xa,	0xa,	0xf,	},
	{	0xf,	0xa,	0xf,	0xf,	},
	{	0xf,	0xf,	0xf,	0xf		}};

extern const TUint8 shadowlutab[256]=
	{	0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x00,	0x00,	0x00,	0x00,	0x00,	0x00,	0x01,	0x02,
		0x03,	0x04,	0x05,	0x06,	0x07,	0x08,	0x09,	0x0a,
		0x10,	0x10,	0x10,	0x10,	0x10,	0x10,	0x11,	0x12,
		0x13,	0x14,	0x15,	0x16,	0x17,	0x18,	0x19,	0x1a,
		0x20,	0x20,	0x20,	0x20,	0x20,	0x20,	0x21,	0x22,
		0x23,	0x24,	0x25,	0x26,	0x27,	0x28,	0x29,	0x2a,
		0x30,	0x30,	0x30,	0x30,	0x30,	0x30,	0x31,	0x32,
		0x33,	0x34,	0x35,	0x36,	0x37,	0x38,	0x39,	0x3a,
		0x40,	0x40,	0x40,	0x40,	0x40,	0x40,	0x41,	0x42,
		0x43,	0x44,	0x45,	0x46,	0x47,	0x48,	0x49,	0x4a,
		0x50,	0x50,	0x50,	0x50,	0x50,	0x50,	0x51,	0x52,
		0x53,	0x54,	0x55,	0x56,	0x57,	0x58,	0x59,	0x5a,
		0x60,	0x60,	0x60,	0x60,	0x60,	0x60,	0x61,	0x62,
		0x63,	0x64,	0x65,	0x66,	0x67,	0x68,	0x69,	0x6a,
		0x70,	0x70,	0x70,	0x70,	0x70,	0x70,	0x71,	0x72,
		0x73,	0x74,	0x75,	0x76,	0x77,	0x78,	0x79,	0x7a,
		0x80,	0x80,	0x80,	0x80,	0x80,	0x80,	0x81,	0x82,
		0x83,	0x84,	0x85,	0x86,	0x87,	0x88,	0x89,	0x8a,
		0x90,	0x90,	0x90,	0x90,	0x90,	0x90,	0x91,	0x92,
		0x93,	0x94,	0x95,	0x96,	0x97,	0x98,	0x99,	0x9a,
		0xa0,	0xa0,	0xa0,	0xa0,	0xa0,	0xa0,	0xa1,	0xa2,
		0xa3,	0xa4,	0xa5,	0xa6,	0xa7,	0xa8,	0xa9,	0xaa	};

extern const TUint8 color256shadowlutab[256] = {
	0,	0,	1,	2,	3,	4,
	0,	0,	1,	2,	3,	4,
	6,	6,	7,	8,	9,	10,
	12,	12,	13,	14,	15,	16,
	18,	18,	19,	20,	21,	22,
	24,	24,	25,	26,	27,	28,

	0,	0,	1,	2,	3,	4,
	0,	0,	1,	2,	3,	4,
	6,	6,	7,	8,	9,	10,
	12,	12,	13,	14,	15,	16,
	18,	18,	19,	20,	21,	22,
	24,	24,	25,	26,	27,	28,

	36,	36,	37,	38,	39,	40,
	36,	36,	37,	38,	39,	40,
	42,	42,	43,	44,	45,	46,
	48,	48,	49,	50,	51,	52,
	54,	54,	55,	56,	57,	58,
	60,	60,	61,	62,	63,	64,

	0, 0, 108, 109, 110,
	0, 0, 113, 114, 115,
	0, 0, 118, 119, 120,
	0, 0, 123, 124, 125,

	126, 127, 128, 129, 130,
	121, 122, 133, 134, 135,
	116, 117, 138, 139, 140,
	111, 112, 143, 144, 145,

	72,	72,	73,	74,	75,	76,
	72,	72,	73,	74,	75,	76,
	78,	78,	79,	80,	81,	82,
	84,	84,	85,	86,	87,	88,
	90,	90,	91,	92,	93,	94,
	96,	96,	97,	98,	99,	100,

	148, 148, 149, 150, 151, 152,
	148, 148, 149, 150, 151, 152,
	154, 154, 155, 156, 157, 158,
	160, 160, 161, 162, 163, 164,
	166, 166, 167, 168, 169, 170,
	172, 172, 173, 174, 175, 176,

	184, 184, 185, 186, 187, 188,
	184, 184, 185, 186, 187, 188,
	190, 190, 191, 192, 193, 194,
	196, 196, 197, 198, 199, 200,
	202, 202, 203, 204, 205, 206,
	208, 208, 209, 210, 211, 212
	};
	
/**
This lookup table is used for outline and shadow fonts. Four entries of this table represents
% of Outline, Shadow, Fill and Background colour to be used to get the final colour to be 
displayed on screen.

While doing the blending of four colours it would use the following formula,

blendedXXXColor = (XXXOutlinePenColor * FourColorBlendLookup[index][KOutlineColorIndex] + 
			   		XXXShadowColor * FourColorBlendLookup[index][KShadowColorIndex] +
			  		XXXFillColor * FourColorBlendLookup[index][KFillColorIndex] + 
			  		backgroundColor.XXX() * FourColorBlendLookup[index][KBackgroundColorIndex]) >> 8;
where XXX can be Red, Green or Blue
and index is the 8-bit value which will be provided by the rasterizer to decide which 
entry of lookup table should be used. Right shift by eight will divide the calculated value in % with 
256 to get the actual colour.

This table is provided by Monotype and MUST NOT be changed.
*/
extern const TInt FourColorBlendLookup[256][4] = {
	{ 0, 0, 0, 255 },
	{ 0, 0, 17, 238 },
	{ 0, 0, 34, 221 },
	{ 0, 0, 51, 204 },
	{ 0, 0, 68, 187 },
	{ 0, 0, 85, 170 },
	{ 0, 0, 102, 153 },
	{ 0, 0, 119, 136 },
	{ 0, 0, 136, 119 },
	{ 0, 0, 153, 102 },
	{ 0, 0, 170, 85 },
	{ 0, 0, 187, 68 },
	{ 0, 0, 204, 51 },
	{ 0, 0, 221, 34 },
	{ 0, 0, 238, 17 },
	{ 0, 0, 255, 0 },
	{ 0, 17, 0, 238 },
	{ 0, 34, 0, 221 },
	{ 0, 51, 0, 204 },
	{ 0, 68, 0, 187 },
	{ 0, 85, 0, 170 },
	{ 0, 102, 0, 153 },
	{ 0, 119, 0, 136 },
	{ 0, 136, 0, 119 },
	{ 0, 153, 0, 102 },
	{ 0, 170, 0, 85 },
	{ 0, 187, 0, 68 },
	{ 0, 204, 0, 51 },
	{ 0, 221, 0, 34 },
	{ 0, 238, 0, 17 },
	{ 0, 255, 0, 0 },
	{ 17, 0, 0, 238 },
	{ 34, 0, 0, 221 },
	{ 51, 0, 0, 204 },
	{ 68, 0, 0, 187 },
	{ 85, 0, 0, 170 },
	{ 102, 0, 0, 153 },
	{ 119, 0, 0, 136 },
	{ 136, 0, 0, 119 },
	{ 153, 0, 0, 102 },
	{ 170, 0, 0, 85 },
	{ 187, 0, 0, 68 },
	{ 204, 0, 0, 51 },
	{ 221, 0, 0, 34 },
	{ 238, 0, 0, 17 },
	{ 255, 0, 0, 0 },
	{ 0, 17, 238, 0 },
	{ 0, 34, 221, 0 },
	{ 0, 51, 204, 0 },
	{ 0, 68, 187, 0 },
	{ 0, 85, 170, 0 },
	{ 0, 102, 153, 0 },
	{ 0, 119, 136, 0 },
	{ 0, 136, 119, 0 },
	{ 0, 153, 102, 0 },
	{ 0, 170, 85 ,0 },
	{ 0, 187, 68 ,0 },
	{ 0, 204, 51, 0 },
	{ 0, 221, 34, 0 },
	{ 0, 238, 17, 0 },
	{ 238, 17, 0, 0 },
	{ 221, 34, 0, 0 },
	{ 204, 51, 0, 0 },
	{ 187, 68, 0, 0 },
	{ 170, 85, 0, 0 },
	{ 153, 102, 0, 0 },
	{ 136, 119, 0, 0 },
	{ 119, 136, 0, 0 },
	{ 102, 153, 0, 0 },
	{ 85, 170, 0, 0 },
	{ 68, 187, 0, 0 },
	{ 51, 204, 0, 0 },
	{ 34, 221, 0, 0 },
	{ 17, 238, 0, 0 },
	{ 238, 0, 17, 0 },
	{ 221, 0, 34, 0 }, 
	{ 204, 0, 51, 0 },
	{ 187, 0, 68, 0 },
	{ 170, 0, 85, 0 },
	{ 153, 0, 102, 0 },
	{ 136, 0, 119, 0 },
	{ 119, 0, 136, 0 }, 
	{ 102, 0, 153, 0 }, 
	{ 85, 0, 170, 0 } ,
	{ 68, 0, 187, 0 },
	{ 51, 0, 204, 0 }, 
	{ 34, 0, 221, 0 }, 
	{ 17, 0, 238, 0 }, 
	{ 210, 23, 0, 22 }, 
	{ 179, 60, 0, 16 }, 
	{ 145, 94, 0, 16 }, 
	{ 119, 119, 0, 17 }, 
	{ 94, 145, 0, 16 }, 
	{ 60, 179, 0, 16 }, 
	{ 23, 210, 0, 22 }, 
	{ 176, 40, 0, 39 }, 
	{ 142, 74, 0, 39 }, 
	{ 113, 96, 0, 46 }, 
	{ 91, 125, 0, 39 }, 
	{ 62, 147, 0, 46 }, 
	{ 40, 176, 0, 39 }, 
	{ 179, 17, 0, 59 },
	{ 147, 45, 0, 63 },
	{ 17, 179, 0, 59 },
	{ 145, 17, 0, 93 },
	{ 125, 40, 0, 90 },
	{ 108, 74, 0, 73 },
	{ 74, 108, 0, 73 },
	{ 85, 85, 0, 85 },
	{ 40, 142, 0, 73 },
	{ 119, 17, 0, 119 },
	{ 96, 45, 0, 114 },
	{ 74, 74, 0, 107 },
	{ 45, 113, 0, 97 },
	{ 17, 145, 0, 93 },
	{ 94, 17, 0, 144 },
	{ 74, 40, 0, 141 },
	{ 45, 62, 0, 148 },
	{ 40, 91, 0, 124 },
	{ 17, 119, 0, 119 },
	{ 17, 94, 0, 144 }, 
	{ 60, 17, 0, 178 }, 
	{ 40, 40, 0, 175 }, 
	{ 17, 60, 0, 178 }, 
	{ 23, 23, 0, 209 }, 
	{ 0, 210, 23, 22 },
	{ 0, 179, 60, 16 },
	{ 0, 145, 94, 16 },
	{ 0, 119, 119, 17 },
	{ 0, 94 ,145, 16 },
	{ 0, 60 ,179, 16 },
	{ 0, 23, 210, 22 },
	{ 0, 176, 40, 39 },
	{ 0, 142, 74, 39 },
	{ 0, 113, 96, 46 },
	{ 0, 91, 125, 39 },
	{ 0, 62, 147, 46 },
	{ 0, 40, 176, 39 },
	{ 0, 179, 17, 59 },
	{ 0, 147, 45, 63 },
	{ 0, 17, 179, 59 },
	{ 0, 145, 17, 93 },
	{ 0, 125, 40, 90 },
	{ 0, 108, 74, 73 },
	{ 0, 74, 108, 73 },
	{ 0, 85, 85, 85 },
	{ 0, 40, 142, 73 }, 
	{ 0, 119, 17, 119 },
	{ 0, 96, 45, 114 },
	{ 0, 74, 74, 107 },
	{ 0, 45, 113, 97 },
	{ 0, 17, 145, 93 },
	{ 0, 94, 17, 144 },
	{ 0, 74, 40, 141 },
	{ 0, 45, 62, 148 },
	{ 0, 40, 91, 124 },
	{ 0, 17, 119, 119 },
	{ 0, 17, 94, 144 },
	{ 0, 60, 17, 178 },
	{ 0, 40, 40, 175 },
	{ 0, 17, 60, 178 },
	{ 0, 23, 23, 209 },
	{ 23, 0, 210, 22 },
	{ 60, 0, 179, 16 },
	{ 94, 0, 145, 16 },
	{ 119, 0, 119, 17 },
	{ 145, 0, 94, 16 },
	{ 179, 0, 60, 16 },
	{ 210, 0, 23, 22 },
	{ 40, 0, 176, 39 },
	{ 74, 0, 142, 39 },
	{ 96, 0, 113, 46 },
	{ 125, 0, 91, 39 },
	{ 147, 0, 62, 46 },
	{ 176, 0, 40, 39 },
	{ 17, 0, 179, 59 },
	{ 45, 0, 147, 63 },
	{ 179, 0, 17, 59 },
	{ 17, 0, 145, 93 },
	{ 40, 0, 125, 90 },
	{ 74, 0, 108, 73 },
	{ 108, 0, 74, 73 },
	{ 85, 0, 85, 85 },
	{ 142, 0, 40, 73 },
	{ 17, 0, 119, 119 },
	{ 45, 0, 96, 114 },
	{ 74, 0, 74, 107 },
	{ 113, 0, 45, 97 },
	{ 145, 0, 17, 93 },
	{ 17, 0, 94, 144 },
	{ 40, 0, 74, 141 },
	{ 62, 0, 45, 148 },
	{ 91, 0, 40, 124 },
	{ 119, 0, 17, 119 },
	{ 94, 0, 17, 144 },
	{ 17, 0, 60, 178 },
	{ 40, 0, 40, 175 },
	{ 60, 0, 17, 178 },
	{ 23, 0, 23, 209 },
	{ 209, 23, 23, 0 },
	{ 178, 17, 60, 0 },
	{ 144, 17, 94, 0 },
	{ 119, 17, 119, 0 },
	{ 93, 17, 145, 0 },
	{ 59, 17, 179, 0 },
	{ 22, 23, 210, 0 },
	{ 175, 40, 40, 0 },
	{ 141, 40, 74, 0 },
	{ 114, 45, 96, 0 },
	{ 90, 40, 125, 0 },
	{ 63, 45, 147, 0 },
	{ 39, 40, 176, 0 },
	{ 178, 60, 17, 0 },
	{ 148, 62, 45, 0 },
	{ 16, 60, 179, 0 },
	{ 144, 94, 17, 0 },
	{ 124, 91, 40, 0 },
	{ 107, 74, 74, 0 },
	{ 73, 74, 108, 0 },
	{ 85, 85, 85, 0 },
	{ 39, 74, 142, 0 }, 
	{ 119, 119, 17, 0 },
	{ 97, 113, 45, 0 },
	{ 73, 108, 74, 0 },
	{ 46, 96, 113, 0 },
	{ 16, 94, 145, 0 },
	{ 93, 145, 17, 0 },
	{ 73, 142, 40, 0 },
	{ 46, 147, 62, 0 },
	{ 39, 125, 91, 0 },
	{ 17, 119, 119, 0 },
	{ 16, 145, 94, 0 },
	{ 59, 179, 17, 0 },
	{ 39, 176, 40, 0 },
	{ 16, 179, 60, 0 },
	{ 22, 210, 23, 0 },
	{ 32, 32 ,32, 159 },
	{ 32, 32 ,74, 117 },
	{ 32, 32 ,116, 75 },
	{ 32, 32 ,158, 33 },
	{ 74, 32, 32, 117 },
	{ 74, 32, 74, 75 }, 
	{ 74, 32, 116, 33 },
	{ 116, 32, 32, 75 },
	{ 116, 32, 74, 33 },
	{ 158, 32, 32, 33 },
	{ 32, 74, 32, 117 },
	{ 32, 74, 74, 75 },
	{ 32, 74, 116, 33 },
	{ 74, 74, 32, 75 },
	{ 74, 74, 74, 33 },
	{ 116, 74, 32, 33 },
	{ 32, 116, 32, 75 },
	{ 32, 116, 74, 33 },
	{ 74, 116, 32, 33 },
	{ 32, 158, 32, 33 },
	};