<!DOCTYPE html>
<!--
~ Copyright 2014-present Open Networking Foundation
~
~ Licensed 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.
-->
<html>
<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" href="data/img/onos-logo.png">

    <link rel="apple-touch-icon" href="data/img/apple-touch-icon.png">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700'
          rel='stylesheet' type='text/css'>

    <title>ONOS</title>

    <!-- Third party library code included here -->
    <script src="vendor/angular/angular.min.js"></script>
    <script src="vendor/angular-route/angular-route.min.js"></script>
    <script src="vendor/angular-cookies/angular-cookies.min.js"></script>
    <script src="vendor/d3/d3.min.js"></script>
    <script src="vendor/topojson/topojson.js"></script>
    <script src="vendor/Chart.js/dist/Chart.min.js"></script>
    <script src="vendor/angular-chart.js/dist/angular-chart.min.js"></script>
    <script src="vendor/lodash/index.js"></script>

    <!-- {INJECTED-USER-START} -->
    <!-- {INJECTED-USER-END} -->

    <!-- ONOS UI Framework included here -->
    <script src="onos.js"></script>
    <script src="dist/onos.js"></script>

    <!-- Framework and library stylesheets included here -->
    <link rel="stylesheet" href="dist/onos.css">

    <!-- Contributed javascript injected here -->
    <!-- {INJECTED-JAVASCRIPT-START} -->
    <!-- {INJECTED-JAVASCRIPT-END} -->

    <!-- Contributed stylesheets injected here -->
    <!-- {INJECTED-STYLESHEETS-START} -->
    <!-- {INJECTED-STYLESHEETS-END} -->

</head>
<body class="light" ng-app="onosApp">
<div id="frame" ng-controller="OnosCtrl as onosCtrl" detect-browser>
    <div id="mast"
         ng-controller="MastCtrl as mastCtrl"
         ng-include="'app/fw/mast/mast.html'"></div>

    <div id="view" ng-view></div>

    <div id="nav"
         ng-controller="NavCtrl as navCtrl"
         ng-include="'nav.html'"></div>

    <div id="floatpanels"></div>
    <div id="alerts"></div>
    <div id="tooltip"></div>
    <div id="flash"></div>
    <div id="quickhelp"></div>
    <div id="veil">
        <div class="msg"></div>
        <svg resize></svg>
    </div>
</div>

<script>
    <!-- Inject user agent info into html element to allow CSS sensitivity. -->
    (function () {
        var t = ('ontouchstart' in window) || ('onmsgesturechange' in window);
        d3.select(document.documentElement)
            .attr('data-useragent', navigator.userAgent)
            .attr('data-platform', navigator.platform)
            .classed('touch', t);
    }());
</script>
</body>
</html>
