19 Jan 2009

This commit is contained in:
g-cont 2009-01-19 00:00:00 +03:00 committed by Alibek Omarov
parent a8b771b4a4
commit a06a514afd
46 changed files with 43568 additions and 5718 deletions

View File

@ -1,669 +0,0 @@
const unsigned char client_dat[] = {
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x0e, 0x00,
0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x05, 0x00, 0x00, 0x29, 0x05,
0x00, 0x00, 0x95, 0x16, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x0f,
0x19, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x92, 0x13, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x54, 0x0a, 0x00,
0x00, 0xbb, 0x19, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x1b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xa9, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x0d,
0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20,
0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x58, 0x61, 0x73, 0x68, 0x33,
0x44, 0x20, 0x51, 0x75, 0x61, 0x6b, 0x65, 0x43, 0x20, 0x63, 0x6f,
0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x2c, 0x0a, 0x77, 0x68, 0x6f,
0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6f,
0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x64,
0x65, 0x20, 0x6f, 0x66, 0x20, 0x46, 0x6f, 0x72, 0x65, 0x54, 0x68,
0x6f, 0x75, 0x67, 0x68, 0x74, 0x27, 0x73, 0x20, 0x51, 0x75, 0x61,
0x6b, 0x65, 0x43, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
0x72, 0x2e, 0x0a, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x73, 0x20, 0x74,
0x6f, 0x20, 0x49, 0x44, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
0x72, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x2e, 0x00,
0x0d, 0x0a, 0x0d, 0x0a, 0x49, 0x04, 0x00, 0x00, 0x78, 0xda, 0x75,
0x56, 0x4b, 0x73, 0xe3, 0x28, 0x10, 0xe6, 0x9c, 0x5f, 0x91, 0x4b,
0x8e, 0x3b, 0xde, 0x24, 0x33, 0xb3, 0x8f, 0x9b, 0x27, 0xf1, 0x64,
0x5c, 0x9b, 0x99, 0xb8, 0xec, 0x24, 0x55, 0x7b, 0x59, 0x15, 0x86,
0x96, 0x44, 0x19, 0x81, 0x16, 0x90, 0x6d, 0x3c, 0x7f, 0x7e, 0x1b,
0x90, 0xb0, 0xec, 0x64, 0x0f, 0x56, 0x7f, 0xdd, 0x74, 0x37, 0xd0,
0x2f, 0x4c, 0xac, 0xee, 0x14, 0x2f, 0x1c, 0xa9, 0x3b, 0x3e, 0x51,
0x5d, 0x53, 0xfc, 0x9a, 0xd1, 0x75, 0x46, 0x37, 0x19, 0xdd, 0x66,
0xf4, 0x31, 0xa3, 0x4f, 0x19, 0x7d, 0xce, 0xe8, 0xb7, 0x8c, 0x7e,
0xcf, 0xe8, 0x8f, 0x8c, 0x7e, 0x89, 0x88, 0xd5, 0xd7, 0x3d, 0xbd,
0xe9, 0xe9, 0x2d, 0xd9, 0x08, 0x29, 0x49, 0x67, 0x81, 0x70, 0xa3,
0x5b, 0x62, 0xa9, 0x0f, 0xbf, 0xc2, 0x01, 0x6d, 0x08, 0x04, 0x4b,
0xca, 0x9c, 0xd8, 0x0a, 0xe7, 0x89, 0x50, 0xa5, 0x26, 0xad, 0xd1,
0x15, 0xa9, 0xc4, 0x16, 0x48, 0xa5, 0x39, 0x29, 0xa5, 0x27, 0x4a,
0x3b, 0x6a, 0x2a, 0x70, 0x08, 0x98, 0x14, 0x2d, 0xd9, 0x01, 0x6d,
0x15, 0xec, 0x5d, 0x04, 0xad, 0x81, 0x2d, 0x61, 0x46, 0x5b, 0x5b,
0x53, 0x61, 0xa2, 0x48, 0x2b, 0x3b, 0x31, 0x82, 0x5d, 0x89, 0x0f,
0x3b, 0xba, 0xcd, 0x12, 0x27, 0xd4, 0xe6, 0xfa, 0x44, 0x62, 0x0a,
0xd8, 0xb7, 0xb7, 0x51, 0xf4, 0xed, 0xe5, 0xbe, 0x98, 0x2b, 0xe1,
0x22, 0x58, 0x82, 0xe2, 0x60, 0xfe, 0xbc, 0x5c, 0x53, 0x7e, 0xc9,
0xa4, 0xfd, 0x60, 0x1d, 0x75, 0x30, 0x5a, 0x89, 0x70, 0xe5, 0x3a,
0x2e, 0xf4, 0x6c, 0x0b, 0x2a, 0x19, 0xbd, 0xb4, 0x1c, 0xb5, 0x66,
0xca, 0x09, 0x27, 0xc0, 0x46, 0xd1, 0x82, 0x1a, 0x0b, 0xdf, 0xc1,
0x5a, 0x5a, 0x25, 0xf3, 0x55, 0xdd, 0x39, 0xae, 0x77, 0x8a, 0x94,
0x86, 0x2a, 0x8e, 0xa7, 0x0e, 0xdf, 0x25, 0x50, 0xbe, 0xd0, 0x96,
0x5c, 0x89, 0xa8, 0x73, 0x6f, 0xe8, 0xee, 0xab, 0x00, 0xc9, 0x23,
0xf7, 0x95, 0x72, 0x98, 0xca, 0xb6, 0xa6, 0x84, 0xe9, 0xa6, 0xd1,
0x6a, 0x52, 0x62, 0x2c, 0x0b, 0x03, 0xcc, 0x65, 0xe5, 0x2f, 0xd4,
0xcc, 0x9b, 0x61, 0x87, 0x20, 0xb8, 0xc3, 0x23, 0x81, 0xc9, 0xe2,
0xde, 0x70, 0x4d, 0x4d, 0xb1, 0xa6, 0x6c, 0x33, 0xe6, 0xa5, 0xa6,
0x7c, 0xec, 0xe7, 0x01, 0x14, 0x60, 0xe0, 0xde, 0x7a, 0x3a, 0x5f,
0x58, 0xe2, 0x01, 0xa8, 0xaa, 0x24, 0x2c, 0x46, 0xc2, 0xc5, 0x1b,
0xcb, 0x20, 0x61, 0xb2, 0x90, 0xb0, 0x05, 0x69, 0x6b, 0xed, 0x0a,
0x45, 0x1b, 0x20, 0x96, 0xa5, 0x9d, 0x85, 0xaa, 0x86, 0xc3, 0x34,
0x59, 0x10, 0x16, 0x43, 0x88, 0xe2, 0xd1, 0x5e, 0xfb, 0x80, 0x2f,
0x24, 0xfd, 0xb7, 0x03, 0x12, 0x8e, 0x5f, 0x99, 0x50, 0xda, 0x13,
0xdb, 0x4a, 0x6a, 0xeb, 0xac, 0xb0, 0x4a, 0x6c, 0xef, 0x4d, 0x61,
0xa9, 0xb4, 0x14, 0x0b, 0x8e, 0x47, 0x77, 0xb8, 0xf3, 0x2e, 0xb2,
0xc7, 0xdd, 0x12, 0x1b, 0x73, 0xa4, 0xad, 0xeb, 0xb3, 0x1a, 0xca,
0xb5, 0xa4, 0x0c, 0xae, 0x33, 0xba, 0xc9, 0xe8, 0x36, 0xa3, 0x8f,
0x19, 0x7d, 0xea, 0x0b, 0x1c, 0x13, 0x37, 0x9c, 0x23, 0x26, 0x59,
0x84, 0xc0, 0xe0, 0x81, 0x3c, 0xfa, 0xbc, 0x7b, 0x4c, 0x55, 0xb0,
0xc2, 0x0a, 0x76, 0xab, 0x70, 0xf4, 0x05, 0x5e, 0x02, 0xcf, 0xd7,
0x08, 0xcb, 0x26, 0x8e, 0xca, 0x4d, 0x2c, 0xbf, 0x7f, 0x3e, 0x5f,
0xd9, 0x0b, 0xf2, 0x17, 0xe6, 0x16, 0xf8, 0xe5, 0x77, 0xac, 0x4d,
0x0c, 0xde, 0xc5, 0xd1, 0x18, 0xcc, 0x16, 0xcc, 0x50, 0x48, 0x18,
0xd0, 0x16, 0x9d, 0x09, 0x26, 0xb1, 0xcc, 0x32, 0x9a, 0xac, 0xbb,
0xf5, 0x5a, 0x42, 0xb0, 0xf9, 0x12, 0xd1, 0xe2, 0x1d, 0x1d, 0x8b,
0x70, 0x13, 0x54, 0x56, 0x01, 0xbc, 0xab, 0xd1, 0xe8, 0x4d, 0xef,
0x04, 0xcf, 0xe2, 0xde, 0x53, 0xa9, 0xa4, 0xde, 0x05, 0x8d, 0x67,
0xc0, 0x5b, 0x6a, 0xbc, 0x55, 0x8a, 0x3d, 0x4a, 0x66, 0xfb, 0x56,
0x6a, 0x2b, 0xb4, 0x7a, 0xcf, 0x2c, 0xf4, 0x3e, 0x7a, 0x4c, 0xbb,
0x07, 0x8b, 0x77, 0x95, 0xa0, 0xa4, 0x9d, 0x74, 0xfd, 0xcd, 0xa3,
0x70, 0x56, 0x96, 0xa1, 0xda, 0x39, 0x30, 0x2a, 0xed, 0xe4, 0xa7,
0x65, 0xda, 0xb0, 0x3a, 0x87, 0xe6, 0x19, 0x9a, 0x16, 0x7b, 0xce,
0xa6, 0x66, 0x75, 0xbe, 0x85, 0xcb, 0x2b, 0x71, 0xf1, 0x66, 0x19,
0x13, 0x74, 0x47, 0x25, 0x5b, 0x42, 0x89, 0x3b, 0x90, 0x16, 0x27,
0xc6, 0x4e, 0x1b, 0x6c, 0xb1, 0x06, 0x07, 0x49, 0x28, 0x49, 0x03,
0x54, 0x3a, 0x81, 0x00, 0x1b, 0xb3, 0x81, 0x88, 0xb6, 0x02, 0x50,
0xa7, 0x1a, 0x68, 0xb1, 0xcf, 0xc8, 0x67, 0x74, 0x88, 0x28, 0x36,
0x82, 0x1d, 0xc1, 0x5e, 0xb7, 0x67, 0xfc, 0x98, 0x41, 0x8b, 0xa2,
0xd4, 0x66, 0x47, 0x0d, 0x3f, 0xa2, 0xa0, 0x9f, 0xb1, 0x1f, 0xe1,
0xa0, 0x6d, 0x44, 0x55, 0xbb, 0x81, 0x46, 0xcd, 0x84, 0x7c, 0x46,
0x41, 0xab, 0x6b, 0xe3, 0x27, 0xae, 0x23, 0xf1, 0x89, 0x1c, 0x88,
0x56, 0xa9, 0x61, 0x48, 0xaa, 0x47, 0x9c, 0xb6, 0x64, 0x87, 0x63,
0xca, 0xc4, 0x96, 0xc4, 0x52, 0x12, 0xd8, 0xa7, 0xa5, 0xa4, 0x95,
0x0d, 0x65, 0x35, 0xba, 0xcc, 0x09, 0x87, 0x5e, 0x4f, 0x79, 0x7f,
0xc6, 0x1f, 0x88, 0x15, 0x4d, 0x70, 0x98, 0x08, 0xea, 0xf7, 0xc0,
0x0f, 0x20, 0x6a, 0x84, 0x70, 0x26, 0x92, 0x34, 0x52, 0x30, 0x7b,
0x70, 0x20, 0x82, 0x63, 0x16, 0x5a, 0xe1, 0x30, 0xbd, 0xc1, 0x77,
0x0d, 0xe9, 0xe6, 0x19, 0xf6, 0x61, 0xed, 0x19, 0x3f, 0x66, 0x0e,
0xa4, 0x0e, 0x19, 0xac, 0x31, 0xa1, 0xfb, 0x02, 0x86, 0x19, 0x8c,
0x4c, 0xba, 0xa1, 0x25, 0x12, 0x4c, 0x8b, 0xb9, 0x65, 0xf8, 0xc4,
0xe0, 0xed, 0xb1, 0xf9, 0x42, 0x99, 0x62, 0x51, 0x35, 0x3a, 0x04,
0x26, 0xce, 0xc5, 0xb6, 0x53, 0xac, 0x8e, 0x17, 0x1a, 0x41, 0xdc,
0x73, 0xc4, 0xf8, 0x31, 0x73, 0x38, 0xbe, 0x3a, 0xc9, 0xea, 0x94,
0x0d, 0x41, 0x3b, 0x15, 0xf8, 0x73, 0x41, 0x2a, 0x9f, 0x78, 0x5c,
0x4f, 0xb0, 0x65, 0xf1, 0xc9, 0x66, 0x5a, 0x6a, 0x33, 0xc6, 0xe8,
0x66, 0xcc, 0x9d, 0xe8, 0xa1, 0x83, 0xc4, 0xd1, 0xf8, 0x42, 0xe0,
0xac, 0x03, 0x50, 0x21, 0xb4, 0x09, 0xf8, 0x01, 0xec, 0x06, 0x50,
0x93, 0xa0, 0x6d, 0xbd, 0x2d, 0xb0, 0x89, 0xd7, 0xd8, 0x4f, 0x98,
0x47, 0x6a, 0x6d, 0x6c, 0x81, 0x24, 0x89, 0xb0, 0xd1, 0x1c, 0xa4,
0xc0, 0x79, 0x86, 0xae, 0x42, 0xf1, 0x24, 0x88, 0xf7, 0x16, 0x8a,
0xe0, 0x68, 0xc6, 0xb1, 0x16, 0x35, 0x88, 0xc6, 0xfa, 0x0b, 0xa2,
0x48, 0x70, 0xdf, 0x1e, 0xf8, 0x01, 0x1c, 0x70, 0xca, 0x29, 0x1b,
0x3f, 0xb8, 0x1a, 0x89, 0x4f, 0xe4, 0x10, 0x72, 0x13, 0x13, 0x14,
0x57, 0x02, 0xf1, 0x89, 0x60, 0xa1, 0x68, 0x29, 0x70, 0x70, 0x03,
0x4e, 0x7c, 0xc5, 0x80, 0x40, 0xec, 0x7f, 0x9b, 0x3a, 0x93, 0xac,
0x35, 0xc7, 0x6b, 0x6d, 0x70, 0xd7, 0xe1, 0x26, 0x65, 0x78, 0x2b,
0x2d, 0xa1, 0x22, 0x95, 0xb1, 0xc2, 0xb9, 0x55, 0xf4, 0x21, 0x7d,
0x9d, 0xdd, 0x15, 0x4f, 0xcb, 0xf9, 0xc3, 0xfc, 0x07, 0x6e, 0x32,
0x62, 0x4e, 0x56, 0x70, 0xc3, 0x72, 0x5f, 0xc4, 0x3f, 0x07, 0x11,
0x85, 0x67, 0x2e, 0xd2, 0xf8, 0xe7, 0x80, 0x2c, 0xa6, 0xcb, 0xe7,
0x62, 0xfa, 0xb8, 0xf8, 0x36, 0x7d, 0x9d, 0x3d, 0xa2, 0x9b, 0x53,
0xde, 0x9f, 0xf1, 0x87, 0xc4, 0x2f, 0xa7, 0xf7, 0xf3, 0x97, 0xd5,
0xc8, 0xe0, 0x28, 0xf0, 0xe7, 0x82, 0x37, 0x26, 0x0f, 0xcb, 0xe9,
0xeb, 0xfc, 0xf9, 0xef, 0xb7, 0xa6, 0xc3, 0x82, 0xff, 0xbf, 0x85,
0xde, 0xd5, 0xe3, 0xec, 0xc7, 0xc3, 0xf3, 0xb7, 0xd1, 0xee, 0x47,
0x81, 0x3f, 0x17, 0xf4, 0x26, 0x77, 0x4f, 0x8f, 0x4f, 0xcb, 0x41,
0x3d, 0x31, 0x7e, 0xcc, 0x1c, 0x08, 0xf9, 0x0f, 0x4f, 0xf4, 0xb0,
0xf8, 0x53, 0x0e, 0x00, 0x00, 0x78, 0xda, 0xcd, 0x5c, 0x09, 0x98,
0x14, 0xc5, 0x15, 0xee, 0xae, 0x65, 0x57, 0xb2, 0x88, 0xa8, 0x28,
0xc4, 0x44, 0x77, 0x16, 0xc4, 0x13, 0x4f, 0x44, 0x2e, 0xa3, 0x01,
0x57, 0x44, 0xc5, 0x0b, 0x95, 0x44, 0x04, 0x35, 0xba, 0x2a, 0x8a,
0xa2, 0x78, 0xb0, 0x68, 0x62, 0xc2, 0xec, 0x82, 0x40, 0x04, 0x04,
0x4f, 0x54, 0x40, 0x14, 0x10, 0x39, 0x14, 0x44, 0x51, 0x3c, 0xa2,
0x31, 0xae, 0xb8, 0xc0, 0x2a, 0xe2, 0x01, 0x11, 0xd7, 0x40, 0x82,
0x22, 0x28, 0x8a, 0xdc, 0xb8, 0x02, 0x62, 0xbd, 0xcc, 0xeb, 0xf4,
0xeb, 0x9f, 0xee, 0xaa, 0xee, 0x19, 0x21, 0xce, 0xf7, 0xf5, 0x76,
0xbd, 0x7d, 0x47, 0xbd, 0xaa, 0x7a, 0xef, 0xef, 0xaa, 0xea, 0x9a,
0x71, 0x9c, 0xe0, 0x27, 0xa5, 0xaf, 0xb4, 0xbe, 0x0e, 0x72, 0x33,
0x74, 0x23, 0x2e, 0x7f, 0xaa, 0xef, 0x45, 0xfa, 0xde, 0x92, 0xef,
0x7b, 0xb0, 0x7c, 0x99, 0x90, 0x4d, 0xe9, 0xfb, 0x7d, 0xfa, 0xbe,
0x83, 0xcb, 0x75, 0xf4, 0xbd, 0x95, 0xbe, 0x56, 0x81, 0x7d, 0x92,
0x4f, 0xb1, 0x4e, 0x01, 0xd3, 0xe5, 0x7c, 0x6f, 0xaf, 0xef, 0xb5,
0x3b, 0x76, 0xec, 0x90, 0xf2, 0xc5, 0x6c, 0xcb, 0x89, 0xb0, 0xd7,
0xc4, 0xc2, 0x6f, 0x6a, 0xe1, 0x1f, 0x0c, 0xfc, 0xa7, 0x80, 0xdf,
0xcc, 0xc2, 0x3f, 0xc4, 0xc2, 0x3f, 0xd4, 0xc2, 0x3f, 0xcc, 0xc2,
0x3f, 0xdc, 0xc2, 0x3f, 0xc2, 0xc2, 0x3f, 0xd2, 0xc2, 0x6f, 0x6e,
0xe1, 0x1f, 0x65, 0xe1, 0x1f, 0x6d, 0xe1, 0x1f, 0x63, 0xe1, 0x1f,
0x6b, 0xe1, 0x1f, 0x67, 0xe1, 0x1f, 0x6f, 0xe1, 0xb7, 0x10, 0x7c,
0xa2, 0x4f, 0x10, 0xf1, 0x4b, 0x34, 0xc5, 0x5e, 0x21, 0xd3, 0x6d,
0xf4, 0x35, 0x16, 0xf4, 0xcb, 0x43, 0xf2, 0x61, 0x20, 0xc7, 0x78,
0x4b, 0xbe, 0x17, 0x0a, 0xf9, 0x96, 0x50, 0xdf, 0x41, 0xa2, 0xbe,
0xd6, 0xfa, 0x1a, 0x0f, 0xf6, 0xc9, 0xb4, 0xf4, 0xff, 0xfb, 0x10,
0xfe, 0x01, 0x6e, 0xd0, 0x5e, 0x91, 0x21, 0x7f, 0x36, 0x43, 0xfe,
0x9c, 0xe8, 0xda, 0xed, 0x37, 0x16, 0xf6, 0x5b, 0xc5, 0x90, 0x3f,
0xd0, 0x75, 0x42, 0x3f, 0x57, 0x53, 0x1b, 0x35, 0xaf, 0x1e, 0xd3,
0x27, 0xea, 0x6b, 0xff, 0x08, 0x59, 0x8f, 0xbf, 0x9f, 0x85, 0xdf,
0xc8, 0x0d, 0xd2, 0x0d, 0x0d, 0xf2, 0xe4, 0x5f, 0x1b, 0xf0, 0x7f,
0x58, 0xb4, 0xb8, 0xd3, 0x8b, 0xc7, 0xd7, 0xeb, 0x33, 0xa2, 0x2b,
0xf4, 0xb5, 0x45, 0xd0, 0x03, 0x80, 0x3f, 0x50, 0xf0, 0x11, 0xaf,
0xc2, 0xfa, 0xa3, 0xad, 0xe8, 0x8f, 0x9f, 0xfb, 0x87, 0xda, 0xd7,
0xc1, 0x0d, 0xb6, 0xf7, 0x54, 0xa0, 0x4b, 0x80, 0x3e, 0x0d, 0xe8,
0x8e, 0x40, 0x9f, 0x0e, 0x74, 0x27, 0xa0, 0xcf, 0x00, 0xfa, 0x4c,
0xa0, 0xcf, 0xd2, 0xf4, 0x26, 0x43, 0x1f, 0x9b, 0x3e, 0x14, 0x2f,
0xff, 0x82, 0xf8, 0xe8, 0x0c, 0xf1, 0xb1, 0x8f, 0xbb, 0x73, 0x7c,
0x9f, 0xed, 0xfa, 0xfa, 0x2b, 0x85, 0x7e, 0x73, 0xc1, 0x8b, 0x8a,
0xbf, 0xb4, 0x13, 0xcc, 0x7f, 0x8a, 0x2f, 0x99, 0xff, 0xa3, 0xc1,
0x9e, 0x0b, 0xfa, 0xe7, 0xb9, 0xd9, 0xeb, 0x93, 0xbf, 0x9f, 0x87,
0xe4, 0x6b, 0x17, 0xd7, 0xcc, 0xbf, 0xc0, 0xc2, 0xbf, 0xd0, 0xf5,
0xeb, 0xeb, 0x02, 0xfd, 0x75, 0x25, 0xf8, 0x7b, 0x91, 0x01, 0xef,
0x9a, 0xb0, 0xbd, 0xee, 0x02, 0x6f, 0xba, 0xc3, 0x78, 0x4c, 0x08,
0xa9, 0xff, 0x52, 0x96, 0x2f, 0xd6, 0x57, 0xa9, 0x2e, 0x5f, 0xce,
0x34, 0xe1, 0xee, 0xc5, 0x6e, 0xa6, 0xcf, 0x25, 0x1e, 0x2b, 0xa1,
0x5f, 0xcd, 0x32, 0x9e, 0x7c, 0x37, 0x8b, 0xfc, 0x35, 0x6e, 0x46,
0x46, 0x8e, 0x67, 0x0f, 0x81, 0xff, 0x54, 0xbe, 0xd4, 0x0d, 0xea,
0xb7, 0x76, 0x7c, 0x3c, 0xee, 0xc1, 0x78, 0x4c, 0xff, 0xc7, 0xf6,
0xa5, 0x98, 0x2f, 0x9f, 0x3f, 0xf2, 0xf9, 0x41, 0xcf, 0x9f, 0x49,
0xa2, 0xfd, 0x3d, 0x3d, 0xfc, 0x87, 0xf8, 0xba, 0x8c, 0xfd, 0x21,
0xfc, 0x39, 0x38, 0xe4, 0x79, 0x25, 0xf9, 0x4d, 0x80, 0x5f, 0x01,
0xfc, 0x14, 0xf0, 0x07, 0x00, 0xff, 0x20, 0xe0, 0x0f, 0x04, 0xfe,
0xaf, 0x81, 0x5f, 0x05, 0xfc, 0x03, 0x80, 0x3f, 0x17, 0xf8, 0x8d,
0x81, 0xbf, 0x04, 0xf8, 0xfb, 0x03, 0x7f, 0x1e, 0xf0, 0x1b, 0x02,
0xff, 0x13, 0xe0, 0xef, 0x03, 0xfc, 0x1a, 0xe0, 0x37, 0x08, 0xc9,
0x5f, 0xc9, 0xaf, 0x0f, 0xf8, 0x48, 0xf3, 0x87, 0x55, 0x02, 0x9f,
0x7a, 0x6a, 0xfa, 0x4b, 0x41, 0x5f, 0xab, 0xe9, 0xaf, 0x04, 0x7d,
0x9d, 0xa6, 0x57, 0x0b, 0xba, 0x97, 0xa6, 0xbf, 0x16, 0xf4, 0xf5,
0x9a, 0xfe, 0x46, 0xd0, 0x37, 0x68, 0x7a, 0x8d, 0xa0, 0x7b, 0x6b,
0xfa, 0x5b, 0x41, 0xdf, 0xa8, 0xe9, 0xb5, 0x82, 0xbe, 0x49, 0xd3,
0xeb, 0x04, 0xdd, 0x47, 0xd3, 0xeb, 0xc5, 0xf3, 0x69, 0x83, 0xc0,
0xce, 0x32, 0xd1, 0x36, 0x9c, 0xaf, 0xd3, 0x45, 0xf9, 0xd5, 0x15,
0xe2, 0x35, 0x25, 0xe2, 0xb5, 0x98, 0x73, 0xa9, 0x50, 0xd0, 0x94,
0x8b, 0xf5, 0x21, 0xfe, 0xf6, 0x66, 0xba, 0x9d, 0xbe, 0x56, 0x8b,
0xfe, 0xeb, 0xcc, 0xfa, 0x5d, 0xdd, 0x60, 0x3e, 0xc8, 0xf9, 0x8c,
0x97, 0x3f, 0x3d, 0x78, 0x3e, 0x33, 0xcf, 0x80, 0xfd, 0xe4, 0xc7,
0x2d, 0x86, 0x7c, 0x6e, 0xce, 0xe3, 0xe9, 0x7d, 0xea, 0xd2, 0x7c,
0x9d, 0x75, 0x6e, 0x73, 0x33, 0xb1, 0x45, 0xf7, 0x5b, 0xdd, 0x78,
0xfa, 0xf9, 0x4e, 0x46, 0x96, 0x72, 0xa0, 0x2f, 0xe7, 0x77, 0x3f,
0xe8, 0xaf, 0xbe, 0x90, 0xdf, 0x35, 0x30, 0xbf, 0x9c, 0x1d, 0x82,
0x6f, 0x7d, 0x5d, 0xdf, 0xbf, 0x5b, 0xd9, 0x37, 0xf2, 0xa3, 0x11,
0xfb, 0xd3, 0x17, 0xfc, 0xcb, 0x77, 0xc2, 0xe5, 0x5d, 0xe6, 0x97,
0x0b, 0x39, 0x4f, 0xbf, 0xcc, 0xcd, 0xb4, 0xa7, 0xcc, 0xdd, 0x19,
0x2f, 0xca, 0x04, 0xbe, 0x4b, 0x3e, 0x15, 0x6f, 0xd7, 0x7f, 0x86,
0xba, 0x3e, 0x9e, 0xe1, 0xf3, 0x2d, 0x05, 0xed, 0x1d, 0xe6, 0xda,
0xdb, 0xfb, 0x17, 0xc0, 0xf3, 0x21, 0xae, 0x5f, 0xdf, 0x9d, 0x6e,
0x86, 0x7f, 0x17, 0xd7, 0xf7, 0x0e, 0xd4, 0x77, 0x27, 0xd4, 0x37,
0x3c, 0x46, 0x7d, 0x15, 0x22, 0xde, 0xe6, 0x83, 0xbd, 0x3f, 0x83,
0xbd, 0x77, 0x62, 0x8c, 0xd7, 0x20, 0x37, 0x48, 0x0f, 0x10, 0xf4,
0x1f, 0x75, 0xb9, 0xbf, 0xa0, 0xff, 0x44, 0xf1, 0x29, 0xda, 0xdb,
0x1f, 0xe2, 0xe5, 0x0e, 0xc8, 0xaf, 0x0a, 0xc8, 0xaf, 0x21, 0x09,
0xf2, 0x2b, 0xcc, 0xfe, 0x3d, 0x60, 0xff, 0x2e, 0x8b, 0xfd, 0x11,
0x6e, 0xb4, 0x7d, 0xfc, 0x50, 0xfc, 0x3d, 0x40, 0x38, 0xe2, 0x06,
0xe3, 0xad, 0x82, 0xef, 0xc4, 0x7f, 0x50, 0xdf, 0xef, 0xe7, 0x1c,
0xcf, 0xe7, 0xfd, 0x83, 0x0a, 0xbe, 0x53, 0x7d, 0x23, 0xc1, 0xdf,
0x7b, 0x0d, 0xcf, 0xc7, 0x14, 0xeb, 0x49, 0x7f, 0xef, 0x13, 0xfe,
0x12, 0x4d, 0x75, 0x79, 0xcf, 0x84, 0x93, 0x68, 0x2c, 0x0d, 0xf3,
0x35, 0x62, 0x3d, 0xb4, 0x0b, 0xe2, 0x7b, 0x34, 0xc4, 0xf7, 0x34,
0x37, 0x18, 0x5f, 0xd2, 0xfe, 0x23, 0x59, 0xc4, 0xf3, 0x78, 0x43,
0x3c, 0x3f, 0x9a, 0x45, 0x3c, 0x4f, 0x10, 0xf8, 0x33, 0x9e, 0xc7,
0xe7, 0x49, 0x1e, 0xbf, 0x09, 0x4c, 0x4f, 0x62, 0x7c, 0xa1, 0xff,
0x53, 0xfb, 0x26, 0x73, 0x7f, 0xd1, 0xff, 0xa7, 0x08, 0x7f, 0x46,
0xe9, 0xf2, 0x18, 0x41, 0x3f, 0xac, 0xcb, 0x63, 0x05, 0xbe, 0x8f,
0x62, 0x7c, 0x1a, 0xe7, 0x66, 0xe8, 0x87, 0x99, 0x7e, 0x9c, 0x9f,
0x3f, 0x63, 0x44, 0x3c, 0x14, 0xb3, 0x3f, 0x32, 0x7e, 0xa7, 0x41,
0x3c, 0x94, 0x8b, 0x67, 0x74, 0x5b, 0x7d, 0x7d, 0x0d, 0xf9, 0x30,
0x0e, 0xe2, 0x6b, 0x3a, 0xd8, 0x7b, 0x12, 0xf2, 0x61, 0x5a, 0xc2,
0x7c, 0x43, 0xfb, 0x33, 0xc0, 0xfe, 0x64, 0x8b, 0xfd, 0x6c, 0xf2,
0x6d, 0xa6, 0x25, 0xdf, 0x9e, 0x33, 0xe4, 0xdb, 0xb3, 0xae, 0x39,
0xbe, 0x8b, 0xa0, 0x7f, 0x67, 0x82, 0xbf, 0xcf, 0x81, 0xbf, 0x7b,
0x1a, 0xf2, 0x8b, 0xda, 0x3b, 0x58, 0x5f, 0xb3, 0x44, 0x3e, 0xbc,
0xa6, 0xcb, 0xb3, 0x21, 0x3f, 0x5e, 0x11, 0xf4, 0x2c, 0xf0, 0xef,
0x79, 0xe8, 0xcf, 0xd9, 0xd0, 0x9f, 0xaf, 0x24, 0x18, 0xaf, 0xb0,
0xf5, 0xda, 0x3f, 0xb4, 0xfe, 0x1c, 0x11, 0xaf, 0x6f, 0xea, 0xf2,
0xdb, 0x82, 0xae, 0xd4, 0xe5, 0xb9, 0x82, 0x7e, 0x4b, 0x97, 0xe7,
0x81, 0xff, 0xd5, 0x82, 0x9e, 0x03, 0xfe, 0xbf, 0x01, 0xfe, 0xcf,
0x05, 0xff, 0xab, 0x73, 0xf0, 0xdf, 0x8b, 0x87, 0x85, 0x96, 0x78,
0x78, 0xdf, 0x10, 0x0f, 0xef, 0x25, 0x8c, 0x87, 0x85, 0xe0, 0xef,
0xfb, 0x10, 0x0f, 0x0d, 0x2c, 0xeb, 0xe3, 0x0f, 0x60, 0xbd, 0xf7,
0x84, 0x65, 0x3f, 0x6c, 0x2f, 0x98, 0xaf, 0x7c, 0x08, 0xfa, 0xe3,
0x0c, 0xfa, 0x44, 0x7f, 0x04, 0xed, 0x59, 0x04, 0xed, 0xa9, 0x06,
0xfc, 0xa8, 0x07, 0xf5, 0x2d, 0x36, 0xd4, 0x77, 0x02, 0xd7, 0xa7,
0x0c, 0xed, 0x5d, 0x9c, 0xa3, 0xbf, 0x1f, 0x83, 0xbf, 0x4b, 0xa0,
0xff, 0x17, 0xc1, 0xf3, 0xaf, 0xda, 0x89, 0xff, 0xfc, 0xfb, 0xef,
0x7a, 0xc9, 0x8d, 0xee, 0xef, 0x30, 0xf9, 0xe5, 0x9a, 0x5f, 0x23,
0xf2, 0xe1, 0x33, 0x7a, 0x3f, 0x20, 0xf0, 0xbd, 0x1b, 0x3f, 0x73,
0x96, 0x72, 0x7c, 0x5d, 0xa2, 0xaf, 0x65, 0x22, 0x3f, 0x96, 0x42,
0xbc, 0x7d, 0x0e, 0xfb, 0x05, 0x6b, 0x01, 0x3f, 0x6a, 0xc0, 0xbf,
0x75, 0xe0, 0xcf, 0x0a, 0x43, 0xff, 0xb6, 0xe4, 0xfe, 0x2d, 0x10,
0xf2, 0x5f, 0x40, 0xfd, 0xde, 0x9c, 0xd9, 0x34, 0x3e, 0x45, 0x6e,
0x30, 0x3f, 0xbc, 0x2e, 0xea, 0x20, 0xf8, 0x61, 0xf3, 0x73, 0x92,
0x5f, 0x09, 0xf5, 0x2d, 0x82, 0xf1, 0xad, 0x86, 0xe7, 0xf3, 0x02,
0xcb, 0x7e, 0xe8, 0x46, 0xa0, 0xd7, 0x83, 0xbf, 0x6b, 0x68, 0x7d,
0x2a, 0xfc, 0xfd, 0x96, 0xd6, 0xa7, 0x82, 0x5e, 0x4b, 0xeb, 0x4f,
0xa0, 0x57, 0x0b, 0xba, 0x93, 0x13, 0x7c, 0xfe, 0xae, 0x02, 0xfc,
0x5a, 0x0d, 0xf3, 0x93, 0xbd, 0x85, 0xbf, 0xfb, 0xb3, 0xfe, 0x3a,
0xe8, 0x0f, 0xd9, 0xde, 0xf5, 0xd0, 0x1f, 0x1b, 0x80, 0xff, 0x19,
0xc4, 0xfb, 0x46, 0x88, 0xf7, 0x8d, 0x06, 0xbc, 0x69, 0x14, 0x51,
0xbf, 0x02, 0xff, 0x36, 0x31, 0x1e, 0x76, 0x60, 0x7e, 0x91, 0xc1,
0xdf, 0xcd, 0xbb, 0xc1, 0xdf, 0x4d, 0x16, 0x7f, 0xb7, 0x24, 0xf0,
0xf7, 0xbb, 0xdd, 0xe0, 0xef, 0x16, 0x8b, 0xbf, 0xb5, 0x3f, 0x33,
0x7f, 0x6b, 0x2d, 0xfe, 0xd6, 0x38, 0xf1, 0xfd, 0xfd, 0x7e, 0x37,
0xf8, 0x5b, 0xe3, 0x44, 0xd7, 0xbf, 0x75, 0x17, 0xd6, 0x8f, 0xef,
0xcb, 0x10, 0x0f, 0x1b, 0x33, 0xde, 0xa5, 0x0d, 0xef, 0xbf, 0x5a,
0x58, 0x9e, 0x77, 0xdb, 0x42, 0xf0, 0x37, 0xee, 0xfb, 0x31, 0x0f,
0x2f, 0x73, 0xc1, 0xcf, 0xa5, 0x21, 0xf6, 0xf3, 0x95, 0x99, 0xaf,
0x2c, 0x7c, 0x97, 0xf9, 0x25, 0x6c, 0xab, 0x1c, 0xfa, 0xa7, 0x4e,
0x44, 0xfd, 0xf9, 0xac, 0x5f, 0x57, 0xeb, 0xe4, 0xa9, 0xcc, 0x7e,
0x97, 0x0a, 0xd9, 0xcf, 0xcd, 0x03, 0xfb, 0x15, 0x31, 0xed, 0xff,
0xaf, 0xff, 0x94, 0xbf, 0x9f, 0x19, 0x66, 0xbf, 0x0e, 0xd8, 0x9f,
0x9f, 0xd0, 0x7e, 0x81, 0xc1, 0x3e, 0xad, 0x97, 0x0b, 0xc0, 0xfe,
0x3c, 0x83, 0xfd, 0x2f, 0x84, 0x7e, 0x53, 0x2f, 0x3e, 0x22, 0xec,
0x13, 0x7f, 0x90, 0xe0, 0x7b, 0xf6, 0xf1, 0xfd, 0x6c, 0x5d, 0xcb,
0xfb, 0x91, 0x1f, 0x2c, 0xef, 0x3f, 0x76, 0x58, 0xf8, 0x4e, 0x84,
0x7f, 0xde, 0xfa, 0xe7, 0x07, 0x31, 0xff, 0xf9, 0x01, 0xe2, 0x9f,
0x7c, 0x97, 0xf1, 0x4c, 0xb1, 0x24, 0xf3, 0x89, 0x62, 0x4f, 0xe6,
0x2f, 0xc5, 0x82, 0x9c, 0xef, 0xd1, 0xd8, 0x35, 0x14, 0x34, 0xf5,
0x75, 0x23, 0xd8, 0xcf, 0xf6, 0xf6, 0xe0, 0x4f, 0x26, 0xec, 0x36,
0xac, 0x27, 0xe8, 0x7d, 0xe5, 0x2f, 0xb4, 0xfe, 0xaf, 0x44, 0x7f,
0x6d, 0x77, 0x83, 0xef, 0x9b, 0xca, 0x21, 0x9f, 0xf6, 0xb5, 0xf0,
0x97, 0x85, 0xf4, 0x57, 0xa1, 0xf2, 0xf7, 0x6f, 0x0b, 0x43, 0xe2,
0x39, 0x4f, 0xc8, 0xd7, 0x53, 0x41, 0x3c, 0xd9, 0x0c, 0xf6, 0x57,
0x80, 0xfd, 0x3d, 0x95, 0x19, 0x5f, 0xee, 0x76, 0xcc, 0xfe, 0xae,
0xb0, 0xe0, 0x4f, 0x7d, 0x18, 0xaf, 0xf9, 0x80, 0x3f, 0x1b, 0x0c,
0xf6, 0x49, 0x7e, 0x2f, 0x68, 0x8f, 0xc9, 0x1f, 0xdc, 0x7f, 0xf6,
0xde, 0x57, 0xaf, 0x84, 0xf7, 0xd5, 0xab, 0xe0, 0x7d, 0xf5, 0x97,
0xf0, 0xbe, 0x7a, 0x83, 0xa0, 0xe9, 0xfd, 0xcc, 0x77, 0x4c, 0xa3,
0xfd, 0x30, 0x7f, 0x4f, 0x54, 0xb9, 0xad, 0x7f, 0xc8, 0x7e, 0x33,
0xe5, 0x3f, 0xdf, 0xa8, 0xdc, 0x54, 0x5f, 0xed, 0x54, 0x66, 0xbc,
0xe9, 0xde, 0x02, 0xfa, 0xf3, 0x10, 0x81, 0xb7, 0xe7, 0xc2, 0x7e,
0xf4, 0xc1, 0x2a, 0x73, 0x27, 0x3d, 0x9a, 0xd7, 0xa7, 0xd8, 0xd6,
0xa1, 0x2a, 0x9e, 0x7c, 0x31, 0xcb, 0x1f, 0x16, 0x53, 0xbe, 0x09,
0xcb, 0x1f, 0x1e, 0x21, 0xef, 0x72, 0x9f, 0x1e, 0x61, 0xe1, 0x1f,
0x69, 0xe1, 0xb7, 0xb3, 0xf0, 0x8b, 0x78, 0xbf, 0xac, 0x95, 0xca,
0x94, 0x3d, 0xba, 0x1d, 0xd3, 0xcd, 0x95, 0x8f, 0xe7, 0x47, 0x89,
0xfe, 0x3b, 0x27, 0xc4, 0x5e, 0x1b, 0xe5, 0xb7, 0xaf, 0x35, 0x97,
0xe9, 0xaa, 0xcb, 0xe3, 0x45, 0xe5, 0xa3, 0x95, 0x3f, 0x7e, 0xc7,
0x18, 0xc6, 0x63, 0x84, 0x1b, 0xec, 0xaf, 0x72, 0x2e, 0x1f, 0x2b,
0xf4, 0x8f, 0x53, 0xc1, 0x78, 0x38, 0x5e, 0x05, 0x9f, 0x3f, 0x2d,
0x80, 0xdf, 0x12, 0xe8, 0x13, 0x94, 0x8f, 0x9f, 0x87, 0xaa, 0xe0,
0xfa, 0xe4, 0x08, 0x15, 0x5c, 0x9f, 0x94, 0xc2, 0xfe, 0xca, 0x60,
0xb1, 0xbe, 0x2f, 0xe6, 0xbe, 0xd9, 0x5b, 0xd0, 0xc7, 0x0a, 0xfc,
0x2c, 0x66, 0x5f, 0x24, 0x7e, 0xb6, 0x55, 0xc1, 0xf7, 0xaf, 0x14,
0x9b, 0x07, 0x32, 0x7d, 0x0a, 0xe5, 0x52, 0xc2, 0x7c, 0x68, 0xa6,
0x82, 0xef, 0xbb, 0x9a, 0xf1, 0x7c, 0xa1, 0x19, 0x3f, 0xff, 0x17,
0x18, 0xde, 0x77, 0xfd, 0x14, 0xf9, 0x48, 0x67, 0xf9, 0x4e, 0x83,
0xfe, 0x2d, 0x11, 0xf9, 0x49, 0xe5, 0x53, 0xf5, 0xd5, 0x8d, 0xf3,
0x93, 0xee, 0x6d, 0xc5, 0x78, 0xff, 0x96, 0xf1, 0xba, 0x1b, 0x8f,
0xf7, 0x6f, 0x58, 0xb6, 0x5b, 0x48, 0xfc, 0x16, 0xb0, 0x1c, 0xfd,
0xab, 0x23, 0xdf, 0xdb, 0x83, 0xfe, 0xc9, 0x31, 0xf5, 0x4f, 0xe7,
0x7b, 0x07, 0xd0, 0x3f, 0x25, 0xa6, 0x7e, 0x27, 0xe5, 0xfb, 0x7f,
0x51, 0x84, 0xbc, 0x97, 0x1f, 0x5d, 0x95, 0x9f, 0x5f, 0xdd, 0xb8,
0x7c, 0x86, 0xf0, 0x3f, 0x1b, 0xfd, 0x33, 0x85, 0xff, 0xd9, 0xe8,
0x9f, 0x25, 0xf2, 0xbb, 0xb3, 0x18, 0xbf, 0xdf, 0xe9, 0xf2, 0xd9,
0x86, 0xfc, 0xec, 0xca, 0xf5, 0x7a, 0xfd, 0xf5, 0x7b, 0xae, 0xfb,
0x9c, 0x88, 0xfa, 0xdb, 0x80, 0x7c, 0x6b, 0x96, 0x3f, 0x57, 0xe4,
0xf3, 0xf9, 0x10, 0x3f, 0xe7, 0x19, 0xea, 0x1f, 0xe8, 0x04, 0xed,
0xcd, 0xe3, 0x72, 0x17, 0x95, 0x4c, 0xfe, 0x02, 0xae, 0x9f, 0xfc,
0xbb, 0x50, 0xe0, 0x41, 0x47, 0xc0, 0x83, 0x33, 0x12, 0xe2, 0x41,
0x67, 0xc0, 0x83, 0x73, 0x01, 0x0f, 0xba, 0x00, 0x1e, 0x5c, 0x0c,
0x78, 0x70, 0x5a, 0x8e, 0x78, 0x50, 0x02, 0x78, 0x50, 0xc2, 0x78,
0x50, 0xc2, 0x78, 0x50, 0xb5, 0x0b, 0xf1, 0x80, 0xda, 0x77, 0x15,
0xe8, 0xd7, 0x0a, 0x7e, 0x09, 0xeb, 0xdf, 0xa6, 0x65, 0xd2, 0x8c,
0x07, 0x69, 0xe5, 0xef, 0xa7, 0xa1, 0x3e, 0xf9, 0x73, 0x05, 0xcc,
0x8f, 0xd2, 0x30, 0x3f, 0x2a, 0x52, 0xe6, 0xfd, 0x45, 0xc2, 0xa7,
0x2b, 0x21, 0xbe, 0x4a, 0x05, 0x3e, 0x51, 0xf9, 0x0a, 0xf0, 0x47,
0xe2, 0xd3, 0x65, 0x8c, 0x0f, 0x9e, 0x9f, 0xdd, 0x59, 0x36, 0x1d,
0x81, 0x0f, 0x69, 0x8e, 0xf7, 0xab, 0xf8, 0x7e, 0x39, 0xe8, 0xf7,
0x88, 0xa9, 0x7f, 0x35, 0xdf, 0xff, 0x00, 0xfa, 0x97, 0xc6, 0xd4,
0xbf, 0x46, 0xf9, 0xfe, 0x5f, 0x14, 0x21, 0x1f, 0x86, 0x0f, 0x69,
0x2e, 0xf7, 0x14, 0xfe, 0x67, 0xa3, 0x7f, 0xad, 0xf0, 0x3f, 0x1b,
0xfd, 0xeb, 0x04, 0x3e, 0xf5, 0x12, 0xe3, 0xd7, 0x57, 0x97, 0xaf,
0x8f, 0x81, 0x4f, 0x69, 0x81, 0x4f, 0x54, 0xbe, 0xc1, 0x82, 0x4f,
0x69, 0x81, 0x4f, 0x54, 0xee, 0x2d, 0xf0, 0xe9, 0x26, 0x88, 0x9f,
0x1b, 0x63, 0xe0, 0x53, 0x5a, 0xe0, 0x0d, 0x95, 0xfb, 0xa8, 0x64,
0xf2, 0x37, 0x0b, 0x7c, 0xba, 0x45, 0x85, 0xe7, 0x07, 0xd1, 0x3d,
0x13, 0xe2, 0x53, 0x2f, 0xc0, 0xa7, 0xde, 0x80, 0x4f, 0x7d, 0x2c,
0xf8, 0x74, 0x65, 0x8e, 0xf8, 0x54, 0x0a, 0xf8, 0x54, 0xca, 0xf8,
0x54, 0x1a, 0x82, 0x4f, 0x5e, 0x7f, 0x7b, 0xf9, 0xdb, 0x9d, 0xfb,
0xcb, 0x96, 0xcf, 0x03, 0x1c, 0x73, 0x3e, 0x57, 0xe5, 0x98, 0xcf,
0x55, 0x39, 0xe6, 0x73, 0x55, 0x96, 0xf9, 0x1c, 0x95, 0x3f, 0x65,
0x2a, 0x13, 0x07, 0x26, 0xfe, 0xb5, 0x16, 0x7e, 0x3a, 0xcb, 0xf5,
0x02, 0xe6, 0x2b, 0xcd, 0xdf, 0x7b, 0xc5, 0x58, 0x2f, 0x60, 0xbe,
0xa5, 0xc5, 0x7a, 0x21, 0xcd, 0x39, 0xee, 0x8d, 0xef, 0x0d, 0x86,
0x7c, 0xeb, 0x07, 0xf9, 0xeb, 0x8d, 0x7d, 0xef, 0x88, 0xf6, 0x94,
0x81, 0xbc, 0x37, 0x16, 0x37, 0xaa, 0xf0, 0xf3, 0x1a, 0xb7, 0xab,
0xe0, 0x7a, 0xff, 0xd1, 0x90, 0xf5, 0xfc, 0x4d, 0xb0, 0xfe, 0xe8,
0x03, 0xf1, 0x79, 0x33, 0xd0, 0x49, 0xf2, 0xf9, 0x0e, 0x15, 0xcc,
0xe7, 0x3b, 0x55, 0x6e, 0xf9, 0xdc, 0xff, 0xff, 0x98, 0xcf, 0xbb,
0x62, 0xfd, 0x31, 0x4e, 0x33, 0xc7, 0xb0, 0xc0, 0x7e, 0x4e, 0xa6,
0x4c, 0x6b, 0xfe, 0x89, 0x9c, 0xff, 0x74, 0xef, 0x08, 0xf2, 0x63,
0x85, 0xfc, 0xd8, 0x10, 0xf9, 0xf6, 0x20, 0xff, 0x98, 0x90, 0xa7,
0x72, 0x35, 0xc8, 0x9f, 0x24, 0xe2, 0x6b, 0x2c, 0xef, 0x47, 0xde,
0xc5, 0x71, 0x36, 0x86, 0xe9, 0x41, 0x4c, 0x3f, 0xc6, 0xf4, 0x60,
0xc5, 0xe7, 0xa7, 0xa0, 0xfd, 0x73, 0x60, 0x3e, 0xe5, 0xb2, 0x8c,
0x8c, 0x9f, 0x3a, 0x70, 0x1e, 0x27, 0x2a, 0x3e, 0x0b, 0xf8, 0xdd,
0x0a, 0xd9, 0x78, 0x54, 0x85, 0xe7, 0xa3, 0xf7, 0xfc, 0x9b, 0xc8,
0xf9, 0xf0, 0xb8, 0xca, 0x94, 0x47, 0x33, 0x5d, 0xc1, 0xfd, 0x3b,
0x91, 0xf5, 0x47, 0x85, 0xcc, 0xe7, 0x06, 0x08, 0x7c, 0x98, 0xc8,
0xf1, 0x30, 0xc4, 0xcb, 0x47, 0xee, 0xef, 0xa4, 0xfa, 0x7f, 0x65,
0xfd, 0x81, 0xdc, 0xff, 0x49, 0xf5, 0xef, 0x56, 0x7e, 0xdf, 0x51,
0xdb, 0x87, 0x32, 0x3d, 0x88, 0xe9, 0x61, 0x4c, 0x0f, 0x66, 0x7a,
0x38, 0xe7, 0x3f, 0xb5, 0xfb, 0x1e, 0xd1, 0xdf, 0x44, 0x8f, 0x00,
0x7a, 0x24, 0xe4, 0xfb, 0xbd, 0x02, 0x9f, 0xc2, 0xfc, 0x5b, 0xc2,
0x7e, 0x79, 0xfd, 0xfc, 0x84, 0xf2, 0xfb, 0x9b, 0xce, 0x7b, 0x4e,
0x64, 0x9a, 0xf6, 0xef, 0xcf, 0x63, 0xfa, 0x3e, 0xf6, 0x67, 0xbc,
0xbe, 0xdf, 0x2f, 0xea, 0xa3, 0xb9, 0xe0, 0x03, 0x10, 0x0f, 0x0f,
0x02, 0xfd, 0x10, 0xf8, 0x37, 0x0a, 0xf8, 0x0f, 0x03, 0xfd, 0x88,
0xc0, 0xa3, 0x21, 0x80, 0x47, 0x43, 0x01, 0x8f, 0xee, 0x51, 0xe6,
0xf9, 0xc5, 0xbd, 0x80, 0x47, 0x0f, 0x00, 0x1e, 0x8d, 0x02, 0x3c,
0x9a, 0xa0, 0x76, 0x3e, 0x8f, 0x9e, 0x2d, 0x1e, 0x75, 0xe6, 0xf9,
0xc1, 0x63, 0x62, 0xff, 0x7c, 0x8e, 0xc0, 0x1f, 0x8f, 0x3f, 0x56,
0xf0, 0xdf, 0x08, 0xe1, 0x8f, 0x11, 0xfc, 0x57, 0x77, 0xc3, 0xfe,
0xc9, 0x14, 0x18, 0x8f, 0xa9, 0x62, 0x3e, 0x43, 0xe5, 0x57, 0xf4,
0x55, 0xc9, 0x78, 0x53, 0x29, 0xe6, 0x33, 0x1e, 0x3e, 0xd5, 0x81,
0xfd, 0x4e, 0x13, 0x1e, 0x4c, 0xe2, 0x38, 0x9c, 0xa6, 0xb2, 0xd3,
0x7f, 0x8a, 0xf5, 0x9f, 0xce, 0x52, 0x7f, 0x32, 0xeb, 0x3f, 0xc3,
0xfa, 0xaf, 0x82, 0xfe, 0xc7, 0xae, 0xfd, 0x79, 0x3b, 0x5d, 0xf4,
0x57, 0x36, 0xfa, 0x33, 0x72, 0xd4, 0x7f, 0x16, 0xf2, 0x6b, 0xa6,
0xa0, 0xff, 0xa6, 0xcb, 0xcf, 0x19, 0xe6, 0x2b, 0xb5, 0x8c, 0xc7,
0x95, 0x9c, 0xff, 0xaf, 0xf1, 0xd8, 0x3e, 0x6f, 0x59, 0x9f, 0x78,
0xf2, 0x34, 0xbf, 0xa2, 0xf2, 0x2c, 0x31, 0x5f, 0x79, 0x11, 0xe2,
0xe7, 0x85, 0x18, 0xeb, 0x93, 0x4a, 0xb1, 0xde, 0xa0, 0xf2, 0x6c,
0x95, 0x4c, 0xfe, 0x25, 0xb1, 0x3e, 0x79, 0x59, 0xe0, 0xc7, 0x34,
0xc0, 0x8f, 0xe9, 0x09, 0xd7, 0x27, 0x33, 0x01, 0x3f, 0x66, 0x01,
0x7e, 0xcc, 0xb6, 0xac, 0x4f, 0xa6, 0xe4, 0x38, 0x9f, 0x99, 0x0a,
0xf3, 0x99, 0xa9, 0x3c, 0x9f, 0x99, 0x6a, 0x58, 0x9f, 0x4c, 0x81,
0xf5, 0x89, 0x2d, 0x9f, 0xab, 0x9c, 0x60, 0x3e, 0xb7, 0x72, 0xa2,
0xc7, 0xcb, 0xe5, 0xf7, 0xf7, 0x5e, 0xff, 0x4f, 0xe2, 0x78, 0x99,
0xa6, 0xe2, 0xc9, 0x3f, 0xc5, 0xf2, 0x4f, 0xc7, 0x94, 0x9f, 0xcc,
0xf2, 0xcf, 0x58, 0xe4, 0xa7, 0x5b, 0xf8, 0x33, 0x62, 0xd4, 0x97,
0xcd, 0x7a, 0xa3, 0x92, 0xe9, 0x67, 0xc5, 0x7a, 0x63, 0xa6, 0x65,
0xbd, 0xf1, 0xb8, 0xf2, 0xdb, 0xe7, 0x95, 0x2b, 0xc5, 0x7a, 0xa3,
0x92, 0x73, 0xd6, 0x1b, 0xaf, 0xe7, 0x0d, 0xf9, 0xf3, 0x3a, 0xe4,
0x63, 0xad, 0xc8, 0xc7, 0x30, 0xf9, 0xbf, 0x83, 0xfc, 0xeb, 0x5c,
0xf7, 0x0b, 0x39, 0xac, 0x37, 0x5e, 0x04, 0xfc, 0x99, 0x0d, 0xf1,
0xf6, 0x32, 0xd0, 0x2f, 0x25, 0xc8, 0xcf, 0xc1, 0x4e, 0x30, 0x3f,
0xdf, 0x50, 0xb9, 0xe5, 0x67, 0xff, 0xdd, 0x9c, 0x9f, 0xf3, 0x77,
0xf1, 0xf3, 0x9a, 0xfa, 0x73, 0x81, 0xc8, 0x67, 0x2a, 0x57, 0xeb,
0x6b, 0x39, 0xe7, 0x33, 0xdd, 0x4f, 0x11, 0xe3, 0x3f, 0x97, 0xf7,
0x23, 0x96, 0xf3, 0xf8, 0xcf, 0x61, 0xd9, 0xe5, 0x86, 0xf8, 0x7f,
0x47, 0xec, 0x87, 0x2d, 0xe7, 0xf2, 0x42, 0x8e, 0xa3, 0x79, 0x60,
0xef, 0xed, 0x2c, 0xed, 0xbd, 0xcf, 0xf6, 0xe6, 0x83, 0xbd, 0xaa,
0x2c, 0xed, 0x7d, 0xa0, 0xfc, 0xf6, 0xbe, 0x6b, 0xd1, 0x7f, 0x37,
0x44, 0xff, 0x43, 0xd1, 0xbe, 0x6c, 0xf4, 0x3f, 0x12, 0xed, 0xc9,
0x46, 0x7f, 0xb9, 0xf2, 0x9f, 0x77, 0x61, 0xfc, 0x45, 0x22, 0x5f,
0x17, 0x5b, 0xf0, 0x66, 0x99, 0xf2, 0xfb, 0x73, 0x99, 0xe8, 0x4f,
0x0f, 0x6f, 0xa8, 0xfc, 0xcf, 0x08, 0xff, 0x5a, 0xb1, 0x1f, 0x9e,
0xfe, 0xbf, 0x59, 0xf7, 0xe3, 0x08, 0xf9, 0x65, 0x20, 0x3f, 0x82,
0xdb, 0xb2, 0x44, 0xf8, 0xfb, 0x89, 0x61, 0xfd, 0x18, 0x07, 0x6f,
0x6a, 0x04, 0x7e, 0xfc, 0x52, 0x97, 0x3f, 0x15, 0xf4, 0x42, 0xc0,
0x93, 0x0f, 0x13, 0x3e, 0xef, 0x17, 0x03, 0x9e, 0x2c, 0x01, 0x3c,
0xf9, 0x14, 0xf0, 0xe4, 0x3f, 0x80, 0x27, 0xef, 0xe5, 0x88, 0x27,
0x0b, 0x00, 0x4f, 0x16, 0x30, 0x9e, 0x2c, 0x60, 0x3c, 0x79, 0xd3,
0x82, 0x27, 0xd4, 0x9f, 0x6b, 0x04, 0x1e, 0x50, 0xf9, 0x1b, 0x15,
0x3c, 0x7f, 0xd2, 0xc6, 0x31, 0xaf, 0x0f, 0x6b, 0xb5, 0xfc, 0xb7,
0xca, 0xbc, 0x7e, 0xf4, 0xce, 0x1d, 0xa5, 0xc4, 0xef, 0x45, 0x90,
0xbf, 0x9f, 0x2b, 0xff, 0xfb, 0x96, 0x24, 0x4b, 0x76, 0x56, 0x8a,
0xf8, 0xf5, 0xce, 0x1f, 0xae, 0xcd, 0xd2, 0xfe, 0x8a, 0x10, 0xfb,
0xab, 0x42, 0xec, 0xaf, 0xcb, 0xd2, 0xfe, 0x17, 0x21, 0xf6, 0xbf,
0x0c, 0xb1, 0xbf, 0x5e, 0x25, 0xff, 0x3e, 0xbb, 0x97, 0x8f, 0x74,
0x46, 0x71, 0x43, 0x8e, 0xfa, 0x1b, 0x73, 0xd4, 0xdf, 0x24, 0xde,
0x67, 0x6c, 0x36, 0xe4, 0x63, 0x1c, 0x7b, 0xfd, 0x5c, 0xbf, 0xff,
0x46, 0xb8, 0x7e, 0xff, 0x79, 0xfb, 0x07, 0x54, 0xde, 0x22, 0xf6,
0x0f, 0xbe, 0x13, 0xf9, 0xba, 0x16, 0xf2, 0x75, 0x03, 0xe4, 0xeb,
0x57, 0x96, 0xf5, 0xfd, 0x66, 0xc8, 0xd7, 0x7d, 0x21, 0x5f, 0x1b,
0x40, 0xbe, 0x7e, 0xff, 0x13, 0xae, 0xef, 0x53, 0x9c, 0x5f, 0x32,
0x5f, 0xd7, 0x70, 0xbe, 0xae, 0xe1, 0x7c, 0x9d, 0x6b, 0xc8, 0xd7,
0xa8, 0xf3, 0x63, 0x5b, 0x55, 0xb0, 0xbd, 0xde, 0x81, 0xb1, 0xab,
0x99, 0x37, 0x5c, 0xe8, 0x9f, 0xef, 0xee, 0xbc, 0x3f, 0xb7, 0x5d,
0xe8, 0x6f, 0x87, 0xf9, 0x45, 0xb9, 0x32, 0x9f, 0x1f, 0x35, 0xd9,
0x2b, 0xe4, 0xfa, 0xf1, 0xfc, 0xa1, 0xfc, 0xfe, 0x41, 0x05, 0xc4,
0xcf, 0x40, 0xc7, 0x8e, 0xe7, 0xdb, 0xc4, 0xfe, 0x46, 0x7e, 0xd8,
0xf9, 0x4d, 0x41, 0x0f, 0x48, 0x60, 0x0f, 0xdb, 0x5f, 0xcc, 0x7d,
0x29, 0xdf, 0xdf, 0x6e, 0x53, 0xc1, 0xf7, 0xb7, 0x97, 0xa8, 0x9d,
0xf1, 0x54, 0xd6, 0x5f, 0x65, 0xa8, 0xbf, 0x50, 0xac, 0x17, 0x64,
0xff, 0xd4, 0x73, 0xc2, 0xfd, 0x49, 0x79, 0xe7, 0x3b, 0x23, 0xde,
0x27, 0x13, 0xdd, 0xd8, 0xf0, 0xfd, 0x29, 0x8f, 0x6e, 0x08, 0xe7,
0x51, 0x1b, 0x01, 0x3f, 0xea, 0x7c, 0x24, 0xf5, 0x77, 0x5f, 0xc7,
0xdc, 0xde, 0x8a, 0x18, 0xfd, 0x9d, 0xc7, 0xf1, 0x59, 0x26, 0xca,
0xd4, 0xee, 0x91, 0x4e, 0xe6, 0xb7, 0x7d, 0xe4, 0xf7, 0xef, 0x93,
0xb6, 0x3f, 0xb5, 0x0b, 0xdb, 0x9f, 0x34, 0xfe, 0xc3, 0xe2, 0xbb,
0xc6, 0xd0, 0x3f, 0x71, 0xe2, 0xcf, 0x85, 0xf3, 0x03, 0x27, 0xa9,
0xdc, 0xfc, 0x4b, 0x12, 0xaf, 0xde, 0xfb, 0x29, 0xef, 0x3b, 0x42,
0x71, 0xfc, 0xc5, 0xdf, 0xf3, 0xb8, 0x24, 0x07, 0x7f, 0xc3, 0xe2,
0xe1, 0x56, 0x98, 0xff, 0x6d, 0x0f, 0x79, 0xff, 0xe0, 0xe1, 0x61,
0x18, 0xbe, 0x3d, 0xa9, 0xcc, 0xfd, 0x5f, 0x0a, 0xdf, 0x27, 0xa8,
0x93, 0x17, 0x8c, 0xb7, 0xfc, 0xbc, 0x60, 0xbc, 0x15, 0xe4, 0x05,
0xe3, 0x2d, 0xed, 0x04, 0xbf, 0x7f, 0xb6, 0xcd, 0x92, 0x3f, 0x38,
0x9f, 0x1d, 0x9d, 0x20, 0x3e, 0x70, 0xbe, 0xea, 0xc5, 0x4b, 0x7d,
0xe8, 0x2f, 0x53, 0x3e, 0x94, 0x3b, 0xc1, 0x7c, 0xd8, 0x23, 0xcf,
0xfc, 0xfc, 0xdb, 0x6a, 0xf0, 0x2f, 0x4e, 0xbe, 0x1e, 0xf8, 0x33,
0xca, 0xd7, 0x28, 0x7e, 0x54, 0xfc, 0x84, 0xf5, 0x7f, 0x03, 0x38,
0xaf, 0xfe, 0xba, 0x0a, 0x7e, 0x9f, 0xf2, 0x33, 0x4b, 0xfc, 0x2f,
0x33, 0x3c, 0x9f, 0x72, 0xf5, 0xdf, 0xb3, 0x55, 0x91, 0x65, 0xfe,
0xe2, 0xf7, 0xcb, 0x53, 0xbc, 0xde, 0x93, 0xdf, 0x9f, 0x79, 0xcb,
0x72, 0x9e, 0xa9, 0x6e, 0x5e, 0x30, 0x3e, 0xb6, 0x42, 0xbc, 0xdb,
0x7e, 0x9f, 0x8c, 0xe2, 0xe7, 0x36, 0x71, 0x7e, 0x9b, 0xfc, 0xb9,
0x1d, 0xce, 0x77, 0xf7, 0x83, 0xf3, 0xe0, 0x93, 0xe0, 0x3c, 0xf8,
0x0c, 0x38, 0xff, 0xfd, 0xb2, 0xa0, 0xe9, 0x7d, 0xc6, 0x52, 0x41,
0x13, 0x5e, 0xcb, 0xf3, 0xe5, 0xf4, 0x7b, 0x3d, 0x1b, 0x05, 0x4d,
0x6b, 0x03, 0x79, 0x9e, 0x9c, 0xf6, 0x97, 0xd7, 0x0b, 0x9a, 0x7e,
0x7f, 0x67, 0x9d, 0xf8, 0xfd, 0x99, 0xb5, 0x09, 0x7e, 0xbb, 0xeb,
0x47, 0x1e, 0x9e, 0x2f, 0x68, 0x03, 0x03, 0x00, 0x00, 0x78, 0xda,
0x8d, 0x98, 0x4b, 0x6c, 0x4d, 0x51, 0x14, 0x86, 0xef, 0x3e, 0xe7,
0x56, 0x5c, 0x42, 0xa4, 0x89, 0x10, 0xd1, 0x8a, 0x48, 0x30, 0x31,
0x31, 0x11, 0x61, 0x20, 0x84, 0x89, 0x78, 0x25, 0x48, 0x84, 0x81,
0x98, 0x18, 0x11, 0xa4, 0xc4, 0xab, 0x54, 0x6f, 0xbd, 0xea, 0xd1,
0xa2, 0xea, 0x51, 0x13, 0x13, 0x46, 0x92, 0x8a, 0x37, 0x45, 0x11,
0xef, 0x8a, 0x89, 0x47, 0xa2, 0x9e, 0x55, 0xd4, 0xb3, 0xde, 0x03,
0xe5, 0xf2, 0x9f, 0x7b, 0xcf, 0xb9, 0x7b, 0x69, 0xf6, 0x3a, 0xf9,
0x77, 0xb2, 0x7a, 0xf7, 0xda, 0xe7, 0xbb, 0xff, 0x3a, 0x7b, 0xad,
0xbd, 0xf7, 0x39, 0xb7, 0x89, 0x04, 0xd7, 0xfe, 0xa2, 0x25, 0x95,
0x71, 0xe9, 0x67, 0x14, 0x2e, 0xd3, 0x89, 0xfb, 0x43, 0xea, 0xfd,
0x56, 0xb8, 0xce, 0xad, 0x43, 0xe1, 0x4c, 0x68, 0x51, 0xfb, 0x45,
0xea, 0xfd, 0x20, 0xf5, 0xbe, 0x93, 0xdc, 0x37, 0x92, 0xfb, 0x4a,
0x72, 0x5f, 0x48, 0xee, 0x33, 0x39, 0xdf, 0x76, 0x52, 0xef, 0x13,
0xa9, 0xf7, 0x51, 0xe1, 0xbc, 0x40, 0x4f, 0x08, 0x7e, 0x20, 0xe3,
0xbe, 0x27, 0xf5, 0xde, 0x91, 0xdc, 0xdb, 0x18, 0xce, 0xf7, 0xad,
0xdf, 0xa6, 0x70, 0x7e, 0x56, 0xcf, 0x0a, 0xbe, 0x21, 0xe3, 0xbe,
0x26, 0xe7, 0xfb, 0x8a, 0xd4, 0x6b, 0x25, 0xf5, 0x5e, 0x92, 0xfb,
0xad, 0x85, 0xd4, 0x7b, 0x41, 0x72, 0xcf, 0xc9, 0xb8, 0xcf, 0xc8,
0x3c, 0x3f, 0x25, 0xe3, 0x3e, 0x21, 0xb9, 0xc7, 0x24, 0xd7, 0x4c,
0x72, 0x0f, 0xc9, 0xfd, 0xf1, 0x80, 0xd4, 0xbb, 0x4f, 0x72, 0xf7,
0xc8, 0xf5, 0x72, 0x87, 0xe4, 0x9a, 0xc8, 0xb8, 0xb7, 0x49, 0xee,
0x16, 0xc9, 0xdd, 0x24, 0xef, 0xef, 0x06, 0xc9, 0x5d, 0x21, 0xb9,
0xcb, 0x24, 0x77, 0x89, 0x5c, 0xa7, 0x8d, 0xa4, 0xde, 0x45, 0x32,
0x2f, 0x17, 0x48, 0xee, 0x3c, 0xc9, 0x35, 0x90, 0xdc, 0x39, 0x92,
0x3b, 0x4b, 0x72, 0x67, 0x48, 0xee, 0x34, 0xc9, 0x9d, 0x22, 0xb9,
0x93, 0x24, 0x77, 0x82, 0xe4, 0x8e, 0x93, 0xdc, 0xd1, 0x18, 0x4e,
0x3c, 0x66, 0x12, 0xf5, 0x24, 0x57, 0x47, 0x9e, 0x2f, 0xfb, 0x49,
0x6e, 0x1f, 0xc9, 0xed, 0x25, 0xb9, 0x3d, 0x24, 0x57, 0x4b, 0x72,
0xbb, 0x49, 0xae, 0x86, 0xe4, 0x76, 0x91, 0xdc, 0x4e, 0x92, 0xdb,
0x41, 0x72, 0xd5, 0xe4, 0x7a, 0xa9, 0x52, 0xb8, 0x82, 0x60, 0x1d,
0x18, 0xdf, 0x8f, 0xd8, 0xed, 0x24, 0xb7, 0x8d, 0xe4, 0xb6, 0x2a,
0x5c, 0x32, 0xfb, 0x3e, 0x94, 0xc7, 0x12, 0x5b, 0x14, 0xae, 0x4b,
0x96, 0xb3, 0x82, 0x95, 0x71, 0xe7, 0xa4, 0x78, 0xc1, 0xda, 0x4c,
0xe6, 0x65, 0x53, 0xdc, 0xfb, 0x9a, 0x00, 0x37, 0x92, 0xfb, 0x68,
0x03, 0x59, 0xb7, 0xf5, 0xe4, 0x79, 0x5f, 0x41, 0xea, 0xa5, 0xc9,
0x79, 0x94, 0x93, 0x79, 0x59, 0xa7, 0x70, 0x5d, 0xb3, 0x7a, 0xb9,
0x16, 0xf8, 0x65, 0x0a, 0x97, 0xca, 0xd5, 0x37, 0x68, 0x59, 0x70,
0x2d, 0x99, 0xbf, 0x35, 0xe4, 0xfd, 0x95, 0xc6, 0xc7, 0xcd, 0xdf,
0xe0, 0xea, 0xf8, 0x75, 0x95, 0x4f, 0xf5, 0x32, 0x32, 0x7f, 0x41,
0xb7, 0x08, 0x7f, 0xfa, 0x85, 0xfe, 0x70, 0xe3, 0xae, 0xc7, 0x78,
0xd8, 0x08, 0x93, 0xfb, 0x7e, 0xd0, 0x66, 0x18, 0xf7, 0x3c, 0x66,
0xc2, 0x46, 0x62, 0xa0, 0x30, 0xf4, 0xe7, 0x1a, 0xbb, 0x3f, 0x8c,
0x58, 0xd0, 0x0b, 0x60, 0x13, 0xc5, 0x17, 0x17, 0x29, 0x71, 0x17,
0x86, 0x5c, 0x14, 0x37, 0xad, 0xc4, 0x2d, 0x81, 0x4d, 0x12, 0x03,
0x35, 0x8a, 0xde, 0x52, 0xd8, 0x64, 0x71, 0xed, 0xa0, 0xc2, 0xad,
0x80, 0x4d, 0x15, 0xd7, 0x0e, 0x2b, 0x5c, 0x29, 0x6c, 0x9a, 0xb1,
0x35, 0x3f, 0xa2, 0x70, 0x15, 0xb0, 0xe9, 0xb8, 0x56, 0x14, 0x3d,
0xb7, 0x8d, 0x7b, 0x9f, 0x37, 0xc1, 0x96, 0x98, 0x5c, 0x3d, 0x83,
0x76, 0xcd, 0xb8, 0xdf, 0x87, 0x5a, 0x60, 0xcb, 0xe1, 0xf7, 0x8d,
0x7e, 0x07, 0x19, 0xbb, 0x0e, 0xec, 0x6a, 0x46, 0xde, 0xf1, 0x59,
0x2d, 0xf4, 0x7e, 0xfe, 0x57, 0x0f, 0xab, 0xd8, 0x0b, 0xbd, 0x5a,
0xb1, 0x0e, 0x86, 0x79, 0xf6, 0xfc, 0x13, 0x72, 0x89, 0x51, 0xe8,
0xd4, 0x8b, 0xf9, 0x8e, 0xf1, 0xdc, 0xfb, 0x7c, 0x02, 0xba, 0xc7,
0x60, 0x3d, 0x42, 0x7f, 0x96, 0xe7, 0xae, 0x5b, 0x90, 0xe3, 0x46,
0x58, 0xcf, 0xa8, 0xde, 0x4a, 0xdc, 0x39, 0xe8, 0xdc, 0x15, 0x71,
0x57, 0x2a, 0x71, 0xe7, 0xa3, 0xfb, 0x48, 0xbe, 0xff, 0x7a, 0xee,
0x7a, 0x94, 0x81, 0x69, 0x96, 0xbf, 0x73, 0x15, 0x2e, 0x1d, 0x72,
0xd1, 0x3c, 0x86, 0xf8, 0x6e, 0xae, 0x0e, 0x4c, 0x1b, 0xac, 0x77,
0xe8, 0x2f, 0x56, 0xb8, 0x76, 0x30, 0x19, 0x58, 0xf7, 0xd0, 0xaf,
0x54, 0xb8, 0x81, 0xb8, 0x9f, 0x94, 0x67, 0xeb, 0x76, 0xdd, 0x77,
0xe7, 0x6f, 0x2c, 0x98, 0x01, 0xb0, 0xfe, 0xd1, 0xff, 0x77, 0x7c,
0x9b, 0x17, 0x5f, 0xe4, 0x65, 0x15, 0x98, 0xd1, 0xb0, 0xe2, 0xd0,
0x2f, 0x4e, 0x0a, 0x4e, 0x1c, 0x08, 0x0d, 0x60, 0x66, 0xc3, 0x06,
0x47, 0xf5, 0x55, 0xb8, 0x71, 0x18, 0x28, 0x07, 0x37, 0x28, 0xf4,
0xe7, 0x25, 0xdd, 0xe7, 0x5f, 0x15, 0x9c, 0x43, 0x22, 0x6e, 0x89,
0xc2, 0x75, 0xc3, 0xf8, 0x55, 0xc1, 0x1d, 0x48, 0x8a, 0xe7, 0xaf,
0x6f, 0x2b, 0x3c, 0x05, 0xe3, 0xad, 0xe0, 0xfa, 0x44, 0xbf, 0x33,
0x92, 0xee, 0xe7, 0x6f, 0x25, 0x06, 0x3a, 0x3c, 0xbb, 0xae, 0x4c,
0x81, 0x3b, 0xcf, 0x43, 0x31, 0x9e, 0x12, 0x37, 0x52, 0xa8, 0x70,
0xff, 0x00, 0xad, 0x10, 0xa6, 0xd6, 0x7a, 0x02, 0x00, 0x00, 0x78,
0xda, 0x4d, 0xd4, 0x59, 0x6c, 0x4c, 0x61, 0x18, 0xc6, 0xf1, 0x53,
0x63, 0x16, 0xbd, 0xa1, 0x0b, 0xd5, 0x4e, 0x1b, 0xa1, 0xb6, 0x52,
0xa5, 0xd6, 0xb6, 0xb6, 0xa3, 0xda, 0xa2, 0x8b, 0xa5, 0x28, 0x3a,
0x96, 0xb6, 0x96, 0xd2, 0x52, 0x55, 0xda, 0x1a, 0xb5, 0x85, 0x68,
0x35, 0x84, 0x0b, 0x24, 0x12, 0x5c, 0x11, 0xe1, 0x02, 0x89, 0x88,
0x3b, 0x42, 0x5c, 0x48, 0x44, 0x5c, 0x88, 0x1b, 0x22, 0xe1, 0x42,
0x5c, 0xb8, 0x92, 0x08, 0x89, 0x25, 0xe1, 0x79, 0x7d, 0xff, 0x64,
0x3a, 0xc9, 0xf3, 0xce, 0x6f, 0xde, 0x7c, 0xe7, 0xcc, 0x99, 0xef,
0xbc, 0x67, 0x3c, 0x2f, 0xf1, 0x1a, 0xec, 0x79, 0xfe, 0x18, 0xbd,
0x8f, 0x0a, 0x3a, 0xe7, 0xca, 0xb9, 0x72, 0x92, 0x3c, 0x56, 0xce,
0x93, 0x07, 0xc9, 0xe3, 0xe4, 0x42, 0x3c, 0x5e, 0x2e, 0x91, 0x03,
0xf2, 0x04, 0xb9, 0xcc, 0xf5, 0x3d, 0x73, 0x35, 0x9e, 0xa8, 0xd4,
0xe1, 0x3c, 0xa5, 0x81, 0xf5, 0x93, 0xe4, 0x16, 0xfa, 0xe6, 0x4e,
0x3c, 0x59, 0x39, 0x81, 0xf3, 0x95, 0xf3, 0xac, 0x9f, 0x22, 0x5f,
0xa5, 0x6f, 0xbe, 0x89, 0x0b, 0x94, 0xfb, 0x78, 0xaa, 0xf2, 0x98,
0xf5, 0xd3, 0xe4, 0x17, 0xf4, 0xcd, 0xaf, 0x71, 0xa1, 0xf2, 0x1e,
0x4f, 0x57, 0x3e, 0xb3, 0x7e, 0x86, 0xfc, 0x95, 0xbe, 0xf9, 0x3b,
0x9e, 0xa9, 0xfc, 0xc1, 0xb3, 0x94, 0x40, 0xc8, 0xfd, 0xf6, 0xd9,
0x72, 0x32, 0x9e, 0x23, 0xa7, 0xe1, 0x22, 0x39, 0x07, 0x17, 0xdb,
0xef, 0x0f, 0xb9, 0xf3, 0x97, 0xd8, 0xb9, 0x5c, 0xdf, 0x33, 0x97,
0xe2, 0xb9, 0x4a, 0x2d, 0x9e, 0xa7, 0x34, 0xb1, 0x7e, 0xbe, 0xdc,
0x41, 0xdf, 0x1c, 0xc7, 0x0b, 0x6c, 0x7f, 0xf0, 0x42, 0xe5, 0x0c,
0xeb, 0x7d, 0xf9, 0x22, 0x7d, 0xf3, 0x15, 0xbc, 0x48, 0xb9, 0x81,
0x4b, 0x95, 0x3b, 0x5c, 0xdb, 0x62, 0xf9, 0x21, 0xc7, 0x96, 0xc9,
0x4f, 0x59, 0x63, 0x7e, 0x89, 0xcb, 0x95, 0xb7, 0xb8, 0xc2, 0xf6,
0x8a, 0x63, 0x97, 0xc8, 0xdf, 0xf0, 0x52, 0xf9, 0x17, 0x5e, 0x26,
0x87, 0xc3, 0xce, 0x95, 0x72, 0x2a, 0xae, 0x92, 0xa3, 0xb8, 0xda,
0xf6, 0x04, 0xd7, 0xd8, 0x7e, 0x06, 0xdc, 0x35, 0x2c, 0xb7, 0xfd,
0x75, 0x7d, 0xcf, 0xec, 0xe3, 0x15, 0x4a, 0x0d, 0x5e, 0xa9, 0xd4,
0x87, 0xdd, 0xfa, 0x55, 0x72, 0x33, 0x7d, 0x73, 0x17, 0xae, 0x55,
0xfa, 0xf0, 0x6a, 0xe5, 0x72, 0xd8, 0xcd, 0xf3, 0x1a, 0xf9, 0x36,
0xc7, 0xae, 0x95, 0x1f, 0xb0, 0xc6, 0xfc, 0x04, 0xd7, 0x29, 0xaf,
0xf0, 0x3a, 0x9b, 0x13, 0xae, 0x73, 0xbd, 0xfc, 0x05, 0x6f, 0x90,
0x7f, 0xe0, 0x7a, 0xf9, 0x2f, 0x8e, 0xc9, 0x91, 0x88, 0xf3, 0x46,
0x39, 0x45, 0xd6, 0xb6, 0xf8, 0x9b, 0x6c, 0xce, 0x92, 0x9c, 0x37,
0xdb, 0xfc, 0xe3, 0x2d, 0xf2, 0x49, 0xdc, 0x60, 0xd7, 0x81, 0x1b,
0xe5, 0x76, 0xdc, 0x64, 0xf7, 0x14, 0x6f, 0xb5, 0xfd, 0x0c, 0xfe,
0x7f, 0x54, 0xfd, 0x6d, 0x2a, 0x59, 0x3a, 0xbf, 0x7d, 0xdc, 0x6e,
0xcf, 0x0f, 0xde, 0x61, 0x33, 0x86, 0x9b, 0x6d, 0x3e, 0xf0, 0x4e,
0xa5, 0x12, 0xef, 0xb2, 0xef, 0xc2, 0x2d, 0x4a, 0x0c, 0xb7, 0x2a,
0x8d, 0x78, 0xb7, 0x1d, 0x3f, 0xc0, 0x6d, 0x78, 0x8f, 0xd2, 0x8d,
0xdb, 0x94, 0xe3, 0x78, 0xaf, 0x7d, 0x0e, 0x26, 0x1c, 0xc7, 0xed,
0x4a, 0x2f, 0xde, 0xa7, 0x5c, 0xc0, 0x1d, 0x4a, 0x7f, 0x24, 0xe1,
0x73, 0x78, 0xbf, 0x72, 0x09, 0x1f, 0xb0, 0xe7, 0x1d, 0x77, 0x2a,
0xd7, 0x07, 0xf8, 0x16, 0xee, 0x52, 0xee, 0xe1, 0x6e, 0x9b, 0x67,
0x7c, 0x50, 0x79, 0x84, 0xe3, 0xca, 0x33, 0x7c, 0xc8, 0x66, 0x1b,
0xf7, 0x28, 0x6f, 0xf0, 0x61, 0xe5, 0x1d, 0x3e, 0xa2, 0x7c, 0xc0,
0x47, 0xed, 0xff, 0x25, 0xe4, 0xf6, 0xfc, 0x98, 0xca, 0x27, 0xfa,
0xa7, 0x6c, 0xfe, 0x23, 0x6e, 0xae, 0x7a, 0xe5, 0xdf, 0xee, 0xbe,
0x7b, 0x7d, 0x36, 0xff, 0x43, 0x9c, 0x4f, 0x2b, 0xe9, 0xb8, 0x5f,
0x19, 0xed, 0xec, 0x67, 0xe8, 0x7e, 0x16, 0xe0, 0x4c, 0xb9, 0x08,
0x67, 0xdb, 0x1f, 0x2d, 0xeb, 0x87, 0xaa, 0x54, 0xe1, 0x61, 0x2a,
0x31, 0x9c, 0xa2, 0xd2, 0x8a, 0x53, 0x55, 0x7a, 0x70, 0x9a, 0xca,
0x59, 0x9c, 0xae, 0x72, 0x0d, 0x0f, 0x57, 0xb9, 0x8b, 0x47, 0xa8,
0x3c, 0xc7, 0x19, 0x2a, 0x1f, 0xf1, 0x48, 0x95, 0x9f, 0x38, 0x53,
0x25, 0x39, 0xd9, 0x39, 0x4b, 0x25, 0x8a, 0xa3, 0x2a, 0xf9, 0x38,
0x5b, 0xa5, 0x18, 0xe7, 0xa8, 0x54, 0xc8, 0xff, 0x00, 0x4b, 0x49,
0x77, 0x91, 0xac, 0x00, 0x00, 0x00, 0x78, 0xda, 0x45, 0xcc, 0xa9,
0x0e, 0x42, 0x31, 0x10, 0x46, 0xe1, 0xb2, 0xf4, 0x72, 0xd9, 0xf7,
0xf5, 0x11, 0x10, 0x28, 0x3c, 0xfe, 0x7a, 0x14, 0x0a, 0x85, 0xc3,
0x12, 0x1c, 0x8a, 0x04, 0x83, 0x21, 0x38, 0x1c, 0x06, 0x87, 0xc3,
0xa1, 0xb0, 0x48, 0x14, 0x86, 0x87, 0xe0, 0x05, 0x38, 0xcd, 0xfc,
0x09, 0x4d, 0x4e, 0xfa, 0x65, 0x32, 0xad, 0x73, 0xff, 0x93, 0xd2,
0x3d, 0x8c, 0xcd, 0xa1, 0x31, 0x4e, 0x3b, 0x6b, 0x22, 0x67, 0x28,
0xc1, 0x59, 0x67, 0x4d, 0x65, 0x4f, 0x33, 0xbd, 0x8d, 0x68, 0x1e,
0xdb, 0x6e, 0x8e, 0x16, 0x7a, 0x1b, 0xbc, 0x94, 0xb9, 0xdc, 0x4a,
0xce, 0xd3, 0x46, 0xfb, 0x85, 0xb0, 0xe3, 0x6d, 0x1e, 0xbc, 0x96,
0x8b, 0xb4, 0x95, 0x4b, 0x74, 0xf0, 0xb6, 0x5f, 0xa6, 0x9d, 0xfe,
0x09, 0xde, 0xcb, 0x15, 0x3a, 0xca, 0x55, 0x3a, 0xe9, 0xff, 0x1a,
0x9d, 0x35, 0x0f, 0xbe, 0xc8, 0x75, 0xba, 0xca, 0x0d, 0xba, 0xc9,
0x4d, 0xba, 0xcb, 0x2d, 0x7a, 0xc8, 0x6d, 0x7a, 0xca, 0x1d, 0x7a,
0xc9, 0x5d, 0x7a, 0xcb, 0x3d, 0xfa, 0xc8, 0x7d, 0x1a, 0x45, 0xe6,
0x01, 0x7d, 0x99, 0xff, 0x00, 0x65, 0xf7, 0x13, 0x71, 0xee, 0x02,
0x00, 0x00, 0x78, 0xda, 0xed, 0xd6, 0x49, 0x4c, 0x53, 0x41, 0x18,
0xc0, 0xf1, 0x29, 0xad, 0x0b, 0x55, 0x10, 0x51, 0x11, 0xc5, 0x4a,
0x15, 0x37, 0xdc, 0x00, 0x45, 0x44, 0x81, 0x6e, 0x8f, 0x2a, 0x22,
0x2a, 0x0a, 0x8a, 0x28, 0x22, 0x6e, 0x88, 0x7b, 0x5d, 0x51, 0x5c,
0xe8, 0x0d, 0x63, 0x48, 0xb8, 0x78, 0x00, 0x23, 0x04, 0xc3, 0x8d,
0x8b, 0x31, 0xc1, 0x68, 0x42, 0x0c, 0x05, 0x0e, 0x92, 0x08, 0xd1,
0xa8, 0x09, 0x5e, 0x54, 0xe2, 0x89, 0x78, 0xc2, 0x93, 0x24, 0x5e,
0xfc, 0xbf, 0xbe, 0x29, 0x08, 0x28, 0x12, 0xa5, 0xf5, 0xe2, 0x4b,
0x7f, 0x9d, 0x37, 0xcd, 0x6c, 0x6f, 0xe6, 0x9b, 0x79, 0x15, 0xe2,
0xff, 0x15, 0xe8, 0xeb, 0x20, 0x0e, 0xe1, 0x08, 0x8a, 0x70, 0x18,
0x47, 0x51, 0xfe, 0x43, 0x19, 0x1d, 0x82, 0xa0, 0x87, 0x01, 0x13,
0x30, 0x11, 0x93, 0x30, 0x19, 0xc1, 0x30, 0x62, 0x0a, 0xa6, 0x22,
0x04, 0xa1, 0x98, 0x86, 0x30, 0x4c, 0x47, 0x38, 0x66, 0x60, 0x26,
0x66, 0x21, 0x02, 0xb3, 0x11, 0x89, 0x39, 0x43, 0x46, 0xe4, 0xb6,
0xf2, 0x65, 0xe3, 0x03, 0xb7, 0x6d, 0xee, 0x4f, 0xc6, 0x1c, 0x88,
0xf1, 0xa8, 0xfd, 0x46, 0x61, 0x1e, 0x4c, 0x98, 0x8f, 0x68, 0x98,
0xb1, 0x00, 0x0b, 0x11, 0x83, 0x45, 0x58, 0x8c, 0x25, 0x58, 0x8a,
0x65, 0x88, 0xc5, 0x72, 0xac, 0xc0, 0x4a, 0xac, 0xc2, 0x6a, 0xc4,
0x21, 0x1e, 0x09, 0x58, 0x83, 0xb5, 0x48, 0xc4, 0x3a, 0x24, 0x61,
0x3d, 0x92, 0xb1, 0x01, 0x1b, 0x91, 0x82, 0x54, 0xa4, 0x79, 0x9f,
0xba, 0x9e, 0xf9, 0xf0, 0x40, 0xd8, 0x99, 0x17, 0x08, 0x07, 0xa9,
0xca, 0xc9, 0xfd, 0x26, 0x52, 0x88, 0xcd, 0xa4, 0x10, 0x19, 0xa4,
0x10, 0x5b, 0x48, 0x21, 0x32, 0x49, 0x21, 0xb6, 0x0a, 0xd1, 0x43,
0x1b, 0x61, 0xd4, 0x37, 0x23, 0xde, 0x6e, 0xe1, 0x47, 0x39, 0xe1,
0x42, 0x36, 0x2a, 0x14, 0xa4, 0x43, 0x36, 0x2c, 0x64, 0x83, 0x42,
0x36, 0xa4, 0x36, 0x22, 0xb2, 0xb0, 0x0d, 0xdb, 0xb1, 0x03, 0xd9,
0xd8, 0x89, 0x5d, 0xc8, 0x41, 0x2e, 0x76, 0x63, 0x0f, 0xf2, 0xb0,
0x17, 0xf9, 0xd8, 0x87, 0xfd, 0x28, 0xc0, 0x01, 0x14, 0xca, 0xb5,
0x0a, 0x96, 0xeb, 0x61, 0x92, 0xf3, 0x98, 0x20, 0x9f, 0xdf, 0x29,
0xdb, 0xcf, 0x97, 0x31, 0x7a, 0x06, 0x27, 0x71, 0x0a, 0xa7, 0x65,
0xfe, 0x2c, 0xce, 0xa1, 0x04, 0x57, 0x70, 0x0b, 0x17, 0x71, 0x1e,
0x17, 0x70, 0x49, 0xc6, 0x4d, 0xd0, 0x6f, 0xf6, 0x42, 0xa9, 0x8c,
0xfb, 0x0a, 0x54, 0xe1, 0x2e, 0xaa, 0x51, 0x8b, 0x07, 0x68, 0xc4,
0x53, 0x3c, 0x43, 0x1b, 0x9e, 0xe3, 0x05, 0x5e, 0xe2, 0x1d, 0x3e,
0xa2, 0x17, 0x5f, 0x64, 0x8c, 0x7d, 0x53, 0x63, 0x8f, 0x60, 0x8d,
0xd6, 0x69, 0xed, 0xa7, 0xe8, 0xc6, 0xb0, 0x21, 0x33, 0xee, 0x3b,
0x45, 0x35, 0x7a, 0x91, 0x5c, 0xeb, 0x14, 0xd9, 0xa4, 0x45, 0x28,
0xc1, 0x2b, 0xf2, 0xe6, 0x3a, 0xa7, 0xb8, 0xdd, 0xec, 0xf4, 0x15,
0x3f, 0x86, 0x62, 0x6d, 0xdf, 0xb4, 0x1c, 0x1f, 0xa7, 0x33, 0xe1,
0xb1, 0xce, 0xb7, 0x0f, 0x7d, 0x6c, 0x8e, 0x28, 0x19, 0xe7, 0x71,
0x32, 0x3e, 0x15, 0xb9, 0xfe, 0x79, 0xf2, 0xfc, 0x50, 0xd7, 0xe3,
0x32, 0x4e, 0xfc, 0xa2, 0xcd, 0x7b, 0x35, 0x35, 0x96, 0xf1, 0x3c,
0xb7, 0x8c, 0xdd, 0x31, 0x6c, 0x8d, 0x0e, 0x35, 0x5c, 0xd3, 0xdf,
0x6a, 0xf3, 0x6a, 0x1d, 0x59, 0xca, 0x4c, 0x18, 0xf7, 0x29, 0xfe,
0x3e, 0x43, 0x43, 0x08, 0x2c, 0x53, 0xd0, 0x9f, 0xd6, 0xfe, 0xfb,
0x31, 0xba, 0x86, 0xe5, 0x2b, 0x19, 0x4b, 0x1d, 0x1a, 0xb5, 0x31,
0x29, 0xcd, 0x5a, 0xda, 0xce, 0x5a, 0xd2, 0xcf, 0x6b, 0xa5, 0x7b,
0xd4, 0xb1, 0x86, 0x53, 0xe6, 0x2b, 0x7a, 0x94, 0x7e, 0xca, 0xe9,
0x39, 0x64, 0x8d, 0x88, 0xd4, 0x8f, 0x56, 0xa7, 0x58, 0x11, 0xee,
0x0f, 0xd4, 0xf1, 0x70, 0x84, 0x34, 0x39, 0x92, 0xbc, 0x65, 0x33,
0xc8, 0xd7, 0x93, 0xaf, 0x74, 0xd8, 0xb4, 0xbc, 0x23, 0xd3, 0x9b,
0xf6, 0xd9, 0x73, 0x49, 0x0b, 0x51, 0xa2, 0xd7, 0x62, 0x66, 0xec,
0x57, 0xf9, 0xc0, 0x3c, 0x35, 0x50, 0xf7, 0x91, 0xb7, 0x3d, 0x97,
0xf2, 0x44, 0x3f, 0xf0, 0xde, 0xf0, 0x5d, 0xb6, 0x91, 0xf7, 0xe6,
0xb6, 0xa1, 0x65, 0x06, 0xe3, 0xbb, 0xd4, 0x8f, 0xb1, 0xf1, 0xde,
0x3b, 0xb6, 0x0e, 0x7b, 0x57, 0x67, 0xa7, 0xa5, 0xab, 0x33, 0xcb,
0xf2, 0x59, 0xce, 0xe3, 0xd5, 0x80, 0xbc, 0xdd, 0x13, 0x99, 0x2f,
0x17, 0x7b, 0xc4, 0xd3, 0xc2, 0xbc, 0xb7, 0x85, 0x1a, 0xb4, 0x5f,
0xaf, 0x05, 0xa4, 0x6f, 0x33, 0xfd, 0x16, 0xa9, 0xfb, 0xb3, 0x95,
0x7b, 0xf5, 0xdd, 0xc5, 0x5c, 0x37, 0x29, 0xda, 0x3c, 0xf8, 0x64,
0x0d, 0x88, 0x97, 0x63, 0x2b, 0xfb, 0x67, 0xff, 0x84, 0xdc, 0xad,
0x8c, 0x29, 0xcd, 0xd8, 0xdd, 0x90, 0xaa, 0xc6, 0x4a, 0x8e, 0x1c,
0xcf, 0x75, 0xbf, 0xf4, 0xe5, 0x61, 0x5d, 0xdc, 0xec, 0x47, 0x9b,
0x87, 0xf5, 0x21, 0x2e, 0x5d, 0xec, 0x93, 0x3e, 0xf5, 0x3f, 0x8f,
0x75, 0x90, 0x10, 0x37, 0x02, 0xfb, 0xfc, 0x9c, 0xcf, 0x11, 0xed,
0x77, 0xe4, 0x73, 0xdf, 0xf4, 0x5b, 0x3f, 0xfd, 0xf6, 0x87, 0x86,
0xb1, 0x96, 0x2d, 0x53, 0x62, 0x0b, 0xaa, 0xd4, 0xf8, 0xb0, 0xbe,
0xa1, 0xce, 0xa7, 0x61, 0xf5, 0xbe, 0x03, 0x0b, 0xb8, 0xb3, 0x90
};

