  Apache UIMA-DUCC
Copyright 2012 The Apache Software Foundation

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

Portions of Apache UIMA were originally developed by
International Business Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software Grant License Agreement", informally known as the
"IBM UIMA License Agreement".
Copyright (c) 2003, 2006 IBM Corporation.

Portions of UIMA-DUCC were originally developed by
International Business Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software Grant License Agreement", informally known as the 
"IBM UIMA-DUCC License Agreement".
Copyright (c) 2012 IBM Corporation

Portions of UIMA-AS were originally developed by
International Business Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software Grant License Agreement", informally known as the 
"IBM UIMA-EE License Agreement".
Copyright (c) 2007, 2008 IBM Corporation

------------------ Saxon Notice

This product includes software known as 
"The Saxon XSLT and XQuery Processor from Saxonica Limited", whose
home page URL is http://www.saxonica.com/ 

Saxon includes the org.apache.xerces.util.XMLChar module from the Apache 
Xerces product, renamed as net.sf.saxon.om.XMLChar but otherwise unchanged. 
See the copyright statements included in the source code of that module for
conditions of use.

Saxon includes code for performing Unicode normalization that is derived 
from the sample code published for this purpose by the Unicode consortium. 
For the terms of use of this code, see http://www.unicode.org/terms_of_use.html, 
which should be regarded as forming part of these conditions of use, and part 
of the Saxon documentation. 

------------------ SVG Notice

