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


<!--<xos-table config="cs.tableConfig" data="cs.sites"></xos-table>-->
<h2>Slice Details</h2>
<hr></hr>
<xos-form ng-model="cs.model" config="cs.config" ></xos-form>

<!--<pre>-->
<!--&lt;!&ndash;{{cs.users | json}}&ndash;&gt;-->

<!--{{cs.users.name | json}}-->

<!--</pre>-->