13978
baserc/conback.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -82,6 +82,111 @@ const unsigned char error_tga[] = {
0x80, 0x80, 0x80, 0x00, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff
};
const unsigned char net_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x20, 0x08, 0x06, 0x00, 0x00, 0x00, 0x73, 0x7a, 0x7a, 0xf4,
0x00, 0x00, 0x00, 0x3f, 0x74, 0x45, 0x58, 0x74, 0x47, 0x65, 0x6e,
0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x00, 0x47,
0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79,
0x20, 0x74, 0x68, 0x65, 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f,
0x70, 0x65, 0x72, 0x27, 0x73, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x20, 0x4c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x28, 0x44,
0x65, 0x76, 0x49, 0x4c, 0x29, 0x3e, 0xf9, 0x5b, 0xf1, 0x00, 0x00,
0x00, 0x0e, 0x74, 0x45, 0x58, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x27, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0xa7, 0x54,
0x77, 0xc3, 0x00, 0x00, 0x00, 0x12, 0x74, 0x45, 0x58, 0x74, 0x41,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x27, 0x73, 0x20, 0x63, 0x6f, 0x6d,
0x6d, 0x65, 0x6e, 0x74, 0x73, 0x00, 0x57, 0x30, 0xab, 0x86, 0x00,
0x00, 0x03, 0xa5, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0xc5, 0x97,
0xbf, 0x6b, 0x1c, 0x39, 0x14, 0xc7, 0xbf, 0x36, 0xc2, 0x08, 0x33,
0x04, 0x11, 0x96, 0xb0, 0x84, 0x29, 0x44, 0x58, 0xc2, 0x16, 0x26,
0x4c, 0xe1, 0xc2, 0x45, 0x0a, 0x13, 0x4c, 0x6a, 0xff, 0x01, 0x29,
0x52, 0xa4, 0xc8, 0x9f, 0x90, 0xf2, 0x8a, 0x14, 0x29, 0x52, 0xa4,
0xbc, 0x72, 0xff, 0x80, 0x2b, 0x4c, 0x48, 0x71, 0x1c, 0x5b, 0x0c,
0xc6, 0xc5, 0x16, 0x57, 0x0c, 0x21, 0x45, 0x8a, 0x65, 0x51, 0x31,
0x98, 0x21, 0x0c, 0x46, 0x84, 0x61, 0x11, 0x46, 0x5c, 0x52, 0x68,
0x67, 0x34, 0x4f, 0x3b, 0xb3, 0x1b, 0xe2, 0xe4, 0xfc, 0x60, 0xd9,
0xd1, 0x1b, 0x49, 0xef, 0xa3, 0xf7, 0x43, 0x23, 0xed, 0x80, 0x8d,
0xbf, 0xa1, 0x2d, 0xd1, 0x90, 0x34, 0xb9, 0x25, 0x4d, 0x0c, 0x87,
0x86, 0x2a, 0xa0, 0x48, 0xcb, 0x68, 0x4d, 0xdb, 0x41, 0x77, 0x63,
0xa9, 0x82, 0x01, 0xc0, 0x9f, 0x93, 0xbf, 0x1b, 0x85, 0x36, 0x9c,
0x8e, 0x08, 0x00, 0x6c, 0xf5, 0x17, 0x5e, 0xbc, 0x7c, 0xe6, 0x27,
0xac, 0x28, 0x40, 0xf6, 0x6f, 0x16, 0x00, 0x84, 0xc0, 0x5e, 0x9e,
0x3f, 0x7b, 0x89, 0xdd, 0xde, 0xb7, 0xff, 0x93, 0xdc, 0x3a, 0x00,
0x03, 0x00, 0xc3, 0xbc, 0xdb, 0x39, 0x17, 0x30, 0xd7, 0x80, 0xb9,
0xae, 0x7b, 0x18, 0x12, 0x86, 0x48, 0x3c, 0x06, 0xda, 0x71, 0x0c,
0x5c, 0xcc, 0x79, 0xe0, 0xf2, 0x20, 0xe6, 0xa4, 0xbb, 0xe9, 0xf0,
0x40, 0x63, 0xb8, 0x99, 0x60, 0xf3, 0x0a, 0x6e, 0x2a, 0x2c, 0x54,
0xf0, 0x3d, 0x0f, 0xd1, 0x3c, 0xb3, 0x15, 0x88, 0xed, 0x1a, 0xe1,
0x24, 0x4d, 0xa7, 0x00, 0x80, 0xe2, 0x4b, 0x41, 0xf4, 0x66, 0x49,
0x3d, 0x30, 0x1e, 0x1f, 0x6c, 0x06, 0xe8, 0x34, 0xde, 0xd0, 0xf5,
0xad, 0xc3, 0x03, 0xac, 0x95, 0x5d, 0x4b, 0x91, 0x24, 0xd4, 0xb8,
0x03, 0xb0, 0x82, 0x8e, 0xfa, 0xcf, 0xd7, 0x31, 0x67, 0x40, 0x53,
0xe7, 0x2b, 0x90, 0x81, 0x28, 0xd0, 0x2e, 0x75, 0x5d, 0xb8, 0x15,
0xcf, 0x2e, 0x5c, 0xf9, 0x29, 0xa5, 0x21, 0x06, 0x1c, 0x66, 0x69,
0xc1, 0xf7, 0x19, 0x74, 0xe9, 0xe7, 0x1e, 0x8d, 0x0e, 0xa0, 0xab,
0x96, 0x2d, 0xd6, 0xeb, 0x50, 0x2a, 0x52, 0xfa, 0xe7, 0x64, 0x24,
0xfb, 0xba, 0x79, 0xa8, 0x95, 0x51, 0xb3, 0xdc, 0x9e, 0x40, 0xbd,
0x65, 0x38, 0xb8, 0x67, 0x30, 0xb8, 0x67, 0x20, 0x25, 0xc8, 0x8a,
0xf3, 0x4b, 0xdd, 0xf9, 0xfc, 0xb3, 0xb2, 0xe6, 0x81, 0xf1, 0x41,
0xb0, 0x95, 0x56, 0xee, 0xbf, 0x86, 0xa8, 0xb7, 0xda, 0xf8, 0xbe,
0x40, 0x7c, 0x5f, 0x40, 0x17, 0x37, 0x83, 0x60, 0x60, 0x06, 0x22,
0xf2, 0x99, 0x2b, 0x07, 0xfe, 0x5b, 0xa0, 0x16, 0x19, 0xcc, 0x35,
0x07, 0x6f, 0x25, 0xdf, 0x58, 0x0a, 0x07, 0x54, 0x69, 0xe8, 0xb2,
0x80, 0x2e, 0x14, 0x00, 0x20, 0x39, 0x3c, 0xc4, 0xd9, 0xd9, 0x14,
0x42, 0xd0, 0x4c, 0xd5, 0xad, 0xfc, 0x8a, 0xe3, 0x01, 0x74, 0xd9,
0x02, 0xb6, 0x1d, 0x1e, 0x50, 0x0b, 0x97, 0x4c, 0xf2, 0x41, 0x02,
0xf9, 0x20, 0x81, 0xae, 0xaa, 0xa0, 0x47, 0xe9, 0x0c, 0x97, 0x05,
0x44, 0x0b, 0xf6, 0xf4, 0xf4, 0x04, 0xa7, 0xa7, 0x27, 0xf8, 0xf0,
0x3e, 0xc5, 0xf4, 0x9f, 0x94, 0x8c, 0x78, 0xf3, 0xfa, 0x55, 0xaf,
0x07, 0x3a, 0x73, 0x40, 0x2d, 0x32, 0x0f, 0x12, 0xc7, 0xcd, 0x0f,
0x40, 0x63, 0x1c, 0x00, 0x01, 0xa8, 0xe5, 0xe4, 0xe9, 0x31, 0x6d,
0x3f, 0x79, 0xdc, 0x6b, 0xbc, 0x13, 0xa0, 0x5e, 0xb9, 0x5a, 0x64,
0x48, 0xa7, 0x13, 0xa4, 0xb3, 0x99, 0x83, 0xca, 0x73, 0xa8, 0x3c,
0xdf, 0x68, 0xbc, 0x96, 0x37, 0x6f, 0xff, 0xf8, 0x61, 0x80, 0x1d,
0x11, 0xf1, 0x6f, 0x69, 0x3a, 0x69, 0x14, 0xc3, 0x58, 0x34, 0xcf,
0xe9, 0xf9, 0x0c, 0xd5, 0xee, 0x21, 0x62, 0x39, 0x42, 0xae, 0xe6,
0xc8, 0xd5, 0x1c, 0x52, 0xfa, 0xf7, 0x6a, 0xa1, 0x80, 0xaf, 0x39,
0x84, 0x88, 0x1a, 0x1d, 0xbf, 0x23, 0x20, 0xee, 0x0a, 0xa8, 0xb9,
0x6a, 0x40, 0x75, 0x59, 0x42, 0x97, 0x25, 0x00, 0xba, 0xb3, 0xbf,
0x7d, 0x37, 0xe9, 0xdf, 0x07, 0xd2, 0xf3, 0x19, 0xd2, 0xf3, 0x19,
0x86, 0x52, 0x34, 0x00, 0xb1, 0x1c, 0x01, 0x70, 0x13, 0xa5, 0xd3,
0xd4, 0x19, 0x60, 0x86, 0x00, 0xd4, 0x22, 0x57, 0xfb, 0x85, 0xd6,
0xfd, 0xe7, 0x01, 0xa0, 0x23, 0x09, 0x6b, 0xc3, 0x6d, 0xf1, 0xc6,
0x41, 0x8c, 0x77, 0x89, 0xbe, 0xd2, 0x41, 0xbb, 0x6a, 0x56, 0xbf,
0x15, 0x60, 0x32, 0x39, 0x83, 0x41, 0x7f, 0x5d, 0xe7, 0x6a, 0x0e,
0x35, 0xa7, 0x27, 0x9e, 0xae, 0xd5, 0xb7, 0x21, 0x48, 0xd9, 0x75,
0x01, 0x18, 0x08, 0x9c, 0xcd, 0x5c, 0x62, 0x7d, 0xca, 0x2d, 0x2c,
0x3f, 0x06, 0x00, 0x24, 0x8f, 0x5c, 0xd6, 0x1b, 0x44, 0x98, 0x2b,
0x17, 0xb9, 0x2c, 0x1b, 0x82, 0xf3, 0x71, 0x33, 0x38, 0x16, 0x16,
0x51, 0x54, 0xc0, 0x5a, 0x1f, 0x59, 0xb6, 0x4b, 0x9d, 0x2a, 0x04,
0x50, 0x5c, 0xf9, 0x36, 0x6f, 0xa5, 0x3d, 0x67, 0xc2, 0x79, 0xe0,
0x62, 0x7a, 0xb1, 0x91, 0x32, 0x94, 0x58, 0x58, 0xf2, 0x7f, 0x13,
0xe9, 0xfd, 0x16, 0x64, 0x1f, 0x73, 0x24, 0x8f, 0x62, 0x24, 0x89,
0xdb, 0xd9, 0xb2, 0xac, 0xb5, 0xa3, 0x09, 0xfb, 0x4b, 0x8c, 0x03,
0x1b, 0xbe, 0x86, 0x75, 0x08, 0xb2, 0xcc, 0x10, 0xe3, 0x00, 0x90,
0x6b, 0x3f, 0xcc, 0xda, 0x01, 0x79, 0x17, 0x1e, 0xbb, 0xc5, 0x1e,
0x0d, 0x41, 0xb1, 0xf8, 0x4c, 0x01, 0x8c, 0x91, 0xb0, 0xac, 0x75,
0xcc, 0xb6, 0xae, 0xce, 0xcb, 0x2b, 0x0e, 0xa5, 0x38, 0x66, 0xd9,
0x10, 0x30, 0xab, 0x44, 0xe2, 0x02, 0x06, 0xc7, 0x28, 0x2e, 0x73,
0xd7, 0x77, 0x99, 0x03, 0x41, 0x95, 0x31, 0x46, 0xbf, 0x05, 0x55,
0x70, 0x6c, 0x37, 0xa5, 0x9b, 0x5f, 0x3e, 0x3c, 0x82, 0xb1, 0xef,
0xfa, 0x3d, 0x30, 0x57, 0x06, 0x73, 0x65, 0xc0, 0xeb, 0x63, 0x10,
0x17, 0xee, 0x07, 0x80, 0xef, 0xc7, 0x30, 0xcb, 0x1c, 0x7c, 0x3f,
0x06, 0xf6, 0x5a, 0x93, 0x7f, 0xcd, 0xd7, 0xe6, 0x89, 0x84, 0xf4,
0x30, 0x5a, 0x41, 0x3e, 0x3c, 0xa2, 0xc0, 0x7d, 0x00, 0x44, 0xb8,
0x58, 0x57, 0xed, 0xc7, 0xeb, 0xba, 0x3b, 0x31, 0x78, 0xe0, 0x92,
0x3a, 0x24, 0x95, 0x56, 0x2b, 0x18, 0x5a, 0x96, 0xdb, 0x01, 0x5a,
0x2b, 0xff, 0x1d, 0xc2, 0xc0, 0xe0, 0xce, 0xfe, 0x2b, 0x11, 0x91,
0x08, 0x7b, 0x80, 0x50, 0xaf, 0x25, 0xff, 0xe6, 0xad, 0xb6, 0x1e,
0x1b, 0xad, 0xce, 0x09, 0xe4, 0xda, 0x60, 0xf5, 0xed, 0xdf, 0x8c,
0x6e, 0x1d, 0x60, 0x07, 0xfc, 0x88, 0x5e, 0xcf, 0xed, 0xb6, 0x78,
0x87, 0x97, 0x83, 0x6d, 0x21, 0x08, 0xaf, 0x6a, 0xf4, 0xe2, 0xf2,
0x1d, 0x72, 0xf3, 0x92, 0x8e, 0x46, 0xd6, 0xb0, 0x55, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
const unsigned char blank_bmp[] = {
0x42, 0x4d, 0x76, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36,
0x04, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,

27853
baserc/progs.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -6,11 +6,11 @@
#include <windows.h>
#include "launch_api.h"
#include "baserc_api.h"
#include "progs.h"
// resources
#include "images.h"
#include "server.h"
#include "client.h"
#include "conback.h"
#include "uimenu.h"
stdlib_api_t com;
@ -29,9 +29,10 @@ loadres_t load_resources[] =
{"blank.bmp", blank_bmp, sizeof(blank_bmp)},
{"checkerboard.dds", q1mip_dds, sizeof(q1mip_dds)},
{"default.dds", deffont_dds, sizeof(deffont_dds)},
{"server.dat", server_dat, sizeof(server_dat)},
{"client.dat", client_dat, sizeof(client_dat)},
{"uimenu.dat", uimenu_dat, sizeof(uimenu_dat)},
{"conback.dds", conback_dds, sizeof(conback_dds)},
{"net.png", net_png, sizeof(net_png)},
{"progs.pk3", progs_pk3, sizeof(progs_pk3)},
{"uimenu.dat", uimenu_dat, sizeof(uimenu_dat)}, // FIXME: get rid of this
{NULL, NULL, 0 }
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,243 +0,0 @@
//=======================================================================
// Copyright (C) Shambler Team 2005
// vector.h - shared vector operations
//=======================================================================
#ifndef VECTOR_H
#define VECTOR_H
#include <math.h>
#include <float.h>
#include <stdlib.h>
#include <stdio.h>
#pragma warning(disable : 4244) // int or float down-conversion
// Header file containing definition of globalvars_t and entvars_t
typedef int func_t; //
typedef int string_t; // from engine's pr_comp.h;
typedef float vec_t; // needed before including progdefs.h
//=========================================================
// 2DVector - used for many pathfinding and many other
// operations that are treated as planar rather than 3d.
//=========================================================
class Vector2D
{
public:
inline Vector2D(void) { }
inline Vector2D(float X, float Y) { x = X; y = Y; }
inline Vector2D operator+(const Vector2D& v) const { return Vector2D(x+v.x, y+v.y); }
inline Vector2D operator-(const Vector2D& v) const { return Vector2D(x-v.x, y-v.y); }
inline Vector2D operator*(float fl) const { return Vector2D(x*fl, y*fl); }
inline Vector2D operator/(float fl) const { return Vector2D(x/fl, y/fl); }
inline float Length(void) const { return (float)sqrt(x*x + y*y ); }
inline Vector2D Normalize ( void ) const
{
Vector2D vec2;
float flLen = Length();
if ( flLen == 0 )
{
return Vector2D( (float)0, (float)0 );
}
else
{
flLen = 1 / flLen;
return Vector2D( x * flLen, y * flLen );
}
}
vec_t x, y;
};
#define nanmask (255<<23)
#define IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
inline float DotProduct(const Vector2D& a, const Vector2D& b) { return( a.x*b.x + a.y*b.y ); }
inline Vector2D operator*(float fl, const Vector2D& v) { return v * fl; }
//=========================================================
// 3D Vector
//=========================================================
class Vector // same data-layout as engine's vec3_t,
{ // which is a vec_t[3]
public:
// Construction/destruction
inline Vector(void) { }
inline Vector(float X, float Y, float Z) { x = X; y = Y; z = Z; }
inline Vector(const Vector& v) { x = v.x; y = v.y; z = v.z; }
inline Vector(float rgfl[3]) { x = rgfl[0]; y = rgfl[1]; z = rgfl[2]; }
// Initialization
void Init(vec_t ix=0.0f, vec_t iy=0.0f, vec_t iz=0.0f){ x = ix; y = iy; z = iz; }
// Operators
inline Vector operator-(void) const { return Vector(-x,-y,-z); }
inline int operator==(const Vector& v) const { return x==v.x && y==v.y && z==v.z; }
inline int operator!=(const Vector& v) const { return !(*this==v); }
inline Vector operator+(const Vector& v) const { return Vector(x+v.x, y+v.y, z+v.z); }
inline Vector operator-(const Vector& v) const { return Vector(x-v.x, y-v.y, z-v.z); }
inline Vector operator*(float fl) const { return Vector(x*fl, y*fl, z*fl); }
inline Vector operator/(float fl) const { return Vector(x/fl, y/fl, z/fl); }
_forceinline Vector& operator+=(const Vector &v)
{
x+=v.x; y+=v.y; z += v.z;
return *this;
}
_forceinline Vector& operator-=(const Vector &v)
{
x-=v.x; y-=v.y; z -= v.z;
return *this;
}
_forceinline Vector& operator*=(const Vector &v)
{
x *= v.x; y *= v.y; z *= v.z;
return *this;
}
_forceinline Vector& operator*=(float s)
{
x *= s; y *= s; z *= s;
return *this;
}
_forceinline Vector& operator/=(const Vector &v)
{
x /= v.x; y /= v.y; z /= v.z;
return *this;
}
_forceinline Vector& operator/=(float s)
{
float oofl = 1.0f / s;
x *= oofl; y *= oofl; z *= oofl;
return *this;
}
_forceinline Vector MA( const Vector &start, float scale, const Vector &direction ) const
{
return Vector(start.x + scale * direction.x, start.y + scale * direction.y, start.z + scale * direction.z) ;
}
// Methods
inline void CopyToArray(float* rgfl) const { rgfl[0] = x, rgfl[1] = y, rgfl[2] = z; }
inline float Length(void) const { return (float)sqrt(x*x + y*y + z*z); }
operator float *() { return &x; } // Vectors will now automatically convert to float * when needed
operator const float *() const { return &x; } // Vectors will now automatically convert to float * when needed
// array access...
vec_t operator[](int i) const { return ((vec_t*)this)[i];}
vec_t& operator[](int i) { return ((vec_t*)this)[i];}
inline Vector Normalize(void) const
{
float flLen = Length();
if (flLen == 0) return Vector(0,0,1); // ????
flLen = 1 / flLen;
return Vector(x * flLen, y * flLen, z * flLen);
}
vec_t Dot(Vector const& vOther) const
{
return(x*vOther.x+y*vOther.y+z*vOther.z);
}
Vector Cross(const Vector &vOther) const
{
return Vector(y*vOther.z - z*vOther.y, z*vOther.x - x*vOther.z, x*vOther.y - y*vOther.x);
}
inline Vector2D Make2D ( void ) const
{
Vector2D Vec2;
Vec2.x = x;
Vec2.y = y;
return Vec2;
}
inline float Length2D(void) const { return (float)sqrt(x*x + y*y); }
// Members
vec_t x, y, z;
};
inline Vector operator*(float fl, const Vector& v) { return v * fl; }
inline float DotProduct(const Vector& a, const Vector& b) { return(a.x*b.x+a.y*b.y+a.z*b.z); }
inline Vector CrossProduct(const Vector& a, const Vector& b) { return Vector( a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x ); }
#define vec3_t Vector
//=========================================================
// 4D Vector - for matrix operations
//=========================================================
class Vector4D
{
public:
// Members
vec_t x, y, z, w;
// Construction/destruction
Vector4D(void){}
Vector4D(vec_t X, vec_t Y, vec_t Z, vec_t W) { x = X; y = Y; z = Z; w = W;}
Vector4D(double X, double Y, double Z, double W) { x = (double)X; y = (double)Y; z = (double)Z; w = (double)W;}
Vector4D(const float *pFloat) { x = pFloat[0]; y = pFloat[1]; z = pFloat[2]; w = pFloat[3];}
// array access...
vec_t operator[](int i) const { return ((vec_t*)this)[i];}
vec_t& operator[](int i) { return ((vec_t*)this)[i];}
// equality
bool operator==(const Vector4D& src) const{ return(src.x == x) && (src.y == y) && (src.z == z) && (src.w == w);}
bool operator!=(const Vector4D& src) const{ return(src.x != x) || (src.y != y) || (src.z != z) || (src.w != w);}
// arithmetic operations
Vector4D& operator+=(const Vector4D &v){ x+=v.x; y+=v.y; z += v.z; return *this;}
Vector4D& operator-=(const Vector4D &v){ x-=v.x; y-=v.y; z -= v.z; return *this;}
Vector4D operator+ (const Vector4D &v)const {Vector4D res; res.x = x + v.x; res.y = y + v.y; res.z = z + v.z; res.w = w; return res;}
Vector4D operator- (const Vector4D &v)const {Vector4D res; res.x = x - v.x; res.y = y - v.y; res.z = z - v.z; res.w = w; return res;}
Vector4D operator* (const Vector4D &v)const {Vector4D res; res.x = y * v.z - z * v.y; res.y = z * v.x - x * v.z; res.z = x * v.y - y * v.x; res.w = w; return res;}
float operator% (const Vector4D &v)const { return (x * v.x + y * v.y + z * v.z); }
Vector4D Scale( float scale)const {Vector4D res; res.x = x * scale; res.y = y * scale; res.z = z * scale; res.w = w;return res; }
Vector4D CompProduct (const Vector4D &v)const {Vector4D res; res.x = x * v.x; res.y = y * v.y; res.z = z * v.z; res.w = w; return res;}
};
//=========================================================
// RandomRange - for random values
//=========================================================
class RandomRange
{
public:
float m_flMax, m_flMin;//class members
RandomRange() { m_flMin = m_flMax = 0; }
RandomRange(float fValue) { m_flMin = m_flMax = fValue; }
RandomRange(float fMin, float fMax) { m_flMin = fMin; m_flMax = fMax; }
RandomRange( char *szToken )
{
char *cOneDot = NULL;
m_flMin = m_flMax = 0;
for (char *c = szToken; *c; c++)
{
if (*c == '.')
{
if (cOneDot != NULL)
{
// found two dots in a row - it's a range
*cOneDot = 0; // null terminate the first number
m_flMin = atof(szToken); // parse the first number
*cOneDot = '.'; // change it back, just in case
c++;
m_flMax = atof(c); // parse the second number
return;
}
else cOneDot = c;
}
else cOneDot = NULL;
}
// no range, just record the number
m_flMax = m_flMin = atof(szToken);
}
// FIXME: float Random() { return RANDOM_FLOAT(m_flMin, m_flMax); }
float Random() { return m_flMin - m_flMax; }
// array access...
float operator[](int i) const { return ((float*)this)[i];}
float& operator[](int i) { return ((float*)this)[i];}
};
#endif

View File

@ -71,7 +71,7 @@ void V_CalcShake( void )
void V_ApplyShake( Vector& origin, Vector& angles, float factor )
{
origin.MA( origin, factor, gHUD.m_Shake.appliedOffset );
origin.MA( factor, origin, gHUD.m_Shake.appliedOffset );
angles.z += gHUD.m_Shake.appliedAngle * factor;
}

View File

@ -19,6 +19,7 @@ typedef int shader_t;
typedef struct edict_s edict_t;
typedef struct cl_priv_s cl_priv_t;
typedef struct sv_priv_s sv_priv_t;
typedef float vec_t;
#define DLLEXPORT __declspec( dllexport )

View File

@ -12,13 +12,6 @@
#pragma warning(disable : 4244) // int or float down-conversion
#ifdef CLIENT_DLL
// Header file containing definition of globalvars_t and entvars_t
typedef int func_t; //
typedef int string_t; // from engine's pr_comp.h;
typedef float vec_t; // needed before including progdefs.h
#endif
//=========================================================
// 2DVector - used for many pathfinding and many other
// operations that are treated as planar rather than 3d.
@ -32,12 +25,7 @@ public:
inline Vector2D operator-(const Vector2D& v) const { return Vector2D(x-v.x, y-v.y); }
inline Vector2D operator*(float fl) const { return Vector2D(x*fl, y*fl); }
inline Vector2D operator/(float fl) const { return Vector2D(x/fl, y/fl); }
#ifdef CLIENT_DLL
inline float Length(void) const { return (float)sqrt(x*x + y*y ); }
#else
inline float Length(void) const { return sqrt(x*x + y*y ); }
#endif
inline Vector2D Normalize ( void ) const
{
Vector2D vec2;
@ -45,11 +33,7 @@ public:
float flLen = Length();
if ( flLen == 0 )
{
#ifdef CLIENT_DLL
return Vector2D( (float)0, (float)0 );
#else
return Vector2D( 0, 0 );
#endif
}
else
{
@ -123,7 +107,6 @@ public:
x *= oofl; y *= oofl; z *= oofl;
return *this;
}
#ifndef CLIENT_DLL
_forceinline Vector& fixangle(void)
{
if(!IS_NAN(x))
@ -143,19 +126,14 @@ public:
}
return *this;
}
#endif
_forceinline Vector MA( float scale, const Vector &start, const Vector &direction ) const
{
return Vector(start.x + scale * direction.x, start.y + scale * direction.y, start.z + scale * direction.z) ;
}
// Methods
// methods
inline void CopyToArray(float* rgfl) const { rgfl[0] = x, rgfl[1] = y, rgfl[2] = z; }
#ifdef CLIENT_DLL
inline float Length(void) const { return (float)sqrt(x*x + y*y + z*z); }
#else
inline float Length(void) const { return sqrt(x*x + y*y + z*z); }
#endif
operator float *() { return &x; } // Vectors will now automatically convert to float * when needed
operator const float *() const { return &x; } // Vectors will now automatically convert to float * when needed
@ -185,14 +163,12 @@ public:
Vec2.y = y;
return Vec2;
}
#ifdef CLIENT_DLL
inline float Length2D(void) const { return (float)sqrt(x*x + y*y); }
#else
inline float Length2D(void) const { return sqrt(x*x + y*y); }
#endif
// Members
// members
vec_t x, y, z;
};
inline Vector operator*(float fl, const Vector& v) { return v * fl; }
inline float DotProduct(const Vector& a, const Vector& b) { return(a.x*b.x+a.y*b.y+a.z*b.z); }
inline Vector CrossProduct(const Vector& a, const Vector& b) { return Vector( a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x ); }

