
<!--
Copyright 2017-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.
-->


<!DOCTYPE html>
<html lang="en" ng-app="xos-rcord-gui-extension">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link href="/spa/loader.css" rel="stylesheet">
  <link href="/spa/app.css" rel="stylesheet">
</head>
<body>
  <div ui-view></div>
  <script src="/spa/vendor.js"></script>
  <script src="/spa/app.js"></script>
  <script src="/spa/loader.js"></script>
  <script src="/spa/app.config.js"></script>
  <script src="/spa/style.config.js"></script>
</body>
</html>