diff --git a/art/tango/application_exit.h b/art/tango/application_exit.h new file mode 100644 index 0000000000..f769261150 --- /dev/null +++ b/art/tango/application_exit.h @@ -0,0 +1,542 @@ +/* application_exit.svg - 8602 bytes */ +static const unsigned char application_exit_svg_data[] = { + + 0x3c, 0x73, 0x76, 0x67, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x32, 0x30, + 0x30, 0x30, 0x2f, 0x73, 0x76, 0x67, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, 0x78, 0x6c, + 0x69, 0x6e, 0x6b, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78, 0x6c, 0x69, 0x6e, + 0x6b, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x34, 0x38, 0x22, 0x20, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x34, 0x38, 0x22, 0x3e, 0x3c, 0x64, 0x65, 0x66, 0x73, 0x3e, + 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, + 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, + 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x79, + 0x32, 0x3d, 0x22, 0x32, 0x37, 0x2e, 0x37, 0x35, 0x39, 0x22, 0x20, 0x78, 0x32, 0x3d, 0x22, 0x31, + 0x38, 0x2e, 0x30, 0x33, 0x31, 0x22, 0x20, 0x79, 0x31, 0x3d, 0x22, 0x31, 0x39, 0x2e, 0x38, 0x30, + 0x34, 0x22, 0x20, 0x78, 0x31, 0x3d, 0x22, 0x34, 0x36, 0x2e, 0x38, 0x34, 0x36, 0x22, 0x20, 0x69, + 0x64, 0x3d, 0x22, 0x6c, 0x22, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, + 0x3d, 0x22, 0x23, 0x63, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x74, 0x65, 0x28, 0x2d, 0x31, 0x32, 0x2e, 0x30, 0x32, 0x29, 0x22, 0x2f, 0x3e, 0x3c, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x69, 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, + 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x62, 0x61, 0x62, + 0x64, 0x62, 0x36, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x3a, 0x31, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x2f, 0x3e, + 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, + 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x62, 0x61, 0x62, 0x64, 0x62, 0x36, 0x3b, + 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x30, 0x22, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x67, 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3d, 0x22, 0x30, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, + 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x63, 0x65, 0x63, 0x65, 0x63, 0x65, 0x3b, 0x73, + 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, + 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, + 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3a, 0x23, 0x39, 0x65, 0x39, 0x65, 0x39, 0x65, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, + 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, + 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x66, 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3d, 0x22, 0x30, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, + 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, 0x74, 0x6f, 0x70, + 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, + 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x20, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, + 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x65, 0x22, 0x3e, 0x3c, 0x73, + 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x3a, 0x23, 0x35, 0x32, 0x35, 0x32, 0x35, 0x32, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, + 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x35, 0x32, + 0x35, 0x32, 0x35, 0x32, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x64, 0x22, 0x3e, 0x3c, 0x73, + 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x34, 0x65, 0x34, 0x65, 0x34, 0x65, 0x3b, 0x73, 0x74, + 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x20, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3a, 0x23, 0x36, 0x31, 0x36, 0x31, 0x36, 0x31, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x30, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3d, 0x22, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x63, 0x22, 0x3e, 0x3c, 0x73, + 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x3a, 0x23, 0x34, 0x65, 0x34, 0x65, 0x34, 0x65, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, + 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x61, 0x62, + 0x61, 0x62, 0x61, 0x62, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, + 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x62, 0x22, 0x3e, 0x3c, 0x73, + 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, + 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x3d, 0x22, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, + 0x30, 0x30, 0x30, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x3a, 0x30, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x2f, 0x3e, + 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x20, 0x69, 0x64, 0x3d, 0x22, 0x61, 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, + 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, + 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x2f, + 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, + 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, 0x74, + 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x30, 0x22, 0x20, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, + 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, + 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68, + 0x22, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, + 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, + 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x22, 0x20, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, 0x30, 0x22, 0x2f, 0x3e, 0x3c, 0x73, 0x74, 0x6f, 0x70, + 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x3b, 0x73, 0x74, 0x6f, 0x70, 0x2d, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x30, 0x22, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3d, 0x22, + 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, + 0x69, 0x65, 0x6e, 0x74, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, + 0x69, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, + 0x22, 0x23, 0x66, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, + 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, 0x73, 0x65, 0x72, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x78, 0x31, 0x3d, 0x22, 0x38, + 0x2e, 0x37, 0x36, 0x22, 0x20, 0x79, 0x31, 0x3d, 0x22, 0x31, 0x33, 0x2e, 0x36, 0x36, 0x33, 0x22, + 0x20, 0x78, 0x32, 0x3d, 0x22, 0x31, 0x39, 0x2e, 0x37, 0x35, 0x36, 0x22, 0x20, 0x79, 0x32, 0x3d, + 0x22, 0x34, 0x33, 0x2e, 0x34, 0x35, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x28, 0x2e, 0x39, 0x36, 0x38, 0x37, 0x32, 0x20, 0x30, 0x20, 0x30, 0x20, 0x2e, 0x39, 0x36, + 0x38, 0x39, 0x32, 0x20, 0x2e, 0x33, 0x36, 0x32, 0x20, 0x2e, 0x37, 0x33, 0x38, 0x29, 0x22, 0x2f, + 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x3d, 0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x28, 0x2d, 0x31, + 0x33, 0x2e, 0x31, 0x33, 0x37, 0x29, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x79, 0x32, 0x3d, 0x22, 0x32, 0x34, 0x2e, 0x37, 0x36, + 0x35, 0x22, 0x20, 0x78, 0x32, 0x3d, 0x22, 0x33, 0x34, 0x2e, 0x30, 0x30, 0x37, 0x22, 0x20, 0x79, + 0x31, 0x3d, 0x22, 0x31, 0x39, 0x2e, 0x31, 0x30, 0x38, 0x22, 0x20, 0x78, 0x31, 0x3d, 0x22, 0x33, + 0x31, 0x2e, 0x38, 0x35, 0x33, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6e, 0x22, 0x20, 0x78, 0x6c, + 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x65, 0x22, 0x2f, 0x3e, 0x3c, + 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x67, + 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x79, 0x32, + 0x3d, 0x22, 0x31, 0x38, 0x2e, 0x30, 0x36, 0x34, 0x22, 0x20, 0x78, 0x32, 0x3d, 0x22, 0x33, 0x33, + 0x2e, 0x37, 0x31, 0x31, 0x22, 0x20, 0x79, 0x31, 0x3d, 0x22, 0x32, 0x31, 0x2e, 0x35, 0x31, 0x31, + 0x22, 0x20, 0x78, 0x31, 0x3d, 0x22, 0x33, 0x31, 0x2e, 0x30, 0x37, 0x39, 0x22, 0x20, 0x69, 0x64, + 0x3d, 0x22, 0x6f, 0x22, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, + 0x22, 0x23, 0x67, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, + 0x65, 0x28, 0x2d, 0x31, 0x32, 0x2e, 0x30, 0x32, 0x29, 0x22, 0x2f, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, + 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x69, 0x6e, + 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x68, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, + 0x70, 0x22, 0x20, 0x78, 0x31, 0x3d, 0x22, 0x34, 0x30, 0x2e, 0x32, 0x35, 0x22, 0x20, 0x79, 0x31, + 0x3d, 0x22, 0x33, 0x31, 0x2e, 0x36, 0x32, 0x35, 0x22, 0x20, 0x78, 0x32, 0x3d, 0x22, 0x34, 0x30, + 0x2e, 0x32, 0x35, 0x22, 0x20, 0x79, 0x32, 0x3d, 0x22, 0x34, 0x33, 0x2e, 0x32, 0x35, 0x22, 0x20, + 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, + 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x67, + 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x3d, 0x22, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x28, 0x2d, 0x31, 0x32, 0x2e, + 0x30, 0x32, 0x29, 0x22, 0x2f, 0x3e, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x47, 0x72, 0x61, + 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, + 0x3d, 0x22, 0x23, 0x69, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6a, 0x22, 0x20, 0x78, 0x31, 0x3d, + 0x22, 0x31, 0x38, 0x2e, 0x37, 0x32, 0x39, 0x22, 0x20, 0x79, 0x31, 0x3d, 0x22, 0x34, 0x34, 0x22, + 0x20, 0x78, 0x32, 0x3d, 0x22, 0x31, 0x38, 0x2e, 0x37, 0x32, 0x39, 0x22, 0x20, 0x79, 0x32, 0x3d, + 0x22, 0x32, 0x39, 0x2e, 0x30, 0x36, 0x38, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, + 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x2f, 0x3e, 0x3c, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6c, + 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x62, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x71, 0x22, 0x20, + 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, + 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x67, + 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, + 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x31, 0x20, 0x30, 0x20, 0x30, 0x20, 0x2e, + 0x35, 0x33, 0x36, 0x37, 0x32, 0x20, 0x30, 0x20, 0x31, 0x36, 0x2e, 0x38, 0x37, 0x33, 0x29, 0x22, + 0x20, 0x63, 0x78, 0x3d, 0x22, 0x32, 0x34, 0x2e, 0x38, 0x33, 0x37, 0x22, 0x20, 0x63, 0x79, 0x3d, + 0x22, 0x33, 0x36, 0x2e, 0x34, 0x32, 0x31, 0x22, 0x20, 0x66, 0x78, 0x3d, 0x22, 0x32, 0x34, 0x2e, + 0x38, 0x33, 0x37, 0x22, 0x20, 0x66, 0x79, 0x3d, 0x22, 0x33, 0x36, 0x2e, 0x34, 0x32, 0x31, 0x22, + 0x20, 0x72, 0x3d, 0x22, 0x31, 0x35, 0x2e, 0x36, 0x34, 0x35, 0x22, 0x2f, 0x3e, 0x3c, 0x72, 0x61, + 0x64, 0x69, 0x61, 0x6c, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x69, + 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x61, 0x22, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x72, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x74, + 0x73, 0x3d, 0x22, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x55, 0x73, + 0x65, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x31, 0x2e, 0x32, + 0x35, 0x33, 0x34, 0x34, 0x20, 0x30, 0x20, 0x30, 0x20, 0x2e, 0x39, 0x35, 0x33, 0x39, 0x20, 0x2d, + 0x31, 0x35, 0x2e, 0x34, 0x38, 0x20, 0x31, 0x31, 0x2e, 0x32, 0x37, 0x37, 0x29, 0x22, 0x20, 0x63, + 0x78, 0x3d, 0x22, 0x31, 0x39, 0x2e, 0x37, 0x30, 0x31, 0x22, 0x20, 0x63, 0x79, 0x3d, 0x22, 0x32, + 0x2e, 0x38, 0x39, 0x37, 0x22, 0x20, 0x66, 0x78, 0x3d, 0x22, 0x31, 0x39, 0x2e, 0x37, 0x30, 0x31, + 0x22, 0x20, 0x66, 0x79, 0x3d, 0x22, 0x32, 0x2e, 0x38, 0x39, 0x37, 0x22, 0x20, 0x72, 0x3d, 0x22, + 0x31, 0x37, 0x2e, 0x31, 0x37, 0x31, 0x22, 0x2f, 0x3e, 0x3c, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6c, + 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, + 0x74, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x3d, 0x22, 0x75, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x4f, 0x6e, 0x55, 0x73, 0x65, 0x22, 0x20, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x28, 0x32, 0x2e, 0x35, 0x36, 0x35, 0x38, 0x32, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x2e, + 0x34, 0x30, 0x33, 0x32, 0x36, 0x20, 0x2d, 0x34, 0x39, 0x2e, 0x38, 0x30, 0x34, 0x20, 0x2d, 0x39, + 0x2e, 0x34, 0x38, 0x33, 0x29, 0x22, 0x20, 0x72, 0x3d, 0x22, 0x39, 0x2e, 0x37, 0x32, 0x33, 0x22, + 0x20, 0x66, 0x79, 0x3d, 0x22, 0x37, 0x2e, 0x31, 0x34, 0x22, 0x20, 0x66, 0x78, 0x3d, 0x22, 0x32, + 0x37, 0x2e, 0x38, 0x38, 0x34, 0x22, 0x20, 0x63, 0x79, 0x3d, 0x22, 0x37, 0x2e, 0x31, 0x34, 0x22, + 0x20, 0x63, 0x78, 0x3d, 0x22, 0x32, 0x37, 0x2e, 0x38, 0x38, 0x34, 0x22, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x6d, 0x22, 0x20, 0x78, 0x6c, 0x69, 0x6e, 0x6b, 0x3a, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, + 0x23, 0x64, 0x22, 0x2f, 0x3e, 0x3c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x78, 0x3d, 0x22, + 0x2d, 0x2e, 0x30, 0x36, 0x37, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x2e, + 0x31, 0x33, 0x34, 0x22, 0x20, 0x79, 0x3d, 0x22, 0x2d, 0x2e, 0x31, 0x32, 0x22, 0x20, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x31, 0x2e, 0x32, 0x33, 0x39, 0x22, 0x20, 0x69, 0x64, 0x3d, + 0x22, 0x6b, 0x22, 0x3e, 0x3c, 0x66, 0x65, 0x47, 0x61, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x42, + 0x6c, 0x75, 0x72, 0x20, 0x73, 0x74, 0x64, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x3d, 0x22, 0x2e, 0x37, 0x36, 0x39, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x3e, 0x3c, 0x2f, 0x64, 0x65, 0x66, 0x73, 0x3e, 0x3c, 0x72, 0x65, 0x63, 0x74, 0x20, 0x72, + 0x79, 0x3d, 0x22, 0x2e, 0x37, 0x30, 0x37, 0x22, 0x20, 0x72, 0x78, 0x3d, 0x22, 0x2e, 0x37, 0x30, + 0x37, 0x22, 0x20, 0x79, 0x3d, 0x22, 0x32, 0x2e, 0x35, 0x36, 0x39, 0x22, 0x20, 0x78, 0x3d, 0x22, + 0x31, 0x2e, 0x34, 0x38, 0x31, 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x34, + 0x31, 0x2e, 0x39, 0x34, 0x32, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x33, 0x31, + 0x2e, 0x39, 0x39, 0x36, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, + 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x23, 0x65, 0x65, 0x65, 0x65, 0x65, 0x63, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, + 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x23, 0x35, 0x35, 0x35, 0x37, 0x35, 0x33, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x2e, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x34, 0x38, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, + 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, + 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, + 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, + 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, + 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, + 0x65, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, + 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, + 0x6a, 0x29, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, + 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, + 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, + 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, + 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, + 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, + 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, + 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x31, + 0x2e, 0x39, 0x37, 0x39, 0x20, 0x31, 0x37, 0x2e, 0x32, 0x34, 0x31, 0x68, 0x33, 0x31, 0x56, 0x34, + 0x34, 0x68, 0x2d, 0x33, 0x31, 0x7a, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x35, + 0x35, 0x34, 0x32, 0x38, 0x35, 0x36, 0x39, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x23, 0x30, 0x30, + 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, + 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, + 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, + 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, + 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, + 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x6b, 0x29, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x32, + 0x2e, 0x31, 0x30, 0x34, 0x20, 0x34, 0x33, 0x2e, 0x38, 0x37, 0x35, 0x20, 0x32, 0x33, 0x2e, 0x34, + 0x38, 0x20, 0x33, 0x35, 0x73, 0x33, 0x2e, 0x35, 0x31, 0x34, 0x2d, 0x32, 0x2e, 0x32, 0x32, 0x2e, + 0x32, 0x35, 0x2d, 0x33, 0x2e, 0x35, 0x63, 0x2d, 0x33, 0x2e, 0x34, 0x31, 0x35, 0x2d, 0x31, 0x2e, + 0x33, 0x34, 0x2d, 0x37, 0x20, 0x2e, 0x35, 0x2d, 0x37, 0x20, 0x2e, 0x35, 0x4c, 0x32, 0x2e, 0x31, + 0x30, 0x34, 0x20, 0x34, 0x33, 0x2e, 0x38, 0x37, 0x35, 0x7a, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, + 0x74, 0x68, 0x20, 0x64, 0x3d, 0x22, 0x6d, 0x32, 0x2e, 0x30, 0x31, 0x37, 0x20, 0x34, 0x33, 0x2e, + 0x39, 0x34, 0x35, 0x2d, 0x2e, 0x30, 0x33, 0x39, 0x2d, 0x34, 0x30, 0x2e, 0x38, 0x39, 0x20, 0x31, + 0x39, 0x2e, 0x39, 0x34, 0x32, 0x2e, 0x30, 0x34, 0x34, 0x2e, 0x30, 0x34, 0x35, 0x20, 0x32, 0x39, + 0x2e, 0x39, 0x32, 0x4c, 0x32, 0x2e, 0x30, 0x31, 0x37, 0x20, 0x34, 0x33, 0x2e, 0x39, 0x34, 0x34, + 0x7a, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x6c, 0x29, 0x3b, 0x66, 0x69, 0x6c, 0x6c, + 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, + 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, + 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, + 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, + 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, + 0x6c, 0x65, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, + 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x34, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x34, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x3a, 0x23, 0x66, 0x66, 0x66, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, + 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, + 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3a, 0x33, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, + 0x63, 0x61, 0x70, 0x3a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, + 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, + 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, + 0x34, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, + 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, + 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x6f, 0x76, + 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, + 0x64, 0x3d, 0x22, 0x6d, 0x31, 0x2e, 0x39, 0x34, 0x39, 0x20, 0x34, 0x33, 0x2e, 0x39, 0x34, 0x35, + 0x20, 0x32, 0x30, 0x2e, 0x31, 0x34, 0x38, 0x2d, 0x31, 0x30, 0x2e, 0x38, 0x38, 0x33, 0x4c, 0x33, + 0x2e, 0x35, 0x33, 0x36, 0x20, 0x34, 0x31, 0x2e, 0x39, 0x39, 0x56, 0x33, 0x2e, 0x30, 0x31, 0x68, + 0x2d, 0x31, 0x2e, 0x35, 0x37, 0x6c, 0x2d, 0x2e, 0x30, 0x31, 0x37, 0x20, 0x34, 0x30, 0x2e, 0x39, + 0x33, 0x35, 0x7a, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, + 0x28, 0x23, 0x6d, 0x29, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, + 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, + 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, + 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, + 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, + 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, + 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, + 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x64, 0x3d, 0x22, + 0x4d, 0x32, 0x2e, 0x30, 0x32, 0x34, 0x20, 0x34, 0x33, 0x2e, 0x37, 0x35, 0x37, 0x20, 0x31, 0x2e, + 0x39, 0x37, 0x39, 0x20, 0x33, 0x2e, 0x30, 0x35, 0x35, 0x48, 0x32, 0x31, 0x2e, 0x39, 0x32, 0x6c, + 0x2d, 0x2e, 0x31, 0x37, 0x39, 0x20, 0x33, 0x30, 0x2e, 0x36, 0x32, 0x36, 0x4c, 0x32, 0x2e, 0x30, + 0x32, 0x34, 0x20, 0x34, 0x33, 0x2e, 0x37, 0x35, 0x37, 0x7a, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, + 0x74, 0x68, 0x20, 0x64, 0x3d, 0x22, 0x6d, 0x31, 0x37, 0x2e, 0x36, 0x32, 0x32, 0x20, 0x31, 0x38, + 0x2e, 0x34, 0x35, 0x36, 0x20, 0x31, 0x2e, 0x39, 0x32, 0x33, 0x20, 0x32, 0x2e, 0x34, 0x35, 0x33, + 0x2d, 0x31, 0x2e, 0x34, 0x35, 0x39, 0x20, 0x34, 0x2e, 0x38, 0x31, 0x37, 0x73, 0x2e, 0x32, 0x36, + 0x35, 0x20, 0x31, 0x2e, 0x35, 0x30, 0x33, 0x20, 0x31, 0x2e, 0x30, 0x33, 0x39, 0x2e, 0x34, 0x38, + 0x36, 0x63, 0x2e, 0x37, 0x37, 0x33, 0x2d, 0x31, 0x2e, 0x30, 0x31, 0x36, 0x20, 0x32, 0x2e, 0x39, + 0x37, 0x32, 0x2d, 0x33, 0x2e, 0x35, 0x38, 0x32, 0x20, 0x32, 0x2e, 0x35, 0x38, 0x35, 0x2d, 0x35, + 0x2e, 0x34, 0x35, 0x38, 0x2d, 0x2e, 0x32, 0x38, 0x37, 0x2d, 0x31, 0x2e, 0x33, 0x39, 0x32, 0x2d, + 0x31, 0x2e, 0x30, 0x38, 0x33, 0x2d, 0x32, 0x2e, 0x30, 0x35, 0x35, 0x2d, 0x31, 0x2e, 0x30, 0x38, + 0x33, 0x2d, 0x32, 0x2e, 0x30, 0x35, 0x35, 0x6c, 0x2d, 0x33, 0x2e, 0x30, 0x30, 0x35, 0x2d, 0x2e, + 0x32, 0x34, 0x33, 0x7a, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, + 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x6e, 0x29, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, + 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, + 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, + 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, + 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, + 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, + 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, + 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, + 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, + 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, + 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x64, 0x3d, + 0x22, 0x4d, 0x31, 0x39, 0x2e, 0x34, 0x35, 0x36, 0x20, 0x31, 0x37, 0x2e, 0x33, 0x35, 0x31, 0x73, + 0x32, 0x2e, 0x31, 0x36, 0x34, 0x20, 0x31, 0x2e, 0x30, 0x30, 0x32, 0x20, 0x32, 0x2e, 0x32, 0x33, + 0x32, 0x20, 0x31, 0x2e, 0x38, 0x37, 0x39, 0x63, 0x2e, 0x31, 0x30, 0x32, 0x20, 0x31, 0x2e, 0x33, + 0x30, 0x31, 0x2d, 0x34, 0x2e, 0x32, 0x34, 0x33, 0x20, 0x35, 0x2e, 0x34, 0x33, 0x35, 0x2d, 0x34, + 0x2e, 0x32, 0x34, 0x33, 0x20, 0x35, 0x2e, 0x34, 0x33, 0x35, 0x2d, 0x2e, 0x35, 0x30, 0x38, 0x2e, + 0x36, 0x32, 0x2d, 0x31, 0x2e, 0x33, 0x34, 0x37, 0x2e, 0x30, 0x36, 0x37, 0x2d, 0x2e, 0x38, 0x38, + 0x33, 0x2d, 0x2e, 0x35, 0x33, 0x20, 0x30, 0x20, 0x30, 0x20, 0x33, 0x2e, 0x34, 0x36, 0x36, 0x2d, + 0x34, 0x2e, 0x31, 0x31, 0x38, 0x20, 0x33, 0x2e, 0x32, 0x34, 0x38, 0x2d, 0x34, 0x2e, 0x34, 0x34, + 0x31, 0x2d, 0x2e, 0x32, 0x37, 0x34, 0x2d, 0x2e, 0x34, 0x30, 0x36, 0x2d, 0x31, 0x2e, 0x39, 0x36, + 0x37, 0x2d, 0x31, 0x2e, 0x30, 0x33, 0x39, 0x2d, 0x31, 0x2e, 0x39, 0x36, 0x37, 0x2d, 0x31, 0x2e, + 0x30, 0x33, 0x39, 0x2d, 0x31, 0x2e, 0x30, 0x31, 0x36, 0x2d, 0x2e, 0x37, 0x35, 0x31, 0x2e, 0x32, + 0x36, 0x38, 0x2d, 0x32, 0x2e, 0x33, 0x30, 0x35, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x33, 0x2d, 0x31, + 0x2e, 0x33, 0x30, 0x34, 0x7a, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, + 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x6f, 0x29, 0x3b, + 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, + 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, + 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, 0x74, 0x74, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, + 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, + 0x70, 0x29, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, + 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, + 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, + 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, + 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, + 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x36, 0x34, + 0x32, 0x31, 0x29, 0x3b, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x38, 0x37, 0x34, + 0x32, 0x38, 0x35, 0x37, 0x31, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x6d, 0x32, 0x32, 0x2e, 0x32, 0x33, + 0x20, 0x33, 0x2e, 0x35, 0x2d, 0x2e, 0x35, 0x20, 0x32, 0x39, 0x2e, 0x37, 0x35, 0x2d, 0x31, 0x38, + 0x20, 0x39, 0x2e, 0x37, 0x35, 0x20, 0x32, 0x39, 0x2e, 0x32, 0x35, 0x2e, 0x32, 0x35, 0x2d, 0x2e, + 0x32, 0x35, 0x2d, 0x33, 0x39, 0x2e, 0x37, 0x35, 0x68, 0x2d, 0x31, 0x30, 0x2e, 0x35, 0x7a, 0x22, + 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x2d, 0x2e, 0x37, 0x37, 0x38, 0x34, + 0x39, 0x20, 0x30, 0x20, 0x30, 0x20, 0x2e, 0x37, 0x37, 0x38, 0x34, 0x39, 0x20, 0x35, 0x35, 0x2e, + 0x37, 0x38, 0x31, 0x20, 0x31, 0x2e, 0x35, 0x35, 0x29, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x34, + 0x30, 0x2e, 0x34, 0x38, 0x32, 0x20, 0x33, 0x36, 0x2e, 0x34, 0x32, 0x31, 0x61, 0x31, 0x35, 0x2e, + 0x36, 0x34, 0x35, 0x20, 0x38, 0x2e, 0x33, 0x39, 0x37, 0x20, 0x30, 0x20, 0x31, 0x20, 0x31, 0x2d, + 0x33, 0x31, 0x2e, 0x32, 0x39, 0x20, 0x30, 0x20, 0x31, 0x35, 0x2e, 0x36, 0x34, 0x35, 0x20, 0x38, + 0x2e, 0x33, 0x39, 0x37, 0x20, 0x30, 0x20, 0x31, 0x20, 0x31, 0x20, 0x33, 0x31, 0x2e, 0x32, 0x39, + 0x20, 0x30, 0x7a, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x32, 0x39, 0x39, 0x34, 0x36, 0x35, 0x32, 0x32, 0x3b, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, + 0x6c, 0x28, 0x23, 0x71, 0x29, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, + 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, + 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, + 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, + 0x3a, 0x62, 0x75, 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, + 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, + 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, + 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, + 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x2f, 0x3e, 0x3c, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x31, 0x2e, 0x37, 0x33, 0x32, 0x20, 0x31, + 0x37, 0x2e, 0x35, 0x39, 0x34, 0x76, 0x31, 0x32, 0x2e, 0x37, 0x36, 0x31, 0x68, 0x37, 0x2e, 0x39, + 0x33, 0x32, 0x76, 0x35, 0x2e, 0x38, 0x32, 0x31, 0x6c, 0x31, 0x32, 0x2e, 0x32, 0x32, 0x34, 0x2d, + 0x31, 0x32, 0x2e, 0x32, 0x32, 0x33, 0x4c, 0x39, 0x2e, 0x35, 0x39, 0x20, 0x31, 0x31, 0x2e, 0x36, + 0x35, 0x36, 0x76, 0x35, 0x2e, 0x39, 0x34, 0x31, 0x6c, 0x2d, 0x37, 0x2e, 0x38, 0x36, 0x2d, 0x2e, + 0x30, 0x30, 0x33, 0x7a, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, + 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x23, 0x63, 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, + 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, + 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, + 0x6f, 0x6b, 0x65, 0x3a, 0x23, 0x61, 0x34, 0x30, 0x30, 0x30, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x2d, 0x31, 0x20, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x20, 0x34, 0x38, 0x2e, 0x32, 0x30, 0x31, 0x20, 0x2d, 0x2e, 0x30, 0x34, 0x37, 0x29, + 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x39, 0x2e, 0x39, + 0x32, 0x34, 0x20, 0x31, 0x32, 0x2e, 0x34, 0x37, 0x38, 0x76, 0x35, 0x2e, 0x36, 0x33, 0x38, 0x68, + 0x2d, 0x37, 0x2e, 0x38, 0x35, 0x76, 0x36, 0x2e, 0x34, 0x31, 0x35, 0x63, 0x31, 0x30, 0x2e, 0x32, + 0x35, 0x39, 0x2d, 0x33, 0x2e, 0x38, 0x32, 0x37, 0x20, 0x39, 0x2e, 0x38, 0x38, 0x31, 0x20, 0x33, + 0x2e, 0x32, 0x34, 0x33, 0x20, 0x31, 0x39, 0x2e, 0x32, 0x32, 0x2d, 0x2e, 0x35, 0x38, 0x35, 0x4c, + 0x39, 0x2e, 0x39, 0x32, 0x34, 0x20, 0x31, 0x32, 0x2e, 0x34, 0x37, 0x38, 0x7a, 0x22, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x35, + 0x30, 0x38, 0x30, 0x32, 0x31, 0x34, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, + 0x30, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x23, 0x72, 0x29, 0x3b, 0x66, + 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, + 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, + 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, + 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, 0x69, 0x6e, 0x3a, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, 0x64, 0x3a, 0x6e, + 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, + 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3a, 0x69, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x3a, 0x76, + 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, + 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x2d, 0x31, 0x20, 0x30, 0x20, 0x30, + 0x20, 0x31, 0x20, 0x34, 0x38, 0x2e, 0x32, 0x30, 0x31, 0x20, 0x2d, 0x2e, 0x30, 0x34, 0x37, 0x29, + 0x22, 0x2f, 0x3e, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, + 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3a, 0x2e, 0x34, 0x38, 0x31, 0x32, 0x38, 0x33, 0x33, + 0x39, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x23, 0x30, 0x30, 0x30, 0x3b, 0x66, 0x69, 0x6c, + 0x6c, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x6f, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x66, 0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3a, + 0x65, 0x76, 0x65, 0x6e, 0x6f, 0x64, 0x64, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x3a, 0x75, + 0x72, 0x6c, 0x28, 0x23, 0x73, 0x29, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3a, 0x31, 0x2e, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x32, 0x3b, 0x73, + 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x61, 0x70, 0x3a, 0x62, 0x75, + 0x74, 0x74, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6c, 0x69, 0x6e, 0x65, 0x6a, 0x6f, + 0x69, 0x6e, 0x3a, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x3a, + 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x6d, 0x69, + 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x2d, 0x65, 0x6e, + 0x64, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x3a, 0x31, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, + 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3a, 0x6e, 0x6f, 0x6e, + 0x65, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x64, 0x61, 0x73, 0x68, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x3a, 0x30, 0x3b, 0x73, 0x74, 0x72, 0x6f, 0x6b, 0x65, 0x2d, 0x6f, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x3a, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x3b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x3a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x3b, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, 0x6f, + 0x77, 0x3a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x32, + 0x2e, 0x36, 0x38, 0x33, 0x20, 0x31, 0x38, 0x2e, 0x35, 0x36, 0x36, 0x76, 0x31, 0x30, 0x2e, 0x37, + 0x39, 0x68, 0x37, 0x2e, 0x39, 0x30, 0x32, 0x76, 0x34, 0x2e, 0x31, 0x32, 0x35, 0x6c, 0x39, 0x2e, + 0x35, 0x34, 0x33, 0x2d, 0x39, 0x2e, 0x35, 0x34, 0x2d, 0x39, 0x2e, 0x36, 0x30, 0x36, 0x2d, 0x39, + 0x2e, 0x39, 0x34, 0x34, 0x76, 0x34, 0x2e, 0x35, 0x37, 0x32, 0x6c, 0x2d, 0x37, 0x2e, 0x38, 0x33, + 0x39, 0x2d, 0x2e, 0x30, 0x30, 0x33, 0x7a, 0x22, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x3d, 0x22, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x28, 0x2d, 0x31, 0x20, 0x30, 0x20, + 0x30, 0x20, 0x31, 0x20, 0x34, 0x38, 0x2e, 0x32, 0x30, 0x31, 0x20, 0x2d, 0x2e, 0x30, 0x34, 0x37, + 0x29, 0x22, 0x2f, 0x3e, 0x3c, 0x2f, 0x73, 0x76, 0x67, 0x3e +}; diff --git a/include/wx/generic/imaglist.h b/include/wx/generic/imaglist.h index c2da30e487..8984ccfd3b 100644 --- a/include/wx/generic/imaglist.h +++ b/include/wx/generic/imaglist.h @@ -63,8 +63,6 @@ private: // Size of a single bitmap in the list. wxSize m_size; - // Images in the list should have the same scale factor. - double m_scaleFactor; wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxGenericImageList); }; diff --git a/interface/wx/imaglist.h b/interface/wx/imaglist.h index 9d60830add..71cd5ad804 100644 --- a/interface/wx/imaglist.h +++ b/interface/wx/imaglist.h @@ -34,6 +34,10 @@ enum wxImageList is used principally in conjunction with wxTreeCtrl and wxListCtrl classes. + Use of this class is not recommended in the new code as it doesn't support + showing DPI-dependent bitmaps. Please use wxWithImages::SetImages() instead + of wxWithImages::SetImageList(). + @library{wxcore} @category{gdi} @@ -51,6 +55,8 @@ public: Constructor specifying the image size, whether image masks should be created, and the initial size of the list. + Note that the size is specified in logical pixels. + @param width Width of the images in the list. @param height @@ -68,19 +74,17 @@ public: /** Adds a new image or images using a bitmap and optional mask bitmap. + The logical size of the bitmap should be the same as the size specified + when constructing wxImageList. If the logical width of the bitmap is + greater than the image list width, bitmap is split into smaller images + of the required width. + @param bitmap Bitmap representing the opaque areas of the image. @param mask Monochrome mask bitmap, representing the transparent areas of the image. @return The new zero-based image index. - - @remarks The original bitmap or icon is not affected by the Add() - operation, and can be deleted afterwards. - If the bitmap is wider than the images in the list, then the - bitmap will automatically be split into smaller images, each - matching the dimensions of the image list. - This does not apply when adding icons. */ int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); @@ -88,37 +92,31 @@ public: /** Adds a new image or images using a bitmap and mask colour. + The logical size of the bitmap should be the same as the size specified + when constructing wxImageList. If the logical width of the bitmap is + greater than the image list width, bitmap is split into smaller images + of the required width. + @param bitmap Bitmap representing the opaque areas of the image. @param maskColour Colour indicating which parts of the image are transparent. @return The new zero-based image index. - - @remarks The original bitmap or icon is not affected by the Add() - operation, and can be deleted afterwards. - If the bitmap is wider than the images in the list, then the - bitmap will automatically be split into smaller images, each - matching the dimensions of the image list. - This does not apply when adding icons. */ int Add(const wxBitmap& bitmap, const wxColour& maskColour); /** Adds a new image using an icon. + The logical size of the icon should be the same as the size specified + when constructing wxImageList. + @param icon Icon to use as the image. @return The new zero-based image index. - @remarks The original bitmap or icon is not affected by the Add() - operation, and can be deleted afterwards. - If the bitmap is wider than the images in the list, then the - bitmap will automatically be split into smaller images, each - matching the dimensions of the image list. - This does not apply when adding icons. - @onlyfor{wxmsw,wxosx} */ int Add(const wxIcon& icon); diff --git a/src/common/arttango.cpp b/src/common/arttango.cpp index 8d4555c937..969597968c 100644 --- a/src/common/arttango.cpp +++ b/src/common/arttango.cpp @@ -35,6 +35,7 @@ // ---------------------------------------------------------------------------- // All files in art/tango in alphabetical order: +#include "../../art/tango/application_exit.h" #include "../../art/tango/application_x_executable.h" #include "../../art/tango/dialog_error.h" #include "../../art/tango/dialog_information.h" @@ -185,9 +186,9 @@ wxTangoArtProvider::CreateBitmapBundle(const wxArtID& id, { wxART_PLUS, BITMAP_DATA(list_add) }, { wxART_MINUS, BITMAP_DATA(list_remove) }, - // Surprisingly Tango doesn't seem to have neither wxART_CLOSE nor - // wxART_QUIT. We could use system-log-out for the latter but it - // doesn't seem quite right. + // Surprisingly Tango doesn't seem to have wxART_CLOSE. + + { wxART_QUIT, BITMAP_DATA(application_exit) }, { wxART_FIND, BITMAP_DATA(edit_find) }, { wxART_FIND_AND_REPLACE, BITMAP_DATA(edit_find_replace) }, @@ -208,8 +209,12 @@ wxTangoArtProvider::CreateBitmapBundle(const wxArtID& id, wxSize sizeDef = size != wxDefaultSize ? size : GetSizeHint(client); if (sizeDef == wxDefaultSize) { - // We really need some default size here. - sizeDef = wxSize(16, 16); + // We really need some default size here, so keep using the same + // sizes we used for PNG-based implementation we had before. + if ( client == wxART_MENU || client == wxART_BUTTON ) + sizeDef = wxSize(16, 16); + else + sizeDef = wxSize(24, 24); } return wxBitmapBundle::FromSVG(entry.data, entry.len, sizeDef); } diff --git a/src/generic/imaglist.cpp b/src/generic/imaglist.cpp index 961ad5120b..76c0a107bd 100644 --- a/src/generic/imaglist.cpp +++ b/src/generic/imaglist.cpp @@ -63,7 +63,6 @@ bool wxGenericImageList::Create( int width, int height, bool mask, int WXUNUSED( // Prevent from storing negative dimensions m_size = wxSize(wxMax(width, 0), wxMax(height, 0)); m_useMask = mask; - m_scaleFactor = 1.0; // Images must have proper size return m_size != wxSize(0, 0); @@ -71,7 +70,7 @@ bool wxGenericImageList::Create( int width, int height, bool mask, int WXUNUSED( namespace { -wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& imgSize, double scaleFactor) +wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& imgSize) { wxBitmap bmp(bitmap); if ( useMask ) @@ -86,7 +85,7 @@ wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& #if wxUSE_IMAGE wxImage img = bmp.ConvertToImage(); img.ClearAlpha(); - bmp = wxBitmap(img, -1, scaleFactor); + bmp = wxBitmap(img, -1, bmp.GetScaleFactor()); #endif // wxUSE_IMAGE } } @@ -98,7 +97,7 @@ wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& #if wxUSE_IMAGE wxImage img = bmp.ConvertToImage(); img.ConvertAlphaToMask(); - bmp = wxBitmap(img, -1, scaleFactor); + bmp = wxBitmap(img, -1, bmp.GetScaleFactor()); #endif // wxUSE_IMAGE } else @@ -124,7 +123,7 @@ wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& #if wxUSE_IMAGE wxImage img = bmp.ConvertToImage(); img.InitAlpha(); - bmp = wxBitmap(img, -1, scaleFactor); + bmp = wxBitmap(img, -1, bmp.GetScaleFactor()); #else bmp.SetMask(NULL); #endif // wxUSE_IMAGE @@ -149,6 +148,7 @@ wxBitmap GetImageListBitmap(const wxBitmap& bitmap, bool useMask, const wxSize& #if wxUSE_IMAGE wxImage img = bmp.ConvertToImage(); // We need image with new physical size + const double scaleFactor = bmp.GetScaleFactor(); wxImage imgResized = img.Size(scaleFactor * imgSize, wxPoint(0, 0), 0, 0, 0); bmpResized = wxBitmap(imgResized, -1, scaleFactor); #else @@ -166,18 +166,6 @@ int wxGenericImageList::Add( const wxBitmap &bitmap ) if ( m_size == wxSize(0, 0) ) return -1; - if ( m_images.empty() ) - { - // This is the first time Add() is called so we should save - // scale factor to check if further images will have the same scaling - m_scaleFactor = bitmap.GetScaleFactor(); - } - else if ( bitmap.GetScaleFactor() != m_scaleFactor ) - { - // All images in the list should have the same scale factor - return -1; - } - // We use the logical size here as image list images size is specified in // logical pixels, just as window coordinates and sizes are. const wxSize bitmapSize = bitmap.GetLogicalSize(); @@ -187,7 +175,7 @@ int wxGenericImageList::Add( const wxBitmap &bitmap ) // ImageList_Add() does. if ( bitmapSize.x == m_size.x ) { - m_images.push_back(GetImageListBitmap(bitmap, m_useMask, m_size, m_scaleFactor)); + m_images.push_back(GetImageListBitmap(bitmap, m_useMask, m_size)); } else if ( bitmapSize.x > m_size.x ) { @@ -195,7 +183,7 @@ int wxGenericImageList::Add( const wxBitmap &bitmap ) for (int subIndex = 0; subIndex < numImages; subIndex++) { wxRect rect(m_size.x * subIndex, 0, m_size.x, m_size.y); - m_images.push_back(GetImageListBitmap(bitmap.GetSubBitmap(rect), m_useMask, m_size, m_scaleFactor)); + m_images.push_back(GetImageListBitmap(bitmap.GetSubBitmap(rect), m_useMask, m_size)); } } else @@ -260,17 +248,11 @@ wxGenericImageList::Replace(int index, if ( !DoGetPtr(index) ) return false; - if ( bitmap.GetScaleFactor() != m_scaleFactor ) - { - // All images in the list should have the same scale factor - return false; - } - wxBitmap bmp(bitmap); if ( mask.IsOk() ) bmp.SetMask(new wxMask(mask)); - m_images[index] = GetImageListBitmap(bmp, m_useMask, m_size, m_scaleFactor); + m_images[index] = GetImageListBitmap(bmp, m_useMask, m_size); return true; } diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 79396db546..095ff20a12 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -3215,7 +3215,8 @@ bool wxDataViewIconTextRenderer::MacRender() cell = (wxImageTextCell*) GetNativeData()->GetItemCell(); iconText << GetValue(); - [cell setImage:iconText.GetIcon().GetNSImage()]; + const wxDataViewCtrl* const dvc = GetOwner()->GetOwner(); + [cell setImage:iconText.GetBitmapBundle().GetBitmapFor(dvc).GetNSImage()]; [cell setStringValue:wxCFStringRef(iconText.GetText()).AsNSString()]; return true; } @@ -3324,11 +3325,12 @@ bool wxDataViewCheckIconTextRenderer::MacRender() const wxCFStringRef textString(checkIconText.GetText()); - const wxIcon& icon = checkIconText.GetIcon(); + const wxBitmapBundle& icon = checkIconText.GetBitmapBundle(); if ( icon.IsOk() ) { wxNSTextAttachmentCellWithBaseline* const attachmentCell = - [[wxNSTextAttachmentCellWithBaseline alloc] initImageCell: icon.GetNSImage()]; + [[wxNSTextAttachmentCellWithBaseline alloc] + initImageCell: icon.GetBitmapFor(GetOwner()->GetOwner()).GetNSImage()]; NSTextAttachment* const attachment = [NSTextAttachment new]; [attachment setAttachmentCell: attachmentCell]; diff --git a/tests/graphics/bmpbundle.cpp b/tests/graphics/bmpbundle.cpp index 25002b29ef..a703fe0bec 100644 --- a/tests/graphics/bmpbundle.cpp +++ b/tests/graphics/bmpbundle.cpp @@ -162,6 +162,30 @@ TEST_CASE("BitmapBundle::ArtProvider", "[bmpbundle][art]") b = wxArtProvider::GetBitmapBundle(wxART_INFORMATION, wxART_MENU, size); CHECK( b.IsOk() ); CHECK( b.GetDefaultSize() == size ); + +#if wxUSE_ARTPROVIDER_TANGO + // Tango art provider is supposed to use 16px for the default size of the + // menu and button images and 24px for all the other ones, but we need to + // choose the client kind for which the current platform doesn't define its + // own default/fallback size to be able to test for it, i.e. this is the + // client for which GetNativeSizeHint() of the native art provider returns + // wxDefaultSize. + const wxArtClient artClient = +#ifdef __WXMSW__ + wxART_TOOLBAR +#else + wxART_LIST +#endif + ; + + // We also need to use an image provided by Tango but not by the native art + // provider, but here we can at least avoid the platform checks by using an + // image not provided by any native providers. + b = wxArtProvider::GetBitmapBundle(wxART_REFRESH, artClient); + + CHECK( b.IsOk() ); + CHECK( b.GetDefaultSize() == wxSize(24, 24) ); +#endif // wxUSE_ARTPROVIDER_TANGO } // This test only makes sense for the ports that actually support scaled diff --git a/tests/graphics/imagelist.cpp b/tests/graphics/imagelist.cpp index cbf71a51ca..c657670160 100644 --- a/tests/graphics/imagelist.cpp +++ b/tests/graphics/imagelist.cpp @@ -751,224 +751,58 @@ TEST_CASE("ImageList:NegativeTests", "[imagelist][negative]") } } +// This test relies on logical pixels being different from physical ones. +#ifdef wxHAS_DPI_INDEPENDENT_PIXELS + TEST_CASE("ImageList:HiDPI", "[imagelist][hidpi]") { -#if defined(__WXMSW__) || ( defined(__WXGTK20__) && !defined(__WXGTK3__) ) + wxImage img1(8, 4); + img1.SetRGB(wxRect(0, 0, 8, 4), 0, 63, 127); + REQUIRE(img1.IsOk()); - WARN("Skipping HiDPI image tests known not to work in wxMSW and wxGTK2."); -#else - wxImage img(16, 8); - img.SetRGB(wxRect(0, 0, 16, 8), 255, 128, 64); - REQUIRE(img.IsOk()); + wxImage img2(16, 8); + img2.SetRGB(wxRect(0, 0, 16, 8), 255, 128, 64); + REQUIRE(img2.IsOk()); - wxBitmap bmp1x(img, -1, 1.0); + wxBitmap bmp1x(img1, -1, 1.0); REQUIRE(bmp1x.IsOk()); - CHECK(bmp1x.GetWidth() == 16); - CHECK(bmp1x.GetHeight() == 8); - CHECK(bmp1x.GetLogicalWidth() == 16); - CHECK(bmp1x.GetLogicalHeight() == 8); + CHECK(bmp1x.GetSize() == wxSize(8, 4)); + CHECK(bmp1x.GetLogicalSize() == wxSize(8, 4)); CHECK_FALSE(bmp1x.HasAlpha()); CHECK(bmp1x.GetMask() == NULL); - wxBitmap bmp2x(img, -1, 2.0); + wxBitmap bmp2x(img2, -1, 2.0); REQUIRE(bmp2x.IsOk()); - CHECK(bmp2x.GetWidth() == 16); - CHECK(bmp2x.GetHeight() == 8); - CHECK(bmp2x.GetLogicalWidth() == 8); - CHECK(bmp2x.GetLogicalHeight() == 4); + CHECK(bmp2x.GetSize() == wxSize(16, 8)); + CHECK(bmp2x.GetLogicalSize() == wxSize(8, 4)); CHECK_FALSE(bmp2x.HasAlpha()); CHECK(bmp2x.GetMask() == NULL); - SECTION("Add images 2x to the list 2x") - { - // Logical image size - wxImageList il(8, 4, false); + // Logical image size + wxImageList il(8, 4, false); - int idx = il.Add(bmp2x); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); + int idx = il.Add(bmp2x); + REQUIRE(idx == 0); + REQUIRE(il.GetImageCount() == 1); - idx = il.Add(bmp1x); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 1); + idx = il.Add(bmp1x); + REQUIRE(idx == 1); + REQUIRE(il.GetImageCount() == 2); - idx = il.Add(bmp2x); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); + wxBitmap bmp = il.GetBitmap(0); + REQUIRE(bmp.IsOk() == true); + CHECK(bmp.GetScaleFactor() == 2.0); + CHECK(bmp.GetSize() == wxSize(16, 8)); + CHECK(bmp.GetLogicalSize() == wxSize(8, 4)); + CHECK_FALSE(bmp.HasAlpha()); + CHECK(bmp.GetMask() == NULL); - idx = il.Add(bmp1x); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 2); - - wxBitmap bmp = il.GetBitmap(1); - CHECK(bmp.IsOk() == true); - CHECK(bmp.GetScaleFactor() == 2.0); - CHECK(bmp.GetLogicalWidth() == 8); - CHECK(bmp.GetLogicalHeight() == 4); - CHECK(bmp.GetWidth() == 16); - CHECK(bmp.GetHeight() == 8); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - } - - SECTION("Add images 2x to the list 1x") - { - // Logical image size - wxImageList il(16, 8, false); - - int idx = il.Add(bmp1x); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp2x); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp1x); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); - - idx = il.Add(bmp2x); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 2); - - wxBitmap bmp = il.GetBitmap(1); - CHECK(bmp.IsOk() == true); - CHECK(bmp.GetScaleFactor() == 1.0); - CHECK(bmp.GetLogicalWidth() == 16); - CHECK(bmp.GetLogicalHeight() == 8); - CHECK(bmp.GetWidth() == 16); - CHECK(bmp.GetHeight() == 8); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - } - - SECTION("Replaces images in the list 2x") - { - // Logical image size - wxImageList il(8, 4, false); - - int idx = il.Add(bmp2x); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp2x); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); - - bool ok = il.Replace(1, bmp1x); - CHECK_FALSE(ok); - CHECK(il.GetImageCount() == 2); - - ok = il.Replace(0, bmp2x); - CHECK(ok == true); - CHECK(il.GetImageCount() == 2); - - wxBitmap bmp = il.GetBitmap(0); - CHECK(bmp.IsOk() == true); - CHECK(bmp.GetScaleFactor() == 2.0); - CHECK(bmp.GetLogicalWidth() == 8); - CHECK(bmp.GetLogicalHeight() == 4); - CHECK(bmp.GetWidth() == 16); - CHECK(bmp.GetHeight() == 8); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - } - - SECTION("Replaces images in the list 1x") - { - // Logical image size - wxImageList il(16, 8, false); - - int idx = il.Add(bmp1x); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp1x); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); - - bool ok = il.Replace(1, bmp2x); - CHECK_FALSE(ok); - CHECK(il.GetImageCount() == 2); - - ok = il.Replace(0, bmp1x); - CHECK(ok == true); - CHECK(il.GetImageCount() == 2); - - wxBitmap bmp = il.GetBitmap(0); - CHECK(bmp.GetScaleFactor() == 1.0); - CHECK(bmp.GetLogicalWidth() == 16); - CHECK(bmp.GetLogicalHeight() == 8); - CHECK(bmp.GetWidth() == 16); - CHECK(bmp.GetHeight() == 8); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - } - - SECTION("Changes list 1x to 2x") - { - wxImage img2(32, 16); - img2.SetRGB(wxRect(0, 0, 32, 16), 255, 128, 64); - REQUIRE(img2.IsOk()); - - wxBitmap bmp2x2(img2, -1, 2.0); - REQUIRE(bmp2x2.IsOk()); - CHECK(bmp2x2.GetWidth() == 32); - CHECK(bmp2x2.GetHeight() == 16); - CHECK(bmp2x2.GetLogicalWidth() == 16); - CHECK(bmp2x2.GetLogicalHeight() == 8); - CHECK(bmp2x2.HasAlpha() == false); - CHECK(bmp2x2.GetMask() == NULL); - - // Logical image size - wxImageList il(16, 8, false); - - // Now it should be the list with 1x images - int idx = il.Add(bmp1x); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp1x); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); - - idx = il.Add(bmp2x2); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 2); - - wxBitmap bmp = il.GetBitmap(0); - CHECK(bmp.GetScaleFactor() == 1.0); - CHECK(bmp.GetLogicalWidth() == 16); - CHECK(bmp.GetLogicalHeight() == 8); - CHECK(bmp.GetWidth() == 16); - CHECK(bmp.GetHeight() == 8); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - - il.RemoveAll(); - - // Now it should be the list with 2x images (the same logical size 16x8) - idx = il.Add(bmp2x2); - CHECK(idx == 0); - CHECK(il.GetImageCount() == 1); - - idx = il.Add(bmp2x2); - CHECK(idx == 1); - CHECK(il.GetImageCount() == 2); - - idx = il.Add(bmp1x); - CHECK(idx == -1); - CHECK(il.GetImageCount() == 2); - - bmp = il.GetBitmap(0); - CHECK(bmp.GetScaleFactor() == 2.0); - CHECK(bmp.GetLogicalWidth() == 16); - CHECK(bmp.GetLogicalHeight() == 8); - CHECK(bmp.GetWidth() == 32); - CHECK(bmp.GetHeight() == 16); - CHECK_FALSE(bmp.HasAlpha()); - CHECK(bmp.GetMask() == NULL); - } -#endif // !__WXMSW__ + bmp = il.GetBitmap(1); + REQUIRE(bmp.IsOk() == true); + CHECK(bmp.GetScaleFactor() == 1.0); + CHECK(bmp.GetSize() == wxSize(8, 4)); + CHECK(bmp.GetLogicalSize() == wxSize(8, 4)); + CHECK_FALSE(bmp.HasAlpha()); + CHECK(bmp.GetMask() == NULL); } +#endif // wxHAS_DPI_INDEPENDENT_PIXELS