View File

@ -72,5 +72,5 @@ if exist xtools\xtools.plg del /f /q xtools\xtools.plg
echo Build succeeded!
echo Please wait. Xash is now loading
cd D:\Xash3D\
quake.exe -game tmpQuArK -log -debug -dev 3 +map qctest
quake.exe -game tmpQuArK -log -debug -dev 3 +map dm_knot
:done

View File

@ -20,7 +20,6 @@ cvar_t *cl_testentities;
cvar_t *cl_testlights;
cvar_t *cl_levelshot_name;
cvar_t *cl_envshot_size;
cvar_t *cl_neticon;
cvar_t *cl_font;
void SCR_TimeRefresh_f( void );
@ -392,8 +391,8 @@ void SCR_RegisterShaders( void )
// register console images
cls.consoleFont = re->RegisterShader( va( "gfx/fonts/%s", con_font->string ), SHADER_FONT );
cls.clientFont = re->RegisterShader( va( "gfx/fonts/%s", cl_font->string ), SHADER_FONT );
cls.consoleBack = re->RegisterShader( "gfx/shell/conback", SHADER_NOMIP ); // FIXME: hardcoded ...
cls.netIcon = re->RegisterShader( cl_neticon->string, SHADER_NOMIP );
cls.consoleBack = re->RegisterShader( "#conback.dds", SHADER_NOMIP ); // internal resource
cls.netIcon = re->RegisterShader( "#net.png", SHADER_NOMIP ); // internal recource
// vid_state has changed
if( cls.game ) cls.dllFuncs.pfnVidInit();
@ -415,7 +414,6 @@ void SCR_Init( void )
cl_testentities = Cvar_Get ("cl_testentities", "0", 0, "test client entities" );
cl_testlights = Cvar_Get ("cl_testlights", "0", 0, "test dynamic lights" );
cl_envshot_size = Cvar_Get( "cl_envshot_size", "256", CVAR_ARCHIVE, "envshot size of cube side" );
cl_neticon = Cvar_Get( "cl_neticon", "gfx/shell/net", CVAR_ARCHIVE, "path to icon that displayed bad network connection" );
cl_font = Cvar_Get( "cl_font", "default", CVAR_ARCHIVE, "in-game messages font" );
// register our commands

