<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="./fujitsu_files/filelist.xml">
<link rel=Preview href="./fujitsu_files/preview.wmf">
<link rel=Edit-Time-Data href="./fujitsu_files/editdata.mso">
<link rel=OLE-Object-Data href="./fujitsu_files/oledata.mso">
<title>&#12473;&#12521;&#12452;&#12489; 1</title>
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>JAVA&#38283;&#30330;&#37096;</o:Author>
  <o:LastAuthor>OTI Employee</o:LastAuthor>
  <o:Revision>44</o:Revision>
  <o:TotalTime>491</o:TotalTime>
  <o:Created>2002-02-23T02:45:15Z</o:Created>
  <o:LastSaved>2002-05-14T15:19:03Z</o:LastSaved>
  <o:Words>568</o:Words>
  <o:PresentationFormat>On-screen Show</o:PresentationFormat>
  <o:Company>&#23500;&#22763;&#36890;</o:Company>
  <o:Bytes>119835</o:Bytes>
  <o:Paragraphs>126</o:Paragraphs>
  <o:Slides>9</o:Slides>
  <o:Notes>2</o:Notes>
  <o:Version>9.3821</o:Version>
 </o:DocumentProperties>
 <o:CustomDocumentProperties>
  <o:_AdHocReviewCycleID dt:dt="float">827696585</o:_AdHocReviewCycleID>
  <o:_EmailSubject dt:dt="string">Eclipse Material</o:_EmailSubject>
  <o:_AuthorEmailDisplayName dt:dt="string">Alepin, Ronald</o:_AuthorEmailDisplayName>
 </o:CustomDocumentProperties>
 <o:OfficeDocumentSettings>
  <o:PixelsPerInch>80</o:PixelsPerInch>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<link rel=Presentation-XML href="./fujitsu_files/pres.xml">
<meta name=Description content="14-May-02: Fujitsu Limited">
<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 = "./fujitsu_files/v3_document.htm";

	if( msie>=0 && ( (isMac && ver>=5)||(!isMac && ver>=4) ) )
		window.location.replace( './fujitsu_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 = "./fujitsu_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>