This product contains icons developed by the SVG Icons project 
(http://sourceforge.net/projects/svgicons), licensed under the 
BSD license (see LICENSE file).

------------------

This product includes image 
120px-Anas_platyrhynchos_-United_Kingdom_-adult_female_and_ducklings-8.jpg,
which is licensed under the Creative Commons license CC-BY-2.0. The license can 
be downloaded from 
http://creativecommons.org/licenses/by/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Anas_platyrhynchos_-United_Kingdom_-adult_female_and_ducklings-8.jpg#metadata
jans canon / Wikimedia Commons / CC-BY-2.0

------------------ 

This product includes image 120px-Ducks_eating.jpg, which is licensed under 
the Creative Commons license CC-BY-2.0. The license can be downloaded from 
http://creativecommons.org/licenses/by/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Ducks_eating.jpg
Neil Phillips / Wikimedia Commons / CC-BY-2.0

------------------ 

This product includes image 120px-Rubber_duckies_So_many_ducks.jpg, which is licensed 
under the Creative Commons  license CC-BY-2.0. The license can be downloaded from 
http://creativecommons.org/licenses/by/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Rubber_duckies_So_many_ducks.jpg
Gaetan Lee / Wikimedia Commons / CC-BY-2.0  

------------------ 

This product includes image Ducklings_in_Shaw_Creek.jpg, 
which is licensed  under the Creative Commons  license CC-BY-2.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Ducklings_in_Shaw_Creek.jpg
Author:Peggy2012CREATIVELENZ / Wikimedia Commons / CC-BY-2.0 

------------------ 

This product includes image 120px-Head_of_a_white_domesticated_duck.jpg, which is licensed 
under the Creative Commons  license CC-BY-SA-2.0. The license can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.0/legalcode.Source:
http://commons.wikimedia.org/wiki/File:Head_of_a_white_domesticated_duck.jpg
Ernst Vikne / Wikimedia Commons / CC-BY-SA-2.0 

------------------ 

This product includes image 90px-Mallards_nest_Culwatty_-_geograph.org.uk_-_813413.jpg, 
which is licensed  under the Creative Commons  license CC-BY-SA-2.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Mallard%27s_nest,_Culwatty_-_geograph.org.uk_-_813413.jpg
Author:wfmillar / Wikimedia Commons / CC-BY-SA-2.0

------------------ 

This product includes image 90px-Swimming_white_domesticated_ducks.jpg, 
which is licensed  under the Creative Commons  license CC-BY-SA-2.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Swimming_white_domesticated_ducks.jpg
Ernst Vikne / Wikimedia Commons / CC-BY-SA-2.0

------------------ 

This product includes image Delena-cancerides-huntsman-spider.jpg, 
which is licensed  under the Creative Commons  license CC-BY-SA-2.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Delena-cancerides-huntsman-spider.jpg
Bryce McQuillan / Wikimedia Commons / CC-BY-SA-2.0

------------------ 

This product includes image refresh.png, which is licensed 
under the Creative Commons  license CC BY-SA 2.5. The license can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.5/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Human-gnome-session-reboot.svg
Pander / Wikimedia Commons / CC BY-SA 2.5

------------------ 

This product includes image 144x144Stick_figure_-_choosing.jpg, which is licensed 
under the Creative Commons  license CC-BY-SA-3.0. The license can be downloaded from 
http://creativecommons.org/licenses/by-sa/3.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Stick_figure_-_choosing.jpg
User:Obsidian Soul / Wikimedia Commons / CC-BY-SA-3.0 

------------------ 

This product includes image 12x1.33in-Bariken_kid.JPG, which is licensed 
under the Creative Commons  license CC-BY-SA-3.0. The license can be downloaded from 
http://creativecommons.org/licenses/by-sa/3.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Bariken_kid.JPG
User:Materialscientist / Wikimedia Commons / CC-BY-SA-3.0 

------------------ 

This product includes image 800px-Leg_Of_White_Duck.2x1.6.jpg, which is licensed 
under the Creative Commons  license CC-BY-SA-3.0. The license can be downloaded from 
http://creativecommons.org/licenses/by-sa/3.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Leg_Of_White_Duck.jpg
User:Ezhuttukari / Wikimedia Commons / CC-BY-SA-3.0  

------------------ 

This product includes image Flying_mallard_duck_-_female_2.0x1.4.jpg, 
which is licensed  under the Creative Commons  license CC-BY-SA-3.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by-sa/3.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Flying_mallard_duck_-_female.jpg
Author:Martin Correns / Wikimedia Commons / CC-BY-SA-3.0  

------------------ 

This product includes image 800px-Duck_crossing_Louisiana.2x1.4.jpg, which is in 
public domain in the United States. Source:
http://commons.wikimedia.org/wiki/File:Duck_crossing_Louisiana_2010-10-15.JPG
Richard David Ramsey

------------------ 

This product includes image indicator.gif, which is in 
public domain in the United States. Source:
http://commons.wikimedia.org/wiki/File:Birdleft.gif
Author:Pigpen  

------------------ 

This product includes image 120px-BURROUGH_AUDUBON_SOCIETY_MEMBERS_USE_BINOCULARS_TO_IDENTIFY_MIGRATORY_SHORE_BIRDS_DURING_A_SCHEDULED_OUTING_AT_THE..._-_NARA_-_557179.jpg, 
which is in public domain in the United States. Source:
http://commons.wikimedia.org/wiki/File:BURROUGH_AUDUBON_SOCIETY_MEMBERS_USE_BINOCULARS_TO_IDENTIFY_MIGRATORY_SHORE_BIRDS_DURING_A_SCHEDULED_OUTING_AT_THE..._-_NARA_-_557179.jpg
Author:Duncan, Patricia D.

------------------ 

This product includes image 800px-Duck_crossing_Louisiana.2x1.4.jpg 
which is in public domain in the United States. Source:
http://commons.wikimedia.org/wiki/File:Duck_crossing_Louisiana_2010-10-15.JPG
Author:Richard David Ramsey
 
------------------ 

This product includes image Cygnet_in_Hyde_Park.jpg, 
which is licensed  under the Creative Commons  license CC-BY-SA-2.0. The license 
can be downloaded from 
http://creativecommons.org/licenses/by-sa/2.0/legalcode. Source:
http://commons.wikimedia.org/wiki/File:Cygnet_in_Hyde_Park.jpg
Author: Keven Law / Wikimedia Commons / CC-BY-SA-2.0
 