View File

@ -306,7 +306,6 @@ extern cvar_t *cl_pitchspeed;
extern cvar_t *cl_envshot_size;
extern cvar_t *cl_run;
extern cvar_t *cl_font;
extern cvar_t *cl_neticon;
extern cvar_t *cl_anglespeedkey;

View File

@ -1065,7 +1065,7 @@ CL_KeyEvent
Called by the system for both key up and key down events
===================
*/
void Key_Event(int key, bool down, uint time)
void Key_Event( int key, bool down, uint time )
{
char *kb;
char cmd[1024];
@ -1073,22 +1073,22 @@ void Key_Event(int key, bool down, uint time)
// update auto-repeat status and BUTTON_ANY status
keys[key].down = down;
if (down)
if( down )
{
keys[key].repeats++;
if( keys[key].repeats == 1) anykeydown++;
if( keys[key].repeats == 1 ) anykeydown++;
}
else
{
keys[key].repeats = 0;
anykeydown--;
if (anykeydown < 0) anykeydown = 0;
if( anykeydown < 0 ) anykeydown = 0;
}
// console key is hardcoded, so the user can never unbind it
if (key == '`' || key == '~')
if( key == '`' || key == '~' )
{
if (!down) return;
if( !down ) return;
Con_ToggleConsole_f();
return;
}
@ -1112,7 +1112,7 @@ void Key_Event(int key, bool down, uint time)
// passed to client dll's
break;
default:
MsgDev( D_ERROR, "Key_Event: bad cls.key_dest\n");
MsgDev( D_ERROR, "Key_Event: bad cls.key_dest\n" );
return;
}
}

