<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML - vooraf opgemaakt Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.gmail-m3052572566543848943msolistparagraph, li.gmail-m3052572566543848943msolistparagraph, div.gmail-m3052572566543848943msolistparagraph
        {mso-style-name:gmail-m_3052572566543848943msolistparagraph;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTML-voorafopgemaaktChar
        {mso-style-name:"HTML - vooraf opgemaakt Char";
        mso-style-priority:99;
        mso-style-link:"HTML - vooraf opgemaakt";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:605426779;
        mso-list-template-ids:-1;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style></head><body lang=NL link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Dear Simon,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>After modifying and trying out the script you sent me, I have some questions since I don’t get the desired result. My desired result is to get projections from a patient CT from all 360 degrees. However, enclosed are some pictures from my actual result (projection_result.png). It seems that the isocenter around which the projections are made is wrong. I think I should change the center variable, but whatever I change it to, the results are the same. Wat is going wrong?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Changing the variables origin and semiprincipalaxis seem to do nothing as well to my result. Just for clarification, what do these variables mean? To my understanding, the origin variable sets the world coordinates for where the detector (and thus projection images) initially is. The center defines the isocenter around which the source and detector rotate.  I don’t really understand the semiprincipalaxis variable, it probably defines the shape of the path which is made by the source/detector. Are these explanations correct or am I misinterpreting something?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Lastly, I have another question: Is it also possible to change around which axis the projections are made? And is it also possible to first do a rotation around the z axis and then the y axis leading to 360x360 projection images?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you very much.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best regards,</p><p class=MsoNormal>Milou</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Van: </b><a href="mailto:simon.rit@creatis.insa-lyon.fr">Simon Rit</a><br><b>Verzonden: </b>vrijdag 13 augustus 2021 08:25<br><b>Aan: </b><a href="mailto:m.m.deboer@student.utwente.nl">Milou de Boer</a><br><b>CC: </b><a href="mailto:rtk-users@public.kitware.com">rtk-users@public.kitware.com</a><br><b>Onderwerp: </b>Re: [Rtk-users] Creating DRRs with RTK in python</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Hi,</p></div><div><p class=MsoNormal>Both your input volume and your stack of projections should be 3D. If you simulate only one projection, you can always make it 2D afterwards by slicing the stack. The third dimension of spacing and origin of the stack are never used in RTK but must be provided since it's a 3D image.</p></div><div><p class=MsoNormal>I might be wrong but I don't think SimpleITK and the RTK wrappings are compatible. I would suggest the use of the ITK wrappings described in their examples. See <a href="https://itkpythonpackage.readthedocs.io/en/master/Quick_start_guide.html">here</a> for an example.</p></div><div><p class=MsoNormal>Enclosed is a slightly modified version of your script which produces a projection stack. The geometry is probably not correct but I let you play with the script to set them as you wish.</p></div><div><p class=MsoNormal>Cheers,</p></div><div><p class=MsoNormal>Simon</p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Mon, Aug 9, 2021 at 9:55 AM Milou de Boer <<a href="mailto:m.m.deboer@student.utwente.nl">m.m.deboer@student.utwente.nl</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dear all,</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I’m quite new to Python (and the use of RTK and ITK), but I have a project for which I want to create digitally reconstructed radiographs (DRRs) of a CT. I therefore have successfully installed RTK for python and I have run the FirstReconstruction.py example. Now I want to edit this so that it is possible to create DRRs, thus forwardprojection. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I have read in the archives of RTK-users and people are mostly directed towards the C++ code <a href="https://github.com/SimonRit/RTK/blob/b32cffdc6f9d7a432c50023c370ed996a7985b69/applications/rtkforwardprojections/rtkforwardprojections.cxx" target="_blank">https://github.com/SimonRit/RTK/blob/b32cffdc6f9d7a432c50023c370ed996a7985b69/applications/rtkforwardprojections/rtkforwardprojections.cxx</a> for forward projections. However, I find this very hard to read since I don’t know C++ so I hope you can help. I have also read <a href="https://discourse.itk.org/t/itk-to-rtk-migration-forward-projection-issues-questions/2107" target="_blank">https://discourse.itk.org/t/itk-to-rtk-migration-forward-projection-issues-questions/2107</a> regarding this matter, but I cannot reproduce this.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>What I do in my code:</p><ul type=disc><li class=gmail-m3052572566543848943msolistparagraph style='mso-list:l0 level1 lfo1'>Load 3D CT image and change it to float Image Type ( sitk.sitkFloat32)</li><li class=gmail-m3052572566543848943msolistparagraph style='mso-list:l0 level1 lfo1'>Define the image type I want for DRR</li><li class=gmail-m3052572566543848943msolistparagraph style='mso-list:l0 level1 lfo1'>Create a stack of empty projection images using ConstantImageSource, using ImageType of DRR</li><li class=gmail-m3052572566543848943msolistparagraph style='mso-list:l0 level1 lfo1'>Define the RTK geometry object (ThreeDCircularProjectionGeometry)</li><li class=gmail-m3052572566543848943msolistparagraph style='mso-list:l0 level1 lfo1'>Then create JosephForwardProjectionImageFilter</li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Here, the problems arise.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>The filter only seems to accept 3D imageTypes, so I have given it the [itk.F,3], [itk.F,3] input.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Then, if I try to setInput(0) with constantImageSource.GetOutput(), it throws the error: </p><div><pre style='word-break:break-all'> </pre><pre style='word-break:break-all'>Expecting argument of type itkImageF3 or itkImageSourceIF3.</pre><pre style='word-break:break-all'>Additional information:</pre><pre style='word-break:break-all'>Wrong number or type of arguments for overloaded function 'itkImageToImageFilterIF3IF3_SetInput'.</pre></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Probably since I have used the ImageType of the DRR (2D) for the constantImageSource. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Additionally, it seems that the setInput(1) = CT also doesn’t work, maybe because I have used sitk.sitkFloat32) to get it to a float image?</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Does anyone know what I have to do here to solve this? And/or is there some python script available which does forward projection so I can have a look how it is done in Python?</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I also don’t know what I would have to do after this step. Do I just do an FDK reconstruction etc. just as in the FirstReconstruction.py script?</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thank you in advance for anyone who can answer (some) of my questions.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>M</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>My code:</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>import sys</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>import itk</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>from itk import RTK as rtk</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>import SimpleITK as sitk</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Utility method that either downloads data from the Girder repository or</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># if already downloaded returns the file name for reading from disk (cached data).</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>%run update_path_to_download_script</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>from downloaddata import fetch_data as fdata</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Always write output to a separate directory, we don't want to pollute the source directory. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>import os</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>OUTPUT_DIR = 'Output_test'</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Loading 3D CT image</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>CT = sitk.ReadImage(fdata("training_001_ct.mha"), sitk.sitkFloat32)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Defines the image type CT</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dimension_CT = 3</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>PixelType = itk.F</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>ImageType_CT = itk.Image[PixelType, Dimension_CT]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Defines the image type DRR</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dimension_DRR = 2</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>ImageType_DRR = itk.Image[PixelType, Dimension_DRR]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Create a stack of empty projection images</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>ConstantImageSourceType = rtk.ConstantImageSource[ImageType_DRR]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>constantImageSource = ConstantImageSourceType.New()</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Define origin, sizeOutput and spacing (still need to change these)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>origin = [ -127, -127]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>sizeOutput = [ 512, 512]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>spacing = [ 0.653595, 2.0]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>constantImageSource.SetOrigin( origin )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>constantImageSource.SetSpacing( spacing )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>constantImageSource.SetSize( sizeOutput )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>constantImageSource.SetConstant(0.)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Defines the RTK geometry object</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>geometry = rtk.ThreeDCircularProjectionGeometry.New()</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>numberOfProjections = 360</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>firstAngle = 0.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>angularArc = 360.</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>sid = 600 # source to isocenter distance</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>sdd = 1200 # source to detector distance</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>for x in range(0,numberOfProjections):</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>  angle = firstAngle + x * angularArc / numberOfProjections</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>  geometry.AddProjection(sid,sdd,angle)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>    </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Writing the geometry to disk</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>xmlWriter = rtk.ThreeDCircularProjectionGeometryXMLFileWriter.New()</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>xmlWriter.SetFilename ( sys.argv[2] )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>xmlWriter.SetObject ( geometry )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>xmlWriter.WriteFile()</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>REIType = rtk.JosephForwardProjectionImageFilter[ImageType_CT, ImageType_CT]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>rei = REIType.New()</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>semiprincipalaxis = [ 50, 50, 50]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>center = [ 0, 0, 10]</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'># Set GrayScale value, axes, center...</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>#rei.SetDensity(2)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>#rei.SetAngle(0)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>#rei.SetCenter(center)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>#rei.SetAxis(semiprincipalaxis)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>rei.SetGeometry( geometry )</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>rei.SetInput(0, constantImageSource.GetOutput())</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>rei.SetInput(1, CT)</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div></div></blockquote></div><p class=MsoNormal style='margin-left:4.8pt'>_______________________________________________<br>Rtk-users mailing list<br><a href="mailto:Rtk-users@public.kitware.com" target="_blank">Rtk-users@public.kitware.com</a><br><a href="https://public.kitware.com/mailman/listinfo/rtk-users" target="_blank">https://public.kitware.com/mailman/listinfo/rtk-users</a></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>