<?php

/**
 * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
 * Copyright (C) 2009 Entity Cyber, Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

?>
<hr>
<h4>
Resources:
</h4>
<ul>
  <li>
    Source code for iPXE images is available at
    <a href="http://www.ipxe.org/download" target="_blank">
    http://www.ipxe.org/download</a>
    <br><br>
  </li>
  <li>
    For general information about using iPXE, please visit the
    <a href="http://www.ipxe.org/" target="_blank">
    iPXE Project Home Page</a>
    <br><br>
  </li>
  <li>
    For Email-based support for iPXE please join
    <a href="http://www.ipxe.org/contact" target="_blank">
    iPXE Project mailing lists.</a>
    <br><br>
  </li>
  <li>
    For real-time online iPXE support via IRC please visit the
    <a href="irc://irc.freenode.net/%23ipxe"> #ipxe channel
    of irc.freenode.net</a>.
    <br><br>
  </li>
</ul>
<hr>
  <font size="-1">
    <br>
    Please email <a href="mailto:<?php echo "${webmaster_email}" ?>"><?php echo "${webmaster_email}"?></a>
    with questions or comments about this website.
  </font>
  <br><br>
<hr>
</body>
</html>
