Apache Royale
Copyright 2019 The Apache Software Foundation

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

The Initial Developer of some parts of the framework, which are copied from, 
derived from, or inspired by Adobe Flex (via Apache Flex), is 
Adobe Systems Incorporated (http://www.adobe.com/).
Copyright 2003 - 2012 Adobe Systems Incorporated. All Rights Reserved.

The Initial Developer of some parts of the compiler, which came from Adobe Flex
and Adobe ASC 2.0, and JBurgGenerator.java is Adobe Systems Incorporated (http://www.adobe.com/).
    Copyright 2003 - 2012 Adobe Systems Incorporated. All Rights Reserved.

The flex-compiler-oem compiler contains code written by Jeff Dyer at: 
    Copyright Mountain View Compiler Company (1998-2003).

Portions of JBurgGenerator.java contains code written by Tom Harwood
    Copyright Tom Harwood (2003-2008).

The Initial Developer of the examples/mxroyale/tourdeflexmodules, 
is Adobe Systems Incorporated (http://www.adobe.com/).
Copyright 2009 - 2013 Adobe Systems Incorporated. All Rights Reserved.

The ping sound effect (ping.mp3) in 
examples/mxroyale/tourdeflexmodules/src/mx/effects/assets
was created by CameronMusic. The original file can be found here:
http://www.freesound.org/people/cameronmusic/sounds/138420/
