add support for AnimTicksPerSecond

This commit is contained in:
David Rose 2009-02-26 00:34:04 +00:00
parent 62096c99a4
commit 98ea1e19ff
12 changed files with 2129 additions and 1465 deletions

View File

@ -267,3 +267,8 @@ template SkinWeights {
array FLOAT weights[nWeights]; array FLOAT weights[nWeights];
Matrix4x4 matrixOffset; Matrix4x4 matrixOffset;
} }
template AnimTicksPerSecond {
<9E415A43-7BA6-4a73-8743-B73D47E88476>
DWORD AnimTicksPerSecond;
}

View File

@ -497,8 +497,17 @@ const unsigned char standard_templates_data[] = {
0x69, 0x67, 0x68, 0x74, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x4d, 0x61, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5d, 0x3b, 0x0a, 0x20, 0x4d, 0x61,
0x74, 0x72, 0x69, 0x78, 0x34, 0x78, 0x34, 0x20, 0x6d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x78, 0x34, 0x78, 0x34, 0x20, 0x6d, 0x61, 0x74,
0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x72, 0x69, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a,
0x7d, 0x0a 0x7d, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
0x20, 0x41, 0x6e, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b, 0x73, 0x50,
0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x7b, 0x0a,
0x20, 0x3c, 0x39, 0x45, 0x34, 0x31, 0x35, 0x41, 0x34, 0x33, 0x2d,
0x37, 0x42, 0x41, 0x36, 0x2d, 0x34, 0x61, 0x37, 0x33, 0x2d, 0x38,
0x37, 0x34, 0x33, 0x2d, 0x42, 0x37, 0x33, 0x44, 0x34, 0x37, 0x45,
0x38, 0x38, 0x34, 0x37, 0x36, 0x3e, 0x0a, 0x20, 0x44, 0x57, 0x4f,
0x52, 0x44, 0x20, 0x41, 0x6e, 0x69, 0x6d, 0x54, 0x69, 0x63, 0x6b,
0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x3b,
0x0a, 0x7d, 0x20, 0x0a
}; };
const int standard_templates_data_len = 5403; const int standard_templates_data_len = 5504;

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,9 @@
/* A Bison parser, made by GNU Bison 1.875b. */ /* A Bison parser, made by GNU Bison 2.3. */
/* Skeleton parser for Yacc-like parsing with Bison, /* Skeleton interface for Bison's Yacc-like parsers in C
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -15,13 +17,21 @@
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02111-1307, USA. */ Boston, MA 02110-1301, USA. */
/* As a special exception, when this file is copied by Bison into a /* As a special exception, you may create a larger work that contains
Bison output file, you may use that output file without restriction. part or all of the Bison parser skeleton and distribute that work
This special exception was added by the Free Software Foundation under terms of your choice, so long as that work isn't itself a
in version 1.24 of Bison. */ parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* Tokens. */ /* Tokens. */
#ifndef YYTOKENTYPE #ifndef YYTOKENTYPE
@ -62,6 +72,7 @@
TOKEN_ARRAY = 52 TOKEN_ARRAY = 52
}; };
#endif #endif
/* Tokens. */
#define TOKEN_NAME 1 #define TOKEN_NAME 1
#define TOKEN_STRING 2 #define TOKEN_STRING 2
#define TOKEN_INTEGER 3 #define TOKEN_INTEGER 3
@ -97,7 +108,7 @@
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE; typedef int YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
@ -106,5 +117,3 @@ typedef int YYSTYPE;
extern YYSTYPE xyylval; extern YYSTYPE xyylval;

View File

