<?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
  ~
  ~   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>
    <publishDate position="bottom"/>
    <version position="bottom"/>
    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.5</version>
    </skin>
    <bannerLeft>
        <name>Apache Streams</name>
        <src>http://streams.incubator.apache.org/images/streams_logo.jpg</src>
        <href>http://streams.incubator.apache.org</href>
        <height>100</height>
        <width>150</width>
    </bannerLeft>
    <bannerRight>
        <name>Apache Incubator</name>
        <src>http://incubator.apache.org/images/egg-logo.png</src>
        <href>http://incubator.apache.org</href>
    </bannerRight>
    <body>
        <breadcrumbs>
            <item name="Incubator" href="http://incubator.apache.org/"/>
            <item name="Streams" href="http://streams.incubator.apache.org/"/>
        </breadcrumbs>
        <head>
            <![CDATA[
            <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','https://www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-77087101-1', 'auto');
                ga('send', 'pageview');
            </script>
            ]]>
        </head>
        <menu name="Overview" inherit="top">
            <item name="Overview" href="index.html" />
            <item name="Architecture" href="architecture.html" />
            <item name="Concepts" href="concepts.html" />
            <item name="Downloads" href="downloads.html" />
            <item name="Frequently Asked Questions" href="faq.html" />
        </menu>
        <menu name="Details">
            <item name="Project License" href="license.html" />
            <item name="Mailing Lists" href="mail-lists.html" />
            <item name="Project Team" href="team-list.html" />
            <item name="Continuous Integration" href="integration.html"/>
            <item name="Issue Tracking" href="issue-tracking.html" />
            <item name="Source Repositories" href="source-repository.html" />
            <item name="Dependency Info" href="dependency-info.html" />
            <item name="Dependency Management" href="dependency-management.html" />
            <item name="Distribution Management" href="distribution-management.html" />
            <item name="Plugin Management" href="plugin-management.html" />
            <item name="Release Setup" href="release-setup.html" />
            <item name="Release Process" href="release.html" />
            <item name="Website Management" href="website.html" />
        </menu>
        <menu name="Projects" inherit="top">
            <item name="streams-master" href="http://streams.incubator.apache.org/site/latest/streams-master" />
            <item name="streams-project" href="http://streams.incubator.apache.org/site/latest/streams-project" />
            <item name="streams-examples" href="http://streams.incubator.apache.org/site/latest/streams-examples/" />
        </menu>
        <menu name="Tutorial">
            <item name="Build streams and streams-examples from source" href="tutorial/build.html" />
            <item name="Create a local folder to configure streams" href="tutorial/environment.html"/>
            <item name="Set up a local docker environment" href="tutorial/docker.html" />
            <item name="Run a local database to store activity documents" href="tutorial/database.html" />
            <item name="Run twitter-history-elasticsearch" href="http://streams.incubator.apache.org/site/latest/streams-examples/streams-examples-local/twitter-history-elasticsearch/index.html" />
        </menu>
        <menu name="Learn More">
            <item name="Browse streams providers, processors, and persisters" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-contrib/index.html"  />
            <item name="View the official Apache Streams jsonschema files" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-pojo/index.html" />
            <item name="View java POJOs generated from the official Apache Streams jsonschema files" href="http://streams.incubator.apache.org/site/latest/streams-project/streams-pojo/apidocs/org/apache/streams/pojo/json/package-summary.html" />
            <item name="Check out some additional examples" href="http://streams.incubator.apache.org/site/latest/streams-examples/index.html"  />
        </menu>
        <menu name="Other Resources">
            <item name="ActivityStreams Homepage" href="http://activitystrea.ms" />
            <item name="ActivityStreams Specifications" href="http://activitystrea.ms/specs/" />
            <item name="Streams Blog" href="http://blogs.apache.org/streams/" />
            <item name="Streams Proposal Wiki Page" href="http://wiki.apache.org/incubator/StreamsProposal" />
            <item name="Apache Foundation Info" href="http://www.apache.org/" />
            <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html" />
            <item name="Thanks" href="http://www.apache.org/foundation/thanks.html" />
        </menu>
    </body>
    <custom>
        <fluidoSkin>
            <topBarEnabled>true</topBarEnabled>
            <navBarStyle>navbar-inverse</navBarStyle>
            <sideBarEnabled>false</sideBarEnabled>
            <gitHub>
                <projectId>apache/incubator-streams-master</projectId>
                <ribbonOrientation>right</ribbonOrientation>
                <ribbonColor>black</ribbonColor>
            </gitHub>
            <twitter>
                <user>ApacheStreams</user>
                <showUser>true</showUser>
                <showFollowers>true</showFollowers>
            </twitter>
        </fluidoSkin>
    </custom>
</project>
