[PATCH] Implemented operator optimization (espescially used to =
Antoine Azar
cairo at antoineazar.com
Fri Feb 22 02:34:10 PST 2008
replace OVER by SOURCE), moved some functions to their proper place, and =
optimized a bit checks in pixman-pict.c=0A=
=0A=
---=0A=
pixman/pixman-combine.c | 3 +-=0A=
pixman/pixman-image.c | 84 ++++++++++++++++++++++++++++++++=0A=
pixman/pixman-pict.c | 121 =
+++++++++++++++++++++++++++++++++-------------=0A=
pixman/pixman-private.h | 6 ++=0A=
4 files changed, 179 insertions(+), 35 deletions(-)=0A=
=0A=
diff --git a/pixman/pixman-combine.c b/pixman/pixman-combine.c=0A=
index be08af4..d201736 100644=0A=
--- a/pixman/pixman-combine.c=0A=
+++ b/pixman/pixman-combine.c=0A=
@@ -13,7 +13,6 @@=0A=
* this difference will have two versions using the same convention.=0A=
*/=0A=
=0A=
-=0A=
/*=0A=
* Combine src and mask=0A=
*/=0A=
@@ -1210,6 +1209,7 @@ static CombineFuncU pixman_fbCombineFuncU[] =3D {=0A=
fbCombineConjointAtopU,=0A=
fbCombineConjointAtopReverseU,=0A=
fbCombineConjointXorU,=0A=
+ NULL /* Noop */=0A=
};=0A=
=0A=
static CombineFuncC pixman_fbCombineFuncC[] =3D {=0A=
@@ -1257,6 +1257,7 @@ static CombineFuncC pixman_fbCombineFuncC[] =3D {=0A=
fbCombineConjointAtopC,=0A=
fbCombineConjointAtopReverseC,=0A=
fbCombineConjointXorC,=0A=
+ NULL /* Noop */=0A=
};=0A=
=0A=
FbComposeFunctions pixman_composeFunctions =3D {=0A=
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c=0A=
index 9b6846e..30c294b 100644=0A=
--- a/pixman/pixman-image.c=0A=
+++ b/pixman/pixman-image.c=0A=
@@ -717,3 +717,87 @@ pixman_image_fill_rectangles (pixman_op_t op,=0A=
=0A=
return TRUE;=0A=
}=0A=
+=0A=
+pixman_bool_t=0A=
+pixman_image_can_get_solid (pixman_image_t *image)=0A=
+{=0A=
+ if (image->type =3D=3D SOLID)=0A=
+ return TRUE;=0A=
+=0A=
+ if (image->type !=3D BITS ||=0A=
+ image->bits.width !=3D 1 ||=0A=
+ image->bits.height !=3D 1)=0A=
+ {=0A=
+ return FALSE;=0A=
+ }=0A=
+=0A=
+ if (image->common.repeat !=3D PIXMAN_REPEAT_NORMAL)=0A=
+ return FALSE;=0A=
+=0A=
+ switch (image->bits.format)=0A=
+ {=0A=
+ case PIXMAN_a8r8g8b8:=0A=
+ case PIXMAN_x8r8g8b8:=0A=
+ case PIXMAN_a8b8g8r8:=0A=
+ case PIXMAN_x8b8g8r8:=0A=
+ case PIXMAN_r8g8b8:=0A=
+ case PIXMAN_b8g8r8:=0A=
+ case PIXMAN_r5g6b5:=0A=
+ case PIXMAN_b5g6r5:=0A=
+ return TRUE;=0A=
+ default:=0A=
+ return FALSE;=0A=
+ }=0A=
+}=0A=
+=0A=
+pixman_bool_t=0A=
+pixman_image_is_opaque(pixman_image_t *image)=0A=
+{=0A=
+ int i =3D 0;=0A=
+ int gradientNumberOfColors =3D 0;=0A=
+=0A=
+ if(image->common.alpha_map)=0A=
+ return FALSE;=0A=
+=0A=
+ switch(image->type)=0A=
+ {=0A=
+ case BITS:=0A=
+ if(PIXMAN_FORMAT_A(image->bits.format))=0A=
+ return FALSE;=0A=
+ break;=0A=
+=0A=
+ case LINEAR:=0A=
+ case CONICAL:=0A=
+ case RADIAL:=0A=
+ gradientNumberOfColors =3D image->gradient.n_stops;=0A=
+ i=3D0;=0A=
+ while(i<gradientNumberOfColors)=0A=
+ {=0A=
+ if(image->gradient.stops[i].color.alpha !=3D 0xffff)=0A=
+ return FALSE;=0A=
+ i++;=0A=
+ }=0A=
+ break;=0A=
+=0A=
+ case SOLID:=0A=
+ if(Alpha(image->solid.color) !=3D 0xff)=0A=
+ return FALSE;=0A=
+ break;=0A=
+ }=0A=
+=0A=
+ /* Convolution filters can introduce translucency if the sum of the =
weights=0A=
+ is lower than 1. */=0A=
+ if (image->common.filter =3D=3D PIXMAN_FILTER_CONVOLUTION)=0A=
+ return FALSE;=0A=
+=0A=
+ if (image->common.repeat =3D=3D PIXMAN_REPEAT_NONE)=0A=
+ {=0A=
+ if (image->common.filter !=3D PIXMAN_FILTER_NEAREST)=0A=
+ return FALSE;=0A=
+=0A=
+ if (image->common.transform)=0A=
+ return FALSE;=0A=
+ }=0A=
+=0A=
+ return TRUE;=0A=
+}=0A=
\ No newline at end of file=0A=
diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c=0A=
index 8976ff2..55adc29 100644=0A=
--- a/pixman/pixman-pict.c=0A=
+++ b/pixman/pixman-pict.c=0A=
@@ -1261,38 +1261,6 @@ pixman_walk_composite_region (pixman_op_t op,=0A=
pixman_region_fini (®);=0A=
}=0A=
=0A=
-static pixman_bool_t=0A=
-can_get_solid (pixman_image_t *image)=0A=
-{=0A=
- if (image->type =3D=3D SOLID)=0A=
- return TRUE;=0A=
-=0A=
- if (image->type !=3D BITS ||=0A=
- image->bits.width !=3D 1 ||=0A=
- image->bits.height !=3D 1)=0A=
- {=0A=
- return FALSE;=0A=
- }=0A=
-=0A=
- if (image->common.repeat !=3D PIXMAN_REPEAT_NORMAL)=0A=
- return FALSE;=0A=
-=0A=
- switch (image->bits.format)=0A=
- {=0A=
- case PIXMAN_a8r8g8b8:=0A=
- case PIXMAN_x8r8g8b8:=0A=
- case PIXMAN_a8b8g8r8:=0A=
- case PIXMAN_x8b8g8r8:=0A=
- case PIXMAN_r8g8b8:=0A=
- case PIXMAN_b8g8r8:=0A=
- case PIXMAN_r5g6b5:=0A=
- case PIXMAN_b5g6r5:=0A=
- return TRUE;=0A=
- default:=0A=
- return FALSE;=0A=
- }=0A=
-}=0A=
-=0A=
#define SCANLINE_BUFFER_LENGTH 2048=0A=
=0A=
static void=0A=
@@ -1552,7 +1520,7 @@ get_fast_path (const FastPathInfo *fast_paths,=0A=
if (info->op !=3D op)=0A=
continue;=0A=
=0A=
- if ((info->src_format =3D=3D PIXMAN_solid && can_get_solid (pSrc)) ||=0A=
+ if ((info->src_format =3D=3D PIXMAN_solid && =
pixman_image_can_get_solid (pSrc)) ||=0A=
(pSrc->type =3D=3D BITS && info->src_format =3D=3D =
pSrc->bits.format))=0A=
{=0A=
valid_src =3D TRUE;=0A=
@@ -1594,6 +1562,82 @@ get_fast_path (const FastPathInfo *fast_paths,=0A=
return NULL;=0A=
}=0A=
=0A=
+/*=0A=
+ * Operator optimizations based on source or destination opacity=0A=
+ */=0A=
+typedef struct=0A=
+{=0A=
+ pixman_op_t op;=0A=
+ pixman_op_t opSrcDstOpaque;=0A=
+ pixman_op_t opSrcOpaque;=0A=
+ pixman_op_t opDstOpaque;=0A=
+} OptimizedOperatorInfo;=0A=
+=0A=
+static const OptimizedOperatorInfo optimized_operators[] =3D=0A=
+{=0A=
+ /* Input Operator SRC&DST Opaque SRC Opaque =
DST Opaque */=0A=
+ { PIXMAN_OP_OVER, PIXMAN_OP_SRC, PIXMAN_OP_SRC, =
PIXMAN_OP_OVER },=0A=
+ { PIXMAN_OP_OVER_REVERSE, PIXMAN_OP_DST, =
PIXMAN_OP_OVER_REVERSE, PIXMAN_OP_DST },=0A=
+ { PIXMAN_OP_IN, PIXMAN_OP_SRC, PIXMAN_OP_IN, =
PIXMAN_OP_SRC },=0A=
+ { PIXMAN_OP_IN_REVERSE, PIXMAN_OP_DST, PIXMAN_OP_DST, =
PIXMAN_OP_IN_REVERSE },=0A=
+ { PIXMAN_OP_OUT, PIXMAN_OP_CLEAR, PIXMAN_OP_OUT, =
PIXMAN_OP_CLEAR },=0A=
+ { PIXMAN_OP_OUT_REVERSE, PIXMAN_OP_CLEAR, =
PIXMAN_OP_CLEAR, PIXMAN_OP_OUT_REVERSE },=0A=
+ { PIXMAN_OP_ATOP, PIXMAN_OP_SRC, PIXMAN_OP_IN, =
PIXMAN_OP_OVER },=0A=
+ { PIXMAN_OP_ATOP_REVERSE, PIXMAN_OP_DST, =
PIXMAN_OP_OVER_REVERSE, PIXMAN_OP_IN_REVERSE },=0A=
+ { PIXMAN_OP_XOR, PIXMAN_OP_CLEAR, PIXMAN_OP_OUT, =
PIXMAN_OP_OUT_REVERSE },=0A=
+ { PIXMAN_OP_SATURATE, PIXMAN_OP_DST, =
PIXMAN_OP_OVER_REVERSE, PIXMAN_OP_DST },=0A=
+ { PIXMAN_OP_NONE }=0A=
+};=0A=
+=0A=
+=0A=
+/*=0A=
+ * Check if the current operator could be optimized=0A=
+ */=0A=
+static const OptimizedOperatorInfo*=0A=
+pixman_operator_can_be_optimized(pixman_op_t op)=0A=
+{=0A=
+ const OptimizedOperatorInfo *info;=0A=
+=0A=
+ for (info =3D optimized_operators; info->op !=3D PIXMAN_OP_NONE; =
info++)=0A=
+ {=0A=
+ if(info->op =3D=3D op)=0A=
+ return info;=0A=
+ }=0A=
+ return NULL;=0A=
+}=0A=
+=0A=
+/*=0A=
+ * Optimize the current operator based on opacity of source or =
destination=0A=
+ * The output operator should be mathematically equivalent to the =
source.=0A=
+ */=0A=
+static pixman_op_t=0A=
+pixman_optimize_operator(pixman_op_t op, pixman_image_t *pSrc, =
pixman_image_t *pMask, pixman_image_t *pDst )=0A=
+{=0A=
+ pixman_bool_t is_source_opaque;=0A=
+ pixman_bool_t is_dest_opaque;=0A=
+ const OptimizedOperatorInfo *info =3D =
pixman_operator_can_be_optimized(op);=0A=
+=0A=
+ if(!info || pMask)=0A=
+ return op;=0A=
+=0A=
+ is_source_opaque =3D pixman_image_is_opaque(pSrc);=0A=
+ is_dest_opaque =3D pixman_image_is_opaque(pDst);=0A=
+=0A=
+ if(is_source_opaque =3D=3D FALSE && is_dest_opaque =3D=3D FALSE)=0A=
+ return op;=0A=
+=0A=
+ if(is_source_opaque && is_dest_opaque)=0A=
+ return info->opSrcDstOpaque;=0A=
+ else if(is_source_opaque)=0A=
+ return info->opSrcOpaque;=0A=
+ else if(is_dest_opaque)=0A=
+ return info->opDstOpaque;=0A=
+=0A=
+ return op;=0A=
+=0A=
+}=0A=
+=0A=
+=0A=
void=0A=
pixman_image_composite (pixman_op_t op,=0A=
pixman_image_t * pSrc,=0A=
@@ -1650,7 +1694,15 @@ pixman_image_composite (pixman_op_t op,=0A=
}=0A=
}=0A=
=0A=
- if ((pSrc->type =3D=3D BITS || can_get_solid (pSrc)) && (!pMask || =
pMask->type =3D=3D BITS)=0A=
+ /*=0A=
+ * Check if we can replace our operator by a simpler one if the src =
or dest are opaque=0A=
+ * The output operator should be mathematically equivalent to the =
source.=0A=
+ */=0A=
+ op =3D pixman_optimize_operator(op, pSrc, pMask, pDst);=0A=
+ if(op =3D=3D PIXMAN_OP_DST)=0A=
+ return;=0A=
+=0A=
+ if ((pSrc->type =3D=3D BITS || pixman_image_can_get_solid (pSrc)) =
&& (!pMask || pMask->type =3D=3D BITS)=0A=
&& !srcTransform && !maskTransform=0A=
&& !maskAlphaMap && !srcAlphaMap && !dstAlphaMap=0A=
&& (pSrc->common.filter !=3D PIXMAN_FILTER_CONVOLUTION)=0A=
@@ -1751,6 +1803,7 @@ pixman_image_composite (pixman_op_t op,=0A=
}=0A=
=0A=
=0A=
+=0A=
#ifdef USE_MMX=0A=
/* The CPU detection code needs to be in a file not compiled with=0A=
* "-mmmx -msse", as gcc would generate CMOV instructions otherwise=0A=
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h=0A=
index 2da0b41..e236767 100644=0A=
--- a/pixman/pixman-private.h=0A=
+++ b/pixman/pixman-private.h=0A=
@@ -837,6 +837,12 @@ pixman_rasterize_edges_accessors (pixman_image_t =
*image,=0A=
pixman_fixed_t t,=0A=
pixman_fixed_t b);=0A=
=0A=
+pixman_bool_t=0A=
+pixman_image_is_opaque(pixman_image_t *image);=0A=
+=0A=
+pixman_bool_t=0A=
+pixman_image_can_get_solid (pixman_image_t *image);=0A=
+=0A=
=0A=
#ifdef PIXMAN_TIMING=0A=
=0A=
-- =0A=
1.5.4.rc3.941.gebb79=0A=
=0A=
--Boundary_(ID_Bl9oG+c0xDQmOa+5fKdTeQ)
Content-type: text/html; CHARSET=US-ASCII; name=optimization_final_with_MMX.htm
Content-transfer-encoding: 7BIT
Content-disposition: attachment; filename=optimization_final_with_MMX.htm
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
<link rel=File-List href="optimization_final_with_MMX_files/filelist.xml">
<link rel=Edit-Time-Data href="optimization_final_with_MMX_files/editdata.mso">
<link rel=OLE-Object-Data href="optimization_final_with_MMX_files/oledata.mso">
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:LastAuthor>Antoine Azar</o:LastAuthor>
<o:Created>2008-03-28T23:56:59Z</o:Created>
<o:LastSaved>2008-03-28T23:56:59Z</o:LastSaved>
<o:Version>11.8036</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:1.0in .75in 1.0in .75in;
mso-header-margin:.5in;
mso-footer-margin:.5in;}
tr
{mso-height-source:auto;}
col
{mso-width-source:auto;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:General;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
border:none;
mso-protection:locked visible;
mso-style-name:Normal;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:10.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Arial;
mso-generic-font-family:auto;
mso-font-charset:0;
mso-number-format:General;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl24
{mso-style-parent:style0;
mso-number-format:Percent;}
.xl25
{mso-style-parent:style0;
mso-number-format:Fixed;}
.xl26
{mso-style-parent:style0;
font-weight:700;
font-family:Arial, sans-serif;
mso-font-charset:0;
text-align:center;
background:silver;
mso-pattern:auto none;}
.xl27
{mso-style-parent:style0;
mso-number-format:"0\.000";
text-align:center;}
.xl28
{mso-style-parent:style0;
font-weight:700;
font-family:Arial, sans-serif;
mso-font-charset:0;
text-align:center;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>ccccccPrePatchAgain</x:Name>
<x:WorksheetOptions>
<x:Selected/>
<x:Panes>
<x:Pane>
<x:Number>3</x:Number>
<x:ActiveRow>7</x:ActiveRow>
<x:ActiveCol>21</x:ActiveCol>
</x:Pane>
</x:Panes>
<x:ProtectContents>False</x:ProtectContents>
<x:ProtectObjects>False</x:ProtectObjects>
<x:ProtectScenarios>False</x:ProtectScenarios>
</x:WorksheetOptions>
<x:ConditionalFormatting>
<x:Range>$U$3:$U$22</x:Range>
<x:Condition>
<x:Qualifier>Greater</x:Qualifier>
<x:Value1>1.05</x:Value1>
<x:Format Style='color:green;font-weight:700'/>
</x:Condition>
<x:Condition>
<x:Qualifier>Less</x:Qualifier>
<x:Value1>0.95</x:Value1>
<x:Format Style='color:red;font-weight:700'/>
</x:Condition>
</x:ConditionalFormatting>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
<x:WindowHeight>15270</x:WindowHeight>
<x:WindowWidth>28380</x:WindowWidth>
<x:WindowTopX>360</x:WindowTopX>
<x:WindowTopY>240</x:WindowTopY>
<x:ProtectStructure>False</x:ProtectStructure>
<x:ProtectWindows>False</x:ProtectWindows>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>
<body link=blue vlink=purple>
<table x:str border=0 cellpadding=0 cellspacing=0 width=1512 style='border-collapse:
collapse;table-layout:fixed;width:1134pt'>
<col width=11 style='mso-width-source:userset;mso-width-alt:402;width:8pt'>
<col width=25 style='mso-width-source:userset;mso-width-alt:914;width:19pt'>
<col width=104 style='mso-width-source:userset;mso-width-alt:3803;width:78pt'>
<col width=180 style='mso-width-source:userset;mso-width-alt:6582;width:135pt'>
<col width=64 style='width:48pt'>
<col width=54 style='mso-width-source:userset;mso-width-alt:1974;width:41pt'>
<col width=75 style='mso-width-source:userset;mso-width-alt:2742;width:56pt'>
<col width=51 style='mso-width-source:userset;mso-width-alt:1865;width:38pt'>
<col width=60 style='mso-width-source:userset;mso-width-alt:2194;width:45pt'>
<col width=64 style='width:48pt'>
<col width=11 style='mso-width-source:userset;mso-width-alt:402;width:8pt'>
<col width=25 style='mso-width-source:userset;mso-width-alt:914;width:19pt'>
<col width=71 style='mso-width-source:userset;mso-width-alt:2596;width:53pt'>
<col width=180 style='mso-width-source:userset;mso-width-alt:6582;width:135pt'>
<col width=64 span=6 style='width:48pt'>
<col width=153 style='mso-width-source:userset;mso-width-alt:5595;width:115pt'>
<tr height=17 style='height:12.75pt'>
<td colspan=9 height=17 class=xl26 width=624 style='height:12.75pt;
width:468pt'>BEFORE OPTIMIZATION</td>
<td width=64 style='width:48pt'></td>
<td colspan=9 class=xl26 width=607 style='width:455pt'>AFTER OPTIMIZATION</td>
<td width=64 style='width:48pt'></td>
<td width=153 style='width:115pt'></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>#</td>
<td>backend-content</td>
<td>test-size</td>
<td>min(ticks)</td>
<td>min(ms)</td>
<td>median(ms)</td>
<td>stddev.</td>
<td>iterations</td>
<td></td>
<td>[</td>
<td>#</td>
<td>backend-co<span style='display:none'>ntent</span></td>
<td>test-size</td>
<td>min(ticks)</td>
<td>min(ms)</td>
<td>median(m<span style='display:none'>s)</span></td>
<td>stddev.</td>
<td>iterations</td>
<td></td>
<td class=xl28>Speedup (before/after)</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>0]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_over-256</td>
<td align=right x:num>161</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td class=xl24 align=right x:num="8.7099999999999997E-2">8.71%</td>
<td align=right x:num>94</td>
<td></td>
<td>[</td>
<td>0]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_over-256</td>
<td align=right x:num>161</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td class=xl24 align=right x:num="2E-3">0.20%</td>
<td align=right x:num>83</td>
<td></td>
<td class=xl27 x:num x:fmla="=G3/Q3">1.000</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>1]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_source-256</td>
<td align=right x:num>161</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td align=right x:num="5.2999999999999999E-2">0.053</td>
<td class=xl24 align=right x:num="0.1167">11.67%</td>
<td align=right x:num>86</td>
<td></td>
<td>[</td>
<td>1]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_source-256</td>
<td align=right x:num>161</td>
<td align=right x:num="4.4999999999999998E-2">0.045</td>
<td align=right x:num="5.0999999999999997E-2">0.051</td>
<td class=xl24 align=right x:num="6.2300000000000001E-2">6.23%</td>
<td align=right x:num>82</td>
<td></td>
<td class=xl27 x:num="1.0392156862745099" x:fmla="=G4/Q4">1.039</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>2]</td>
<td>image-rgba</td>
<td>paint_image_rgb_over-256</td>
<td align=right x:num>1559</td>
<td align=right x:num="0.436">0.436</td>
<td align=right x:num>0.46</td>
<td class=xl24 align=right x:num="6.0400000000000002E-2">6.04%</td>
<td align=right x:num>87</td>
<td></td>
<td>[</td>
<td>2]</td>
<td>image-rgba</td>
<td>paint_image_rgb_over-256</td>
<td align=right x:num>247</td>
<td align=right x:num="6.9000000000000006E-2">0.069</td>
<td align=right x:num="0.121">0.121</td>
<td class=xl24 align=right x:num="0.1958">19.58%</td>
<td align=right x:num>90</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="3.8016528925619837" x:fmla="=G5/Q5">3.802</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>3]</td>
<td>image-rgba</td>
<td>paint_image_rgb_source-256</td>
<td align=right x:num>1051</td>
<td align=right x:num="0.29399999999999998">0.294</td>
<td align=right x:num="0.33700000000000002">0.337</td>
<td class=xl24 align=right x:num="7.8299999999999995E-2">7.83%</td>
<td align=right x:num>85</td>
<td></td>
<td>[</td>
<td>3]</td>
<td>image-rgba</td>
<td>paint_image_rgb_source-256</td>
<td align=right x:num>249</td>
<td align=right x:num>0.07</td>
<td align=right x:num="0.123">0.123</td>
<td class=xl24 align=right x:num="0.1847">18.47%</td>
<td align=right x:num>83</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="2.7398373983739841" x:fmla="=G6/Q6">2.740</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>4]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_over-256</td>
<td align=right x:num>1492</td>
<td align=right x:num="0.41699999999999998">0.417</td>
<td align=right x:num="0.41699999999999998">0.417</td>
<td class=xl24 align=right x:num="5.9999999999999995E-4">0.06%</td>
<td align=right x:num>80</td>
<td></td>
<td>[</td>
<td>4]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_over-256</td>
<td align=right x:num>244</td>
<td align=right x:num="6.8000000000000005E-2">0.068</td>
<td align=right x:num="6.8000000000000005E-2">0.068</td>
<td class=xl24 align=right x:num="2.0999999999999999E-3">0.21%</td>
<td align=right x:num>84</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="6.1323529411764701" x:fmla="=G7/Q7">6.132</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>5]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_source-256</td>
<td align=right x:num>1051</td>
<td align=right x:num="0.29399999999999998">0.294</td>
<td align=right x:num="0.29399999999999998">0.294</td>
<td class=xl24 align=right x:num="4.0000000000000002E-4">0.04%</td>
<td align=right x:num>80</td>
<td></td>
<td>[</td>
<td>5]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_source-256</td>
<td align=right x:num>242</td>
<td align=right x:num="6.8000000000000005E-2">0.068</td>
<td align=right x:num="6.8000000000000005E-2">0.068</td>
<td class=xl24 align=right x:num="2.0999999999999999E-3">0.21%</td>
<td align=right x:num>95</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="4.3235294117647056" x:fmla="=G8/Q8">4.324</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>6]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_over-256</td>
<td align=right x:num>9448</td>
<td align=right x:num="2.6389999999999998">2.639</td>
<td align=right x:num="2.6739999999999999">2.674</td>
<td class=xl24 align=right x:num="6.5500000000000003E-2">6.55%</td>
<td align=right x:num>84</td>
<td></td>
<td>[</td>
<td>6]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_over-256</td>
<td align=right x:num>8819</td>
<td align=right x:num="2.464">2.464</td>
<td align=right x:num="2.5030000000000001">2.503</td>
<td class=xl24 align=right x:num="0.13339999999999999">13.34%</td>
<td align=right x:num>92</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.0683180183779464" x:fmla="=G9/Q9">1.068</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>7]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_source-256</td>
<td align=right x:num>8959</td>
<td align=right x:num="2.5030000000000001">2.503</td>
<td align=right x:num="2.5750000000000002">2.575</td>
<td class=xl24 align=right x:num="0.10390000000000001">10.39%</td>
<td align=right x:num>87</td>
<td></td>
<td>[</td>
<td>7]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_source-256</td>
<td align=right x:num>8821</td>
<td align=right x:num="2.464">2.464</td>
<td align=right x:num>2.49</td>
<td class=xl24 align=right x:num="0.127">12.70%</td>
<td align=right x:num>92</td>
<td></td>
<td class=xl27 x:num="1.0341365461847389" x:fmla="=G10/Q10">1.034</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>8]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_over-256</td>
<td align=right x:num>33117</td>
<td align=right x:num="9.2520000000000007">9.252</td>
<td align=right x:num="9.8559999999999999">9.856</td>
<td class=xl24 align=right x:num="4.6399999999999997E-2">4.64%</td>
<td align=right x:num>82</td>
<td></td>
<td>[</td>
<td>8]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_over-256</td>
<td align=right x:num>31936</td>
<td align=right x:num="8.9220000000000006">8.922</td>
<td align=right x:num="9.8450000000000006">9.845</td>
<td class=xl24 align=right x:num="7.7700000000000005E-2">7.77%</td>
<td align=right x:num>92</td>
<td></td>
<td class=xl27 x:num="1.001117318435754" x:fmla="=G11/Q11">1.001</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>9]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_source-256</td>
<td align=right x:num>32120</td>
<td align=right x:num="8.9730000000000008">8.973</td>
<td align=right x:num="9.9030000000000005">9.903</td>
<td class=xl24 align=right x:num="8.4699999999999998E-2">8.47%</td>
<td align=right x:num>93</td>
<td></td>
<td>[</td>
<td>9]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_source-256</td>
<td align=right x:num>32673</td>
<td align=right x:num="9.1280000000000001">9.128</td>
<td align=right x:num="9.8130000000000006">9.813</td>
<td class=xl24 align=right x:num="5.1700000000000003E-2">5.17%</td>
<td align=right x:num>87</td>
<td></td>
<td class=xl27 x:num="1.0091715071843472" x:fmla="=G12/Q12">1.009</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>10]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_over-512</td>
<td align=right x:num>752</td>
<td align=right x:num>0.21</td>
<td align=right x:num="0.21299999999999999">0.213</td>
<td class=xl24 align=right x:num="0.1762">17.62%</td>
<td align=right x:num>84</td>
<td></td>
<td>[</td>
<td>10]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_over-512</td>
<td align=right x:num>741</td>
<td align=right x:num="0.20699999999999999">0.207</td>
<td align=right x:num="0.21099999999999999">0.211</td>
<td class=xl24 align=right x:num="1.5800000000000002E-2">1.58%</td>
<td align=right x:num>80</td>
<td></td>
<td class=xl27 x:num="1.0094786729857821" x:fmla="=G13/Q13">1.009</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>11]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_source-512</td>
<td align=right x:num>746</td>
<td align=right x:num="0.20799999999999999">0.208</td>
<td align=right x:num="0.21099999999999999">0.211</td>
<td class=xl24 align=right x:num="5.5999999999999999E-3">0.56%</td>
<td align=right x:num>84</td>
<td></td>
<td>[</td>
<td>11]</td>
<td>image-rgba</td>
<td>paint_solid_rgb_source-512</td>
<td align=right x:num>743</td>
<td align=right x:num="0.20799999999999999">0.208</td>
<td align=right x:num="0.21099999999999999">0.211</td>
<td class=xl24 align=right x:num="9.7000000000000003E-3">0.97%</td>
<td align=right x:num>79</td>
<td></td>
<td class=xl27 x:num x:fmla="=G14/Q14">1.000</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>12]</td>
<td>image-rgba</td>
<td>paint_image_rgb_over-512</td>
<td align=right x:num>8038</td>
<td align=right x:num="2.246">2.246</td>
<td align=right x:num="2.2970000000000002">2.297</td>
<td class=xl24 align=right x:num="0.1608">16.08%</td>
<td align=right x:num>93</td>
<td></td>
<td>[</td>
<td>12]</td>
<td>image-rgba</td>
<td>paint_image_rgb_over-512</td>
<td align=right x:num>5150</td>
<td align=right x:num="1.4390000000000001">1.439</td>
<td align=right x:num="1.5580000000000001">1.558</td>
<td class=xl24 align=right x:num="7.9899999999999999E-2">7.99%</td>
<td align=right x:num>82</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.4743260590500642" x:fmla="=G15/Q15">1.474</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>13]</td>
<td>image-rgba</td>
<td>paint_image_rgb_source-512</td>
<td align=right x:num>7435</td>
<td align=right x:num="2.077">2.077</td>
<td align=right x:num="2.1150000000000002">2.115</td>
<td class=xl24 align=right x:num="0.17610000000000001">17.61%</td>
<td align=right x:num>91</td>
<td></td>
<td>[</td>
<td>13]</td>
<td>image-rgba</td>
<td>paint_image_rgb_source-512</td>
<td align=right x:num>5133</td>
<td align=right x:num="1.4339999999999999">1.434</td>
<td align=right x:num>1.53</td>
<td class=xl24 align=right x:num="8.4199999999999997E-2">8.42%</td>
<td align=right x:num>84</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.3823529411764708" x:fmla="=G16/Q16">1.382</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>14]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_over-512</td>
<td align=right x:num>7999</td>
<td align=right x:num="2.2349999999999999">2.235</td>
<td align=right x:num="2.4609999999999999">2.461</td>
<td class=xl24 align=right x:num="0.15090000000000001">15.09%</td>
<td align=right x:num>94</td>
<td></td>
<td>[</td>
<td>14]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_over-512</td>
<td align=right x:num>4924</td>
<td align=right x:num="1.3759999999999999">1.376</td>
<td align=right x:num="1.4159999999999999">1.416</td>
<td class=xl24 align=right x:num="5.7799999999999997E-2">5.78%</td>
<td align=right x:num>83</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.7379943502824859" x:fmla="=G17/Q17">1.738</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>15]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_source-512</td>
<td align=right x:num>7386</td>
<td align=right x:num="2.0630000000000002">2.063</td>
<td align=right x:num="2.1819999999999999">2.182</td>
<td class=xl24 align=right x:num="0.14899999999999999">14.90%</td>
<td align=right x:num>90</td>
<td></td>
<td>[</td>
<td>15]</td>
<td>image-rgba</td>
<td>paint_similar_rgb_source-512</td>
<td align=right x:num>4907</td>
<td align=right x:num="1.371">1.371</td>
<td align=right x:num="1.4419999999999999">1.442</td>
<td class=xl24 align=right x:num="6.3799999999999996E-2">6.38%</td>
<td align=right x:num>82</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.5131761442441054" x:fmla="=G18/Q18">1.513</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>16]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_over-512</td>
<td align=right x:num>38887</td>
<td align=right x:num="10.864000000000001">10.864</td>
<td align=right x:num="11.769">11.769</td>
<td class=xl24 align=right x:num="0.12670000000000001">12.67%</td>
<td align=right x:num>96</td>
<td></td>
<td>[</td>
<td>16]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_over-512</td>
<td align=right x:num>37161</td>
<td align=right x:num="10.381">10.381</td>
<td align=right x:num="11.077">11.077</td>
<td class=xl24 align=right x:num="9.2600000000000002E-2">9.26%</td>
<td align=right x:num>95</td>
<td></td>
<td class=xl27 style='mso-ignore:style;color:green;font-weight:700'
x:num="1.0624717883903585" x:fmla="=G19/Q19">1.062</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>17]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_source-512</td>
<td align=right x:num>38392</td>
<td align=right x:num="10.725">10.725</td>
<td align=right x:num="11.335000000000001">11.335</td>
<td class=xl24 align=right x:num="0.09">9.00%</td>
<td align=right x:num>94</td>
<td></td>
<td>[</td>
<td>17]</td>
<td>image-rgba</td>
<td>paint_linear_rgb_source-512</td>
<td align=right x:num>36023</td>
<td align=right x:num="10.064">10.064</td>
<td align=right x:num="10.913">10.913</td>
<td class=xl24 align=right x:num="9.9099999999999994E-2">9.91%</td>
<td align=right x:num>95</td>
<td></td>
<td class=xl27 x:num="1.0386694767708238" x:fmla="=G20/Q20">1.039</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>18]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_over-512</td>
<td align=right x:num>133389</td>
<td align=right x:num="37.264000000000003">37.264</td>
<td align=right x:num="39.637">39.637</td>
<td class=xl24 align=right x:num="4.07E-2">4.07%</td>
<td align=right x:num>95</td>
<td></td>
<td>[</td>
<td>18]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_over-512</td>
<td align=right x:num>134373</td>
<td align=right x:num="37.539000000000001">37.539</td>
<td align=right x:num="39.128999999999998">39.129</td>
<td class=xl24 align=right x:num="3.9300000000000002E-2">3.93%</td>
<td align=right x:num>97</td>
<td></td>
<td class=xl27 x:num="1.0129826982544916" x:fmla="=G21/Q21">1.013</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 style='height:12.75pt'>[</td>
<td>19]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_source-512</td>
<td align=right x:num>138218</td>
<td align=right x:num="38.613">38.613</td>
<td align=right x:num="39.676000000000002">39.676</td>
<td class=xl24 align=right x:num="5.8900000000000001E-2">5.89%</td>
<td align=right x:num>100</td>
<td></td>
<td>[</td>
<td>19]</td>
<td>image-rgba</td>
<td>paint_radial_rgb_source-512</td>
<td align=right x:num>135091</td>
<td align=right x:num>37.74</td>
<td align=right x:num="39.277999999999999">39.278</td>
<td class=xl24 align=right x:num="4.24E-2">4.24%</td>
<td align=right x:num>95</td>
<td></td>
<td class=xl27 x:num="1.0101328988237692" x:fmla="=G22/Q22">1.010</td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<tr height=17 style='height:12.75pt'>
<td height=17 colspan=7 style='height:12.75pt;mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=9 style='mso-ignore:colspan'></td>
<td class=xl24></td>
<td colspan=2 style='mso-ignore:colspan'></td>
<td class=xl25></td>
</tr>
<![if supportMisalignedColumns]>
<tr height=0 style='display:none'>
<td width=11 style='width:8pt'></td>
<td width=25 style='width:19pt'></td>
<td width=104 style='width:78pt'></td>
<td width=180 style='width:135pt'></td>
<td width=64 style='width:48pt'></td>
<td width=54 style='width:41pt'></td>
<td width=75 style='width:56pt'></td>
<td width=51 style='width:38pt'></td>
<td width=60 style='width:45pt'></td>
<td width=64 style='width:48pt'></td>
<td width=11 style='width:8pt'></td>
<td width=25 style='width:19pt'></td>
<td width=71 style='width:53pt'></td>
<td width=180 style='width:135pt'></td>
<td width=64 style='width:48pt'></td>
<td width=64 style='width:48pt'></td>
<td width=64 style='width:48pt'></td>
<td width=64 style='width:48pt'></td>
<td width=64 style='width:48pt'></td>
<td width=64 style='width:48pt'></td>
<td width=153 style='width:115pt'></td>
</tr>
<![endif]>
</table>
</body>
</html>
--Boundary_(ID_Bl9oG+c0xDQmOa+5fKdTeQ)--
More information about the cairo
mailing list