Atlantis was originally copyrighted and licensed under:

    Copyright 2017 HootSuite Media Inc.

    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.

In 2018 it was forked from github.com/hootsuite/atlantis to
github.com/runatlantis/atlantis. The contents of files created before the fork
are obviously still under the Hootsuite copyright and contain a header to that
effect in addition to a disclaimer that they have subsequently been modified by
contributors to github.com/runatlantis/atlantis. Modifications and new files
hereafter are still under the Apache 2.0 license, but are not under copyright of
Hootsuite Media Inc.

