The Bitflux Editor Software License

Copyright (c) 2002, 2003 Bitflux GmbH. All rights reserved.

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

1. Redistributions of source code must retain the
above copyright notice, this list of conditions and
the following disclaimer.

2. 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.

3. All advertising materials mentioning features or
use of this software must display the following
acknowledgment: "This product includes software
developed by Bitflux GmbH (http://www.bitflux.ch)"

4. The name "Bitflux Editor" and "Bitflux" must not be
used to endorse or promote products derived from this
software without prior written permission. For written
permission, please contact editor@bitflux.ch

5. Products derived from this software may not be
called "Bitflux" or "Bitflux Editor" nor may "Bitflux"
or "Bitflux Editor" appear in their names without
prior written permission of Bitflux.

6. Redistributions of any form whatsoever must retain
the following acknowledgment: "This product includes
software developed by Bitflux GmbH 
(http://www.bitflux.ch)"


THIS SOFTWARE IS PROVIDED BY Bitflux "AS IS" WITHOUT
ANY WARRANTY EXPRESS OR IMPLIED, INCLUDING THE
WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A
PARTICULAR PURPOSE. Bitflux WILL NOT BE LIABLE FOR ANY
DAMAGES SUFFERED BY YOU AS A RESULT OF USING THIS
SOFTWARE. IN NO EVENT WILL Bitflux BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR LOST
PROFITS EVEN IF Bitflux HAS BEEN ADVISED OF THE
POSSIBILITY OF THEIR OCCURRENCE. Bitflux WILL NOT BE
LIABLE FOR ANY THIRD PARTY CLAIMS AGAINST YOU.
