Re: Question for xalloc
"Tom Collins tom-lnEA/wrDJtNWk0Htik3J/[email protected] [rabbit-semi]" <[email protected]> Mon, 11 Sep 2017 11:09:51 -0700
| Newsgroups | gmane.comp.hardware.rabbit-semiconductor |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_70455943-317B-4A2C-9C2C-02745DDF65C0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 When you call xalloc(), it reserves a portion of xmem for your use. If you= go beyond the length of your allocation, you=E2=80=99ll overwrite somethin= g else in memory which will likely result in a crash at some point. Maybe = you=E2=80=99re OK right now because nothing else is making use of that spac= e, but you should fix your code to request the correct amount of space to s= ave yourself headaches with future debugging! The Rabbit doesn=E2=80=99t have a memory manager in place to throw a segmen= tation fault when you go outside of the requested memory range. The =E2=80=9Csz=E2=80=9D parameter to xalloc() is the amount of space to re= serve. In the _xalloc() call, you pass a pointer to a long with your desir= ed allocation, and it will update that value with the actual amount of spac= e reserved (which may be slightly larger than what you asked for). Bottom line: If you ask for 512 bytes, don=E2=80=99t try to write past that= 512-byte boundary. -Tom > On Sep 8, 2017, at 1:59 PM, 'Yang Hong' [email protected] [rabbit-semi]= <[email protected]> wrote: >=20 >=20 > Hello, >=20 >=20=20 >=20 > I am using xalloc to get a block of memory for my data, my data is struct= ure with many variables, roughly about 512 word, so after I read manual of = xalloc, I should set 512x2 bytes memory for those data, but when I try to s= et 512 as memory size, I still can save those data without any problem, I w= ould like to know why? And also I don=E2=80=99t understand sz explanation i= n the help below.=20 >=20 >=20=20 >=20 >=20=20 >=20 > SYNTAX: long xalloc(long sz); >=20 >=20=20 >=20 > DESCRIPTION: Allocates memory in extended memory. If xalloc() fails, >=20 > a run-time error will occur. This is a wrapper function for _xalloc(), >=20 > for backwards compatibility. It is the same as >=20 > _xalloc(&sz, 1, XALLOC_MAYBBB) >=20 > except that the actual allocated amount is not returned since the paramet= er >=20 > is not a pointer. The returned address is always even (word) aligned. >=20 >=20=20 >=20 > NOTE: xalloc is not thread safe, since it accesses a global static struct= ure >=20 > with no locking. >=20 >=20=20 >=20 > PARAMETER1: sz: The number of bytes to allocate. This is rounded up >=20 > to the next higher even number. ( what does it mean?) >=20 >=20=20 >=20 > RETURN VALUE: The 20-bit physical address of the allocated data. >=20 >=20=20 >=20 > KEYWORDS: xalloc, premain >=20 >=20=20 >=20 >=20=20 >=20 >=20=20 >=20 > YANG HONG >=20 > Application Engineer/Technical Support >=20 > Omniverter Inc. >=20 > 3075 14th Avenue >=20 > Unit #13 > Markham, Ontario > L3R 0G9 Canada >=20 > Tel: 416 849 2299 >=20 > Direct: 647 874 1505 > USA: 440 290 4499 > Fax: 416 849 2298 >=20 > Web: www.omniverter.com <http://www.omniverter.com/> >=20=20 >=20 >=20=20 >=20 >=20=20 >=20 >=20 >=20 --Apple-Mail=_70455943-317B-4A2C-9C2C-02745DDF65C0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm= l4/strict.dtd"> <html> <head> </head> =20 <body style=3D"background-color: #fff;"> <span style=3D"display:none"> </span> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id=3D"ygrp-mlmsg" style=3D"position:relative;"> <div id=3D"ygrp-msg" style=3D"z-index: 1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id=3D"ygrp-text" > =20=20=20=20=20=20 =20=20=20=20=20=20 <p><div class>When you call xalloc(), it reserves a portion of xmem f= or your use. If you go beyond the length of your allocation, you=E2= =80=99ll overwrite something else in memory which will likely result in a c= rash at some point. Maybe you=E2=80=99re OK right now because nothing= else is making use of that space, but you should fix your code to request = the correct amount of space to save yourself headaches with future debuggin= g!</div><div class><br class></div><div class>The Rabbit doesn=E2=80=99t ha= ve a memory manager in place to throw a segmentation fault when you go outs= ide of the requested memory range.</div><div class><br class></div><div cla= ss>The =E2=80=9Csz=E2=80=9D parameter to xalloc() is the amount of space to= reserve. In the _xalloc() call, you pass a pointer to a long with yo= ur desired allocation, and it will update that value with the actual amount= of space reserved (which may be slightly larger than what you asked for).<= /div><div class><br class></div><div class>Bottom line: If you ask for 512 = bytes, don=E2=80=99t try to write past that 512-byte boundary.</div><br cla= ss><div class> <span class=3D"Apple-style-span" style=3D"border-collapse: separate;color: = rgb(0, 0, 0);font-family: Helvetica;font-size: 12px;font-style: normal;font= -variant: normal;font-weight: normal;letter-spacing: normal;text-align: aut= o;text-indent: 0px;"><div class>-Tom</div><br class=3D"Apple-interchange-ne= wline"></span> </div> <br class><div><blockquote type=3D"cite" class><div class>On Sep 8, 2017, a= t 1:59 PM, 'Yang Hong' <a href=3D"mailto:[email protected]" class>yang@om= niverter.com</a> [rabbit-semi] <<a href=3D"mailto:rabbit-semi@yahoogroup= s.com" class>[email protected]</a>> wrote:</div><br class=3D"A= pple-interchange-newline"><div class><div id=3D"ygrp-mlmsg" style=3D"font-s= ize: 13px;font-family: Arial, helvetica, clean, sans-serif;font-style: norm= al;font-weight: normal;letter-spacing: normal;text-align: start;text-indent= : 0px;text-transform: none;white-space: normal;word-spacing: 0px;" class><d= iv id=3D"ygrp-msg" class><div id=3D"ygrp-text" style=3D"font-family: Georgi= a;" class><div style=3D"margin: 0px 0px 1em;" class><br class=3D"webkit-blo= ck-placeholder"></div><div class=3D"WordSection1"><p class=3D"MsoNormal" st= yle=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Ca= libri, sans-serif;" class>Hello,<o style=3D"font-size: 0px;" class></o></sp= an></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style=3D= "font-size: 11pt;font-family: Calibri, sans-serif;" class><o style=3D"font-= size: 0px;" class> </o></span></p><p class=3D"MsoNormal" style=3D"marg= in: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans= -serif;" class>I am using xalloc to get a block of memory for my data, my d= ata is structure with many variables, roughly about 512 word, so after I re= ad manual of xalloc, I should set 512x2 bytes memory for those data, but wh= en I try to set 512 as memory size, I still can save those data without any= problem, I would like to know why? And also I don=E2=80=99t understand sz = explanation in the help below.<span class=3D"Apple-converted-space"> <= /span><o style=3D"font-size: 0px;" class></o></span></p><p class=3D"MsoNorm= al" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-fami= ly: Calibri, sans-serif;" class><o style=3D"font-size: 0px;" class> </= o></span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span st= yle=3D"font-size: 11pt;font-family: Calibri, sans-serif;" class><o style=3D= "font-size: 0px;" class> </o></span></p><p class=3D"MsoNormal" style= =3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calib= ri, sans-serif;" class>SYNTAX: long xalloc(long sz);<o style=3D"font-size: = 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px = 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-serif;" cla= ss><o style=3D"font-size: 0px;" class> </o></span></p><p class=3D"MsoN= ormal" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-f= amily: Calibri, sans-serif;" class>DESCRIPTION: Allocates memory in extende= d memory. If xalloc() fails,<o style=3D"font-size: 0px;" class></o></= span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style= =3D"font-size: 11pt;font-family: Calibri, sans-serif;" class>a run-time err= or will occur. This is a wrapper function for _xalloc(),<o style=3D"f= ont-size: 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin= : 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-s= erif;" class>for backwards compatibility. It is the same as<o style= =3D"font-size: 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"m= argin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, s= ans-serif;" class> _xalloc(&sz, 1, XALLOC_MAYBBB)<o style=3D"font= -size: 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin: 0= px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-seri= f;" class>except that the actual allocated amount is not returned since the= parameter<o style=3D"font-size: 0px;" class></o></span></p><p class=3D"Mso= Normal" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-= family: Calibri, sans-serif;" class>is not a pointer. The returned ad= dress is always even (word) aligned.<o style=3D"font-size: 0px;" class></o>= </span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span styl= e=3D"font-size: 11pt;font-family: Calibri, sans-serif;" class><o style=3D"f= ont-size: 0px;" class> </o></span></p><p class=3D"MsoNormal" style=3D"= margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, = sans-serif;" class>NOTE: xalloc is not thread safe, since it accesses a glo= bal static structure<o style=3D"font-size: 0px;" class></o></span></p><p cl= ass=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: = 11pt;font-family: Calibri, sans-serif;" class>with no locking.<o style=3D"f= ont-size: 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin= : 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-s= erif;" class><o style=3D"font-size: 0px;" class> </o></span></p><p cla= ss=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 1= 1pt;font-family: Calibri, sans-serif;" class>PARAMETER1: sz:<span class=3D"= Apple-converted-space"> </span><span style=3D"color: red;" class>The n= umber of bytes to allocate. This is rounded up<o style=3D"font-size: = 0px;" class></o></span></span></p><p class=3D"MsoNormal" style=3D"margin: 0= px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-seri= f;color: red;" class>to the next higher even number. ( what does it mean?)<= o style=3D"font-size: 0px;" class></o></span></p><p class=3D"MsoNormal" sty= le=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Cal= ibri, sans-serif;" class><o style=3D"font-size: 0px;" class> </o></spa= n></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style=3D"= font-size: 11pt;font-family: Calibri, sans-serif;" class>RETURN VALUE: The = 20-bit physical address of the allocated data.<o style=3D"font-size: 0px;" = class></o></span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;">= <span style=3D"font-size: 11pt;font-family: Calibri, sans-serif;" class><o = style=3D"font-size: 0px;" class> </o></span></p><p class=3D"MsoNormal"= style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family:= Calibri, sans-serif;" class>KEYWORDS: xalloc, premain<o style=3D"font-size= : 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0p= x 1em;"><span style=3D"font-size: 11pt;font-family: Calibri, sans-serif;" c= lass><o style=3D"font-size: 0px;" class> </o></span></p><p class=3D"Ms= oNormal" style=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font= -family: Calibri, sans-serif;" class><o style=3D"font-size: 0px;" class>&nb= sp;</o></span></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><sp= an style=3D"font-size: 11pt;font-family: Calibri, sans-serif;" class><o sty= le=3D"font-size: 0px;" class> </o></span></p><p class=3D"MsoNormal" st= yle=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Ca= libri, sans-serif;color: rgb(0, 112, 192);" class>YANG HONG<o style=3D"font= -size: 0px;" class></o></span></p><p class=3D"MsoNormal" style=3D"margin: 0= px 0px 1em;"><i class><span style=3D"font-size: 11pt;font-family: Calibri, = sans-serif;color: rgb(0, 112, 192);" class>Application Engineer/Technical S= upport<o style=3D"font-size: 0px;" class></o></span></i></p><p class=3D"Mso= Normal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D"font-size: 1= 1pt;font-family: Calibri, sans-serif;color: rgb(0, 112, 192);" class>Omnive= rter Inc.<o style=3D"font-size: 0px;" class></o></span></i></p><p class=3D"= MsoNormal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D"font-size= : 9pt;font-family: Verdana, sans-serif;color: rgb(0, 112, 192);" class>3075= 14<sup class>th</sup><span class=3D"Apple-converted-space"> </span>Av= enue<o style=3D"font-size: 0px;" class></o></span></i></p><p class=3D"MsoNo= rmal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D"font-size: 9pt= ;font-family: Verdana, sans-serif;color: rgb(0, 112, 192);" class>Unit #13<= br class>Markham, Ontario<br class>L3R 0G9 Canada</span></i><i class><span = style=3D"font-size: 11pt;font-family: Calibri, sans-serif;color: rgb(0, 112= , 192);" class><o style=3D"font-size: 0px;" class></o></span></i></p><p cla= ss=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D"fon= t-size: 9pt;font-family: Verdana, sans-serif;color: rgb(0, 112, 192);" clas= s>Tel: 416 849 2299<o style=3D"font-size: 0px;" class></o></span></i></p><p= class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D= "font-size: 9pt;font-family: Verdana, sans-serif;color: rgb(0, 112, 192);" = class>Direct: 647 874 1505<br class>USA: 440 290 4499<br class>Fax: 416 849= 2298<o style=3D"font-size: 0px;" class></o></span></i></p><p class=3D"MsoN= ormal" style=3D"margin: 0px 0px 1em;"><i class><span style=3D"font-size: 9p= t;font-family: Verdana, sans-serif;color: rgb(0, 112, 192);" class>Web:<spa= n class=3D"Apple-converted-space"> </span><a href=3D"http://www.omnive= rter.com/" style=3D"font-family: Verdana;" class>www.omniverter.com</a></sp= an></i><i class><span style=3D"font-size: 11pt;font-family: Calibri, sans-s= erif;color: rgb(0, 112, 192);" class><o style=3D"font-size: 0px;" class></o= ></span></i></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span= style=3D"font-size: 11pt;font-family: Calibri, sans-serif;" class><o style= =3D"font-size: 0px;" class> </o></span></p><p class=3D"MsoNormal" styl= e=3D"margin: 0px 0px 1em;"><span style=3D"font-size: 11pt;font-family: Cali= bri, sans-serif;" class><o style=3D"font-size: 0px;" class> </o></span= ></p><p class=3D"MsoNormal" style=3D"margin: 0px 0px 1em;"><span style=3D"f= ont-size: 11pt;font-family: Calibri, sans-serif;" class><o style=3D"font-si= ze: 0px;" class> </o></span></p></div><div style=3D"margin: 0px 0px 1e= m;" class><br class=3D"webkit-block-placeholder"></div></div><div style=3D"= color: rgb(255, 255, 255);height: 0px;" class></div></div></div></div></blo= ckquote></div><br class></p> </div> =20=20=20=20=20 <!--~-|**|PrettyHtmlStart|**|-~--> <div style=3D"color: #fff; height: 0;">__._,_.___</div> =20=20=20=20=20=20=20=20=20=20 =20=20 =20 =20=20=20=20 <div style=3D"clear:both"> </div> <div id=3D"fromDMARC" style=3D"margin-top: 10px;"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background= -color:#E3E3E3;"> Posted by: Tom Collins <tom-lnEA/wrDJtNWk0Htik3J/[email protected]> <hr style=3D= "height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> </div> <div style=3D"clear:both"> </div> <table cellspacing=3D4px style=3D"margin-top: 10px; margin-bottom: 10px= ; color: #2D50FD;"> <tbody> <tr> <td style=3D"font-size: 12px; font-family: arial; font-weight: bo= ld; padding: 7px 5px 5px;" > <a style=3D"text-decoration: none; color: #2D50FD= " href=3D"https://groups.yahoo.com/neo/groups/rabbit-semi/conversations/mes= sages/42445;_ylc=3DX3oDMTJxNTVyYnMzBF9TAzk3MzU5NzE0BGdycElkAzIzMDczMTYEZ3Jw= c3BJZAMxNzA2NTU0MjA1BG1zZ0lkAzQyNDQ1BHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTUwNTE= 1MzQwMQ--?act=3Dreply&messageNum=3D42445">Reply via web post</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"mailto:tom-lnEA/wrDJtNWk0Htik3J/[email protected]?subject=3DRe%3A%20%5Brabbit-= semi%5D%20Question%20for%20xalloc" style=3D"text-decoration: none; color: #= 2D50FD;"> Reply to sender </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;"> <a href=3D"mailto:[email protected]?subject=3DRe%3A%2= 0%5Brabbit-semi%5D%20Question%20for%20xalloc" style=3D"text-decoration: non= e; color: #2D50FD"> Reply to group </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"https://groups.yahoo.com/neo/groups/rabbit-semi/conv= ersations/newtopic;_ylc=3DX3oDMTJlN2ZnMnY1BF9TAzk3MzU5NzE0BGdycElkAzIzMDczM= TYEZ3Jwc3BJZAMxNzA2NTU0MjA1BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTUwNTE1MzQwMQ--= " style=3D"text-decoration: none; color: #2D50FD">Start a New Topic</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;color: #2D50FD;" > <a href=3D"https://groups.yahoo.com/neo/groups/= rabbit-semi/conversations/topics/42444;_ylc=3DX3oDMTM2cDQzNGh1BF9TAzk3MzU5N= zE0BGdycElkAzIzMDczMTYEZ3Jwc3BJZAMxNzA2NTU0MjA1BG1zZ0lkAzQyNDQ1BHNlYwNmdHIE= c2xrA3Z0cGMEc3RpbWUDMTUwNTE1MzQwMQR0cGNJZAM0MjQ0NA--" style=3D"text-decorat= ion: none; color: #2D50FD;">Messages in this topic</a> (2) </td> </tr> </tbody> </table> =20=20=20=20=20=20=20=20 <div id=3D"megaphoneModule"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; backgr= ound-color:#E3E3E3;"> <div> <div class=3D"stream" style=3D"margin-bottom:10px;"> <div style=3D"background-color:white;"> <div class=3D"sn-img" style=3D"display:inline;"><img name=3D"tn= _file" style=3D"padding:0px 10px;vertical-align:top;margin-top:5px;" src=3D= "https://s.yimg.com/ru/static/images/yg/img/megaphone/1464031581_phpFA8bON"= height=3D"82" width=3D"82"></div> <div class=3D"mod-txt" style=3D"display:inline-block;"> <a rel=3D"nofollow" name=3D"sub_url" target=3D"_blank" href= =3D"https://yho.com/1wwmgg" style=3D"color:#0000FF;display:block;margin-lef= t:5px;text-decoration:none;"><span style=3D"font-size:15px;">Have you tried= the highest rated email app?</span></a> <div style=3D"max-width:530px;padding:2px 5px;">With 4.5 st= ars in iTunes, the Yahoo Mail app is the highest rated email app on the mar= ket. What are you waiting for? Now you can access all your inboxes (Gmail, = Outlook, AOL and more) in one place. Never delete an email again with 1000G= B of free cloud storage.</div> </div> </div> </div> </div>=20=20 =20=20=20=20=20 <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background-col= or:#E3E3E3;"> </div> <!------- Start Nav Bar ------> =20 <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-family: Ver= dana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-transf= orm: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/rabbit-sem= i/info;_ylc=3DX3oDMTJldDJ0aHY2BF9TAzk3MzU5NzE0BGdycElkAzIzMDczMTYEZ3Jwc3BJZ= AMxNzA2NTU0MjA1BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTUwNTE1MzQwMQ--" style=3D"t= ext-decoration: none;">Visit Your Group</a></span> <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in= line;"> </ul> </div> <div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p= x; padding: 0 2px 0 0; clear: both;"> <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkcWRtNWU1BF9TAzk3ND= c2NTkwBGdycElkAzIzMDczMTYEZ3Jwc3BJZAMxNzA2NTU0MjA1BHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNTA1MTUzNDAx" style=3D"float: left;"><img src=3D"http://l.yimg.com/r= u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"= width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a> <div style=3D"color: #747575; float: right;"> • <a href=3D"https://i= nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio= n: none;">Privacy</a> • <a href=3D"mailto:rabbit-semi-unsubscribe@yaho= ogroups.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Unsubsc= ribe</a> • <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/terms= /" style=3D"text-decoration: none;">Terms of Use</a> </div> </div> <br> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> =20 <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-sponsor" style=3D"width:160px; float:right; clear:none; m= argin:0 0 25px 0; background: #fff;"> <!-- Start Recommendations --> <div id=3D"ygrp-reco"> </div> <!-- End Recommendations --> </div> <!-- |**|end egp html banner|**| --> <div style=3D"clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src=3D"http://geo.yahoo.com/serv?s=3D97359714/grpId=3D2307316/grpspI= d=3D1706554205/msgId=3D42445/stime=3D1505153401" width=3D"1" height=3D"1"> = <br> <img src=3D"http://y.analytics.yahoo.com/fpc.pl?ywarid=3D515FB27823A7407E&a= =3D10001310322279&js=3Dno&resp=3Dimg&cf12=3DCP" width=3D"1" height=3D"1">=20 <div style=3D"color: #fff; height: 0;">__,_._,___</div> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type=3D"text/css"> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial; margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad { margin-bottom: 10px; padding: 0 0; } #actions { font-family: Verdana; font-size: 11px; padding: 10px 0; } #activity { background-color: #e0ecee; float: left; font-family: Verdana; font-size: 10px; padding: 10px; } #activity span { font-weight: 700; } #activity span:first-child { text-transform: uppercase; } #activity span a { color: #5085b6; text-decoration: none; } #activity span span { color: #ff7900; } #activity span .underline { text-decoration: underline; } .attach { clear: both; display: table; font-family: Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach div a { text-decoration: none; } .attach img { border: none; padding-right: 5px; } .attach label { display: block; margin-bottom: 5px; } .attach label a { text-decoration: none; } =20=20 blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-size: 13px; font-weight: 700; } .bold a { text-decoration: none; } dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p span { margin-right: 10px; font-family: Verdana; font-weight: 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-table div div a { text-decoration: none; } div.attach-table { width: 400px; } div.file-title a, div.file-title a:active, div.file-title a:hover, div.fi= le-title a:visited { text-decoration: none; } div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div= .photo-title a:visited { text-decoration: none; } div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: normal; } .green { color: #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; } #photos div { float: left; width: 72px; } #photos div div { border: 1px solid #666666; height: 62px; overflow: hidden; width: 62px; } #photos div label { color: #666666; font-size: 10px; overflow: hidden; text-align: center; white-space: nowrap; width: 64px; } #reco-category { font-size: 77%; } #reco-desc { font-size: 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /* border-right: 0px solid #000;*/ margin-right: 2px; padding-right: 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial, helvetica,clean, sans-serif; *font-size: small; *font: x-small; } #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg select, input, textarea { font: 99% Arial, Helvetica, clean, sans-serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; } #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; } #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li { font-size: 77%; list-style-type: square; padding: 6px 0; }=20 #ygrp-sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-right: none !important;=20 }=20 --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html> <!-- end group email --> --Apple-Mail=_70455943-317B-4A2C-9C2C-02745DDF65C0--