<!--
 * 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.
-->
<div class="row">
    <div class="">
        <div class="col-sm-3 rowValue">
            <div><span class="graphkey">Rows</span></div>
            <div><span class="graphval">
                    <div class="value-loader"></div>
                </span></div>
        </div>
        <div class="col-sm-3 table_created">
            <div><span class="graphkey">Date Created</span></div>
            <div><span class="graphval">
                    <div class="value-loader"></div>
                </span></div>
        </div>
        <div class="col-sm-3 table_name">
            <div><span class="graphkey">Table</span></div>
            <div><span class="graphval">
                    <div class="value-loader"></div>
                </span></div>
        </div>
        <div class="col-sm-3 db_name">
            <div><span class="graphkey">DB</span></div>
            <div><span class="graphval">
                    <div class="value-loader"></div>
                </span></div>
        </div>
    </div>
</div>
<hr />
<div class="">
    <div id="r_profileTableLayoutView"></div>
</div>