Purpose

Software has been created for scientific, analyzation, demonstration and
sportive reasons. It is a dual-use tool under federal german law in the
meaning of the Convention on Cybercrime, Budapest, 23.XI.2001. Usage
restricted to legal use.

License agreement

1. All copyrights to this program are exclusively owned by the author --
atom

2. You may only use this software for legal purposes.

3. THIS PROGRAM IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS
EXPRESSED OR IMPLIED. YOU USE THIS SOFTWARE AT YOUR OWN RISK. THE AUTHOR
WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER
KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.

4. If your countries law(s) do not allow restrictions as in (3.) you
need to get an additional, written and individual license by the
copyright holder to use this software. Unless you have such a
license, you are not allowed to use the software.

5. You may not rent, lease, sell, modify, decompile, disassemble, or reverse
engineer this program or any subset of this program. Any such unauthorized
use shall result in immediate and automatic termination of this license and
may result in criminal and/or civil prosecution.

6. Redistribution of the original package, in whole or in part, or a modified
version as needed for distribution packaging is permitted without restrictions.
