<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" />
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Apache OpenOffice - Կարևոր հուշումներ ընտրված հարթակի համար</title>
  <script type="text/javascript" src="/download/globalvars.js"></script>
  <script type="text/javascript" src="/download/msg_prop_l10n_en.js"></script>
  <script type="text/javascript" src="msg_prop_l10n_hy.js"></script>
  <style type="text/css">
  /* <![CDATA[ */
  /*-------------------- Exceptions on standard css -----------------------*/
  @import "/css/styles.css";
  @import "/css/exceptions.css";
  /* ]]> */
  </style>
</head>

<body style="padding: 10px 10px 10px 10px;">
  <!-- The text in the H1 tag is intentionally shown as not displayable, just to please accessibility tools like a
  screen reader. -->
  <h1 style="display: none;">Apache OpenOffice</h1>
  <h2 style="display: none;">Apache OpenOffice</h2>

    <!-- Text is coming from 'msg_prop_l10n_xy.js' -->
    <script type="text/javascript">
    <!--
    document.write( "<h3>" + l10n.dl_platform_info_headline + "</h3>" );

    document.write( "<h4><b>" + l10n.dl_platform_info_win_headline + "</b></h4>" );
    document.write( l10n.dl_platform_info_win_text );

    document.write( "<h4><b>" + l10n.dl_platform_info_mac_headline + "</b></h4>" );
    document.write( l10n.dl_platform_info_mac_text );

    document.write( "<h4><b>" + l10n.dl_platform_info_linux_headline + "</b></h4>" );
    document.write( l10n.dl_platform_info_linux_text );
    //-->
    </script>

</body>
</html>