@ -361,9 +361,11 @@ object:
} }
optional_class_id data_parts_list TOKEN_CBRACE optional_class_id data_parts_list TOKEN_CBRACE
{ {
XFileDataNodeTemplate *current_template = if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
DCAST(XFileDataNodeTemplate, current_node); XFileDataNodeTemplate *current_template =
current_template->finalize_parse_data(); DCAST(XFileDataNodeTemplate, current_node);
current_template->finalize_parse_data();
}
$$ = current_node; $$ = current_node;
current_node = $<u.node>4; current_node = $<u.node>4;
@ -387,21 +389,27 @@ data_part:
} }
| integer_list | integer_list
{ {
XFileDataNodeTemplate *current_template = if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
DCAST(XFileDataNodeTemplate, current_node); XFileDataNodeTemplate *current_template =
current_template->add_parse_int($1); DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_int($1);
}
} }
| realnum_list | realnum_list
{ {
XFileDataNodeTemplate *current_template = if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
DCAST(XFileDataNodeTemplate, current_node); XFileDataNodeTemplate *current_template =
current_template->add_parse_double($1); DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_double($1);
}
} }
| string list_separator | string list_separator
{ {
XFileDataNodeTemplate *current_template = if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
DCAST(XFileDataNodeTemplate, current_node); XFileDataNodeTemplate *current_template =
current_template->add_parse_string($1); DCAST(XFileDataNodeTemplate, current_node);
current_template->add_parse_string($1);
}
} }
| list_separator | list_separator
{ {

View File

@ -28,6 +28,7 @@
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
XFileAnimationSet:: XFileAnimationSet::
XFileAnimationSet() { XFileAnimationSet() {
_frame_rate = 0.0;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -93,6 +94,9 @@ create_hierarchy(XFileToEggConverter *converter) {
anim_table->add_data(joint->get_transform3d()); anim_table->add_data(joint->get_transform3d());
} }
anim_table->optimize(); anim_table->optimize();
if (_frame_rate != 0.0) {
anim_table->set_fps(_frame_rate);
}
} }
return true; return true;

View File

@ -71,6 +71,9 @@ public:
FrameData &create_frame_data(const string &joint_name); FrameData &create_frame_data(const string &joint_name);
public:
double _frame_rate;
private: private:
void mirror_table(XFileToEggConverter *converter, void mirror_table(XFileToEggConverter *converter,
EggGroup *model_node, EggTable *anim_node); EggGroup *model_node, EggTable *anim_node);

View File

@ -35,7 +35,7 @@
XFileToEggConverter:: XFileToEggConverter::
XFileToEggConverter() { XFileToEggConverter() {
_make_char = false; _make_char = false;
_frame_rate = 30.0; _frame_rate = 0.0;
_x_file = new XFile(true); _x_file = new XFile(true);
_dart_node = NULL; _dart_node = NULL;
} }
@ -296,6 +296,8 @@ get_toplevel() {
int num_objects = _x_file->get_num_objects(); int num_objects = _x_file->get_num_objects();
int i; int i;
_ticks_per_second = 4800; // X File default.
// First, make a pass through the toplevel objects and see if we // First, make a pass through the toplevel objects and see if we
// have frames and/or animation. // have frames and/or animation.
_any_frames = false; _any_frames = false;
@ -360,6 +362,9 @@ convert_toplevel_object(XFileDataNode *obj, EggGroupNode *egg_parent) {
return false; return false;
} }
} else if (obj->is_standard_object("AnimTicksPerSecond")) {
_ticks_per_second = (*obj)[0].i();
} else if (obj->is_standard_object("Mesh")) { } else if (obj->is_standard_object("Mesh")) {
// If there are any Frames at all in the file, then assume a Mesh // If there are any Frames at all in the file, then assume a Mesh
// at the toplevel is just present to define a reference that will // at the toplevel is just present to define a reference that will
@ -498,6 +503,9 @@ convert_animation_set(XFileDataNode *obj) {
XFileAnimationSet *animation_set = new XFileAnimationSet(); XFileAnimationSet *animation_set = new XFileAnimationSet();
animation_set->set_name(obj->get_name()); animation_set->set_name(obj->get_name());
_total_tick_deltas = 0;
_num_ticks = 0;
// Now walk through the children of the set; each one animates a // Now walk through the children of the set; each one animates a
// different joint. // different joint.
int num_objects = obj->get_num_objects(); int num_objects = obj->get_num_objects();
@ -507,6 +515,15 @@ convert_animation_set(XFileDataNode *obj) {
} }
} }
animation_set->_frame_rate = _frame_rate;
if (_num_ticks != 0 && _frame_rate == 0.0) {
// Compute the frame rate from the timing information.
double delta = (double)_total_tick_deltas / (double)_num_ticks;
if (delta != 0.0) {
animation_set->_frame_rate = (double)_ticks_per_second / delta;
}
}
_animation_sets.push_back(animation_set); _animation_sets.push_back(animation_set);
return true; return true;
@ -626,12 +643,22 @@ convert_animation_key(XFileDataNode *obj, const string &joint_name,
const XFileDataObject &keys = (*obj)["keys"]; const XFileDataObject &keys = (*obj)["keys"];
int last_time = 0;
for (int i = 0; i < keys.size(); i++) { for (int i = 0; i < keys.size(); i++) {
// We ignore the time value. It seems to be of questionable value // The time value is problematic, since it allows x files to
// anyway, being of all sorts of crazy scales; and Panda doesn't // specify keyframes of arbitrary duration. Panda doesn't support
// support timestamped keyframes anyway. Assume the x file was // this; all frames in Panda must be of a constant duration.
// generated with one frame per frame of animation, and translate // Thus, we largely ignore the time value, but we take the average
// accordingly. // of all deltas as the duration. This will correctly handle .x
// files with uniform keyframes, at least.
int this_time = keys[i]["time"].i();
if (i != 0) {
int delta = this_time - last_time;
_total_tick_deltas += delta;
++_num_ticks;
}
last_time = this_time;
const XFileDataObject &values = keys[i]["tfkeys"]["values"]; const XFileDataObject &values = keys[i]["tfkeys"]["values"];
if (!set_animation_frame(joint_name, table, i, key_type, values)) { if (!set_animation_frame(joint_name, table, i, key_type, values)) {

View File

@ -87,7 +87,7 @@ private:
FrameData &table); FrameData &table);
bool set_animation_frame(const string &joint_name, FrameData &table, bool set_animation_frame(const string &joint_name, FrameData &table,
int frame, int key_type, int frame, int key_type,
const XFileDataObject &values); const XFileDataObject &values);
bool convert_mesh(XFileDataNode *obj, EggGroupNode *egg_parent); bool convert_mesh(XFileDataNode *obj, EggGroupNode *egg_parent);
bool create_polygons(); bool create_polygons();
@ -97,6 +97,9 @@ private:
bool _any_frames; bool _any_frames;
bool _any_animation; bool _any_animation;
int _ticks_per_second;
int _total_tick_deltas;
int _num_ticks;
typedef pvector<XFileMesh *> Meshes; typedef pvector<XFileMesh *> Meshes;
Meshes _meshes; Meshes _meshes;

View File

@ -51,10 +51,9 @@ XFileToEgg() :
add_option add_option
("fr", "fps", 0, ("fr", "fps", 0,
"Specify the frame rate of the resulting animation. The animation " "Specify the frame rate of the resulting animation. If this is "
"tables should have one entry per frame, rather than one per " "omitted or 0, the frame rate is inferred from the file itself; but "
"keyframe; the time component of the animation tables is ignored " "note that the file must contain evenly-spaced keyframes.",
"and the frames are played sequentially at the specified frame rate.",
&XFileToEgg::dispatch_double, NULL, &_frame_rate); &XFileToEgg::dispatch_double, NULL, &_frame_rate);
add_option add_option
@ -83,7 +82,7 @@ XFileToEgg() :
"Specify the coordinate system of the input " + _format_name + "Specify the coordinate system of the input " + _format_name +
" file. Normally, this is y-up-left."); " file. Normally, this is y-up-left.");
_frame_rate = 30.0; _frame_rate = 0.0;
_coordinate_system = CS_yup_left; _coordinate_system = CS_yup_left;
} }