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


<!-- browserSync -->
<!-- bower:css -->
<link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
<link rel="stylesheet" href="vendor/angular-chart.js/dist/angular-chart.css" />
<!-- endbower -->
<!-- endcss -->
<!-- inject:css -->
<link rel="stylesheet" href="/css/dev.css">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/css/side-panel.css">
<link rel="stylesheet" href="/../../../xos/core/static/xosNgLib.css">
<!-- endinject -->

<div ng-app="xos.serviceGrid" id="xosServiceGrid" class="container-fluid">
  <div ui-view></div>
</div>

<!-- bower:js -->
<script src="vendor/js-yaml/dist/js-yaml.js"></script>
<script src="vendor/jszip/dist/jszip.js"></script>
<script src="vendor/file-saver/FileSaver.js"></script>
<script src="vendor/lodash/lodash.js"></script>
<script src="vendor/graphlib/dist/graphlib.core.js"></script>
<script src="vendor/jquery/dist/jquery.js"></script>
<script src="vendor/angular/angular.js"></script>
<script src="vendor/angular-mocks/angular-mocks.js"></script>
<script src="vendor/angular-ui-router/release/angular-ui-router.js"></script>
<script src="vendor/angular-cookies/angular-cookies.js"></script>
<script src="vendor/angular-animate/angular-animate.js"></script>
<script src="vendor/angular-resource/angular-resource.js"></script>
<script src="vendor/bootstrap-css/js/bootstrap.min.js"></script>
<script src="vendor/Chart.js/Chart.js"></script>
<script src="vendor/angular-chart.js/dist/angular-chart.js"></script>
<script src="vendor/d3/d3.js"></script>
<script src="vendor/angular-recursion/angular-recursion.js"></script>
<!-- endbower -->
<!-- endjs -->
<!-- inject:js -->
<script src="/vendor/ng-xos-lib/dist/ngXosHelpers.min.js"></script>
<script src="/.tmp/main.js"></script>
<script src="/.tmp/tosca_encoder.service.js"></script>
<script src="/.tmp/slices_encorder.service.js"></script>
<script src="/.tmp/site_encode.service.js"></script>
<script src="/.tmp/sidePanel.component.js"></script>
<script src="/.tmp/service_encorder.service.js"></script>
<script src="/.tmp/service-graph.js"></script>
<script src="/.tmp/networks_encoder.service.js"></script>
<script src="/.tmp/network_template_encoder.service.js"></script>
<script src="/.tmp/image_encoder.service.js"></script>
<script src="/.tmp/archive_manager.service.js"></script>
<!-- endinject -->