<!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="app/fw/layer/loading.service.css" rel='stylesheet' type='text/css'>
    <base href="/">
    <title>ONOS</title>

    <!-- {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">
    <onos-root></onos-root>

<!--<script>-->
    <!--&lt;!&ndash; Inject user agent info into html element to allow CSS sensitivity. &ndash;&gt;-->
    <!--(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>
