Apache OpenAZ
Copyright 2015 The Apache Software Foundation

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

Portions of OpenAZ were originally developed by AT&T
and are licensed to Apache Software Foundation under the
"Software Grant and Corporate Contribution License Agreement".

Portions of OpenAZ were originally developed by JP Morgan Chase
and are licensed to Apache Software Foundation under the
"Software Grant and Corporate Contribution License Agreement".

