Software License Agreement (BSD License) 

Copyright (c) 2010, Yahoo! Inc. All rights reserved. 

Redistribution and use of this software in source and binary forms, with 
or without modification, are permitted provided that the following 
conditions are met: 

* Redistributions of source code must retain the above copyright notice, 
this list of conditions and the following disclaimer. * Redistributions 
in binary form must reproduce the above copyright notice, this list of 
conditions and the following disclaimer in the documentation and/or 
other materials provided with the distribution. * Neither the name of 
Yahoo! Inc. nor the names of its contributors may be used to endorse or 
promote products derived from this software without specific prior 
written permission of Yahoo! Inc. 

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Sources of 
Intellectual Property Included in the YUI Library 

YUI is issued by Yahoo! under the BSD license above. Below is a list of 
certain publicly available software that is the source of intellectual 
property in YUI, along with the licensing terms that pertain to 
thosesources of IP. This list is for informational purposes only and is 
not intended to represent an exhaustive list of third party 
contributions to the YUI. 

* Douglas Crockford's JSON parsing and stringifying methods: In the JSON 
Utility, Douglas Crockford's JSON parsing and stringifying methods are 
adapted from work published at JSON.org. The adapted work is in the 
public domain. 

* Robert Penner's animation-easing algorithms: In the Animation Utility, 
YUI makes use of Robert Penner's algorithms for easing. 

* Geoff Stearns's SWFObject: In the Charts Control and the Uploader 
versions through 2.7.0, YUI makes use of Geoff Stearns's SWFObject v1.5 
for Flash Player detection and embedding. More information on SWFObject 
can be found here (http://blog.deconcept.com/swfobject/). SWFObject is 
(c) 2007 Geoff Stearns and is released under the MIT License 
(http://www.opensource.org/licenses/mit-license.php). 

* Diego Perini's IEContentLoaded technique: The Event Utility employs a 
technique developed by Diego Perini and licensed under GPL. YUI's use of 
this technique is included under our BSD license with the author's 
permission. 


