<!DOCTYPE html><!--
  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.
 --><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Empire-db employee app using vue.js</title><link href=static/css/app.6f73e59d0c070317e676fd2670198e06.css rel=stylesheet></head><body><div class=container><div id=app></div><!-- built files will be auto injected --></div><script type=text/javascript src=static/js/manifest.0accc17ec3598f932283.js></script><script type=text/javascript src=static/js/vendor.35b0b340e0dab7f340e2.js></script><script type=text/javascript src=static/js/app.5a998470448b25588615.js></script></body></html>