<footer class="site-footer">

  <div class="wrapper">

    <div class="footer-col-wrapper">
      {% if site.data.project.podling %}
      {{ site.data.project.name }} is an effort undergoing <a href="https://incubator.apache.org/index.html">Incubation</a> at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
      <hr>
      {% endif %}
      <div style="text-align:center;">
      {% if site.data.project.podling %}
          <div style="margin-top: 20px; margin-bottom: 20px;">
              <a href="http://incubator.apache.org"><img src="{{ BASE_PATH }}/assets/themes/apache/img/egg-logo.png" alt="Apache Incubator"/></a>
          </div>
      {% endif %}
          <div>
          Copyright &copy; 2016 <a href="http://www.apache.org">The Apache Software Foundation</a>.
          Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
          <br>
          {% if site.data.project.podling %}
              Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
          {% else %}
              Apache and the Apache Feather logo are trademarks of The Apache Software Foundation.
          {% endif %}
          </div>
          
      </div>
    </div>

  </div>

  {% include themes/apache/analytics/google-analytics %}

</footer>