View File

@ -262,9 +262,9 @@ void IN_Frame( void )
}
// uimenu.dat using mouse
if((!cl.video_prepped && cls.key_dest != key_menu) || cls.key_dest == key_console )
if((!cl.video_prepped && cls.key_dest != key_menu) || cls.key_dest == key_console || cl_paused->integer )
{
if(!Cvar_VariableValue( "fullscreen"))
if( !Cvar_VariableValue( "fullscreen" ))
{
IN_DeactivateMouse();
return;

View File

@ -2910,6 +2910,9 @@ bool SV_ParseEdict( script_t *script, edict_t *ent )
ent = SV_AllocPrivateData( ent, MAKE_STRING( classname ));
if( ent->v.flags & FL_KILLME )
return false;
for( i = 0; i < numpairs; i++ )
{
if( pkvd[i].fHandled ) continue;

View File

@ -1278,12 +1278,17 @@ int FS_CheckNastyPath (const char *path, bool isgamedir)
FS_Rescan
================
*/
void FS_Rescan (void)
void FS_Rescan( void )
{
FS_ClearSearchPath();
FS_AddGameHierarchy (GI.basedir);
FS_AddGameHierarchy (GI.gamedir);
FS_AddGameHierarchy( GI.basedir );
FS_AddGameHierarchy( GI.gamedir );
}
void FS_Rescan_f( void )
{
FS_Rescan();
}
void FS_ResetGameInfo( void )
@ -1412,6 +1417,7 @@ void FS_Init( void )
FS_AddGameDirectory( "bin/", FS_READONLY_PATH ); // execute system config
Cmd_AddCommand( "fs_rescan", FS_Rescan_f, "rescan filesystem search pathes" );
Cmd_AddCommand( "fs_path", FS_Path_f, "show filesystem search pathes" );
Cmd_AddCommand( "fs_clearpaths", FS_ClearPaths_f, "clear filesystem search pathes" );
fs_wadsupport = Cvar_Get( "fs_wadsupport", "0", CVAR_SYSTEMINFO, "enable wad-archive support" );

View File

@ -539,7 +539,8 @@ void Sys_Print( const char *pMsg )
int i = 0;
if( Sys.con_silentmode ) return;
if( Sys.CPrint ) Sys.CPrint( pMsg );
if( Sys.CPrint && Sys.app_name == HOST_NORMAL )
Sys.CPrint( pMsg );
// if the message is REALLY long, use just the last portion of it
if ( com_strlen( pMsg ) > MAX_MSGLEN - 1 )
@ -582,6 +583,11 @@ void Sys_Print( const char *pMsg )
}
*b = *c = 0; // cutoff garbage
// because we needs to kill any psedo graph symbols
// and color strings for other instances
if( Sys.CPrint && Sys.app_name != HOST_NORMAL )
Sys.CPrint( logbuf );
Sys_PrintLog( logbuf );
// don't flood system console with memory allocation messages or another

View File

@ -25,7 +25,6 @@
#include "basetypes.h"
typedef float vec_t;
typedef vec_t vec2_t[2];
typedef vec_t vec3_t[3];
typedef vec_t vec4_t[4];

View File

@ -70,6 +70,7 @@ static dllfunc_t opengl_110funcs[] =
{"glPointSize", (void**) &pglPointSize},
{"glMatrixMode", (void **) &pglMatrixMode},
{"glOrtho", (void **) &pglOrtho},
{"glRasterPos2f", (void **) &pglRasterPos2f},
{"glFrustum", (void **) &pglFrustum},
{"glViewport", (void **) &pglViewport},
{"glPushMatrix", (void **) &pglPushMatrix},
@ -86,6 +87,7 @@ static dllfunc_t opengl_110funcs[] =
{"glTranslated", (void **) &pglTranslated},
{"glTranslatef", (void **) &pglTranslatef},
{"glReadPixels", (void **) &pglReadPixels},
{"glDrawPixels", (void **) &pglDrawPixels},
{"glStencilFunc", (void **) &pglStencilFunc},
{"glStencilMask", (void **) &pglStencilMask},
{"glStencilOp", (void **) &pglStencilOp},
@ -569,7 +571,7 @@ void GL_InitExtensions( void )
// initialize gl extensions
GL_CheckExtension( "OpenGL 1.1.0", opengl_110funcs, NULL, R_OPENGL_110 );
if( !r_framebuffer ) r_framebuffer = Mem_Alloc( r_temppool, r_width->integer * r_height->integer * 3 );
if( !r_framebuffer ) r_framebuffer = Mem_Alloc( r_temppool, r_width->integer * r_height->integer * 4 );
// get our various GL strings
gl_config.vendor_string = pglGetString( GL_VENDOR );

View File

@ -1585,6 +1585,10 @@ void RB_DebugGraphics( void )
{
RB_ShowTextures();
}
if( r_pause_bw->integer )
{
RB_DrawPauseScreen();
}
}
/*

View File

@ -3,8 +3,8 @@
// r_bloom.c - lighting post process effect
//=======================================================================
#include <assert.h>
#include "r_local.h"
#include "mathlib.h"
static float Diamond8x[8][8] =
{
@ -170,12 +170,12 @@ void R_Bloom_InitTextures( void )
int size;
rgbdata_t r_bloomscr, r_downsample;
Mem_Set(&r_bloomscr, 0, sizeof(rgbdata_t));
Mem_Set(&r_downsample, 0, sizeof(rgbdata_t));
Mem_Set( &r_bloomscr, 0, sizeof( rgbdata_t ));
Mem_Set( &r_downsample, 0, sizeof( rgbdata_t ));
// find closer power of 2 to screen size
for( screen_texture_width = 1; screen_texture_width < r_width->integer; screen_texture_width *= 2 );
for( screen_texture_height = 1; screen_texture_height < r_height->integer; screen_texture_height *= 2 );
screen_texture_width = NearestPOW( r_width->integer, true );
screen_texture_height = NearestPOW( r_height->integer, true );
// init the screen texture
size = screen_texture_width * screen_texture_height * 4;
@ -191,10 +191,10 @@ void R_Bloom_InitTextures( void )
r_bloomscr.size = screen_texture_width * screen_texture_height * 4;
r_bloomscreentexture = R_LoadTexture( "*r_bloomscreentexture", &r_bloomscr, 3, TF_STATIC|TF_NOPICMIP, TF_LINEAR, TW_CLAMP );
//validate bloom size and init the bloom effect texture
// validate bloom size and init the bloom effect texture
R_Bloom_InitEffectTexture ();
//if screensize is more than 2x the bloom effect texture, set up for stepped downsampling
// if screensize is more than 2x the bloom effect texture, set up for stepped downsampling
r_bloomdownsamplingtexture = NULL;
r_screendownsamplingtexture_size = 0;
if( r_width->integer > (BLOOM_SIZE * 2) && !r_bloom_fast_sample->value )
@ -271,7 +271,7 @@ void R_Bloom_GeneratexDiamonds( void )
pglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
GL_Enable( GL_BLEND );
//darkening passes
// darkening passes
if( r_bloom_darken->value )
{
GL_BlendFunc( GL_DST_COLOR, GL_ZERO );
@ -285,12 +285,11 @@ void R_Bloom_GeneratexDiamonds( void )
}
// bluring passes
// GL_BlendFunc(GL_ONE, GL_ONE);
GL_BlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
GL_BlendFunc( GL_ONE, GL_ONE );
if( r_bloom_diamond_size->value > 7 || r_bloom_diamond_size->value <= 3)
{
if( (int)r_bloom_diamond_size->value != 8 ) Cvar_SetValue( "r_bloom_diamond_size", 8 );
if( r_bloom_diamond_size->integer != 8 ) Cvar_SetValue( "r_bloom_diamond_size", 8 );
for( i = 0; i < r_bloom_diamond_size->value; i++ )
{
@ -305,7 +304,6 @@ void R_Bloom_GeneratexDiamonds( void )
}
else if( r_bloom_diamond_size->value > 5 )
{
if( r_bloom_diamond_size->value != 6 ) Cvar_SetValue( "r_bloom_diamond_size", 6 );
for( i = 0; i < r_bloom_diamond_size->value; i++ )
@ -356,7 +354,7 @@ void R_Bloom_DownsampleView( void )
pglDisable( GL_BLEND );
pglColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
//stepped downsample
// stepped downsample
if( r_screendownsamplingtexture_size )
{
int midsample_width = r_screendownsamplingtexture_size * sampleText_tcw;
@ -367,17 +365,17 @@ void R_Bloom_DownsampleView( void )
pglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, r_height->integer - (curView_y + curView_height), curView_width, curView_height);
R_Bloom_Quad( 0, r_height->integer-midsample_height, midsample_width, midsample_height, screenText_tcw, screenText_tch );
//now copy into Downsampling (mid-sized) texture
// now copy into Downsampling (mid-sized) texture
GL_BindTexture( r_bloomdownsamplingtexture );
pglCopyTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 0, 0, midsample_width, midsample_height );
//now draw again in bloom size
// now draw again in bloom size
pglColor4f( 0.5f, 0.5f, 0.5f, 1.0f );
R_Bloom_Quad( 0, r_height->integer-sample_height, sample_width, sample_height, sampleText_tcw, sampleText_tch );
//now blend the big screen texture into the bloom generation space (hoping it adds some blur)
// now blend the big screen texture into the bloom generation space (hoping it adds some blur)
GL_Enable( GL_BLEND );
GL_BlendFunc(GL_ONE, GL_ONE);
GL_BlendFunc( GL_ONE, GL_ONE );
pglColor4f( 0.5f, 0.5f, 0.5f, 1.0f );
GL_BindTexture( r_bloomscreentexture );
R_Bloom_Quad( 0, r_height->integer-sample_height, sample_width, sample_height, screenText_tcw, screenText_tch );

View File

@ -2200,7 +2200,7 @@ void GL_GenerateMipmaps( byte *buffer, texture_t *tex, int side, bool border )
{
pglHint( GL_GENERATE_MIPMAP_HINT_SGIS, GL_NICEST );
pglTexParameteri( image_desc.glTarget, GL_GENERATE_MIPMAP_SGIS, GL_TRUE );
if(pglGetError()) MsgDev(D_WARN, "GL_GenerateMipmaps: can't create mip levels\n");
if( pglGetError()) MsgDev( D_WARN, "GL_GenerateMipmaps: %s can't create mip levels\n", tex->name );
else return; // falltrough to software mipmap generating
}
@ -2824,6 +2824,8 @@ static void R_CreateBuiltInTextures( void )
buffer = FS_LoadInternal( "default.dds", &bufsize );
r_defaultConchars = R_FindTexture( "#default.dds", buffer, bufsize, TF_NOPICMIP|TF_STATIC, TF_LINEAR, 0 );
R_Bloom_InitTextures();
}
/*

View File

@ -702,7 +702,7 @@ void RB_CheckMeshOverflow( int numIndices, int numVertices );
void RB_RenderMesh( void );
void RB_RenderMeshes( mesh_t *meshes, int numMeshes );
void RB_DrawStretchPic( float x, float y, float w, float h, float sl, float tl, float sh, float th, ref_shader_t *shader );
void RB_DrawPauseScreen( void );
void RB_InitBackend( void );
void RB_ShutdownBackend( void );
@ -809,7 +809,7 @@ void R_AddSkyToList( void );
void R_DrawSurface( void );
void R_AddBrushModelToList( ref_entity_t *entity );
void R_AddWorldToList( void );
void R_Bloom_InitTextures( void );
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees );
void PerpendicularVector( vec3_t dst, const vec3_t src );

View File

@ -911,14 +911,12 @@ void R_RenderView( const ref_params_t *fd )
R_BloomBlend( fd );
}
void R_DrawPauseScreen( void )
// FIXME: copy screen into texRecatngle then draw as normal quad
void RB_DrawPauseScreen( void )
{
// don't apply post effects for custom window
if( r_refdef.onlyClientDraw ) return;
if( !r_pause_bw->integer )
return;
if( r_pause->modified )
{
// reset saturation value
@ -935,7 +933,7 @@ void R_DrawPauseScreen( void )
int i, s, r, g, b;
pglFlush();
pglReadPixels(0, 0, r_width->integer, r_height->integer, GL_RGB, GL_UNSIGNED_BYTE, r_framebuffer);
pglReadPixels( 0, 0, r_width->integer, r_height->integer, GL_RGB, GL_UNSIGNED_BYTE, r_framebuffer );
for (i = 0; i < r_width->integer * r_height->integer * 3; i+=3)
{
r = r_framebuffer[i+0];
@ -948,18 +946,19 @@ void R_DrawPauseScreen( void )
}
r_lefthand->modified = false;
}
// set custom orthogonal mode
pglMatrixMode(GL_PROJECTION);
pglMatrixMode( GL_PROJECTION );
pglLoadIdentity ();
pglOrtho(0, r_width->integer, 0, r_height->integer, 0, 1.0f);
pglMatrixMode(GL_MODELVIEW);
pglOrtho( 0, r_width->integer, 0, r_height->integer, 0, 1.0f );
pglMatrixMode( GL_MODELVIEW );
pglLoadIdentity ();
pglDisable(GL_TEXTURE_2D);
pglRasterPos2f(0, 0);
pglDrawPixels(r_width->integer, r_height->integer, GL_RGB, GL_UNSIGNED_BYTE, r_framebuffer);
pglDisable( GL_TEXTURE_2D );
pglRasterPos2f( 0, 0 );
pglDrawPixels( r_width->integer, r_height->integer, GL_RGB, GL_UNSIGNED_BYTE, r_framebuffer );
pglFlush();
pglEnable(GL_TEXTURE_2D);
pglEnable( GL_TEXTURE_2D );
}
/*
@ -1170,6 +1169,7 @@ static bool R_AddEntityToScene( edict_t *pRefEntity, int ed_type, float lerpfrac
if( refent->ent_type == ED_CLIENT )
refent->gaitsequence = pRefEntity->v.gaitsequence;
else refent->gaitsequence = 0;
// because entity without models never added to scene
if( !refent->ent_type )
@ -1362,7 +1362,7 @@ void R_EndFrame( void )
// Swap the buffers
if( !r_frontbuffer->integer )
{
if( !pwglSwapBuffers( glw_state.hDC ) )
if( !pwglSwapBuffers( glw_state.hDC ))
Sys_Break("R_EndFrame() - SwapBuffers() failed!\n" );
}

View File

@ -4088,11 +4088,23 @@ static ref_shader_t *R_CreateDefaultShader( const char *name, int shaderType, ui
break;
case SHADER_NOMIP:
shader->stages[0]->bundles[0]->flags |= STAGEBUNDLE_MAP;
shader->stages[0]->bundles[0]->textures[0] = R_FindTexture( shader->name, buffer, bufsize, TF_NOPICMIP, TF_LINEAR, 0 );
if( shader->name[0] == '#' )
{
// search for internal resource
size_t bufsize = 0;
byte *buffer = FS_LoadInternal( shader->name + 1, &bufsize );
shader->stages[0]->bundles[0]->textures[0] = R_FindTexture( shader->name, buffer, bufsize, TF_NOPICMIP|TF_STATIC, TF_LINEAR, 0 );
}
else shader->stages[0]->bundles[0]->textures[0] = R_FindTexture( shader->name, buffer, bufsize, TF_NOPICMIP, TF_LINEAR, 0 );
if( !shader->stages[0]->bundles[0]->textures[0] )
{
MsgDev( D_WARN, "couldn't find texture for shader '%s', using default...\n", shader->name );
shader->stages[0]->bundles[0]->textures[0] = r_defaultTexture;
if( !shader->stages[0]->bundles[0]->textures[0] )
{
MsgDev( D_WARN, "couldn't find texture for shader '%s', using default...\n", shader->name );
shader->stages[0]->bundles[0]->textures[0] = r_defaultTexture;
}
}
shader->stages[0]->rgbGen.type = RGBGEN_VERTEX;
shader->stages[0]->bundles[0]->numTextures++;

View File

@ -1061,7 +1061,7 @@ float R_StudioSetupBones( void )
Mem_Copy( q[i], q2[i], sizeof( q[i] ));
}
}
for (i = 0; i < m_pStudioHeader->numbones; i++)
{
Matrix4x4_FromOriginQuat( bonematrix, pos[i][0], pos[i][1], pos[i][2], q[i][0], q[i][1], q[i][2], q[i][3] );
@ -1122,12 +1122,15 @@ float R_StudioMergeBones ( rmodel_t *m_pSubModel )
static vec4_t q[MAXSTUDIOBONES];
static float pos[MAXSTUDIOBONES][3];
if( m_pCurrentEntity->sequence >= m_pStudioHeader->numseq ) m_pCurrentEntity->sequence = 0;
if( m_pCurrentEntity->sequence >= m_pStudioHeader->numseq ) m_pCurrentEntity->sequence = 0;
pseqdesc = (dstudioseqdesc_t *)((byte *)m_pStudioHeader + m_pStudioHeader->seqindex) + m_pCurrentEntity->sequence;
f = R_StudioEstimateFrame( pseqdesc );
//if (m_pCurrentEntity->prev.frame > f) Msg("%f %f\n", m_pCurrentEntity->prev.frame, f );
if( m_pCurrentEntity->prev.frame > f )
{
// Msg("%f %f\n", m_pCurrentEntity->prev.frame, f );
}
panim = R_StudioGetAnim( m_pSubModel, pseqdesc );
R_StudioCalcRotations( pos, q, pseqdesc, panim, f );

View File

@ -345,7 +345,7 @@ void CBaseBrush::Precache( void )
break;
case None:
default:
if(pev->health > 0)//mapmaker forget set material ?
if( pev->health > 0 ) // mapmaker forget set material ?
{
DevMsg("\n======/Xash SmartFiled System/======\n\n");
DevMsg("Please set material for %s,\n", STRING(pev->classname));
@ -355,9 +355,10 @@ void CBaseBrush::Precache( void )
}
MaterialSoundPrecache( m_Material );
if(IsBreakable())
if(IsBreakable( ))
{
m_idShard = UTIL_PrecacheModel( m_iGibModel, (char*)pGibName ); // precache model
if( !FStringNull( m_iGibModel ) || !FStringNull( pGibName ))
m_idShard = UTIL_PrecacheModel( m_iGibModel, pGibName ); // precache model
if( m_iSpawnObject ) UTIL_PrecacheEntity( m_iSpawnObject );
}
UTIL_PrecacheModel( pev->model ); // can use *.mdl for any brush
@ -502,11 +503,11 @@ void CBaseBrush::Die( void )
int pitch, soundbits = NULL;
float fvol;
pitch = 95 + RANDOM_LONG(0, 29);
if(pitch > 97 && pitch < 103)pitch = 100;
pitch = 95 + RANDOM_LONG( 0, 29 );
if( pitch > 97 && pitch < 103 ) pitch = PITCH_NORM;
fvol = RANDOM_FLOAT(0.85, 1.0) + (abs(pev->health) / 100.0);
if(fvol > 1.0)fvol = 1.0;
fvol = RANDOM_FLOAT(0.85, 1.0) + (abs( pev->health ) / 100.0);
if( fvol > 1.0 ) fvol = 1.0;
switch (m_Material)
{

View File

@ -226,21 +226,21 @@ void CBaseEntity :: SetParent( CBaseEntity* pParent, int m_iAttachment )
//=======================================================================
void CBaseEntity :: ResetParent( void )
{
if(pFlags & PF_MOVENONE)//this entity was static e.g. func_wall
if( pFlags & PF_MOVENONE ) // this entity was static e.g. func_wall
{
ClearBits (pFlags, PF_MOVENONE);
ClearBits( pFlags, PF_MOVENONE );
pev->movetype = MOVETYPE_NONE;
}
if ( !g_pWorld )return; //???
if( !g_pWorld ) return; //???
CBaseEntity* pTemp;
for (pTemp = g_pWorld; pTemp->m_pLinkList != NULL; pTemp = pTemp->m_pLinkList)
for( pTemp = g_pWorld; pTemp->m_pLinkList != NULL; pTemp = pTemp->m_pLinkList )
{
if (this == pTemp->m_pLinkList)
if( this == pTemp->m_pLinkList )
{
pTemp->m_pLinkList = this->m_pLinkList;//save pointer
pTemp->m_pLinkList = this->m_pLinkList; // save pointer
this->m_pLinkList = NULL;
break;
}
@ -680,38 +680,8 @@ CBaseEntity * CBaseEntity::Create( char *szName, const Vector &vecOrigin, const
int istr = ALLOC_STRING(szName);
CBaseEntity *pEntity;
// check for virtual entities
if( FUNCTION_FROM_NAME( szName ) != 0 )
{
pent = CREATE_NAMED_ENTITY( istr );
if ( FNullEnt( pent )) return NULL;
}
else if(!strncmp( szName, "weapon_", 7))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("weapon_generic"));
if ( FNullEnt( pent )) return NULL; // this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if(!strncmp( szName, "item_", 5))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return NULL; // this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if(!strncmp( szName, "ammo_", 5))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return NULL; // this never gonna called anymore. just in case
pent->v.netname = istr;
}
else //unknown error
{
Msg("can't create %s\n", szName );
return NULL;
}
pent = CREATE_NAMED_ENTITY( istr );
if( FNullEnt( pent )) return NULL;
pEntity = Instance( pent );
pEntity->pev->owner = pentOwner;
@ -728,46 +698,16 @@ CBaseEntity * CBaseEntity::CreateGib( char *szName, char *szModel )
string_t model = MAKE_STRING( szModel );
int istr = ALLOC_STRING(szName);
//check for virtual entities
if( FUNCTION_FROM_NAME( szName ))
{
pent = CREATE_NAMED_ENTITY( istr );
if ( FNullEnt( pent )) return NULL;
}
else if(!strncmp( szName, "weapon_", 7))
{
// may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_generic" ));
if ( FNullEnt( pent )) return NULL; //this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if(!strncmp( szName, "item_", 5))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return NULL;//this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if(!strncmp( szName, "ammo_", 5))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return NULL;//this never gonna called anymore. just in case
pent->v.netname = istr;
}
else //unknown error
{
Msg("can't create %s\n", szName );
return NULL;
}
pent = CREATE_NAMED_ENTITY( istr );
if( FNullEnt( pent )) return NULL;
pEntity = Instance( pent );
DispatchSpawn( pEntity->edict() );
if(!FStringNull( model ))
if( !FStringNull( model ))
{
UTIL_SetModel( pEntity->edict(), szModel );
Msg("szModel %s\n", szModel );
Msg( "szModel %s\n", szModel );
}
return pEntity;
}
@ -791,7 +731,7 @@ void CBaseEntity::UpdateOnRemove( void )
WorldGraph.m_pLinkPool [ i ].m_pLinkEnt = NULL;
}
}
if ( pev->globalname ) gGlobalState.EntitySetState( pev->globalname, GLOBAL_DEAD );
if( pev->globalname ) gGlobalState.EntitySetState( pev->globalname, GLOBAL_DEAD );
}
//=======================================================================

View File

@ -51,18 +51,19 @@ void CFuncWall :: Spawn( void )
pev->solid = SOLID_BSP;
pev->movetype = MOVETYPE_PUSH;
}
UTIL_SetModel( ENT(pev), pev->model );
UTIL_SetModel( ENT( pev ), pev->model );
//Smart field system ®
if (!FStringNull(pev->angles) && FStringNull(pev->origin))
// smart field system ®
if( !FStringNull( pev->angles ) && FStringNull( pev->origin ))
{
pev->angles = g_vecZero;
DevMsg( "\n======/Xash SmartFiled System/======\n\n");
DevMsg( "Create brush origin for %s,\nif we want correctly set angles\n", STRING(pev->classname));
SHIFT;
ALERT( at_console, "\n======/Xash SmartFiled System/======\n\n");
ALERT( at_console, "Create brush origin for %s,\n", STRING( pev->classname ));
ALERT( at_console, "if we want correctly set angles\n\n" );
}
pev->angles[1] = 0 - pev->angles[1];
if(pev->spawnflags & SF_START_ON) TurnOff();
if( pev->spawnflags & SF_START_ON ) TurnOff();
else TurnOn();
}

View File

@ -2310,15 +2310,14 @@ void CEnvBeam::Spawn( void )
if( FStringNull( pev->netname ))
{
ALERT( at_warning, "%s end entity not found!\n", STRING(pev->classname) );
SetThink( Remove );
SetNextThink( 0 );
ALERT( at_warning, "%s end entity not found!\n", STRING( pev->classname ));
UTIL_Remove( this );
return;
}
pev->dmgtime = gpGlobals->time;
if (pev->rendercolor == g_vecZero) pev->rendercolor = Vector(255, 255, 255);
if(pev->spawnflags & SF_START_ON) Use( this, this, USE_ON, 0 );
if( pev->rendercolor == g_vecZero ) pev->rendercolor = Vector( 255, 255, 255 );
if( pev->spawnflags & SF_START_ON ) Use( this, this, USE_ON, 0 );
}
void CEnvBeam::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )

View File

@ -151,17 +151,13 @@ CBaseEntity* CBasePlayerWeapon::Respawn( void )
// make a copy of this weapon that is invisible and inaccessible to players (no touch function). The weapon spawn/respawn code
// will decide when to make the weapon visible and touchable.
CBaseEntity *pNewWeapon = NULL;
edict_t *pent;
edict_t *pent;
pent = CREATE_NAMED_ENTITY( pev->classname );
if ( FNullEnt( pent ) )
{
// it's a custom weapon!
pent = CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_generic" ));
}
if( FNullEnt( pent )) return NULL;
pNewWeapon = Instance( pent );
if ( pNewWeapon )
if( pNewWeapon )
{
pNewWeapon->pev->owner = pev->owner;
pNewWeapon->pev->origin = g_pGameRules->VecWeaponRespawnSpot( this );
@ -172,13 +168,13 @@ CBaseEntity* CBasePlayerWeapon::Respawn( void )
pNewWeapon->SetTouch( NULL );// no touch
pNewWeapon->SetThink( AttemptToMaterialize );
DROP_TO_FLOOR ( ENT(pev) );
DROP_TO_FLOOR ( ENT( pev ));
// not a typo! We want to know when the weapon the player just picked up should respawn! This new entity we created is the replacement,
// but when it should respawn is based on conditions belonging to the weapon that was taken.
pNewWeapon->AbsoluteNextThink( g_pGameRules->FlWeaponRespawnTime( this ) );
pNewWeapon->AbsoluteNextThink( g_pGameRules->FlWeaponRespawnTime( this ));
}
else Msg("Respawn failed to create %s!\n", STRING( pev->classname ) );
else ALERT( at_error, "failed to respawn %s!\n", STRING( pev->classname ));
return pNewWeapon;
}
@ -238,14 +234,15 @@ BOOL CBasePlayerWeapon :: CanDeploy( void )
void CBasePlayerWeapon :: Precache( void )
{
ItemInfo II;
if(GetItemInfo(&II))
if( GetItemInfo( &II ))
{
ItemInfoArray[II.iId] = II;
if( II.iszAmmo1 ) AddAmmoName( II.iszAmmo1 );
if( II.iszAmmo2 ) AddAmmoName( II.iszAmmo2 );
memset( &II, 0, sizeof II );
memset( &II, 0, sizeof( II ));
UTIL_PrecacheModel( iViewModel() );
UTIL_PrecacheModel( iWorldModel() );
@ -255,12 +252,14 @@ void CBasePlayerWeapon :: Precache( void )
//=========================================================
// Get Weapon Info from Script File
//=========================================================
int CBasePlayerWeapon :: GetItemInfo(ItemInfo *p)
int CBasePlayerWeapon :: GetItemInfo( ItemInfo *p )
{
if (FStringNull(pev->netname)) pev->netname = pev->classname;
if(ParseWeaponFile( p, STRING(pev->netname)))
if( FStringNull( pev->netname ))
pev->netname = pev->classname;
if( ParseWeaponFile( p, STRING( pev->netname )))
{
//make unical weapon number
// make unical weapon number
GenerateID();
p->iId = m_iId;
return 1;
@ -274,6 +273,10 @@ int CBasePlayerWeapon :: GetItemInfo(ItemInfo *p)
void CBasePlayerWeapon :: Spawn( void )
{
Precache();
// don't let killed entity continue spawning
if( pev->flags & FL_KILLME )
return;
pev->movetype = MOVETYPE_TOSS;
pev->solid = SOLID_BBOX;
@ -303,7 +306,7 @@ void CBasePlayerWeapon :: GenerateID( void )
{
for( int i = 0; i < GlobalID; i++ )
{
if( FStrEq( STRING( pev->netname), NameItems[i] ))
if( FStrEq( STRING( pev->netname ), NameItems[i] ))
{
m_iId = ID[i];
return;
@ -389,7 +392,7 @@ int CBasePlayerWeapon :: ParseWeaponFile( ItemInfo *II, const char *filename )
if( !pfile )
{
Msg( "Warning: Weapon info file for %s not found!\n", STRING(pev->netname) );
ALERT( at_warning, "Weapon info file for %s not found!\n", STRING( pev->netname ));
COM_FreeFile( pfile );
UTIL_Remove( this );
return 0;
@ -398,16 +401,16 @@ int CBasePlayerWeapon :: ParseWeaponFile( ItemInfo *II, const char *filename )
{
II->iszName = pev->netname;
DevMsg("Parse %s.txt\n", STRING( II->iszName ));
ALERT( at_aiconsole, "\nparse %s.txt\n", STRING( II->iszName ));
// parses the type, moves the file pointer
iResult = ParseWeaponData( II, pfile );
DevMsg("Parsing: WeaponData{} %s\n", iResult ? "OK" : "ERROR" );
ALERT( at_aiconsole, "Parsing: WeaponData{} %s\n", iResult ? "^3OK" : "^1ERROR" );
iResult = ParsePrimaryAttack( II, pfile );
DevMsg("Parsing: PrimaryAttack{} %s\n", iResult ? "OK" : "ERROR" );
ALERT( at_aiconsole, "Parsing: PrimaryAttack{} %s\n", iResult ? "^3OK" : "^1ERROR" );
iResult = ParseSecondaryAttack( II, pfile );
DevMsg("Parsing: SecondaryAttack{} %s\n", iResult ? "OK" : "ERROR" );
ALERT( at_aiconsole, "Parsing: SecondaryAttack{} %s\n", iResult ? "^3OK" : "^1ERROR" );
iResult = ParseSoundData( II, pfile );
DevMsg("Parsing: SoundData{} %s\n", iResult ? "OK" : "ERROR" );
ALERT( at_aiconsole, "Parsing: SoundData{} %s\n", iResult ? "^3OK" : "^1ERROR" );
COM_FreeFile( pfile );
return 1;
}

View File

@ -12,6 +12,8 @@
#include "gamerules.h"
#include "game.h"
#include "defaults.h"
#include "baseitem.h"
#include "baseweapon.h"
void EntvarsKeyvalue( entvars_t *pev, KeyValueData *pkvd );
@ -137,7 +139,25 @@ int DispatchSpawn( edict_t *pent )
int DispatchCreate( edict_t *pent, const char *szName )
{
return -1; // -1 = failed, 0 = done
if( FNullEnt( pent ) || FStringNull( szName ))
return -1;
int istr = ALLOC_STRING( szName );
// handle virtual entities here
if( !strncmp( szName, "weapon_", 7 ))
{
CBasePlayerWeapon *pWeapon = GetClassPtr((CBasePlayerWeapon *)VARS( pent ));
pWeapon->pev->netname = istr;
return 0;
}
else if( !strncmp( szName, "item_", 5 ) || !strncmp( szName, "ammo_", 5 ))
{
CItem *pItem = GetClassPtr((CItem *)VARS( pent ));
pItem->pev->netname = istr;
return 0;
}
return -1;
}
void DispatchKeyValue( edict_t *pentKeyvalue, KeyValueData *pkvd )

View File

@ -41,9 +41,6 @@ typedef int BOOL;
#include <stdlib.h>
#include <math.h>
// Header file containing definition of globalvars_t and entvars_t
typedef float vec_t; // needed before including progdefs.h
inline unsigned long& FloatBits( vec_t& f ) { return *reinterpret_cast<unsigned long*>(&f); }
inline unsigned long const& FloatBits( vec_t const& f ) { return *reinterpret_cast<unsigned long const*>(&f); }
inline vec_t BitsToFloat( unsigned long i ) { return *reinterpret_cast<vec_t*>(&i); }

View File

@ -1,3 +0,0 @@
#pragma once
// attempt to be remove

View File

@ -1145,28 +1145,12 @@ void UTIL_PrecacheEntity( const char *szClassname )
edict_t *pent;
int istr = ALLOC_STRING( szClassname );
// check for virtual entities
if( FUNCTION_FROM_NAME( szClassname ))
{
pent = CREATE_NAMED_ENTITY( istr );
if( FNullEnt( pent )) return;
}
else if( !strncmp( szClassname, "weapon_", 7 ))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY( MAKE_STRING( "weapon_generic" ));
if ( FNullEnt( pent )) return; //this never gonna called anymore. just in case
pent->v.netname = istr;
}
else // unknown error
{
ALERT( at_error, "can't create %s\n", szClassname );
return;
}
pent = CREATE_NAMED_ENTITY( istr );
if( FNullEnt( pent )) return;
CBaseEntity *pEntity = CBaseEntity::Instance( VARS( pent ));
if( pEntity ) pEntity->Precache();
REMOVE_ENTITY(pent);
REMOVE_ENTITY( pent );
}
//========================================================================
@ -1390,84 +1374,82 @@ BOOL UTIL_EntIsVisible( entvars_t* pev, entvars_t* pevTarget)
//========================================================================
void UTIL_PrecacheResourse( void )
{
//constant precaches
// null and errors stuff
g_sModelIndexErrorModel = UTIL_PrecacheModel("models/common/error.mdl");//last crash point
g_sModelIndexErrorSprite = UTIL_PrecacheModel("sprites/error.spr");
g_sModelIndexNullModel = UTIL_PrecacheModel("models/common/null.mdl");
g_sModelIndexNullSprite = UTIL_PrecacheModel("sprites/null.spr");
//null and errors stuff
g_sModelIndexErrorModel = UTIL_PrecacheModel("models/common/error.mdl");//last crash point
g_sModelIndexErrorSprite = UTIL_PrecacheModel("sprites/error.spr");
g_sModelIndexNullModel = UTIL_PrecacheModel("models/common/null.mdl");
g_sModelIndexNullSprite = UTIL_PrecacheModel("sprites/null.spr");
//global sprites and models
g_sModelIndexFireball = UTIL_PrecacheModel ("sprites/explode.spr");// fireball
g_sModelIndexWExplosion = UTIL_PrecacheModel ("sprites/wxplode.spr");// underwater fireball
g_sModelIndexSmoke = UTIL_PrecacheModel ("sprites/steam1.spr");// smoke
g_sModelIndexBubbles = UTIL_PrecacheModel ("sprites/bubble.spr");//bubbles
g_sModelIndexLaser = UTIL_PrecacheModel( "sprites/laserbeam.spr" );
g_sModelIndexBloodSpray = UTIL_PrecacheModel ("sprites/bloodspray.spr");
g_sModelIndexBloodDrop = UTIL_PrecacheModel ("sprites/blood.spr");
// global sprites and models
g_sModelIndexFireball = UTIL_PrecacheModel ("sprites/explode.spr");// fireball
g_sModelIndexWExplosion = UTIL_PrecacheModel ("sprites/wxplode.spr");// underwater fireball
g_sModelIndexSmoke = UTIL_PrecacheModel ("sprites/steam1.spr");// smoke
g_sModelIndexBubbles = UTIL_PrecacheModel ("sprites/bubble.spr");//bubbles
g_sModelIndexLaser = UTIL_PrecacheModel( "sprites/laserbeam.spr" );
g_sModelIndexBloodSpray = UTIL_PrecacheModel ("sprites/bloodspray.spr");
g_sModelIndexBloodDrop = UTIL_PrecacheModel ("sprites/blood.spr");
//player items and weapons
memset( CBasePlayerWeapon::ItemInfoArray, 0, sizeof(CBasePlayerWeapon::ItemInfoArray) );
memset( CBasePlayerWeapon::AmmoInfoArray, 0, sizeof(CBasePlayerWeapon::AmmoInfoArray) );
// player items and weapons
memset( CBasePlayerWeapon::ItemInfoArray, 0, sizeof( CBasePlayerWeapon::ItemInfoArray ));
memset( CBasePlayerWeapon::AmmoInfoArray, 0, sizeof( CBasePlayerWeapon::AmmoInfoArray ));
giAmmoIndex = 0;
//custom precaches
// custom precaches
char token[256];
char *pfile = (char *)LOAD_FILE( "scripts/precache.txt", NULL );
if(pfile)
if( pfile )
{
while ( pfile )
while( pfile )
{
if ( !stricmp( token, "entity" ))
if( !stricmp( token, "entity" ))
{
pfile = COM_ParseFile(pfile, token);
UTIL_PrecacheEntity( ALLOC_STRING(token) );
pfile = COM_ParseFile( pfile, token );
UTIL_PrecacheEntity( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "dmentity" ))
else if( !stricmp( token, "dmentity" ))
{
pfile = COM_ParseFile(pfile, token);
pfile = COM_ParseFile( pfile, token );
if( IsDeatchmatch()) UTIL_PrecacheEntity( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "model" ))
else if( !stricmp( token, "model" ))
{
pfile = COM_ParseFile(pfile, token);
UTIL_PrecacheModel( ALLOC_STRING(token) );
pfile = COM_ParseFile( pfile, token );
UTIL_PrecacheModel( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "dmmodel" ))
else if( !stricmp( token, "dmmodel" ))
{
pfile = COM_ParseFile(pfile, token);
pfile = COM_ParseFile( pfile, token );
if( IsDeatchmatch()) UTIL_PrecacheModel( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "sound" ))
else if( !stricmp( token, "sound" ))
{
pfile = COM_ParseFile(pfile, token);
pfile = COM_ParseFile( pfile, token );
UTIL_PrecacheSound( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "dmsound" ))
else if( !stricmp( token, "dmsound" ))
{
pfile = COM_ParseFile( pfile, token );
if( IsDeatchmatch()) UTIL_PrecacheSound( ALLOC_STRING( token ));
}
else if ( !stricmp( token, "aurora" ))
else if( !stricmp( token, "aurora" ))
{
pfile = COM_ParseFile(pfile, token);
pfile = COM_ParseFile( pfile, token );
UTIL_PrecacheAurora( ALLOC_STRING( token ));
}
pfile = COM_ParseFile(pfile, token);
pfile = COM_ParseFile( pfile, token );
}
COM_FreeFile(pfile);
COM_FreeFile( pfile );
}
}
BOOL IsMultiplayer ( void )
BOOL IsMultiplayer( void )
{
if( g_pGameRules->IsMultiplayer() )
if( g_pGameRules->IsMultiplayer())
return TRUE;
return FALSE;
}
BOOL IsDeatchmatch ( void )
BOOL IsDeatchmatch( void )
{
if( g_pGameRules->IsDeathmatch() )
return TRUE;

View File

@ -211,8 +211,9 @@ extern BOOL FNullEnt( CBaseEntity *ent );
// g-cont. radnomize hull nullity yep!
// and Doom3 colloisation
#define iStringNull 0
inline BOOL FStringNull(int iString) { return iString == iStringNull; }
inline BOOL FStringNull(Vector vString) { return vString == Vector(0,0,0); }
inline BOOL FStringNull( int iString ) { return iString == iStringNull; }
inline BOOL FStringNull( const char *szString ) { return (szString && *szString) ? FALSE : TRUE; };
inline BOOL FStringNull( Vector vString ) { return vString == Vector( 0, 0, 0); }
#define cchMapNameMost 32

View File

@ -3693,52 +3693,23 @@ void CBloodSplat::Spray ( void )
void CBasePlayer::GiveNamedItem( const char *pszName )
{
edict_t *pent;
int istr = MAKE_STRING(pszName);
int istr = MAKE_STRING( pszName );
if( FUNCTION_FROM_NAME( pszName ))
{
pent = CREATE_NAMED_ENTITY(istr);
if ( FNullEnt( pent )) return;
}
else if( !strncmp( pszName, "weapon_", 7 ))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("weapon_generic"));
if ( FNullEnt( pent )) return;//this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if( !strncmp( pszName, "item_", 5 ))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return;//this never gonna called anymore. just in case
pent->v.netname = istr;
}
else if(!strncmp( pszName, "ammo_", 5))
{
//may be this a weapon_generic entity?
pent = CREATE_NAMED_ENTITY(MAKE_STRING("item_generic"));
if ( FNullEnt( pent )) return;//this never gonna called anymore. just in case
pent->v.netname = istr;
}
else //unknown error
{
Msg("can't create %s\n", pszName );
return;
}
pent = CREATE_NAMED_ENTITY( istr );
if( FNullEnt( pent )) return;
DevMsg("Give %s\n", STRING(pent->v.classname));
ALERT( at_aiconsole, "Give %s\n", STRING( pent->v.classname ));
VARS( pent )->origin = pev->origin;
pent->v.spawnflags |= SF_NORESPAWN;
DispatchSpawn( pent );
DispatchTouch( pent, ENT( pev ) );
DispatchTouch( pent, ENT( pev ));
}
BOOL CBasePlayer :: FlashlightIsOn( void )
{
return FBitSet(pev->effects, EF_DIMLIGHT);
return FBitSet( pev->effects, EF_DIMLIGHT );
}

View File

@ -55,7 +55,8 @@ Beta 13.12.08
24.ed_fields flags OK
25.install ALL missing models & sounds! OK
26.fixangle doesn't working correctly
27.fixup viewmodel drawing
27.fixup viewmodel drawing OK
28.fixing r_pause_effect
Список доступных рендереров: Что в них интересного

View File

@ -256,8 +256,8 @@ opcode_t pr_opcodes[] =
{"<<", "LSHIFT_I", 3, ASSOC_LEFT, &type_integer, &type_integer, &type_integer},
{">>", "RSHIFT_F", 3, ASSOC_LEFT, &type_float, &type_float, &type_float},
{"<<", "LSHIFT_F", 3, ASSOC_LEFT, &type_float, &type_float, &type_float},
{"%", "OP_MODULO_I", 3, ASSOC_LEFT, &type_integer, &type_integer, &type_integer},
{"%", "OP_MODULO_F", 3, ASSOC_LEFT, &type_float, &type_float, &type_float},
{"%", "MODULO_I", 3, ASSOC_LEFT, &type_integer, &type_integer, &type_integer},
{"%", "MODULO_F", 3, ASSOC_LEFT, &type_float, &type_float, &type_float},
{"<ARRAY>", "GET_POINTER", -1, ASSOC_LEFT, &type_float, &type_integer, &type_pointer},
{"<ARRAY>", "ARRAY_OFS", -1, ASSOC_LEFT, &type_pointer, &type_integer, &type_pointer},
{"=", "LOADA_F", 6, ASSOC_LEFT, &type_float, &type_integer, &type_float},

View File

@ -159,7 +159,51 @@ char *prvm_opnames[] =
"^6SWITCH_FNC",
"^6CASE",
"^6CASERANGE"
"^6CASERANGE",
"STORE_I",
"STORE_IF",
"STORE_FI",
"ADD_I",
"ADD_FI",
"ADD_IF",
"SUB_I",
"SUB_FI",
"SUB_IF",
"CONV_ITOF",
"CONV_FTOI",
"CP_ITOF",
"CP_FTOI",
"LOAD_I",
"STOREP_I",
"STOREP_IF",
"STOREP_FI",
"BITAND_I",
"BITOR_I",
"MUL_I",
"DIV_I",
"EQ_I",
"NE_I",
"IFNOTS",
"IFS",
"NOT_I",
"DIV_VF",
"POWER_I",
"RSHIFT_I",
"LSHIFT_I",
"RSHIFT_F",
"LSHIFT_F",
"MODULO_I",
"MODULO_F",
};
char *PRVM_GlobalString (int ofs);
@ -179,22 +223,18 @@ void PRVM_PrintStatement (dstatement_t *s)
size_t i;
int opnum = (int)(s - vm.prog->statements);
Msg("s%i: ", opnum);
Msg( "s%i: ", opnum );
if( vm.prog->statement_linenums )
Msg( "%s:%i: ", PRVM_GetString( vm.prog->xfunction->s_file ), vm.prog->statement_linenums[ opnum ] );
if (prvm_statementprofiling->value)
Msg("%7.0f ", vm.prog->statement_profile[s - vm.prog->statements]);
if( prvm_statementprofiling->integer )
Msg( "%7.0f ", vm.prog->statement_profile[s - vm.prog->statements] );
if ( (unsigned)s->op < sizeof(prvm_opnames)/sizeof(prvm_opnames[0]))
if((uint)s->op < sizeof( prvm_opnames ) / sizeof( prvm_opnames[0] ))
{
Msg("%s ", prvm_opnames[s->op]);
i = strlen(prvm_opnames[s->op]);
// don't count a preceding color tag when padding the name
if (prvm_opnames[s->op][0] == STRING_COLOR_TAG)
i -= 2;
for ( ; i<10 ; i++)
Msg(" ");
Msg( "%s ", prvm_opnames[s->op] );
i = com.cstrlen( prvm_opnames[s->op] );
for( ; i < 10; i++ ) Msg(" ");
}
if (s->op == OP_IF || s->op == OP_IFNOT)
Msg("%s, s%i",PRVM_GlobalString((unsigned short) s->a),(signed short)s->b + opnum);

View File

@ -253,17 +253,14 @@ void PRVM_Init( int argc, char **argv )
size_t size;
byte *image;
if( !FS_FileExists( "bin/client.dll" ) || !FS_FileExists( "bin/server.dll" ))
{
image = FS_LoadInternal( "progs.pk3", &size );
if( size ) FS_WriteFile( "progs.pk3", image, size );
Cmd_ExecuteString( "fs_rescan\n" );
}
// dump internal copies of progs into hdd if missing
if(!FS_FileExists(va("%s/server.dat", GI->vprogs_dir)))
{
image = FS_LoadInternal( "server.dat", &size );
if( size ) FS_WriteFile(va("%s/server.dat", GI->vprogs_dir), image, size );
}
if(!FS_FileExists(va("%s/client.dat", GI->vprogs_dir)))
{
image = FS_LoadInternal( "client.dat", &size );
if( size ) FS_WriteFile(va("%s/client.dat", GI->vprogs_dir), image, size );
}
if(!FS_FileExists(va("%s/uimenu.dat", GI->vprogs_dir)))
{
image = FS_LoadInternal( "uimenu.dat", &size );

View File

@ -463,8 +463,11 @@ void ParseEntities( void )
{
num_entities = 0;
mapfile = Com_OpenScript( "entities", dentdata, entdatasize );
if( mapfile ) while( ParseEntity( ));
Com_CloseScript( mapfile );
if( mapfile )
{
while( ParseEntity( ));
Com_CloseScript( mapfile );
}
}
/*
@ -480,7 +483,6 @@ void UnparseEntities( void )
char *buf, *end;
char line[2048];
char key[MAX_KEY], value[MAX_VALUE];
char *value2;
int i;
buf = dentdata;
@ -491,23 +493,12 @@ void UnparseEntities( void )
{
ep = entities[i].epairs;
if( !ep ) continue; // ent got removed
// certain entities get stripped from bsp file */
value2 = ValueForKey( &entities[i], "classname" );
com.strcat( end, "{\n" );
end += 2;
// always place "classname" at first
StripTrailing( value2 );
com.snprintf( line, 2048, "\"classname\" \"%s\"\n", value2 );
com.strcat( end, line );
end += com.strlen( line );
for( ep = entities[i].epairs; ep; ep = ep->next )
{
if( !com.stricmp( ep->key, "classname" ))
continue; // already stored
com.strncpy( key, ep->key, MAX_KEY );
StripTrailing( key );
com.strncpy( value, ep->value, MAX_VALUE );

View File

@ -230,32 +230,31 @@ int PlaneFromPoints( vec_t *p0, vec_t *p1, vec_t *p2 )
return FindFloatPlane( normal, dist );
}
void PrintContents( int cnt )
void CntString( int cnt, char *contents )
{
Msg("Contents:" );
contents[0] = '\0';
if( cnt & CONTENTS_SOLID ) Msg( "solid " );
if( cnt & CONTENTS_WINDOW) Msg( "window " );
if( cnt & CONTENTS_AUX ) Msg( "aux " );
if( cnt & CONTENTS_LAVA) Msg( "lava " );
if( cnt & CONTENTS_SLIME) Msg( "slime " );
if( cnt & CONTENTS_WATER) Msg( "water " );
if( cnt & CONTENTS_SKY) Msg( "sky " );
if( cnt & CONTENTS_SOLID ) com.strcat( contents, "solid " );
if( cnt & CONTENTS_WINDOW) com.strcat( contents, "window " );
if( cnt & CONTENTS_AUX ) com.strcat( contents, "aux " );
if( cnt & CONTENTS_LAVA) com.strcat( contents, "lava " );
if( cnt & CONTENTS_SLIME) com.strcat( contents, "slime " );
if( cnt & CONTENTS_WATER) com.strcat( contents, "water " );
if( cnt & CONTENTS_SKY) com.strcat( contents, "sky " );
if( cnt & CONTENTS_MIST) Msg( "mist " );
if( cnt & CONTENTS_FOG) Msg( "fog " );
if( cnt & CONTENTS_AREAPORTAL) Msg( "areaportal " );
if( cnt & CONTENTS_PLAYERCLIP) Msg( "playerclip " );
if( cnt & CONTENTS_MONSTERCLIP) Msg(" monsterclip " );
if( cnt & CONTENTS_CLIP) Msg( "clip " );
if( cnt & CONTENTS_ORIGIN) Msg(" origin" );
if( cnt & CONTENTS_MIST) com.strcat( contents, "mist " );
if( cnt & CONTENTS_FOG) com.strcat( contents, "fog " );
if( cnt & CONTENTS_AREAPORTAL) com.strcat( contents, "areaportal " );
if( cnt & CONTENTS_PLAYERCLIP) com.strcat( contents, "playerclip " );
if( cnt & CONTENTS_MONSTERCLIP) com.strcat( contents, " monsterclip " );
if( cnt & CONTENTS_CLIP) com.strcat( contents, "clip " );
if( cnt & CONTENTS_ORIGIN) com.strcat( contents, " origin" );
if( cnt & CONTENTS_BODY) Sys_Error("\nCONTENTS_BODY detected\n" );
if( cnt & CONTENTS_CORPSE) Sys_Error("\nCONTENTS_CORPSE detected\n" );
if( cnt & CONTENTS_DETAIL) Msg(" detail " );
if( cnt & CONTENTS_TRANSLUCENT) Msg( "translucent " );
if( cnt & CONTENTS_LADDER) Msg( "ladder " );
if( cnt & CONTENTS_TRIGGER) Msg( "trigger " );
Msg( "\n" );
if( cnt & CONTENTS_DETAIL) com.strcat( contents, " detail " );
if( cnt & CONTENTS_TRANSLUCENT) com.strcat( contents, "translucent " );
if( cnt & CONTENTS_LADDER) com.strcat( contents, "ladder " );
if( cnt & CONTENTS_TRIGGER) com.strcat( contents, "trigger " );
}
//====================================================================
@ -268,6 +267,7 @@ int BrushContents( mapbrush_t *b )
{
int contents;
int i, trans;
string cnt1, cnt2;
side_t *s;
s = &b->original_sides[0];
@ -279,10 +279,13 @@ int BrushContents( mapbrush_t *b )
{
s = &b->original_sides[i];
trans |= dshaders[texinfo[s->texinfo].shadernum].surfaceFlags;
if( s->contents != contents && !( trans & SURF_NODRAW ))
if(( s->contents != contents ) && ( trans & SURF_NODRAW ) == 0 )
{
CntString( s->contents, cnt1 );
CntString( contents, cnt2 );
// nodraw textures are ignored
MsgDev( D_WARN, "Entity %i, Brush %i: mixed face contents\n", b->entitynum, b->brushnum );
MsgDev( D_WARN, "Entity %i, Brush %i: mixed face contents ( %s) and ( %s)\n", b->entitynum, b->brushnum, cnt1, cnt2 );
break;
}
}
@ -699,7 +702,7 @@ void ParseBrush( bsp_entity_t *mapent )
planenum = PlaneFromPoints( planepts[0], planepts[1], planepts[2] );
if( planenum == -1 )
{
Msg( "Entity %i, Brush %i: plane with no normal\n", b->entitynum, b->brushnum );
MsgDev( D_ERROR, "Entity %i, Brush %i: plane with no normal\n", b->entitynum, b->brushnum );
continue;
}
@ -778,7 +781,7 @@ void ParseBrush( bsp_entity_t *mapent )
b->contents = BrushContents( b );
// create windings for sides and bounds for brush
if(!MakeBrushWindings( b ))
if( !MakeBrushWindings( b ))
{
// brush outside of the world, remove
b->numsides = 0;

View File

@ -173,24 +173,22 @@ winding_t *BaseWindingForPlane (vec3_t normal, vec_t dist)
vec3_t org, vright, vup;
winding_t *w;
// find the major axis
// find the major axis
max = -BOGUS_RANGE;
x = -1;
for (i=0 ; i<3; i++)
for( i = 0; i < 3; i++ )
{
v = fabs(normal[i]);
if (v > max)
v = fabs( normal[i] );
if( v > max )
{
x = i;
max = v;
}
}
if (x==-1)
Sys_Error ("BaseWindingForPlane: no axis found");
if( x == -1 ) Sys_Error ("BaseWindingForPlane: no axis found");
VectorCopy (vec3_origin, vup);
switch (x)
VectorClear( vup );
switch( x )
{
case 0:
case 1:
@ -201,31 +199,28 @@ winding_t *BaseWindingForPlane (vec3_t normal, vec_t dist)
break;
}
v = DotProduct (vup, normal);
VectorMA (vup, -v, normal, vup);
VectorNormalize (vup);
VectorScale (normal, dist, org);
CrossProduct (vup, normal, vright);
VectorScale (vup, BOGUS_RANGE, vup);
VectorScale (vright, BOGUS_RANGE, vright);
v = DotProduct( vup, normal );
VectorMA( vup, -v, normal, vup );
VectorNormalize( vup );
VectorScale( normal, dist, org );
CrossProduct( vup, normal, vright );
VectorScale( vup, BOGUS_RANGE, vup );
VectorScale( vright, BOGUS_RANGE, vright );
// project a really big axis aligned box onto the plane
w = AllocWinding (4);
// project a really big axis aligned box onto the plane
w = AllocWinding( 4 );
VectorSubtract (org, vright, w->p[0]);
VectorAdd (w->p[0], vup, w->p[0]);
VectorSubtract( org, vright, w->p[0] );
VectorAdd( w->p[0], vup, w->p[0] );
VectorAdd (org, vright, w->p[1]);
VectorAdd (w->p[1], vup, w->p[1]);
VectorAdd( org, vright, w->p[1] );
VectorAdd( w->p[1], vup, w->p[1] );
VectorAdd (org, vright, w->p[2]);
VectorSubtract (w->p[2], vup, w->p[2]);
VectorAdd( org, vright, w->p[2] );
VectorSubtract( w->p[2], vup, w->p[2] );
VectorSubtract (org, vright, w->p[3]);
VectorSubtract (w->p[3], vup, w->p[3]);
VectorSubtract( org, vright, w->p[3] );
VectorSubtract( w->p[3], vup, w->p[3] );
w->numpoints = 4;
@ -389,29 +384,29 @@ void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist,
ChopWindingInPlace
=============
*/
void ChopWindingInPlace (winding_t **inout, vec3_t normal, vec_t dist, vec_t epsilon)
void ChopWindingInPlace( winding_t **inout, vec3_t normal, vec_t dist, vec_t epsilon )
{
winding_t *in;
vec_t dists[MAX_POINTS_ON_WINDING+4];
int sides[MAX_POINTS_ON_WINDING+4];
int counts[3];
int sides[MAX_POINTS_ON_WINDING+4];
int counts[3];
static vec_t dot; // VC 4.2 optimizer bug if not static
int i, j;
int i, j;
vec_t *p1, *p2;
vec3_t mid;
winding_t *f;
int maxpts;
int maxpts;
in = *inout;
counts[0] = counts[1] = counts[2] = 0;
// determine sides for each point
for (i=0 ; i<in->numpoints ; i++)
// determine sides for each point
for( i = 0; i < in->numpoints; i++ )
{
dot = DotProduct (in->p[i], normal);
dot = DotProduct( in->p[i], normal );
dot -= dist;
dists[i] = dot;
if (dot > epsilon)
if( dot > epsilon )
sides[i] = SIDE_FRONT;
else if (dot < -epsilon)
sides[i] = SIDE_BACK;
@ -424,14 +419,13 @@ void ChopWindingInPlace (winding_t **inout, vec3_t normal, vec_t dist, vec_t eps
sides[i] = sides[0];
dists[i] = dists[0];
if (!counts[0])
if( !counts[0] )
{
FreeWinding (in);
*inout = NULL;
return;
}
if (!counts[1])
return; // inout stays the same
if( !counts[1] ) return; // inout stays the same
maxpts = in->numpoints+4; // cant use counts[0]+2 because
// of fp grouping errors