<!--
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */
-->
<p>&nbsp;</p>
<h1>Hello from OODT Balance</h1>

<div class="box">
	<h5>To configure your application:</h5>
	<code>file://<?php echo HOME?>/config.ini</code>
</div>

<div class="box">
	<h5>To edit this view:</h5>
	<code>file://<?php echo HOME?>/views/index.php</code>
</div>

<div class="box">
	<h5>For more information:</h5>
	<a href="http://oodt.apache.org">http://oodt.apache.org</a>
</div>
