<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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="${project.artifactId}">

    <bannerLeft>
        <name>Shiro</name>
        <src>http://shiro.apache.org/images/apache-shiro-logo.png</src>
        <href>http://shiro.apache.org</href>
    </bannerLeft>

    <bannerRight>
        <src>http://shiro.apache.org/images/asf_logo.png</src>
    </bannerRight>

    <publishDate position="right"/>
    <version position="right"/>

    <body>

        <breadcrumbs>
            <item name="${project.name}" href="./index.html"/>
        </breadcrumbs>

        <menu ref="parent" inherit="bottom"/>
        <menu ref="modules" inherit="bottom"/>
        <menu ref="reports" inherit="bottom"/>

    </body>

    <skin>
        <groupId>org.apache.maven.skins</groupId>
        <artifactId>maven-fluido-skin</artifactId>
        <version>1.5</version>
    </skin>

</project>