<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<project name="Apache REEF" xmlns="http://maven.apache.org/DECORATION/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.4</version>

    </skin>
    <custom>
        
        
        <fluidoSkin>
			<breadcrumbDivider>|</breadcrumbDivider>
            <topBarEnabled>true</topBarEnabled>
			<!-- Should always add up to 12 -->
		    <leftColumnClass>span2</leftColumnClass>
		    <bodyColumnClass>span10</bodyColumnClass>
			
            <sideBarEnabled>true</sideBarEnabled>
      		<!-- Makes the top bar color = black
      			<navBarStyle>navbar-inverse</navBarStyle>
      		 -->
      		 
        </fluidoSkin>
    </custom>
    
  <bannerLeft>
    <name>Apache REEF</name>
    <src>ApacheREEF_logo_no_margin_small.png</src>
    <alt>Apache REEF</alt>
    <href></href>
  </bannerLeft>
  <bannerRight>
    <src>apache-feather.png</src>
    <href>http://apache.org/</href>
  </bannerRight>
  
  <version position="none"/>
  <publishDate position="none"/>
  
    <body>   
        <head>
            <script>
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-69807635-1', 'auto');
                ga('send', 'pageview');
            </script>
        </head>
        
	    <breadcrumbs>
	      <item name="Apache REEF" href="index.html"/>
	    </breadcrumbs>
        <links>
            <item name="Apache REEF GitHub" href="https://github.com/apache/reef"/>
	        <item name="Apache" href="http://www.apache.org"/>
        </links>
        <menu name="Apache REEF">
            <item name="Overview" href="index.html"/>
            <item name="FAQ" href="faq.html"/>
            <item name="License" href="license.html"/>
            <item name="Downloads &amp; APIs" href="downloads.html"/>
            <item name="Privacy Policy" href="privacy-policy.html"/>
        </menu>

        <menu name="Documentation">
            <item name="Introduction to REEF" href="introduction.html"/>
            <item name="REEF Tutorial" href="https://cwiki.apache.org/confluence/display/REEF/Tutorials"/>
            <item name="Publications" href="publications.html"/>
            <item name="Talks" href="talks.html"/>
            <item name="Glossary" href="glossary.html"/>
            <item name="Tang" href="tang.html"/>
            <item name="Wake" href="wake.html"/>
        </menu>
        <menu name="Contribution">
            <item name="Contributing" href="https://cwiki.apache.org/confluence/display/REEF/Contributing"/>
            <item name="Committer Guide" href="https://cwiki.apache.org/confluence/display/REEF/Committer+Guide"/>
            <item name="Coding Guidelines" href="https://cwiki.apache.org/confluence/display/REEF/Coding+Guidelines"/>
        </menu>
        <menu name="Community">
            <item name="Team" href="team.html"/>
            <item name="Mailing List" href="mailing-list.html"/>
            <item name="Issue Tracker" href="https://issues.apache.org/jira/browse/REEF"/>
            <item name="Powered By" href="https://cwiki.apache.org/confluence/display/REEF/Powered+by+REEF"/>
        </menu>
        <menu name="ASF">
            <item name="Apache Software Foundation" href="http://www.apache.org/foundation/"/>
            <item name="How Apache Works" href="http://www.apache.org/foundation/how-it-works.html"/>
            <item name="Apache License" href="http://www.apache.org/licenses/LICENSE-2.0.html"/>
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
        </menu>
		<footer>
			<div class="container-fluid">
				<div class="row-fluid">
				        <a href="http://www.apache.org">Apache Software Foundation</a>.
						All Rights Reserved.
				</div>
			</div>

			<div class="row span12">
				    Apache REEF, REEF, Apache, the Apache feather logo, and the Apache REEF logo are trademarks
		        of The Apache Software Foundation. All other marks mentioned may be trademarks or registered
		        trademarks of their respective owners.
	        </div>
            <script src="js/release.js" type="text/javascript"></script>
        </footer>
        <!-- 
        	this command gives a bunch of information about the Maven site creation project
        	<menu ref="reports"/> 
        -->
    </body>
</project>
