Apache Airflow
Copyright 2016-2019 The Apache Software Foundation

This product includes software developed at The Apache Software
Foundation (http://www.apache.org/).

=======================================================================

Apache Airflow contains subcomponents with separate copyright notices and
license terms. Your use of the source code for the these subcomponents
is subject to the terms and conditions of their respective licenses.

See the LICENSE file for a list of subcomponents and dependencies and
their respective licenses.

airflow.contrib.auth.backends.github_enterprise_auth:
-----------------------------------------------------

* Copyright 2015 Matthew Pelland (matt@pelland.io)

hue:
-----
This product contains a modified portion of 'Hue' developed by Cloudera, Inc.
(https://github.com/cloudera/hue/).

* Copyright 2009-2017 Cloudera Inc.

python-slugify:
---------------

* Copyright (c) Val Neekman @ Neekware Inc. http://neekware.com

python-nvd3:
------------

* Copyright (c) 2013 Arezqui Belaid <areski@gmail.com> and other contributors


