<html xmlns:v="urn:schemas-microsoft-com:vml" 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=us-ascii">
<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:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">We recently experienced a series of memory alerts on our windows servers that didn't make sense. Although Xymon was indicating that virtual memory was completely used, logging into the server itself showed there were no issues.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">At first, I had thought there was something wrong with the data that the XymonPS client was sending and working with Zak Beck we found a small tidbit of code to resolve a "bbwin bug".<o:p></o:p></p>
<p class="MsoNormal">By flopping a 0 to a 1 we could reverse the way the numbers were reported and yet this didn't resolve the problem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It became obvious that the data being sent from the XymonPS client was correct but once on the server something was getting handled differently.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Below is a detailed look at what we were seeing and then how I corrected it. The corrections may or may not want to be included in future code releases.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is what the XymonPS data looked like when we were getting alerts.
<o:p></o:p></p>
<p class="MsoNormal">As you can see there is nothing that would indicate a problem:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">[memory]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">memory Total Used<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">physical: 4095 1266<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">virtual: 4506 4111 <--- These are the numbers we are interested in.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">page: 8600 5297<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what was the Xymon server used to create our alert:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory Used Total Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Physical 1266M 4095M 30%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual 4111M >>> 4095M <<< 100% <--- Here is the alert<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap 5297M 8600M 61%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As you can see - the "Total" available "Actual" memory is the same as the Total available Physical memory. But, this is not right, the total available Actual memory should have been 4506M.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Just for the sake of having this information included, here is what the memory data looks like from a linux client (there is no issue here):<o:p></o:p></p>
<p class="MsoNormal">Linux data:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">[free]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> total used free shared buffers cached<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Mem: 16556808 4895408 11661400 0 259376 2508448<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">-/+ buffers/cache: 2127584 14429224<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap: 1340412 0 1340412<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Displayed:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory Used Total Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Physical 4780M 16168M 29%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual 2077M 16168M 12%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap 0M 1308M 0%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, I had to find out why the total physical memory was used to calculate the percentage of used space for the "Actual" memory when the client is a Windows server (XymonPS or BBWin).<o:p></o:p></p>
<p class="MsoNormal">What I found was that although there is a variable used for memactused there was nothing for memacttotal. So I added a new value for memacttotal which then required me to add the same values to bbwin.c (see below).<o:p></o:p></p>
<p class="MsoNormal">This also required a modification to linux.c (see below) which instead of using memacttotal, it simiply reususes the value for memphytotal which is essencially the same thing that is currently being done now.<o:p></o:p></p>
<p class="MsoNormal">Although I have provided patch files for bbwin.c and linux.c ALL of the xymond/client/*.c files need to be modified.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">xymond_client.c patch:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- xymond_client.c.ORIG 2016-01-27 09:53:58.321793949 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ xymond_client.c 2016-01-28 12:57:51.676006980 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -909,7 +909,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">void unix_memory_report(char *hostname, char *clientclass, enum ostype_t os,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> void *hinfo, char *fromline, char *timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- long memphystotal, long memphysused, long memactused,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ long memphystotal, long memphysused, long memacttotal, long memactused,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> long memswaptotal, long memswapused)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> long memphyspct = 0, memswappct = 0, memactpct = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -938,7 +938,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memswappct > swapred) swapcolor = COL_RED;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- if (memactused != -1) memactpct = (memphystotal > 0) ? ((100 * memactused) / memphystotal) : 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ if (memactused != -1) memactpct = (memacttotal > 0) ? ((100 * memactused) / memacttotal) : 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memactpct <= 100) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memactpct > actyellow) actcolor = COL_YELLOW;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memactpct > actred) actcolor = COL_RED;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -965,30 +965,30 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> memorysummary);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, " %-12s%12s%12s%12s\n", "Memory", "Used", "Total", "Percentage");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, " %-16s%12s%12s%12s\n", "Memory", "Used", "Total", "Percentage");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- colorname(physcolor), "Physical", memphysused, memphystotal, memphyspct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ colorname(physcolor), "Real/Physical", memphysused, memphystotal, memphyspct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memactused != -1) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memactpct <= 100)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- colorname(actcolor), "Actual", memactused, memphystotal, memactpct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ colorname(actcolor), "Actual/Virtual", memactused, memacttotal, memactpct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- colorname(COL_CLEAR), "Actual", memactused, memphystotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ colorname(COL_CLEAR), "Actual/Virtual", memactused, memacttotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memswapused != -1) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (memswappct <= 100)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- colorname(swapcolor), "Swap", memswapused, memswaptotal, memswappct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%%\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ colorname(swapcolor), "Swap/Page", memswapused, memswaptotal, memswappct);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> else<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- sprintf(msgline, "&%s %-12s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ sprintf(msgline, "&%s %-16s%11ldM%11ldM%11ld%% - invalid data\n",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> colorname(COL_CLEAR), "Swap", memswapused, memswaptotal, 0L);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> addtostatus(msgline);<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">bbwin.c patch:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- bbwin.c.ORIG 2016-01-27 09:54:13.989793661 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ bbwin.c 2016-01-27 09:54:17.709793593 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -487,7 +487,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (p) sscanf(p, "\nvirtual: %ld %ld", &memacttotal, &memactused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> dbgprintf("DEBUG Memory %ld %ld %ld %ld %ld\n", memphystotal, memphysused, memactused, memswaptotal, memswapused); /* DEBUG TODO Remove*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> unix_memory_report(hostname, clienttype, os, hinfo, fromline, timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- memphystotal, memphysused, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ memphystotal, memphysused, memacttotal, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> splitmsg_done();<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">linux.c patch:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">--- linux.c.ORIG 2016-01-27 09:54:23.861793480 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+++ linux.c 2016-01-27 09:54:27.545793413 -0600<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">@@ -135,7 +135,7 @@<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> unix_memory_report(hostname, clienttype, os, hinfo, fromline, timestr,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">- memphystotal, memphysused, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">+ memphystotal, memphysused, memphystotal, memactused, memswaptotal, memswapused);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New""> if (mdstatstr) {<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">After modifications the data from the client remains the same but what the server acts upon and displays now looks like:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Windows/XymonPS:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory Used Total Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Real/Physical 1444M 5119M 28%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual/Virtual 57M 2047M 2%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap/Page 1742M 10237M 17%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Linux:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Memory Used Total Percentage<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Real/Physical 3625M 3949M 91%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Actual/Virtual 889M 3949M 22%<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Swap/Page 6M 4092M 0%<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">You will notice that I changed the labels of each line to include what the names are in the graphs. I figured if I was modifyng these scripts I might as well fix what has been annoying me for a long long time. :)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I hope this all makes sense.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">Thanks,
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">John
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#1F497D">Upcoming PTO:
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">_____________________________________________________________________
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">John Rothlisberger<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">IT Strategy, Infrastructure & Security - Technology Growth Platform<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">TGP for Business Process Outsourcing<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">Accenture<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">312.693.3136 office<b><o:p></o:p></b></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:#44546A">_____________________________________________________________________
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by
you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of
internal compliance with Accenture policy. <br>
______________________________________________________________________________________<br>
<br>
www.accenture.com<br>
</font>
</body>
</html>