<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:p="urn:schemas-microsoft-com:office:powerpoint"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=PowerPoint.Slide>
<meta name=Generator content="Microsoft PowerPoint 9">
<link rel=File-List href="./sybase_files/filelist.xml">
<link rel=Preview href="./sybase_files/preview.wmf">
<link rel=Edit-Time-Data href="./sybase_files/editdata.mso">
<link rel=OLE-Object-Data href="./sybase_files/oledata.mso">
<title> Sybase Enterprise Portal    Systems Management of  Enterprise Portal</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>Sybase, Inc.</o:Author>
  <o:Template>C:\Documents and Settings\sadam\Application Data\Microsoft\Templates\PMTemplate.pot</o:Template>
  <o:LastAuthor>OTI Employee</o:LastAuthor>
  <o:Revision>253</o:Revision>
  <o:TotalTime>2620</o:TotalTime>
  <o:LastPrinted>2000-07-06T18:11:43Z</o:LastPrinted>
  <o:Created>2000-06-28T19:35:56Z</o:Created>
  <o:LastSaved>2002-05-16T09:16:01Z</o:LastSaved>
  <o:Words>697</o:Words>
  <o:PresentationFormat>On-screen Show</o:PresentationFormat>
  <o:Company>Sybase, Inc.</o:Company>
  <o:Bytes>719920</o:Bytes>
  <o:Paragraphs>70</o:Paragraphs>
  <o:Slides>6</o:Slides>
  <o:Notes>1</o:Notes>
  <o:Version>9.3821</o:Version>
 </o:DocumentProperties>
 <o:CustomDocumentProperties>
  <o:TemplateType dt:dt="float">2</o:TemplateType>
  <o:GraphicType dt:dt="float">1</o:GraphicType>
  <o:Compression dt:dt="float">100</o:Compression>
  <o:ScreenSize dt:dt="float">2</o:ScreenSize>
  <o:ScreenUsage dt:dt="float">2</o:ScreenUsage>
  <o:MailAddress dt:dt="string">mciccone@sybase.com</o:MailAddress>
  <o:HomePage dt:dt="string">http://finagle/tse/TSE_DISCUSSIONS.html</o:HomePage>
  <o:Other dt:dt="string"></o:Other>
  <o:DownloadOriginal dt:dt="boolean">1</o:DownloadOriginal>
  <o:DownloadIEButton dt:dt="boolean">0</o:DownloadIEButton>
  <o:UseBrowserColor dt:dt="boolean">0</o:UseBrowserColor>
  <o:BackColor dt:dt="float">16777215</o:BackColor>
  <o:TextColor dt:dt="float">0</o:TextColor>
  <o:LinkColor dt:dt="float">16711782</o:LinkColor>
  <o:VisitedColor dt:dt="float">10040268</o:VisitedColor>
  <o:TransparentButton dt:dt="float">0</o:TransparentButton>
  <o:ButtonType dt:dt="float">3</o:ButtonType>
  <o:ShowNotes dt:dt="boolean">1</o:ShowNotes>
  <o:NavBtnPos dt:dt="float">1</o:NavBtnPos>
  <o:OutputDir dt:dt="string">E:\TSE_Discussions</o:OutputDir>
  <o:_AdHocReviewCycleID dt:dt="float">-1607425851</o:_AdHocReviewCycleID>
  <o:_EmailSubject dt:dt="string">Eclipse Board</o:_EmailSubject>
  <o:_AuthorEmail dt:dt="string">karl.reti@New-Era-of-Networks.com</o:_AuthorEmail>
  <o:_AuthorEmailDisplayName dt:dt="string">Reti, Karl</o:_AuthorEmailDisplayName>
 </o:CustomDocumentProperties>
 <o:OfficeDocumentSettings>
  <o:PixelsPerInch>80</o:PixelsPerInch>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<link rel=Presentation-XML href="./sybase_files/pres.xml">
<meta name=Description content="16-May-02: Sybase and Eclipse">
<meta http-equiv=expires content=0>
<![if !ppt]><script>
<!--
  var appVer = navigator.appVersion;
  var msie = appVer.indexOf( "MSIE " );
  var msieWin31 = (appVer.indexOf( "Windows 3.1" ) >= 0), isMac = (appVer.indexOf("Macintosh") >= 0);
  var ver = 0;
  if( msie >= 0 )
    ver = parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie ) ) );
  else
    ver = parseInt( appVer );

	path = "./sybase_files/v3_document.htm";

	if( msie>=0 && ( (isMac && ver>=5)||(!isMac && ver>=4) ) )
		window.location.replace( './sybase_files/frame.htm' );
	else if( ver >= 3 )
	{
		if ( !msieWin31 && ( ( msie >= 0 && ver >= 3.02 ) || ( msie < 0 && ver >= 3 ) ) )
			window.location.replace( path );    
		else
			window.location.href = path;
	}  
	else
		window.location.href = "./sybase_files/error.htm";
//-->
</script><![endif]>
</head>

<frameset>
 <noframes>
  <body>
  <p>This page uses frames, but your browser doesn't support them.</p>
  </body>
 </noframes>
</frameset>

</html>
