<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div>Hi Iulian,</div><div><br></div><div>At this point, we do have a need to use PyTAPS due to the fact that the rest of our development is in python. &nbsp;So we're trying to see how far down the road we can get using PyTAPS and so far things are looking promising! &nbsp;The simplicity is a definite bonus!! :)</div><div><br></div><div>Thanks for the second round of responses (comments inline)</div><div><br></div><div>Best,</div><div>Chris</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt"><span style="font-weight:bold">From: </span> Iulian Grindeanu &lt;<a href="mailto:iulian@mcs.anl.gov">iulian@mcs.anl.gov</a>&gt;<br><span style="font-weight:bold">Date: </span> Mon, 13 Feb 2012 13:22:49 -0500<br><span style="font-weight:bold">To: </span> Christopher Mueller &lt;<a href="mailto:cmueller@asascience.com">cmueller@asascience.com</a>&gt;<br><span style="font-weight:bold">Cc: </span> Guy De Wardener &lt;<a href="mailto:gdewardener@asascience.com">gdewardener@asascience.com</a>&gt;, David Stuebe &lt;<a href="mailto:DStuebe@asascience.com">DStuebe@asascience.com</a>&gt;, don brittain &lt;<a href="mailto:don.brittain@instanteffects.com">don.brittain@instanteffects.com</a>&gt;, &quot;<a href="mailto:moab-dev@mcs.anl.gov">moab-dev@mcs.anl.gov</a>&quot; &lt;<a href="mailto:moab-dev@mcs.anl.gov">moab-dev@mcs.anl.gov</a>&gt;<br><span style="font-weight:bold">Subject: </span> Re: [MOAB-dev] Questions about Tags and Topology<br></div><div><br></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><style type="text/css">p { margin: 0; }</style><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000">Hello,<br>Please see below. For some of those, Jim or Tim would know the right answer.<br>Do you need to use PyTaps, or do you prefer it because it is simpler?<br><hr id="zwchr"><blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;padding-left:5px;"><div>Hi Iulian,</div><div><br></div><div>Thank you for the rapid response and great information. &nbsp;I have a couple of follow-up questions (inline).</div><div><br></div><div id="DWT5203"><br></div><div><br></div><span id="OLK_SRC_BODY_SECTION"><div style="font-family: Calibri; font-size: 11pt; text-align: left; color: black; border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; padding: 3pt 0in 0in;"><strong>From: </strong> Iulian Grindeanu &lt;<a href="mailto:iulian@mcs.anl.gov" target="_blank">iulian@mcs.anl.gov</a>&gt;<br><span style="font-weight: bold;">Date: </span> Sat, 11 Feb 2012 01:02:03 -0500<br><span style="font-weight: bold;">To: </span> Christopher Mueller &lt;<a href="mailto:cmueller@asascience.com" target="_blank">cmueller@asascience.com</a>&gt;<br><span style="font-weight: bold;">Cc: </span> Guy De Wardener &lt;<a href="mailto:gdewardener@asascience.com" target="_blank">gdewardener@asascience.com</a>&gt;, David Stuebe &lt;<a href="mailto:DStuebe@asascience.com" target="_blank">DStuebe@asascience.com</a>&gt;, don brittain &lt;<a href="mailto:don.brittain@instanteffects.com" target="_blank">don.brittain@instanteffects.com</a>&gt;, &quot;<a href="mailto:moab-dev@mcs.anl.gov" target="_blank">moab-dev@mcs.anl.gov</a>&quot; &lt;<a href="mailto:moab-dev@mcs.anl.gov" target="_blank">moab-dev@mcs.anl.gov</a>&gt;<br><span style="font-weight: bold;">Subject: </span> Re: [MOAB-dev] Questions about Tags and Topology<br></div><div><br></div><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><style>p { margin: 0; }</style><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);">Hello,<br>I will try to answer to some of those questions;<br><br><hr id="zwchr"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div>Hi Tim,</div><div><br></div><div>I've had a good deal of success this week and have been able to represent a couple of our simpler datasets in what seems to be a reasonable manner. &nbsp;I have also come up with a few questions.&nbsp;</div><div><br></div><div>Tags:</div><ul><li id="DWT3878">DataTypes – from what I can see, tags do not support a few of the numpy datatypes, namely: float32, int16, and int64. &nbsp;Is this a constraint of the PyTAPS wrapper or the underlying iMesh/MOAB infrastructure?</li></ul></blockquote>itaps has a limited data type set; see MOAB/itaps/iBase.h<br>pytaps is closely related to itaps;<br><br>some types can be &quot;manufactured&quot; out of byte type, but it is the user responsibility to interpret / convert correctly (so interpret an int16 as a 2-byte value, etc). I am not sure if something like that is possible in python/pytaps. It is for sure possible in c/c&#43;&#43;</div></div></div></blockquote></span><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li><li id="DWT3879">Tags-of-tags – Is this possible? &nbsp;I've tried a couple of ways but can't seem to get it to go.</li></ul></blockquote>tags can be set/get on anything that is an &quot;EntityHandle&quot; in moab. So anything that is an entity handle (node, element, mesh set) can set and get tag values, using a tag handle. <br>I am not sure I understand the question. Would you need to set a tag value on a tag handle? That is not possible.&nbsp; </div></div></div></blockquote></span><div><br></div><div>Unfortunately, it is the latter case that I was hoping for – the ability to set a tag value on a tag handle. &nbsp;For example:</div><blockquote style="margin: 0pt 0pt 0pt 40px; border: medium none; padding: 0px;"><div>tag1=mesh.createTag(&quot;tag1&quot;,1,bytes)</div><div>tag2=mesh.createTag(&quot;tag2,1,bytes)</div><div>tag2[tag1]=value</div></blockquote><div id="DWT5204"><br></div></blockquote>Yes, we cannot do that. Sorry :(</div></div></div></blockquote></span><div><br></div><div>OK – we can find another pathway (perhaps even using the &quot;opaque&quot; data type suggested in Jim's reply from a moment ago?)</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><blockquote id="DWT5207" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li></ul><div>Topology:</div><ul><li id="DWT3880">Is it possible to apply topology over entity sets? &nbsp;One way I've found for dealing with time is to have a &quot;temporal&quot; EntitySet that has child EntitySets for each timestep. &nbsp;This seems to work well, but I can't find a way of relating the various timesteps aside from the inherent indexing of the &quot;temporal&quot; EntitySet. &nbsp;I hoped that it would be possible to do something like make a line_segment that related the timestep EntitySets, but that didn't seem to work.</li></ul></blockquote>maybe you can set a tag with the time value for each of the child EntitySets. I am not sure I understand what do you mean by &quot;line_segment&quot;.<br>Also, if set1 is a child of set2, it does not mean that the set2 is a parent of set1 (and viceversa)&nbsp; see the difference between <br>add_parent_child and add_child_meshset, for example<br><br>Another thing that can help:<br>&nbsp;you add child1 to set1, then add child2 to set1<br>When you ask for children of set1, you will always get them in order child1, child2. So maybe you can use that for a natural ordering of your children ( EntitySets ).</div></div></div></blockquote></span><div><br></div><div>This is the method I'm currently using and it works well as long as the relationship is a linear one (unfortunately, this may not always be the case for us).</div><div>Do you know if it is possible to &quot;insert&quot; a child into an existing list of children? &nbsp;For example:</div><blockquote style="margin: 0pt 0pt 0pt 40px; border: medium none; padding: 0px;"><div>set1_children=[c1,c2,c3,c4]</div><div>set.add(c2a,index=2)</div><div>set1_children=[c1,c2,c2a,c3,c4]</div><div id="DWT5206"><br></div></blockquote><br></blockquote>We do not have a method exposed to insert at an index (even in MOAB)<br>The lists of parents or children is stored inside as an array (except if 1 or 2 parents/children, but that is not that important)<br><br>Inserting at an index could be accomplished right now with the interface only be removing c3, c4, then add c2a, c3, c4. I know it is not optimal; if performance is a concern, we would need to add a method to the interface to insert at an index;&nbsp; even with that change, the performance gain will not be that important (we would still need to reallocate the array inside, but only once)<br></div></div></div></blockquote></span><div><br></div><div>Alright – as you said, not the best in terms of performance, but definitely a functional work-around.</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><blockquote style="margin: 0pt 0pt 0pt 40px; border: medium none; padding: 0px;"><div><br></div></blockquote><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br>Another question: Is the mesh changing in time? That is one reason you may want EntitySets changing in time. Or maybe some solution uses different mesh elements at a given time</div></div></div></blockquote></span><div><br></div><div>This is certainly a possibility, so having an entityset/time is valuable to us.</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li><li>Edges from quadrilaterals: &nbsp;After building a set of quadrilateral entities from an array of vertices, I was surprised that there were not edge entities generated as well. &nbsp;Is there a method for doing this? &nbsp;I realize I could generate the edges from the vertex array (perhaps after some reworking), but it seems to me that it might also be possible to get them from the quadrilaterals themselves.</li></ul><div id="DWT3881"><br></div></blockquote>this is the easiest question:)<br>you have to use the flag create_if_missing=true in a call like:<br>ErrorCode get_adjacencies(const EntityHandle *from_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int num_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int to_dimension,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const bool create_if_missing,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::vector&lt;EntityHandle&gt;&amp; adj_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int operation_type = Interface::INTERSECT) = 0;<br><br>from_entities are your quads, to_dimension is 1 (edges), and you will get the edges in adj_entities vector.</div></div></div></blockquote></span><div><br></div><div>This is great news! &nbsp;I tried applying the argument &quot;create_if_missing&quot; as a kwarg in a handful of the iMesh functions exposed in PyTAPS (mesh.createEntArr,&nbsp;mesh.getEntArr, mesh.getEntAdj), but I kept getting a TypeError stating that &quot;'create_if_missing' is an invalid keyword argument for this function&quot;. &nbsp;Do you know if this functionality is available from PyTAPS?</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div id="DWT5208" style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br></div></div></div></blockquote><br></span></blockquote>So, do you use PyTaps here? there is no &quot;create_if_missing&quot; argument in imesh functions. This works directly with MOAB only.<br><br>With iMesh, you may be able to use &quot;AdjTable&quot; methods. Again, I am not sure about pytaps.<br><br>With AdjTable, you would need to set the AdjTable [5] to 1; then, when loading a mesh, the edge entities will be created if missing<br>(so use iMesh_setAdjTable , and pass an AdjTable that has 1 at index 5, corresponding to adjacency cost edge/edge of 1)<br>So with iMesh, after setting adjTable, a subsequent iMesh_load will generate the edges too, if they are missing.<br><br>It seems that adjTable is exposed in pytaps, but I can't change it :(<br>Maybe Jim knows a way to set it in pytaps too.</div></div></div></blockquote></span><div><br></div><div>Thanks for the suggestion, I'll poke around with the AdjTable a bit and see if I can find a way to generate the edges.</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="BORDER-LEFT: #b5c4df 5 solid; PADDING:0 0 0 5; MARGIN:0 0 0 5;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><br><br>Iulian<br><br><br><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><span><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br>Another question: Is the mesh changing in time? That is one reason you may want EntitySets changing in time. Or maybe some solution uses different mesh elements at a given time</div></div></div></blockquote></span><div><br></div><div>This is certainly a possibility, so having an entityset/time is valuable to us.</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br><br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><ul><li></li><li>Edges from quadrilaterals: &nbsp;After building a set of quadrilateral entities from an array of vertices, I was surprised that there were not edge entities generated as well. &nbsp;Is there a method for doing this? &nbsp;I realize I could generate the edges from the vertex array (perhaps after some reworking), but it seems to me that it might also be possible to get them from the quadrilaterals themselves.</li></ul><div id="DWT3881"><br></div></blockquote>this is the easiest question:)<br>you have to use the flag create_if_missing=true in a call like:<br>ErrorCode get_adjacencies(const EntityHandle *from_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int num_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int to_dimension,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const bool create_if_missing,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::vector&lt;EntityHandle&gt;&amp; adj_entities,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const int operation_type = Interface::INTERSECT) = 0;<br><br>from_entities are your quads, to_dimension is 1 (edges), and you will get the edges in adj_entities vector.</div></div></div></blockquote></span><div><br></div><div>This is great news! &nbsp;I tried applying the argument &quot;create_if_missing&quot; as a kwarg in a handful of the iMesh functions exposed in PyTAPS (mesh.createEntArr,&nbsp;mesh.getEntArr, mesh.getEntAdj), but I kept getting a TypeError stating that &quot;'create_if_missing' is an invalid keyword argument for this function&quot;. &nbsp;Do you know if this functionality is available from PyTAPS?</div><div><br></div><span id="OLK_SRC_BODY_SECTION"><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div id="DWT5208" style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><br></div></div></div></blockquote><br><blockquote id="MAC_OUTLOOK_ATTRIBUTION_BLOCKQUOTE" style="padding: 0pt 0pt 0pt 5px; margin: 0pt 0pt 0pt 5px;"><div><div><div style="font-family: Times New Roman; font-size: 12pt; color: rgb(0, 0, 0);"><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div></div><div><br></div><div>Thanks in advance,</div><div>Chris</div></blockquote>Hope this helps,<br>Iulian</div></div></div></blockquote></span><div><br></div><div>Thanks,</div><div>Chris</div></blockquote><br></div></div></div></blockquote></span></body></html>