Jetty Project          
Corporate Contributor License Agreement V1.1
based on http://www.apache.org/licenses/

Thank you for your interest in the Jetty project by Mort Bay Consulting
Pty. Ltd. Australia ("MortBay").  In order to clarify the intellectual
property license granted with Contributions from any person or entity,
MortBay must have a Contributor License Agreement ("CLA") that has been
signed by each Contributor, indicating agreement to the license terms
below. This license is for your protection as a Contributor as well as
the protection of MortBay and its users; it does not change your rights
to use your own Contributions for any other purpose.

This version of the Agreement allows an entity (the "Corporation") to
submit Contributions to Mort Bay, to authorize Contributions submitted by
its designated employees to Mort Bay, and to grant copyright and patent
licenses thereto.

If you have not already done so, please complete this agreement and 
commit it to the Jetty repository at
svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty at
LICENSES/ccla-CORPORATE-NAME.txt. If you do not have commit privilege to the 
repository, please email the file to eclipse@eclipse.com. If possible, 
digitally sign the committed file, otherwise send a signed Agreement 
to MortBay.

Each developer covered by this agreement should have their name appended 
the Schedule A and the copy commited to LICENSES/ccla-CORPORATE-NAME.txt 
using their authenticated codehaus ssh login.  If possible, digitally sign
the committed file, otherwise send a signed Agreement to MortBay.

Please read this document carefully before signing and keep a copy for
your records.

  Corporation name: Simula Labs, Inc.
  Mailing Address:  4676 Admiralty Way, Suite 520
                    Marina Del Rey, CA 90292

  Point of Contact:
  Full name: Gordon King
  E-Mail:    gordon.king@simulalabs.com
  Fax:       +1 800 822 0471

You accept and agree to the following terms and conditions for Your
present and future Contributions submitted to MortBay. In return,
MortBay shall not use Your Contributions in a way that is contrary
to the software license in effect at the time of the Contribution.
Except for the license granted herein to MortBay and recipients of
software distributed by MortBay, You reserve all right, title, and
interest in and to Your Contributions.

1. Definitions.

   "You" (or "Your") shall mean the copyright owner or legal entity
   authorized by the copyright owner that is making this Agreement with
   MortBay. For legal entities, the entity making a Contribution and all
   other entities that control, are controlled by, or are under common
   control with that entity are considered to be a single Contributor. For
   the purposes of this definition, "control" means (i) the power, direct
   or indirect, to cause the direction or management of such entity,
   whether by contract or otherwise, or (ii) ownership of fifty percent
   (50%) or more of the outstanding shares, or (iii) beneficial ownership
   of such entity.

   "Contribution" shall mean any original work of authorship,
   including any modifications or additions to an existing work, that
   is intentionally submitted by You to MortBay for inclusion in, or
   documentation of, any of the products owned or managed by MortBay (the
   "Work"). For the purposes of this definition, "submitted" means any
   form of electronic, verbal, or written communication sent to MortBay
   or its representatives, including but not limited to communication
   on electronic mailing lists, source code control systems, and issue
   tracking systems that are managed by, or on behalf of, MortBay for
   the purpose of discussing and improving the Work, but excluding
   communication that is conspicuously marked or otherwise designated
   in writing by You as "Not a Contribution."

2. Grant of Copyright License. Subject to the terms and conditions
   of this Agreement, You hereby grant to MortBay and to recipients of
   software distributed by MortBay a perpetual, worldwide, non-exclusive,
   no-charge, royalty-free, irrevocable copyright license to reproduce,
   prepare derivative works of, publicly display, publicly perform,
   sublicense, and distribute Your Contributions and such derivative
   works.

3. Grant of Patent License. Subject to the terms and conditions of
   this Agreement, You hereby grant to MortBay and to recipients of
   software distributed by MortBay a perpetual, worldwide, non-exclusive,
   no-charge, royalty-free, irrevocable (except as stated in this section)
   patent license to make, have made, use, offer to sell, sell, import,
   and otherwise transfer the Work, where such license applies only to
   those patent claims licensable by You that are necessarily infringed by
   Your Contribution(s) alone or by combination of Your Contribution(s)
   with the Work to which such Contribution(s) were submitted. If any
   entity institutes patent litigation against You or any other entity
   (including a cross-claim or counterclaim in a lawsuit) alleging
   that your Contribution, or the Work to which you have contributed,
   constitutes direct or contributory patent infringement, then any
   patent licenses granted to that entity under this Agreement for that
   Contribution or Work shall terminate as of the date such litigation
   is filed.

4. You represent that You are legally entitled to grant the above
   license. You represent further that each employee of the Corporation
   designated on Schedule A below (or in a subsequent written modification
   to that Schedule) is authorized to submit Contributions on behalf of
   the Corporation.

5. You represent that each of Your Contributions is Your original creation
   (see section 7 for submissions on behalf of others).  You represent
   that Your Contribution submissions include complete details of any
   third-party license or other restriction (including, but not limited
   to, related patents and trademarks) of which you are personally aware
   and which are associated with any part of Your Contributions.

6. You are not expected to provide support for Your Contributions, except
   to the extent You desire to provide support. You may provide support
   for free, for a fee, or not at all. Unless required by applicable
   law or agreed to in writing, You provide Your Contributions on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
   express or implied, including, without limitation, any warranties or
   conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
   FOR A PARTICULAR PURPOSE.

7. Should You wish to submit work that is not Your original creation,
   You may submit it to MortBay separately from any Contribution,
   identifying the complete details of its source and of any license or
   other restriction (including, but not limited to, related patents,
   trademarks, and license agreements) of which you are personally
   aware, and conspicuously marking the work as "Submitted on behalf of
   a third-party: [named here]".

8. It is your responsibility to notify MortBay when any change is required
   to the list of designated employees authorized to submit Contributions
   on behalf of the Corporation, or to the Corporation's Point of Contact
   with MortBay.

Date: 

Signature:

Name: Gordon King

Positions: Chief Operational Officer



Schedule A

    Name                                     Date added

    Simone Bordet                            12 September 2006

    ______________________________________   ________________

    ______________________________________   ________________

