// 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.

lowestFileElementRank: chapter

// Available icons:
// .icon-heart
// .icon-bug
// .icon-download
// .icon-star
secondaryTabs: {
  "Contribute": {
    "href": "javascript:;"
    "class": "icon-heart"
  }
  "Report a Bug": {
     "href": "javascript:;"
     "class": "icon-bug"
  }
  "Download v2.3.21": {
    "href": "javascript:;"
    "class": "icon-download"
  }
}

deployUrl: "http://example.com/"

footerSiteMap: {
    "Overview": {
      "What is FreeMarker?": "http://freemarker.org/features.html"
      "Download": "http://freemarker.org/freemarkerdownload.html"
    }
    "Community": {
        "FreeMarker on Github": "https://github.com/freemarker"
    }
}

logo: {
  href: "http://example.com"
  src: logo.png
  alt: "My Logo"
}

socialLinks: {
  "Github": {
    "href": "https://github.com/freemarker"
    "class": "github"
  }
  "Twitter": {
    "href": "https://twitter.com/freemarker"
    "class": "twitter"
  }
  "Stack Overflow": {
    "href": "https://stackoverflow.com/questions/tagged/freemarker"
    "class": "stack-overflow"
  }
}

searchKey: "014728049242975963158:8awjt03uofm"

copyrightHolder: "The Apache Software Foundation"
copyrightStartYear: 1999
