<html><head></head><body><div class="ydp21b93f61yahoo-style-wrap" style="font-family:verdana, helvetica, sans-serif;font-size:16px;"><div></div>
<div dir="ltr" data-setdir="false"><div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ydp3b3f4ddbelementToProof">Thanks for your time & advice Regina, I appreciate it.</div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ydp3b3f4ddbelementToProof"><br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ydp3b3f4ddbelementToProof"><br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ydp3b3f4ddbelementToProof" dir="ltr" data-setdir="false">I still can't get this to work as I think it should, so have included actual SQL's to show what I'm doing, using ST_GeneratePoints() this time...<br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">I create a db & add the postgis extension....</div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Then create the two tables to test, inserting 3 empty geometries in one & a simple linestring in the other:</div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>create table events (id integer,</i></span><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> jittered geometry(LINESTRING,4326));</i></span></div><div><i><br class="ydp3b3f4ddbContentPasted0"></i></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>insert into events (id) values (1);</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>insert into events (id) values (2);</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>insert into events (id) values (3);</i></span></div><div><i><br class="ydp3b3f4ddbContentPasted0"></i></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>create table std_tow (id integer,</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> std_track geometry(LINESTRING,4326));</i></span></div><div><i><br class="ydp3b3f4ddbContentPasted0"></i></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i>insert into std_tow values (1, ST_SetSRID(</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> ST_MakeLine(</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> <span> </span><span> </span>ST_MakePoint(176,-47),</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> <span> </span><span> </span>ST_MakePoint(177,-48)</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> ),</i></span></div><div class="ydp3b3f4ddbContentPasted0"><span style="font-family: Courier New, monospace;"><i> 4326)); </i></span></div> <br></div><div style="font-family: Aptos, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><br></div><div>I want to update the empty linestrings in one table (events) with slightly randomised versions of the linestring in the other (std_tow).</div><div dir="ltr" data-setdir="false">ST_GeneratePoints() supposedly generates random points (in a polygon created by buffering the vertices in the standard linestring) without a seed, so I run it with no seed & view the results:</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false"><div><i><font face="courier new, courier, monaco, monospace, sans-serif">update events<br>set jittered = ST_Makeline(<br> (select ST_GeometryN(<br> ST_GeneratePoints(<br> ST_Buffer(<br> ST_POINTN(std_track,1),<br> 0.01),<br> 1),<br> 1)<br> from std_tow),<br> (select ST_GeometryN(<br> ST_GeneratePoints(<br> ST_Buffer(<br> ST_POINTN(std_track,2),<br> 0.01),<br> 1),<br> 1)<br></font></i><div><i><font face="courier new, courier, monaco, monospace, sans-serif"> from std_tow));</font></i></div></div><div><i><font face="courier new, courier, monaco, monospace, sans-serif">select ST_AsText(jittered) from events;</font></i></div><div><br></div></div></div><div dir="ltr" data-setdir="false"><div><i><font face="courier new, courier, monaco, monospace, sans-serif">LINESTRING(175.99658281229873 -46.99893493622685,177.0081812507064 -47.99873318845546)<br>LINESTRING(175.99658281229873 -46.99893493622685,177.0081812507064 -47.99873318845546)<br>LINESTRING(175.99658281229873 -46.99893493622685,177.0081812507064 -47.99873318845546)<br>(3 rows)</font></i><br><br></div><div dir="ltr" data-setdir="false">I get three identical linestrings. </div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">I figured I'd use a different integer random seed (between 0 and 1000) in ST_GeneratePoints() to force a different result each time:</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false"><div><i><font face="courier new, courier, monaco, monospace, sans-serif">update events<br>set jittered = ST_Makeline(<br> (select ST_GeometryN(<br> ST_GeneratePoints(<br> ST_Buffer(<br> ST_POINTN(std_track,1),<br> 0.01),<br> 1,<br> (random()*1000)::int),<br> 1)<br> from std_tow),<br> (select ST_GeometryN(<br> ST_GeneratePoints(<br> ST_Buffer(<br> ST_POINTN(std_track,2),<br> 0.01),<br> 1,<br> (random()*1000)::int),<br> 1)<br> from std_tow));<br>select ST_AsText(jittered) from events;</font></i></div><div><br></div></div></div><div><i><font face="courier new, courier, monaco, monospace, sans-serif"> LINESTRING(175.9943248467802 -46.996045972449906,176.9919097521138 -48.00102135929174)<br> LINESTRING(175.9943248467802 -46.996045972449906,176.9919097521138 -48.00102135929174)<br> LINESTRING(175.9943248467802 -46.996045972449906,176.9919097521138 -48.00102135929174)<br>(3 rows)</font><br></i><br></div><div dir="ltr" data-setdir="false">I get different vertices from the first attempt, but all 3 records are still the same values - despite supposedly having a different seed.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">I figure the Postgres query optimiser must be reusing the result from the subqueries rather than recalculating it each time, but am not sure, and the optimiser cannot be turned off.<br></div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">What am I doing wrong??? (or how can I do it right!!)<br></div><div><br></div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Much appreciated,</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false"> Brent<br></div><div><br></div><div><br></div><div><br></div></div><div><br></div>
</div><div id="ydp8ff1cde5yahoo_quoted_0469449270" class="ydp8ff1cde5yahoo_quoted">
<div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
<div>
On Sunday, November 19, 2023 at 06:44:16 AM GMT+13, Regina Obe <lr@pcorp.us> wrote:
</div>
<div><br></div>
<div><br></div>
<div><div id="ydp8ff1cde5yiv1316434018"><div><div class="ydp8ff1cde5yiv1316434018WordSection1"><p class="ydp8ff1cde5yiv1316434018MsoNormal">Well when I run random() I do get a different answer for each run so random behaves as I would expect. I didn’t look that closely at your query with random.</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">e.g.</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">SELECT random()</p><p class="ydp8ff1cde5yiv1316434018MsoNormal">FROM generate_series(1,100);</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">Even if within the same row, the random numbers are different:</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">SELECT random(), random()</p><p class="ydp8ff1cde5yiv1316434018MsoNormal">FROM generate_series(1,10);</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">If you were doing random()::integer as input into ST_GeneratePoints, I thought maybe that was a typo on your end. Then your random number would only be 0 or 1, which is not that random.</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal">So if you really were doing ST_GeneratePoints(geom, random()::integer) then that would explain why you got much less than random results with ST_GeneratePoints.</p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor blue; padding: 0in 0in 0in 4pt;"><div id="ydp8ff1cde5yiv1316434018yqt36444" class="ydp8ff1cde5yiv1316434018yqt0294860298"><div><div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(225, 225, 225) currentcolor currentcolor; padding: 3pt 0in 0in;"><p class="ydp8ff1cde5yiv1316434018MsoNormal"><b>From:</b> Brent Wood <pcreso@yahoo.com> <br clear="none"><b>Sent:</b> Saturday, November 18, 2023 1:29 AM<br clear="none"><b>To:</b> Regina Obe <lr@pcorp.us>; PostGIS Users Discussion <postgis-users@lists.osgeo.org><br clear="none"><b>Subject:</b> Re: [postgis-users] Generating new random points throughout an update</p></div></div><p class="ydp8ff1cde5yiv1316434018MsoNormal"> </p><div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;">Hi Regina,</span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;">The seed was an int generated from random(), so I'd expected to generate a different result every time. This didn't happen.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;">Do I understand that if I omit the seed, I'll get a different point each time by default?</span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;">Thanks,</span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> Brent </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:12.0pt;font-family:sans-serif;"> </span></p></div></div></div><div id="ydp8ff1cde5yiv1316434018ydp281dcc1fyahoo_quoted_0556156328"><div><div id="ydp8ff1cde5yiv1316434018yqt74257" class="ydp8ff1cde5yiv1316434018yqt0294860298"><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">On Saturday, November 18, 2023 at 06:01:37 PM GMT+13, Regina Obe <<a shape="rect" href="mailto:lr@pcorp.us" rel="nofollow" target="_blank">lr@pcorp.us</a>> wrote: </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018MsoNormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div></div><div><div id="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105"><div><div><div id="ydp8ff1cde5yiv1316434018yqt51294" class="ydp8ff1cde5yiv1316434018yqt0294860298"><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">If you want the answer different each time, you don’t want to feed a seed to ST_GeneratePoints. </span></p><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">The seed argument was added because some people wanted to generate the same answer for each run.</span></p><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"><a shape="rect" href="https://postgis.net/docs/ST_GeneratePoints.html" rel="nofollow" target="_blank">https://postgis.net/docs/ST_GeneratePoints.html</a> (note the sentence: The optional </span><code><span style="font-size:10.0pt;color:#26282A;">seed</span></code><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> is used to regenerate a deterministic sequence of points, and must be greater than zero.)</span></p><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; padding: 0in 0in 0in 4pt; border-color: currentcolor currentcolor currentcolor blue;"><div id="ydp8ff1cde5yiv1316434018yqt37078" class="ydp8ff1cde5yiv1316434018yqt0294860298"><div id="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105yqt47953"><div><div style="border-width: 1pt medium medium; border-style: solid none none; padding: 3pt 0in 0in; border-color: currentcolor;"><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><b><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">From:</span></b><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> postgis-users <<a shape="rect" href="mailto:postgis-users-bounces@lists.osgeo.org" rel="nofollow" target="_blank">postgis-users-bounces@lists.osgeo.org</a>> <b>On Behalf Of </b>Brent Wood via postgis-users<br clear="none"><b>Sent:</b> Friday, November 17, 2023 11:53 PM<br clear="none"><b>To:</b> PostGIS Users Discussion <<a shape="rect" href="mailto:postgis-users@lists.osgeo.org" rel="nofollow" target="_blank">postgis-users@lists.osgeo.org</a>><br clear="none"><b>Cc:</b> Brent Wood <<a shape="rect" href="mailto:pcreso@yahoo.com" rel="nofollow" target="_blank">pcreso@yahoo.com</a>><br clear="none"><b>Subject:</b> [postgis-users] Generating new random points throughout an update</span></p></div></div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">Hopefully someone can help with a problem I'm having.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">I have a table with simple linestrings that I need to create a randomly modified version of.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">The linestrings represent vessel tracks. I can identify a set of "similar" tracks & create a single "average" linestring that is somewhat representative.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">Many of the records don't have a linestring, but for statistical purposes I need to assign a linestring to each - by creating a jittered version of the average linestring so they are not all identical.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">The simplest approach I have tried is to use an update with ST_Project() given a random() distance & random() direction applied to each vertex in the average line.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">I use the first two vertices with ST_Makeline(), then append a vertex for the third point, as in the SQL below. </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">My problem is that every new line is identical. From some Googled hints, I figure the optimiser has decided to run random() once & re-use the value instead of running the function for every iteration (but I could be wrong!).</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">Any suggestions as to how I can force a different random result for each record that is updated?</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">I also tried using ST_GeneratePoints() in a buffer around each point, but need to use something like (random()::int as the seed, and this seems to do exactly the same - valid linestrings are generated, but they are identical, so I'm assuming the seed is not being recalculated for each record.</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><i><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">update events<br clear="none">set jittered = ST_MakeLine(<br clear="none"> (select ST_Project(<br clear="none"> ST_POINTN(std_track,1),<br clear="none"> (random()*5000),<br clear="none"> radians(random()*360))::geometry<br clear="none"> from std_tow),<br clear="none"> (select ST_Project(<br clear="none"> ST_PointN(std_track,2),<br clear="none"> (random()*5000),<br clear="none"> radians(random()*360))::geometry<br clear="none"> from std_tow)<br clear="none"> );</span></i><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"></span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;">Thanks,</span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> Brent Wood</span></p></div></div></div></div><div><p class="ydp8ff1cde5yiv1316434018ydp281dcc1fyiv3900421105msonormal"><span style="font-size:10.0pt;font-family:sans-serif;color:#26282A;"> </span></p></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
</div></body></html>