<!doctype html>
<!--
 * 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.
-->
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 7]>
    <script src="js/external_lib/es5-shim.min.js"></script>
    <script src="js/external_lib/respond.min.js"></script>
<![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js">
<!--<![endif]-->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8; Cache-Control: no-cache" />
    <title>Atlas</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
    <link rel="stylesheet" type="text/css" href="css/animate.min.css" />
    <link rel="stylesheet" href="js/libs/backgrid/css/backgrid.css">
    <link rel="stylesheet" href="js/libs/backgrid-filter/css/backgrid-filter.min.css">
    <link rel="stylesheet" href="js/libs/backgrid-paginator/css/backgrid-paginator.css">
    <link rel="stylesheet" href="js/libs/backgrid-orderable-columns/css/backgrid-orderable-columns.css">
    <link rel="stylesheet" href="js/libs/backgrid-sizeable-columns/css/backgrid-sizeable-columns.css">
    <link rel="stylesheet" href="js/libs/backgrid-columnmanager/css/Backgrid.ColumnManager.css">
    <link rel="stylesheet" href="js/libs/select2/css/select2.min.css">
    <link rel="stylesheet" href="js/libs/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="js/libs/jquery-asBreadcrumbs/css/asBreadcrumbs.min.css">
    <link rel="stylesheet" href="css/googlefonts.css" type='text/css'>
    <link rel="stylesheet" type="text/css" href="js/external_lib/jquery-ui/jquery-ui.min.css">
    <link href="css/bootstrap-sidebar.css" rel="stylesheet">
    <link href="js/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet">
    <link href="js/external_lib/pnotify/pnotify.custom.min.css" rel="stylesheet">
    <link href="js/libs/jQueryQueryBuilder/css/query-builder.default.min.css" rel="stylesheet">
    <link href="js/libs/bootstrap-daterangepicker/css/daterangepicker.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
</head>

<body>
    <div id="wrapper">
        <div id="sidebar-wrapper" class="sidebar-wrapper">
            <div id="sideNav-wrapper"></div>
        </div>
        <div id="page-content-wrapper" class="page-content-wrapper">
            <header id="new-header" class="clearfix"></header>
            <div id="new-page-wrapper">
                <div>
                    <img class="initialLoading" src="img/ring.gif">
                </div>
            </div>
        </div>
    </div>
    <!-- build:js scripts/main.js -->
    <script data-main="js/main" src="js/libs/requirejs/require.js"></script>
    <!-- endbuild -->
</body>

</html>
