<div class="sidebar">
  <div class="container sidebar-sticky">
    <div class="sidebar-about">
      <a href="{{ site.github.url }}">
        <img alt="OpenZipkin logo" src="{{ site.github.url }}/public/img/zipkin-logo-200x119.jpg"
             class="sidebar-logo">
      </a>
      {% for link in site.data.sidebar_links %}
      <a href="{{ link.url }}" target="_blank" title="{{ link.text }}">
        <img class="sidebar-social-icon" alt="{{ link.text }}" src="{{ site.github.url }}/public/img/{{ link.img }}">
      </a>
      {% endfor %}
    </div>

    <nav class="sidebar-nav">
      {% assign pages_list = site.pages | sort:"weight" %}
      {% for node in pages_list %}
        {% if node.title != null %}
          {% if node.layout == "page" %}
            <a class="sidebar-nav-item{% if page.url == node.url %} active{% endif %}" href="{{ node.url | prepend: site.github.url }}">{{ node.title }}</a>
          {% endif %}
        {% endif %}
      {% endfor %}
    </nav>
    <nav>
      <span>Apache Links</span>
      <a class="sidebar-nav-item" href="http://www.apache.org/">Apache Software Foundation</a>
      <a class="sidebar-nav-item" href="http://www.apache.org/licenses/">License</a>
      <a class="sidebar-nav-item" href="http://www.apache.org/events/current-event">Events</a>
      <a class="sidebar-nav-item" href="http://www.apache.org/foundation/thanks">Thanks</a>
      <a class="sidebar-nav-item" href="http://www.apache.org/security">Security</a>
      <a class="sidebar-nav-item" href="http://www.apache.org/foundation/sponsorship">Sponsor Apache</a>
    </nav>
  </div>
</div>
