Installation and Administration Guide

Licence

No part of this publication may be reproduced, transmitted, stored in a retrieval system, nor translated into any human or computer language, in any form or by any means, electronic, mechanical, magnetic, optical, chemical, manual or otherwise, without the prior written permission of the copyright owner, Squoring Technologies.

Squoring Technologies reserves the right to revise this publication and to make changes from time to time without obligation to notify authorised users of such changes. Consult Squoring Technologies to determine whether any such changes have been made.

The terms and conditions governing the licensing of Squoring Technologies software consist solely of those set forth in the written contracts between Squoring Technologies and its customers.

All third-party products are trademarks or registered trademarks of their respective companies.

Warranty

Squoring Technologies makes no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Squoring Technologies shall not be liable for errors contained herein nor for incidental or consequential damages in connection with the furnishing, performance or use of this material.

Abstract

This edition of the Installation and Administration Guide applies to Squore 17.1.11 and to all subsequent releases and modifications until otherwise indicated in new editions.


Table of Contents

Typographical Conventions
Acronyms and Abbreviations
1. Introduction
Foreword
About This Document
Contacting Squoring Technologies Product Support
Responsabilities
Getting the Latest Version of this Manual
2. The Squore Architecture
The Squore Ecosystem
The Squore Database and Data Folder
The Squore Application Server
The Squore Web Interface
Squore CLI
The Squore Licence Server
3. Installing Squore Server
Installation Prerequisites
Supported Operating Systems
Supported Database Management Systems
Browser Compatibility
For All Systems
Prerequisites for Oracle
Obtaining a Licence File
Packages for Windows
Packages for Linux
Packages for CentOS and Red Hat Enterprise Linux
Packages for Ubuntu
Common Deployment Scenarios
Creating Projects using the Web Interface Only
Creating Projects From a Client Machine
Using a Remote Database
Using Squore in Continuous Integration
Access from Mobile Devices
Installing Squore Server on Windows
Installing Squore Server on Linux
Third-Party Plugins and Applications
Upgrading from a Previous Version
On Windows
On Linux
Uninstalling Squore Server
On Windows
On Linux
4. Starting Squore
Starting Squore on Windows
Managing the Squore Windows Service
Windows Service Configuration
Starting Squore on Linux
5. Squore Administration
Getting to Know the Installation Folder
Understanding config.xml
Default Configuration
Adding a Configuration Folder
Giving Each User Their Own Temporary Folder
Backup Tools
Backing-Up the Squore Data
Restoring Squore Data
Resetting the Squore Installation
Creating a Linux Service
CentOS 6.6, OpenSUSE 13.2
CentOS 7.1
Advanced PhantomJS Settings
Managing Project Visibility
Find out your Squore Version
Changing Squore Server Port Number
Changing Squore Database Port Number
Changing the PhantomJS port
Changing the Java Heap Size
Changing the path to the Java Installation
Configuring Timeouts
Number of Concurrent Analyses
Number of Concurrent Delete Tasks
Theme Control
Updating the Squore Licence File
Connecting to a Remote Licence Server
Managing Squore User Accounts
Deactivating and Deleting Users
Exporting Users
Setting Perl Environment
Windows
Linux
Usage Statistics
Application Usage Statistics for Administrators
Statistics for Model Developers
Statistics for Project Managers
6. Integrating Squore on Your Network
Accessing Squore via HTTPS
Redirecting from HTTP to HTTPS
Proxying Squore Server with Apache
Key and Certificate Management
Import a private key and a certificate
Import a certificate
Using the LDAP Authentication Module
Configuring E-Mail Notifications
Notifying Users by E-Mail
Linking to Projects
Embedding Dashboard Elements
Integration with Atlassian Confluence
Squore Server Configuration
Confluence Admin Configuration
Adding Dashboard Elements
Integration with CollabNet TeamForge
Squore Configuration
TeamForge Configuration
Integration Characteristics
Squore Server Monitoring
7. Sizing Squore Server and Database
Project Size and Growth
Saving Space by Deleting Old Data Files
A. Reference pages
install — Squore install script
sqexport.pl — Squore export utility
— reset Squore data
B. Squore XML Schemas
input-data-2.xsd
properties-1.2.xsd
config-1.2.xsd
analysis.xsd
decision.xsd
description.xsd
exports.xsd
highlights.xsd
properties.xsd
tutorials.xsd
wizards.xsd
C. Licences
Software Licence Agreement
Redistributed Software
Licences
Index

List of Tables

7.1. Project Characteristics
7.2. Model Characteristics
7.3. Project Cost

Typographical Conventions

The following conventions are used in this manual.

Typeface or Symbol Meaning
Bold Book titles, important items, or items that can be selected including buttons and menu choices. For example: Click the Next button to continue
Italic A name of a user defined textual element. For example: Username : admin
Courier New Files and directories; file extensions, computer output. For example: Edit the config.xml file
Courier Bold Commands, screen messages requiring user action. For example: Username : admin
>Menu choices. For example: Select File > Open . This means select the File menu, then select the Open command from it.
<...>Generic terms. For example: <SQUORE_HOME> refers to the Squore installation directory.

Notes

Screenshots displayed in this manual may differ slightly from the ones in the actual product.

Acronyms and Abbreviations

The following acronyms and abbreviations are used in this manual.

CIContinuous Integration
CLICommand Line Interface
DPData Provider, a Squore module capable of handling input from various other systems and import information into Squore
RCRepository Connector, a Squore module capable of extracting source code from source code management systems.

Chapter 1. Introduction

Foreword

This document was released by Squoring Technologies.

It is part of the user documentation of the Squore software product edited and distributed by Squoring Technologies.

About This Document

This document is the Installation Guide for the Squore software product.

While we recommend that you read it in its entirety, we divided it up into chapters for an easier introduction to Squore:

If you want to install Squore Command Line Interface, refer to the Command Line Interface manual.

If you are already familiar with Squore, you can navigate this manual by looking for what has changed since the previous version. New functionality is tagged with (new in 17.1) throughout this manual. A summary of the new features described in this manual is available in the entry * What's New in Squore 17.1? of this manual's Index.

Contacting Squoring Technologies Product Support

If the information provided in this manual is erroneous or inaccurate, or if you encounter problems during your installation, contact Squoring Technologies Product Support: https://support.squoring.com/

You will need a valid Squore customer account to submit a support request. You can create an account on the support website if you do not have one already.

For any communication:

      • support@squoring.com

      • Squoring Technologies Product Support

        76, allées Jean Jaurès / 31000 Toulouse - FRANCE

Responsabilities

Approval of this version of the document and any further updates are the responsibility of Squoring Technologies.

Getting the Latest Version of this Manual

The version of this manual included in your Squore installation may have been updated. If you would like to check for updated user guides, consult the Squoring Technologies documentation site to consult or download the latest Squore manuals at https://support.squoring.com/documentation/17.1.11. Manuals are constantly updated and published as soon as they are available.

Chapter 2. The Squore Architecture

The Squore Ecosystem

Squore is based on a traditional 3-tier architecture consisting of:

  • A database and a data folder for storing project data

  • An application server running the main application, the licence server and a distribution of PhantomJS

  • A client front-end accessible through a Web Browser

  • A Command Line Interface (Squore CLI) to interact with the server from a client machine

The Squore Architecture

As shown in the schema above, Squore Server can provide analysis results to clients without having access to any source code, in scenarios where the analysis is carried out on a client machine with access to the SCM repository, as is the case in most Continuous Integration environments.

If you are planning to access source code hosted in a Subversion, Git, ClearCase, CVS or Synergy repository, a command line client for this repository must be available on the machine where the Squore analysis carried out. For complete information about all installation pre-requisites, consult the section called “Installation Prerequisites”.

Squore allows analysing source code in the following programming languages: ABAP, Ada, C, COBOL, C++, C#, Fortran 77, Fortran 90, Java, JavaScript, Lustre, Mind-C, Objective-C, PHP, PL/SQL, Python, T-SQL, Visual Basic .NET, XAML.

The Squore Database and Data Folder

The Squore database is a PostgreSQL or Oracle database used for storing:

  • A hierarchy of artefacts defined in a software projects (e.g. files, classes, functions)

  • Incremental sets of base measures (e.g. complexity measures provided by the Squore data providers)

  • Incremental sets of derived measures (i.e. all measures computed by the specified analysis model)

Along with the database, a set of data files is maintained on disk to compute information about project history and stability. A backup of a Squore installation must always include the database and the file system. For more information about backing up your installation, refer to the section called “Backing-Up the Squore Data”.

Note: No source code is stored in the database or the file system.

The Squore Application Server

The Squore application server is based on the WildFly framework. Its main functionalities are:

  • Aggregating data coming from the various Squore Data Providers

  • Applying an analysis model, producing high-level key performance indicators

  • Exploring and analysing the results using efficient graphical representations and statistical features

The Squore Web Interface

Squore end-users access the server services through a Web interface that enables them to:

  • Create projects from source code or other data types via the Squore Data Providers system.

  • Explore the results of analyses, view the levels of performance of the project artefacts via a user-specific, dynamic dashboard making use of filtering and sorting features

  • Review action plans, highlights and findings of the analysis

  • Export information for reporting purposes

  • Perform administration tasks like managing users and groups or troubleshooting the system

Refer to the section called “Browser Compatibility” to make sure that your the Squore Wib Interface is compatible with your browser

For more details on performance-related requirements when using Squore, please refer to Chapter 7, Sizing Squore Server and Database.

Squore CLI

In order to provide compatibility with Continuous Integration systems or run analyses on machines other than Squore Server, Squoring Technologies also delivers Squore CLI (Command Line Interface): a set of APIs used to remotely create and manage software projects.

Squore CLI is a Squore package that allows a Squore client to locally analyse project source code files visible to the client machine and send the results to a remote Squore server.

Squore CLI comes as a separate installable package that can be downloaded from Squoring Technologies's support site: https://support.squoring.com/download_area.php.

For more information about installing Squore CLI, refer to the Command Line Interface manual.

The Squore Licence Server

Squore Server requires a valid licence file in order to run. The licence file information is served by the Squore Licence Server, which reads a licence file squore-license.p7s located in <SQUORE_HOME>/server/standalone/configuration.

The licence file is delivered by Squoring Technologies and can be copied on the machine hosting Squore Licence Server at installation time or post-installation. In all cases, Squore Server must be restarted to take into account new licence information.

If you run multiple instances of Squore Server, each one can have its own Squore Licence Server and licence file, or you can point them to a common Squore Licence Server.

Note

Sharing an instance of Squore Licence Server between multiple Squore Server instances means that each Squore Server instance queries the Squore Licence Server to find out which licence features are available. The Squore Licence Server keeps track of the total number of active users, volume of code analysed and number of projects created on all instances of Squore Server. User-Management is specific to each Squore Server: if a user called "admin" exists on two instances of Squore Server linked to the same Squore Licence Server and both accounts are active, as far as the Squore Licence Server is concerned, two licences are used by two individual users.

The licence file restricts Squore usage according to the following parameters:

  • A licence file has a start date: it becomes active at a date decided by Squoring Technologies when the licence is issued.

  • A licence file has an end date: it becomes invalid at a date decided by Squoring Technologies when the licence is issued.

  • A licence file is tied to a particular server host-id, a fingerprint of some of the hardware components of a server machine. It can therefore not be used on another machine. If you need to move your licence file to another machine, contact Squoring Technologies to request a new licence. If you need to know your host-id, refer to the section called “Obtaining a Licence File”.

  • A licence file defines a maximum number of active users. A user is active if any activity has been recorded for their Squore Server account in the past 6 months. Activities include remote project creation, viewing of analysis results, and e-mail notification.

  • A Squore login is meant to be used by an individual user: each Squore user should log into Squore using their own personal account.

  • A licence file defines a maximum number of projects that can be created. After this number is reached, no new projects can be created.

  • A licence file defines a maximum number of lines of source code that can be analysed. After this number is reached, no new analysis can be carried out.

  • A licence file defines the ability to generate XML report of analyses, export data and generate reports from the web user interface.

Chapter 3. Installing Squore Server

Warning

Squore Server can only be installed in a folder whose path contains no space, accented and non-Latin letters or special characters. This is a PostgreSQL limitation that must be followed to ensure maximum compatibility, efficiency, and to avoid unexpected behaviour when analysing projects.

The application files (product binaries and standard configuration) and the data files (database cluster, analysis data, custom configuration, custom scripts...) must be located in separate folders.

By default, application files are deployed in a folder we will refer to in this manual as <SQUORE_HOME> and data files are deployed under a folder we will refer to as <SQUORE_DATA>.

Refer to the specific options of the setup package for your platform below to know how to specify the desired paths when installing Squore Server.

Installation Prerequisites

Supported Operating Systems

The following is a list of the officially supported and tested operating systems:

  • CentOS 6

  • CentOS 7

  • Fedora 19

  • Ubuntu Server 16.04

  • Windows 8

  • Windows 10

  • Windows Server 2012 R2

Note

On Linux, a 64-bit version of the OS is required

On Windows, a 64-bit version of the OS is required if you want Squore to run as a Windows service, but the installation is also supported on a 32-bit system (and is started and stopped using .bat files instead of a Windows Service)

The following is a list of the operating systems that are not regularly tested but are known to be working:

  • RedHat EL 6

  • RedHat EL 7

  • SuSe Linux 11.1

  • Windows 7

  • Ubuntu Server 10.04

  • Ubuntu Server 14.04

  • Windows Server 2008 R2

Supported Database Management Systems

Squore Server can use the following database management systems to store its data:

  • PostgreSQL 8.4 and up

  • Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

In both cases, it is possible to have database on the same machine as Squore Server or on a remote machine.

Note

When using a database backend on a remote machine, the database administrator is responsible for backing up the database. The backup scripts included in the Squore Server installation will only handle the backup of the data stored on the Squore Server file system in that case. You can find more information about backup strategies for Squore Server in the section called Backup Tools in the Installation and Administration Guide.

Browser Compatibility

Squore is compatible with many browsers. The following is the list of officially supported browsers:

  • Google Chrome stable branch

  • Mozilla Firefox latest esr version

  • Microsoft Internet Explorer 11.0.15063.0 and up

  • Microsoft Edge 40.15063.0.0 and up

For All Systems

For a successful installation of Squore, you will need:

  • The latest version of the Squore Server installer, which can be downloaded from https://support.squoring.com/download_area.php

  • A supported Operating System, as stated in the section called “Supported Operating Systems”

  • A user account with system administrator privileges

  • The Oracle Java Runtime Environment version 8 (other versions are not supported)

    Warning

  • At least 4 GB of space available on the disk for a full installation with demo projects

  • At least 8 GB of RAM on the server machine

  • A valid Squore Server licence file (optional, since the licence file can be added after installation)

Tip

Keep in mind that the requirements above are the strict minimum. In production, Squore Server generally runs on a dedicated machine with a multi-core processor and 8 to 12GB of RAM. Squore reserves 25% of the available RAM of the machine to the database and another 25% to the server. External processes (like Checkstyle or FindBugs) running on the same machine as Squore may add to the amount of RAM required for analysing source code. Linux is known to offer better performances than Windows when running Squore. For a production database, you should plan a minimum of 20 GB of disk space. For more details about resource usage in Squore, consult Chapter 7, Sizing Squore Server and Database.

Prerequisites for Oracle

When using Oracle as a database backend, a database administrator must create an Oracle user before you can install Squore.

The user requires the following privileges:

  • CREATE PROCEDURE

  • CREATE SEQUENCE

  • CREATE SESSION

  • CREATE TABLE

  • CREATE TYPE

  • CREATE VIEW

  • A valid quota for the tablespace used by the user (for example UNLIMITED)

Obtaining a Licence File

A Squore licence file is linked to the hardware that Squore Server is installed on. When you complete your installation of Squore Server, and access http://localhost:8180/SQuORE_Server in your browser, you are presented with a screen that allows you to request an activation key and download an evaluation licence.

The licence request dialog

Request an activation key or enter an existing one to download a temporary licence for your machine. Requesting an activation key ensures that Squoring gets all the information necessary to generate your final licence file when the evaluation period ends.

Note

The licence request dialog only displays when accessing http://localhost:8180/SQuORE_Server (it redirects to http://localhost:8180/SQuORE_Server/License/License.xhtml) from the machine where Squore Server is installed. If you cannot open a browser window on the server, you will have to request your evaluation licence by manually generating and e-mailing your host-id to Squoring:

  1. Open a terminal on the machine where you installed or plan to install Squore.

  2. Change to the <SQUORE_HOME> folder

  3. Run the command java -jar ./lib/hostid.jar.

  4. Send the output to support@squoring.com.

Packages for Windows

A JRE is required for Squore Server. The Windows installer contains the tcl and perl runtimes as well as a portable PostgreSQL installation and a distribution of PhantomJS.

Packages for Linux

On Linux platforms, the following must be installed before installing Squore:

If you are running on a headless Squore Server, java-1.6.0-openjdk may not be sufficient, as it lacks some fonts to render graphics. This is why using Oracle's JRE is recommended.

Packages for CentOS and Red Hat Enterprise Linux

On Red Hat Enterprise Linux and CentOS (6.5 and 7.1), the dependencies are satisfied by the following packages:

Mandatory packages:

  • java-1.8.0-openjdk

  • perl

  • perl-Algorithm-Diff

  • perl-Archive-Zip

  • perl-Date-Calc

  • perl-Digest-SHA

  • perl-JSON

  • perl-libwww-perl

  • perl-Time-HiRes

  • perl-XML-Parser

  • postgresql-server (unless you use a RDBMS running on another system)

  • rsync

  • tcl

Optional packages for working with Microsoft Excel:

  • perl-HTML-Parser

  • perl-CPAN (CPAN utility requirement)

  • perl-Spreadsheet-ParseExcel (available in the EPEL repository)

  • perl-Spreadsheet-XLSX (available in the EPEL repository)

Warning

The module Spreadsheet::BasicRead is not available as a package and must therefore be installed using cpan (make sure cpan is properly configured, by running cpan without arguments first):

sudo cpan -i Spreadsheet::BasicRead

Optional packages for working with OSLC systems:

  • perl-TimeDate

  • perl-WWW-Mechanize (available in the EPEL repository)

  • perl-XML-LibXML

Optional packages for working with GitHub systems:

  • perl-TimeDate

  • perl-Mail-Box (available in the EPEL repository)

  • perl-Mail-Mbox-MessageParser (available in the EPEL repository)

  • perl-Net-GitHub (available in the EPEL repository)

Optional packages for working with Semios/Prometil systems:

  • perl-File-Slurp

Optional packages for Advanced CSV Export Management:

  • perl-Text-CSV (available in the EPEL repository)

For more information about how to install the Extra Packages for Enterprise Linux (EPEL) repository, consult https://fedoraproject.org/wiki/EPEL.

Packages for Ubuntu

On Ubuntu 16.04.3 LTS, the dependencies are satisfied by the following packages:

Mandatory packages:

  • libalgorithm-diff-perl

  • libarchive-zip-perl

  • libdate-calc-perl

  • libdbd-pg-perl (unless you use a Oracle as your database backend)

  • libdbi-perl (unless you use a Oracle as your database backend)

  • libhttp-message-perl

  • libjson-perl

  • libwww-perl

  • libxml-parser-perl

  • openjdk-8-jre

  • perl

  • postgresql (unless you use a RDBMS running on another system)

  • rsync

  • tcl

Optional packages for working with Microsoft Excel:

  • make (CPAN utility requirement)

  • libhtml-parser-perl

  • libspreadsheet-parseexcel-perl

  • libspreadsheet-xlsx-perl

Warning

The module Spreadsheet::BasicRead is not available as a package and must therefore be installed using cpan (make sure cpan is properly configured, by running cpan without arguments first):

sudo cpan -i Spreadsheet::BasicRead

Optional packages for working with OSLC systems:

  • libtimedate-perl

  • libwww-mechanize-perl

  • libxml-libxml-perl

Optional packages for working with GitHub systems:

  • libtimedate-perl

  • libmail-box-perl

  • libmail-mbox-messageparser-perl

  • libnet-github-perl

Optional packages for working with Semios/Prometil systems:

  • libfile-slurp-perl

Optional packages for Advanced CSV Export Management:

  • libtext-csv-perl

Common Deployment Scenarios

Creating Projects using the Web Interface Only

Squore in a configuration where projects are created via the web interface

In this simple deployment, you only use the web UI to create projects. Squore Server is installed on a machine and you connect to it using a web browser. Analyses are carried out on the server, which must have access to the source files you are telling it to analyse.

Creating Projects From a Client Machine

Instructing the Server to Run an Analysis

Squore in a configuration where projects creations are requested by a client and delegated to a server

In this deployment, Squore Server is installed on one machine (the server), and Squore CLI is installed on another machine (the client). The client remote-controls the server and instructs it to analyse source files. The client provides the path to the sources as the server sees it. The sources need to be visible or accessible from the server only, and the code is fully analysed on the server. This is known as the Delegate method and is quite similar to what you achieve by creating projects from the web interface directly.

Sending Local Analysis Results to the Server

Squore in a configuration where projects creations are run locally on a client and results are sent to a server

In this type of deployment the setup is the same as in the previous method, but the client runs the full analysis and only send the results of the analysis to the server when it is done. This is useful when the server does not have access to the source code, or when parts of the data analysed is only available on the client machine.

Using a Remote Database

It is possible to install Squore Server and use a database running on another machine. In this mode, Squore Server does not manage the database startup and shutdown, and database backups should be performed manually.

If you plan on performing such an installation, ensure that you have access to the information:

  • The IP address or hostname of the server where the database is running

  • The port that the database is listening on

  • The name of the PostgreSQL database or the Oracle schema that will store your data

  • The credentials required to connect to the database backend

The installer requires that the specified user and database already exist so it can connect and initialise the database using the details provided. However, the Linux installation script also include an extra option to specify SYSDBA credentials to automatically create a new Oracle schema for Squore.

Warning

When performing backups, ensure that you backup the database and the project folder at the same time so that you can restore a coherent snapshot of your data. For more information about backups in Squore, consult the section called “Backup Tools”.

Using Squore in Continuous Integration

In a Continuous Integration scenario, you are free to choose either client/server deployment method described in the section called “Creating Projects From a Client Machine”. This will depend on which machine carried out the source code extraction or computes the data you feed to the Data Providers. You can learn more about how to configure Squore in a Continuous Integration environment by referring to the Command Line Interface Manual.

Access from Mobile Devices

Squore provides a mobile-friendly web interface that can be used by users to view their favourite charts in their dashboards. This requires no extra configuration on your part, as it uses the same http port as the main web interface. For more information about how users may use Squore Mobile, refer to the Getting Started Guide.

Installing Squore Server on Windows

This section describes the possible scenarios for installing Squore on windows.

If you use all the default settings, the installer will deploy the following components in the specified locations:

  • <SQUORE_HOME> is %SYSTEMDRIVE%\Squoring\squore-server and contains Squore Server and its dependencies, including dedicated distributions of:

    • Strawberry Perl 5.12.3.0 Portable

    • PostgreSQL 8.4.22 Portable

    • Tcl 8.5 for Windows 8.5.12

    • PhantomJS 2.1.1

    • WildFly 10.1.0

  • <SQUORE_DATA> is %SYSTEMDRIVE%\Squoring\squore-data and consists of the following subfolders:

    • The Squore database in <SQUORE_DATA>\cluster

    • The Squore database backup directory in <SQUORE_DATA>\backup

    • The Squore project data directory in <SQUORE_DATA>\projects

    • The Squore temporary data directory in <SQUORE_DATA>\temp

    • The Squore temporary source code directory in <SQUORE_DATA>\temp\sources

The installer provides options to:

  • use a different installation folder

  • use a specific path for temporary data and project data

  • use a specific path for the local PostgreSQL cluster and backup folder

  • use an existing local PostgreSQL instance

  • use a remote PostgreSQL or Oracle database

  • use your own perl distribution

Warning

The data and temporary folders must be excluded from the scope of virus scanners, malware protectors and search indexers to avoid any errors during an analysis.

Note

When an error occurs during the installation, the installer wizard remains open and display the log file of the installation, as shown on the screenshot below. When this happens, review the contents of the installer window, and if necessary, copy and send the contents to support@squoring.com.

The Installation Aborted screen

In order to start installing Squore, log on with an account that has administrator privileges and launch the Squore installer (squore-17.1.11-windows-x86_64.exe). Each of the wizard screens is documented below in the order that you will see them.

  1. The Squore installer Welcome screen

    The Squore installer Welcome screen

    On the Welcome screen, click the Next button to start the installation.

  2. The Squore Licence Agreement screen

    The Squore Licence Agreement screen

    Review the Licence Agreement and click I Agree to accept the terms of the agreement and continue with the installation.

  3. Squore Server Destination Folder screen

    Squore Server Destination Folder screen

    The Destination Folder screen allows you to select the Squore installation folder, where the application server will be installed. If you choose the path of an existing Squore installation, the installer will offer to upgrade this existing installation. Note that you should back up your data before you attempt to upgrade a Squore installation.

    Tip

    The steps to follow in order to upgrade an existing installation are described in the section called “Upgrading from a Previous Version”. The rest of the current chapter describes the procedure for a new installation.

    Check that the location suggested by the Squore installer is appropriate. If not, use the Browse... button to select another location.

    After specifying the Destination Folder, click on the Next button.

  4. The Squore Components screen

    The Squore Components screen

    The Components screen allows you to choose between the three available types of installations:

    • Full: all components will be installed

    • Minimal: only Squore Server will be installed. Use this mode if you already have your own database server, perl and PhantomJS installations

    • Custom: you define which components will be installed using the checkboxes on the Choose Components screen

    If you are unsure which option is the best for you, you can safely use the Full installation, so that all Squore components are installed locally.

    Select the appropriate installation mode. Then, click the Next button.

  5. The General Options screen

    The General Options screen

    The Squore General Options screen allows specifying where Squore stores its data and which licence file is used for the installation.

    • Data Folder: The data folder is the main folder where the data generated by Squore will be stored. Define a path on your system to hold the data. By default, the database cluster, the temporary folder, the project data and the default backup folder will live in this location. Note that you can refine each individual location later by going through the advanced option screens of the installation wizard.

    • Licence File: The location of the Squore licence file you wish to use for your installation. Note that you can leave this field empty at this time and provide the licence information only after the installation procedure has finished. This is explained in further details in the section called “Updating the Squore Licence File”.

    After specifying the data location and optionally pointing to a licence file, click the Next button.

  6. The Squore Additional Options screen

    The Squore Additional Options screen

    The Squore Additional Options screen allows specifying the rest of the necessary, basic options for your installation.

    • HTTP port number: Define the port used to access Squore from your browser.

    • Allow access from remote computers: Check this box to allow other computers on your network to connect to the Squore installation from a web browser. This setting is off by default to provide a safe installation that is only accessible from the server machine itself. The value can be changed after the installation process finishes by following the steps detailed on http://openwiki.squoring.com/openwiki/index.php/Connect_remotely_to_the_server.

    • Install as Windows service: Check this box if you want to be able to start and stop Squore Server using a Windows service. You can optionally customise the service name when clicking the Next button.

      Warning

      If you plan to have multiple Squore Server installations on the same machine, using Windows Services is not recommended, as it can cause issues when upgrading. For more details, consult https://wiki.squoring.com/display/HOW/Recommendations+for+Squore+Installations+on+Windows%3A+Services+and+Registry.

    • Java directory: the directory where the Oracle JRE is installed. The wizard should have found the appropriate Java installation on your server, but you can modify the value if the JRE you want to use is in a different location using the ... button. Note that Java 8 (other versions are not supported) is required (see the section called “Installation Prerequisites”).

    • Advanced configuration: Check this box to see more installation options for advanced users. Advanced options include finer control over data folder locations, memory settings, and advanced database configuration (like using a remote PostgreSQL installation or an Oracle database).

    After setting your preferences, click the Next button to view a summary of your installation settings (step 14) or proceed with the advanced configuration options (step 7).

  7. The Advanced Squore configuration screen

    The Advanced Squore configuration screen

    Note

    This screen is only displayed if you checked the Advanced configuration box in step 6.

    On the Advanced Squore configuration screen, you can modify the default work directory and memory and performance settings for the server.

    • Temporary data: The location of the temporary data generated by Squore.

    • Projects data: The location of the data generated by Squore when running analyses on the server.

    • Backup directory: The location used to store backups when the backup script is launched. For more details about backing up your Squore data, see the section called “Backing-Up the Squore Data”

    • Java Xmx size (in MB): The maximum amount of RAM available to Squore Server, set to 25% of the physical RAM available on your server by default. It is recommended to keep the memory allocated to Squore under 25% of the total physical RAM so that other Squore modules (especially the database) or external processes (the OS and some Data Providers like Checkstyle or FindBugs) still have enough resources available. This setting can be changed after installation by following the procedure described in the section called “Changing the Java Heap Size”.

  8. The Perl selection screen

    The Perl selection screen

    Note

    This screen is only displayed if you disabled the installation of Strawberry Perl 5.12.3.0 Portable box in step 3.

    On the Perl selection screen, you can modify the path to the Perl distribution that will be used by Squore Server. Use the ... button to specify the Perl installation folder and click the Next button to continue.

  9. The Squore database screen

    The Squore database screen

    On the Squore databse screen, you can specify if your Squore Server installation should use a local PostgreSQL cluster or a database on a remote DBMS.

    In order to use a local PostgreSQL cluster, modify the path to the PostgreSQL installation that will be used by the installer to create the Squore database. Use the ... button to specify the installation folder and click the Next button to continue.

    In order to use a remote database backend, specify its URL and provide the username and password of a dedicated user for the Squore installation.

    Tip

    The syntax for the database URL is:

    • jdbc:oracle:thin:@//[host][:port]/sid for Oracle

    • jdbc:postgresql:[//host[:port]/]dbname for PostgreSQL

    When you click the Next button to continue, a connection to the databse is attempted. If the database cannot be reached with the details supplied, you will be asked to review them before you can continue with the installation.

  10. The PostgreSQL server configuration screen

    The PostgreSQL server configuration screen

    Note

    This screen is only displayed if you checked the Advanced configuration box in step 6 and are using a local PostgreSQL database.

    On the PostgreSQL server configuration screen, you can provide details about the PostgreSQL server to be used with Squore Server

    • Server's host: the hostname of the machine running the PostgreSQL server

    • Server's port number: the running port of the PostgreSQL server

    • Administrator user name: the user name of the PostgreSQL server admin user

    Note that the Administrator password cannot be set. After adjusting your settings, click the Next button to continue.

  11. The Squore database configuration screen

    The Squore database configuration screen

    Note

    This screen is only displayed if you checked the Advanced configuration box in step 6 and are using a local PostgreSQL database.

    On the Squore database configuration screen, you can specify the desired name and user for the Squore database:

    • Database name: the name of the database that will be created for this installation of Squore

    • Squore user name: the name of the user that will be created as the owner of the database

    • Squore user password: the password for the specified database user

    After adjusting your settings, click the Next button to continue.

  12. The Networking screen

    The Networking screen

    Note

    This screen is only displayed if you checked the Advanced configuration box in step 6.

    On the Networking screen, you can specify the desired bind address and ports for Squore Server, as well as the port to use for the PhantomJS server:

    • Bind address: the bind-address configuration for the WildFly Server

      If you want to restrict access to Squore Server from the server itself, leave localhost. If you want your server to be accessible from anywhere on your network, set the bind address to 0.0.0.0.

    • Service binding offset: the offset added to the value of the default WildFly ports (as described on https://docs.jboss.org/author/display/WFLY10/Interfaces+and+ports#Interfacesandports-SocketBindingGroups) for this installation of Squore, resulting in the following ports being assigned for the following offset values:

      • 100 (default): http: 8180, https: 8543, management: 10090

      • 200: http: 8280, https: 8643, management: 10190

      • 300: http: 8380, https: 8743, management: 10290

      Tip

      The offset is mainly used to install several instances of Squore using different ports on the same machine.

      The remoting port is used to share a licence server between multiple installations, as described in the section called “Connecting to a Remote Licence Server”.

    • PhantomJS port number: Choose the port used for the PhantomJS server. Not that all communication between Squore Server and PhantomJS happens on the same machine. This port therefore does not need to be open on your firewall, except in very specific scenarios described in the section called “Advanced PhantomJS Settings”.

    After adjusting your settings, click the Next button to continue.

  13. The Windows Service screen

    The Windows Service screen

    Note

    This screen is only displayed if you checked the Install as Windows service box in step 6.

    On the Windows Service screen, you can specify the desired name and display name for service that controls Squore Server.

    Tip

    For a Windows Service, the name is the alias used in the command line (for example: net start squore), and the display name (Squore) is the name displayed in the graphical Windows Services Console.

    Set the name and display name for the service according to you needs and click the Next button to continue.

  14. The Confirmation screen

    The Confirmation screen

    The Confirmation screen shows a summary of the parameters you specified in previous steps of the wizard. Verify that the information matches your selections and click Install to start installing Squore. The installation process lasts a few minutes.

  15. The Installation progress screen

    The Installation progress screen

    During the installation, a progress bar is displayed while files are copied to your hard drive.

    Note

    The installation cannot be cancelled after it has started.

  16. The Squore installation completed screen

    The Squore installation completed screen

    When the installation completes, the installation completed screen is displayed. Click the Finish button to close the Squore Installation Wizard. If you checked the Start the Squore client box, the Squore Login page should open in your browser.

Squore is now ready for use and can be accessed via http://localhost:8180/SQuORE_Server . Refer to the next section if you need more information about how to start and stop Squore and, if applicable, change the default configuration.

Installing Squore Server on Linux

Before installing Squore on a Linux platform, verify that all prerequisites are met, as described in the section called “Installation Prerequisites”

If you use all the default settings, the installer will deploy the following components in the specified locations:

  • Squore Server (including its dedicated WildFly instance) in <SQUORE_HOME>
  • The Squore database backup directory in <SQUORE_DATA>/backup
  • The Squore temporary data directory in /tmp/squore
  • The Squore temporary source code directory in /tmp/squore/sources

Ensure that the user that installs and runs Squore has read and write access to these locations.

Note

The installation script will try to guess the amount of memory to allocate for the database on your system. If it cannot do it, you will get an error message about setting kernel.shmall. In this case, you need to set the value of kernel.shmall to a value that suits your need, based on which other applications are running on your system. The script will only suggest a minimum value.

Follow these instructions to install Squore Server:

  1. Copy the installation package (squore-17.1.11-linux-x86_64.tar.bz2) into the location where you want to install Squore Server (For example: /opt/squore/).

  2. Extract the contents of the archive into the selected installation directory.

    The folder now contains a new folder called squore-server, which we will refer to as <SQUORE_HOME> .

  3. Run the Squore installation script in a command shell. The full list of options accepted by the install script can be found in install(1), but the command below is usually enough for most installations:

    <SQUORE_HOME>/bin/install -b 0.0.0.0 -k /path/to/squore-license.p7s /path/to/project/data

    Note

    It is mandatory to accept the end-user licence agreement as the first step of the installation.

    Warning

    Do not run the installation script as root, as this causes the installation of PostgreSQL to fail.

    The file squore-license.p7s should have been previously provided by Squoring Technologies according to the applicable Squore licensing agreement in order to run Squore Server, but you can perform the installation even if you do not have a licence file yet.

    Tip

    If you want Squore Server to use a remote database backend, consult install(1) to find out more about the parameters available to set the remote database type, name and location.

Third-Party Plugins and Applications

End users can run third-party static code analysers or rule checkers that are not shipped with the Squore installer for licencing reasons. In this case, it is necessary to download the extra binaries from https://support.squoring.com/download_area.php and deploy them on the server.

The list of third party plugins to be downloaded separately is as follows:

  • Checkstyle 5.6

  • FindBugs 3.0

  • Cppcheck 1.61

  • PMD 5.0.5

  • Polyspace Export

  • Stylecop 4.7

Here is a full example of how to deploy Checkstyle into Squore

  1. Download the Checkstyle binary from https://support.squoring.com/download_area.php.

  2. Extract the contents of the zip file onto Squore Server.

  3. Copy the extracted checkstyle-5.6 folder into <SQUORE_HOME>/addons/tools/CheckStyle_auto.

  4. Instruct all client installations to synchronise with the server so that they get the newly deployed third-party binaries.

If you have deployed some third-party tools on Squore Server, they will automatically be downloaded to your client when you launch the client synchronisation script.

Tip

AntiC and Cppcheck on Linux also require special attention: Cppcheck must be installed and available in the path, and antiC must be compiled with the command:

cd <SQUORE_HOME>/addons/Antic_auto/bin/ && gcc antic.c -o antic

For more information, refer to the Command Line Interface Manual, which contains the full details about special installation procedures for Data Providers and Repository Connectors.

Upgrading from a Previous Version

The Squore installation package can be used to upgrade an existing Squore installation from Squore 2013-B-SP3.

When an installation is upgraded, the following happens:

  • The new version of Squore Server overwrites the previous one in the same installation directory.

  • The database is upgraded.

  • The data files are migrated.

  • The old basic configuration is kept: location of data, cluster and tmp folders as well as ports.

  • LDAP settings, licence server sharing, SSL configuration are discarded and will need to be configured again. The old <SQUORE_HOME>/config.xml and <SQUORE_HOME>/server/standalone/configuration/standalone.xml are backed up for your convenience next to the new ones (i.e. <SQUORE_HOME>/config.xml.bkp and <SQUORE_HOME>/server/standalone/configuration/standalone.xml.bkp).

On Windows

Warning

  • The java version required by the new version of Squore may be different from the one you were using in your previous installation. On Windows, an installer screen will prompt you for the path to the new Java installation to use after upgrading. On Linux, you can use the -J option to specify the new path to Java in your upgrade command line.

  • Before upgrading from a pre-16.0 version, ensure that you have as much free space on your disk as the size of your current database, as reported on Administration > Projects.

  • Folders inside the installation directory are deleted during an upgrade, including the default tmp, data, cluster and backup folders. Before you attempt to upgrade Squore, run a full backup of your data (and move it outside <SQUORE_HOME>) using the provided backup scripts described in the section called “Backing-Up the Squore Data”

  • On Linux, if you used the -x and/or -s parameters in your initial installation or if you manually edited the value of PostgreSQL's shared_buffer or java Xmx parameters after installing, you must pass -x and/or -s on the command line for the upgrade as well, as they are not read from the previous installation. For more details on install options, refer to install(1).

  • The file postgresql.conf in your database cluster is patched during the upgrade process. If you have modified it manually, create a backup copy before upgrading and verify that the migrated file still contains your modifications.

  • If you are a local PostgreSQL cluster as your database, ensure that the server and the database are shut down before continuing. In all other scenarios (an Oracle database or a remote PostgreSQL cluster not managed by Squore) ensure that Squore Server is stopped and that the database is accessible and accepting connections.

  • No progress information is displayed on screen during the database upgrade phase, which may take a while to complete.

Follow these steps to upgrade your Windows installation.

  1. Run the Windows installer.

  2. Click the Next button to get to the Licence Agreement screen.

  3. Click the Next button to get to the Destination Folder screen.

  4. Browse for the folder containing the old installation and click the Next button.

  5. On the Upgrade Choice screen, select Override to delete the existing installation and start from scratch (all your data is lost) or Upgrade to upgrade your existing installation to the new version, then click the Next button.

    The Upgrade Choice screen

    Clicking the the Next button button to continue with the upgrade.

  6. If you are running an unsupported Java version, you will see the following screen, where you can specify the path to the new Java version:

    The Squore Setup screen for the new Java directory

    Specify the path to the new Java installation and click the Next button to continue with the upgrade.

  7. Wait while the installer retrieves the settings to apply to the upgrade and displays them on the Confirmation screen, and click Install.

    The Confirmation screen

  8. Wait for the upgrade process to complete and close the wizard by clicking on Finish.

    The Installation Complete screen

On Linux

Warning

  • The java version required by the new version of Squore may be different from the one you were using in your previous installation. On Windows, an installer screen will prompt you for the path to the new Java installation to use after upgrading. On Linux, you can use the -J option to specify the new path to Java in your upgrade command line.

  • Before upgrading from a pre-16.0 version, ensure that you have as much free space on your disk as the size of your current database, as reported on Administration > Projects.

  • Folders inside the installation directory are deleted during an upgrade, including the default tmp, data, cluster and backup folders. Before you attempt to upgrade Squore, run a full backup of your data (and move it outside <SQUORE_HOME>) using the provided backup scripts described in the section called “Backing-Up the Squore Data”

  • On Linux, if you used the -x and/or -s parameters in your initial installation or if you manually edited the value of PostgreSQL's shared_buffer or java Xmx parameters after installing, you must pass -x and/or -s on the command line for the upgrade as well, as they are not read from the previous installation. For more details on install options, refer to install(1).

  • The file postgresql.conf in your database cluster is patched during the upgrade process. If you have modified it manually, create a backup copy before upgrading and verify that the migrated file still contains your modifications.

  • If you are a local PostgreSQL cluster as your database, ensure that the server and the database are shut down before continuing. In all other scenarios (an Oracle database or a remote PostgreSQL cluster not managed by Squore) ensure that Squore Server is stopped and that the database is accessible and accepting connections.

  • No progress information is displayed on screen during the database upgrade phase, which may take a while to complete.

Follow these steps to upgrade your Linux installation.

  1. Download the Linux installation package.

  2. Extract the archive by running the command:

    cd /tmp

    /usr/bin/tar xjf squore-17.1.11-linux-x86_64.tar.bz2

  3. Manually backup your current <SQUORE_HOME>/server/bin/standalone.conf
  4. Run the upgrade by executing:

    cd /tmp/squore-server/bin

    ./install -U /path/to/old/installation [options...]

  5. Redeploy your backed-up <SQUORE_HOME>/server/bin/standalone.conf if necessary to reapply your custom configurations.

Uninstalling Squore Server

On Windows

You can remove Squore Server from your machine by going through the uninstaller wizard, as described below:

  1. Stop Squore Server by running <SQUORE_HOME>/stop.bat.

  2. Launch the uninstaller wizard from the Add/Remove Programs dialog in the control panel or directly by double-clicking <SQUORE_HOME>/Squore_Uninst.exe. The wizard opens:

    The Squore Server uninstallation wizard

    Click the Next button to go to the next screen.

  3. The wizard will prompt you which of the data folders created by Squore Server to remove from your machine:

    The Folder Selection screen

    The data generated by Squore Server is left on the machine by default. If you do not need it, check all the boxes to delete all the folders.

    Click Uninstall to procede with the removal of the software and the selected data.

    Warning

    This operation cannot be interrupted or rolled-back.

  4. The wizard will notify you when the uninstallation finishes, as shown below:

    The Uninstallation Complete screen

    Click Finish to exit the wizard.

On Linux

There is no uninstallation script for Squore Server on linux. In order to completely remove Squore Server from your system:

  1. Ensure that Squore Server is completely stopped by running:

    <SQUORE_HOME>/bin/sqctl stop

  2. Delete the folders where Squore Server generated data:

    • The database cluster

    • The projects folder

    • The temp folder

    • The sources folder

    Tip

    You can identify these locations by looking at <SQUORE_HOME>/config.xml, as described in the section called “Understanding config.xml.

  3. Delete <SQUORE_HOME>, the folder containing config.xml and the Squore binaries.

Chapter 4. Starting Squore

Starting Squore on Windows

The Squoring program group created during the installation process contains all commands to start Squore on Windows.

  1. Start the Squore Database Server: Start > Squoring > Squore > Launch > start-db.bat

  2. Start the Squore Application Server: Start > Squoring > Squore > Launch > start-server.bat

  3. Launch Squore Client: Start > Squoring > Squore > Launch > StartClient

    Alternatively, you can type the following address in a web browser: http://localhost:8180/SQuORE_Server

  4. Log into Squore using the default admin user account:

    • Username: admin

    • Password : admin

Squore is now started. Please refer to the Squore Getting Started Guide for more details on how to use Squore.

Tip

The admin user is the default user with administrative rights. If you want to provide non-administrative access to a user after installation, they need to use the demo login instead (password: demo)

Tip

Instead of using the Windows Start menu for launch and shutdown operations, you can use the scripts available in <SQUORE_HOME>/bin:

  • start-db.bat Starts the Squore database

  • start-server.bat Starts Squore Server

  • start.bat Performs the two previous operations in succession

  • stop-server.bat terminates Squore Server

  • stop-db.bat stops the Squore database

  • stop.bat performs the two previous operations in succession

Managing the Squore Windows Service

During the installation of Squore Server on Windows, the installer provides the option to register a service to control Squore's startup and shutdown. This section covers the functionality of the prunmgr utility that allows you to further configure some aspects of the Squore Windows service. Note that when you install the Windows service, you should no longer use the start and stop scripts described in the section called “Starting Squore on Windows”

Windows Service Configuration

After installing Squore Server as a Windows service, you can use the service manager to change some of the settings.

Tip

The Windows service uses Apache Commons Daemon. Consult https://commons.apache.org/proper/commons-daemon/index.html for more information about the framework and the available installation options.

Start the utility by typing the following in a command window as administrator:

<SQUORE_HOME>\bin\prunmgr.exe //ES/squore

Tip

squore is the service name you chose during the installation.

The service manager opens in a new window and allows you to change the following settings:

  1. General Settings

    The General Tab

    From the General tab, you can adjust the Service display name, description and startup type (Automatic to start at boot, Manual to start interactively, Disabled to stop using the service). You can also see and change the current state of the service.

  2. Log On

    The Log On Tab

    From the Log On tab, you can control which Windows account runs the service. Note that any change takes affect after the service is restarted.

    The service is set to run under the local system account by default. Depending on your security requirements you may need to manually set the account to a real Windows user to run the services. For more information, consult the Microsoft Windows documentation at https://technet.microsoft.com/en-us/library/cc755249.aspx.

  3. Logging

    The Logging Tab

    On the Logging tab, you can define paths to log files where the startup and shutdown activities of the service will be saved. The default location for the log file is %SystemRoot%\System32\LogFiles\Apache and generally does not need to be changed, unless you are noticing issues starting and stopping the service.

  4. Java

    The Java Tab

    The Java tab is useful if you need to change the path to your JRE. You can use jvm.dll from the system's %PATH%, or you can point to a specific %JAVA_HOME%\bin\server\jvm.dll if needed.

    Note

    The settings on this tab have no effect over the Java settings for Squore Server. If you want to change the path to the Java installation or the amount of memory used by Squore, refer to the section called “Changing the path to the Java Installation” and the section called “Changing the Java Heap Size” instead.

  5. Startup and Shutdown

    There are no useful settings to be modified on these tabs.

Starting Squore on Linux

  1. Go to the Squore bin directory cd <SQUORE_HOME>/bin

  2. Start Squore Server: ./sqctl start

  3. Launch Squore by typing the following address in a Web browser: http://localhost:8180/SQuORE_Server

  4. Log into Squore using the default user account:

    • Username: admin

    • Password : admin

Squore is now started. Please refer to the Squore Getting Started Guide for more details on how to use Squore.

Tip

The admin user is the default user with administrative rights. If you want to provide non-administrative access to a user after installation, they need to use the demo login instead (password: demo)

Tip

You can find out know the status of the database and server processes, by running the command ./sqctl status

Chapter 5. Squore Administration

Getting to Know the Installation Folder

During the installation process, the Squore Installation Wizard creates several folders and files in the Squore installation directory <SQUORE_HOME> :

<SQUORE_HOME>/addons contains the Data Providers and Repository Connectors available in Squore

<SQUORE_HOME>/bin contains the main commands available to administer Squore. Most of these commands are also available from the Start menu in the Squoring/Squore program group on Windows.

<SQUORE_HOME>/client contains the libraries used by Squore CLI.

<SQUORE_HOME>/configuration contains folders and files that provide the default analysis and decision models, as well as the default dashboards for these models. For more details on how to understand and use these configuration files, refer to the Squore Configuration Guide.

<SQUORE_HOME>/database contains PostgreSQL tools to administer the database.

<SQUORE_HOME>/docs contains licences for third party libraries included in Squore.

<SQUORE_HOME>/lib contains libraries used by Squore Server for installation and maintenance tasks.

<SQUORE_HOME>/samples contains some sample source code in various programming languages that can be used as examples when getting to know Squore. This folder can safely be deleted if you do not need it.

<SQUORE_HOME>/server contains the Squore application server. See the section called “The Squore Application Server” for more information.

<SQUORE_HOME>/share contains some custom perl modules.

<SQUORE_HOME>/tools contains the deployed instances of perl, tclsh and PostgreSQL on Windows.

<SQUORE_HOME>/config.xml is used to specify the location of some configuration folders. See the section called “Understanding config.xml for more information.

Understanding config.xml

Note

This section deals with editing the configuration of the installed instance of Squore. For more information about how to edit analysis models and wizards, refer to the Squore Configuration Guide.

Default Configuration

The initial contents of <SQUORE_HOME>/config.xml are as follows:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<squore type="server">
	<paths>
		<path name="perl.dir" path="C:\Squoring\Squore\tools\perl\perl"/>
		<path name="tclsh.dir" path="C:\Squoring\Squore\tools\tclsh"/>
	</paths>
	<database>
		<postgresql directory="C:\Squoring\Squore\tools\pgsql"/>
		<cluster directory="C:\Squoring\Squore\cluster"/>
		<backup directory="C:\Squoring\Squore\backup"/>
		<security>
			<user-name>postgres</user-name>
		</security>
	</database>
	<phantomjs>
		<socket-binding port="3003"/>
	</phantomjs>
	<configuration>
		<path directory="C:\Squoring\Squore\configuration"/>
	</configuration>
	<addons>
		<path directory="C:\Squoring\Squore\addons"/>
	</addons>
	<tmp directory="C:\Users\username\AppData\Local\Temp\Squore"/>
	<projects directory="C:\Squoring\Squore\projects"/>
	<sources directory="C:\Users\username\AppData\Local\Temp\Squore\sources"/>
</squore>

Tip

You can find the XML schema for <SQUORE_HOME>/config.xml in config-1.2.xsd.

Here is a description of each element:

  • paths/path name="perl.dir" (mandatory) is the path to the perl installation used by Squore. It is detected automatically on Linux and set to <SQUORE_HOME>/tools/perl/perl on Windows.

  • paths/path name="tclsh.dir" (mandatory) is the path to the tcl installation used by Squore. It is detected automatically on Linux and set to <SQUORE_HOME>/tools/tclsh on Windows.

  • database/postgresql directory="..." (mandatory) is the path to the PostgreSQL installation used by Squore It is detected automatically on Linux (or passed as a parameter to ./install) and set to <SQUORE_HOME>/tools/pgsql on Windows.

  • database/cluster directory="..." (mandatory) is the path to the PostgreSQL cluster defined at installation to hold the Squore Database.

  • database/backup directory="..." (mandatory) is the path to the folder used by Squore by default to store backups. It can be overridden by passing a path to the backup script.

  • phantomjs (optional) allows you to specify the port used by Squore Server to communicate with the local instance of PhantomJS.

  • configurations/path directory="..." (mandatory): Paths to one or more configuration folders. The first path listed in the list takes precedence over the next one.

  • addons/path directory="..." (mandatory): Paths to one or more addons folders. The first path listed in the list takes precedence over the next one.

  • tmp directory="..." (mandatory) is the path to the temporary folder used to hold temporary analysis and user session data created while the server is running (this folder is emptied at startup).

  • projects directory="..." (mandatory) is the path to the project folder that holds analysis results. Files in this folder are included in a backup, along with the contents of the database.

  • sources directory="..." (optional, default: inside tmp folder) is the path to the folder used to store source files checked out from source code management systems. It is located by default inside the temporary folder, as the source code is not normally necessary after it has been analysed. If you need the source code to be saved permanently, move the sources folder outside of the temporary folder. This is normally only needed when working with zip files to send data files to the server.

Adding a Configuration Folder

In order to add a custom addons or configuration folder, simply add a path element in the configuration file:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<squore type="server">
	<paths>
		(...)
	</paths>
	<database>
		(...)
	</database>
	<configuration>
		<path directory="C:\MyModels\configuration"/>
		<path directory="C:\Squoring\Squore\configuration"/>
	</configuration>
	<addons>
		<path directory="C:\MyModels\addons"/>
		<path directory="C:\Squoring\Squore\addons"/>
	</addons>
	<tmp directory="C:\Users\username\AppData\Local\Temp\Squore"/>
	<projects directory="C:\Squoring\Squore\projects"/>
	<sources directory="C:\Users\username\AppData\Local\Temp\Squore\sources"/>
</squore>

Tip

By adding your own custom configuration and addons folder before the standard configuration, you ensure that the modifications you made override the definitions from the standard configuration.

Giving Each User Their Own Temporary Folder

When several users run analyses using the command line on the server machine, it is good practice for each user to work with their own tmp, sources and data folders. This can be done by adding a client node in the server configuration file.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<squore type="server">
	<paths>
        (...)
	</paths>
	<database>
        (...)
	</database>
	<configuration>
        (...)
	</configuration>
	<addons>
        (...)
	</addons>
	<client>
		<!-- java system properties are supported under the client node only -->
		<tmp directory="${java.io.tmpdir}/squore-${user.name}"/>
		<projects directory="${user.home}/.squore/projects"/>
		<sources directory="${java.io.tmpdir}/sources"/>
	</client>
	<tmp directory="..."/>
	<projects directory="..."/>
	<sources directory="..."/>
</squore>

As stated in the example, java system properties are supported in this section of <SQUORE_HOME>/config.xml.

Tip

All three elements are optional, and their default value if missing are the ones described in the XML snippet above.

Backup Tools

Your installation of Squore includes some scripts designed to help save and restore snapshots of your analysis data. These scripts will allow you to:

The scripts are located in the <SQUORE_HOME>/bin folder of the Squore installation directory.

The Windows and Linux backup scripts accept a parameter that is used as the path to store the backup file. This makes it possible to use a scheduled task on Windows or a cron job on Linux to automate your backups. If you do not specify this parameter, the default backup folder will be used and each new backup will replace the previous one.

Warning

  • Before launching a backup or restore operation, stop Squore Server completely and ensure that the Squore Database is started.

  • Backups can be launched while the server is running, but it is recommended to regularly perform a backup while the server is stopped. This guarantees that the database and the data files are in sync, which may not be the case if your server is started and analyses are running.

  • If your database is not running on the same machine as Squore Server, the backup will only include the Squore Server data files. When running in this configuration, you need to perform database backup and restore operations manually.

Backing-Up the Squore Data

The contents of the Squore Database and file system can be saved using the backup script from the <SQUORE_HOME>/bin folder.

There are several ways to create a backup:

  • By running <SQUORE_HOME>/bin\backup.bat [%BACKUP_FOLDER%] on Windows

  • By launching Start > Squoring > Squore > Admin > Backup Data on Windows

  • By running <SQUORE_HOME>/bin/backup [$BACKUP_FOLDER] on Linux

Executing this script creates a folder with a compressed database dump and a backup of the projects folder in the location configured in <SQUORE_HOME>/config.xml, or the backup folder specified on the command line. This backup can later be used by a script that restores database and file system snapshots, which we will cover in the next section.

Restoring Squore Data

A previously backed-up Squore snapshot can be restored using the restore script from the <SQUORE_HOME>/bin folder.

There are several ways to restore data:

  • By running <SQUORE_HOME>/bin\restore.bat [%BACKUP_FOLDER%] on Windows

  • By launching Start > Squoring > Squore > Admin > Restore Saved Data on Windows

  • By running <SQUORE_HOME>/bin/restore [$BACKUP_FOLDER] on Linux

The script uses the data dump in the backup folder specified in your <SQUORE_HOME>/config.xml or the backup folder specified on the command line to restore the database and file data for this snapshot.

Resetting the Squore Installation

You can reset the Squore installation to its initial state using the sqadm utility from the command line. The tool is located in the <SQUORE_HOME>/bin folder of the Squore installation directory.

Warning

This operation cannot be undone. All the projects, roles, users, groups and profiles you created will be lost.

  1. Stop Squore Server

  2. Ensure that the Squore Database is started

  3. From a terminal, launch the following command:

    sqadm reset
  4. Confirm, and allow the command to finish

  5. Start Squore Server

Creating a Linux Service

This section describes how you can create a service to start and stop Squore using the launcher script from the installation's bin folder.

Note

The examples below assume that:

  • Your Squore installation is located in /opt/Squoring/squore-server

  • You have created a user called squore to run the service, which is optional

After creating a service, you can configure it to launch Squore at boot, or you can start and stop Squore on your system by running the following commands:

sudo service squore start
sudo service squore stop

CentOS 6.6, OpenSUSE 13.2

  1. Create a Squore service description file in /etc/init.d/squore

    #!/bin/sh
    #
    # Squore Server Service
    #
    # chkconfig: 2345 20 80  
    # description: Squore launcher
    
    ### BEGIN INIT INFO
    # Provides: squore-server
    # Required-Start: 
    # Required-Stop: 
    # Should-Start: 
    # Should-Stop: 
    # Default-Start: 
    # Default-Stop: 
    # Short-Description: 
    # Description:      
    ### END INIT INFO
    
    # Source function library
    . /etc/rc.d/init.d/functions
    
    exec="/opt/Squoring/squore-server/bin/sqctl"
    user="squore"
    prog="squore"
    config=""
    
    [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
    
    lockfile=/var/lock/subsys/$prog
    
    start() {
        #[ -x $exec ] || exit 5
        #[ -f $config ] || exit 6
        echo -n $"Starting $prog: "
        # if not running, start it up here, usually something like "daemon $exec"
        su $user -c "$exec start"
        #retval=$?
        #echo
        #[ $retval -eq 0 ] && touch $lockfile
        #return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        # stop it here, often "killproc $prog"
        su $user -c "$exec stop"
        #retval=$?
        #echo
        #[ $retval -eq 0 ] && rm -f $lockfile
        #return $retval
    }
    
    restart() {
        su $user -c "$exec restart"
    }
    
    reload() {
        restart
    }
    
    force_reload() {
        restart
    }
    
    rh_status() {
        su $user -c "$exec status"
    }
    
    case "$1" in
        start)
            $1
            ;;
        stop)
            $1
            ;;
        restart)
            $1
            ;;
        reload)
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            restart
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart}"
            exit 2
    esac
    exit $?
  2. Make the service description file executable

    chmod a+x /etc/init.d/squore
  3. Add it to chkconfig

    chkconfig --add squore
  4. instruct chkconfig to start the service at boot

    chkconfig squore on

CentOS 7.1

  1. Create a Squore service description file in /etc/systemd/system/squore.service

    [Unit]
    Description=Squore Server Service
    After=network.target
    
    [Service]
    Type=forking
    User=squore
    ExecStart=/opt/Squoring/squore-server/bin/sqctl start
    ExecStop=/opt/Squoring/squore-server/bin/sqctl stop
    
    [Install]
    WantedBy=multi-user.target
  2. Enable the service

    systemctl enable squore.service

Advanced PhantomJS Settings

In order to handle cases where the URL configured in Administration > System is not accessible to PhantomJS, you can configure a different URL for the communication between Squore and PhantomJS. This is useful when you need to bypass a proxy on your network, or when the Squore Server URL just cannot be resolved from the machine it runs on itself. In those cases, you can force PhantomJS to make requests to Squore Server by adding the squore-url attribute to your <SQUORE_HOME>/config.xml, as shown below:

<phantomjs>
	<socket-binding port="3003" squore-url="http://127.0.0.1:8180/SQuORE_Server/" />
</phantomjs>

When using Microsoft Edge, extra configuration is needed in order to use the Save as ... menu items in the chart viewer. In this specific case, PhantomJS must be reachable on your network so that the end user's browser calls it directly to generate a downloadable chart on the fly. The PhantomJS URL needs to be specified in the distant-url attribute:

<phantomjs>
	<socket-binding port="3003" distant-url="http://servername:3003" />
</phantomjs>

Managing Project Visibility

Squore users can only have access to a project when they are added to the project's team by the project manager or an administrator. Until this happens, users are unaware of the projects that others have created. In situations where you wish users to be able to see the list of projects that exist on the server, you can configure Squore Server to provide users with a list of projects they do not currently have access to, so that they contact the project owner and ask to be added to the project's team.

As an administrator, your role is to define which projects should appear on this public list. The list includes all project whose group matches the value set up in the administration settings. The procedure below shows how you can automatically list all projects that were created within the public group to the public list.

  1. Log into Squore as an administrator and click on Administration > System

  2. Locate the option called Allow Visibility and check the box to make projects visible

  3. Locate the option called Pattern to filter list by project group and set it to public

  4. Click on Apply at the bottom of the page to save your changes

The Project Owners List options required to list projects from the public group

Tip

The Pattern to filter list by project group option accepts a regular expression. As a result, you can display projects from any group by setting its value to .*, or projects from the public and demo groups by setting it to public|demo. By leaving the field empty, all the existing projects on the server will be visible.

After saving your changes, the Projects page will display a new button labelled Ask access to Project Owners, as shown below:

The Projects page with the Ask access to Project Owners button

When clicking the button, you will see the list of projects in the specified groups, together with their owner. Users can click on a user's e-mail address to ask the project owner if they can add them to the project team.

The Projects page with the Ask access to Project Owners button

Find out your Squore Version

Squore versions use the following naming convention: major.minor.patch - buildId - scmInfo. Major and minor releases usually introduce new functionality, while patch releases normally only contain bugfixes.

There are two ways to find out which version of Squore you are running:

  • From the web interface via ? > About

  • From the command line by running

    sqadm version

Changing Squore Server Port Number

You can change Squore Server port number after installation. The procedure involves modifying some configuration files in a text editor and restarting the server.

  1. Shutdown Squore Server

  2. Edit <SQUORE_HOME>/server/standalone/configuration/standalone.xml and search for the element socket-binding-group. The attribute port-offset="${jboss.socket.binding.port-offset:100}" defines the offset chosen at installation. Modify the value as needed.

  3. Start Squore Server.

Changing Squore Database Port Number

You can change the port used by the Squore Database by editing PostgreSQL's configuration file and modifying Squore Server's <SQUORE_HOME>/server/standalone/configuration/standalone.xml to point to the new port. The procedure involves modifying some configuration files in a text editor and restarting the server.

  1. Shutdown Squore Server and stop the database

  2. Open <CLUSTER_DIR>/postgresql.conf in a text editor and search for the line where the port option is defined:

    port = 4561     # (change requires restart)
  3. Change the port value to the desired one for your system

  4. Open <SQUORE_HOME>/server/standalone/configuration/standalone.xml in a text editor and search for the database connection URL:

    <connection-url>jdbc:postgresql://localhost:4561/squore</connection-url>
  5. Change the port value to match the change you made in <CLUSTER_DIR>/postgresql.conf.

  6. Start Squore Server.

Tip

If you do not know where <CLUSTER_DIR> is located on your server, you can find its location by reading the value of the cluster setting in <SQUORE_HOME>/config.xml.

Changing the PhantomJS port

The port used by PhantomJS can be changed by editing <SQUORE_HOME>/config.xml to change the port value in the following line:

<phantomjs>
	<socket-binding port="3003"/>
</phantomjs>

Note

After changing the port, restart Squore Server for the changes to take effect.

Changing the Java Heap Size

The maximum amount of memory used by Squore Server's Java process at runtime is defined at installation time. If you have not specified any value, the maximum amount of memory used will be 25% of the RAM available on the machine. It is recommended to keep the memory allocated to Squore under 25% of the total physical RAM so that other Squore modules (especially the database) or external processes (the OS and some Data Providers like Checkstyle or FindBugs) still have enough resources available.

This setting can be changed by following this procedure:

  1. Stop Squore Server

  2. Edit <SQUORE_HOME>/server/bin/standalone.conf on Linux or <SQUORE_HOME>/server/bin/standalone.conf.bat on Windows

  3. Change the value of the Xmx parameter, as shown below:

    JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx1512m 

    or

    set "JAVA_OPTS=%JAVA_OPTS% -Xms64M -Xmx1512M -XX:MaxPermSize=256M"

    Note

    In the example above, 1512M is the default value for a machine with 6Gb RAM, i.e. 25% of 6048Mb.

  4. Start Squore Server

Changing the path to the Java Installation

The path to the Java installation on your server can be updated by following the procedure below:

  1. Stop Squore Server

  2. Edit <SQUORE_HOME>/server/bin/standalone.conf on Linux or <SQUORE_HOME>/server/bin/standalone.conf.bat on Windows

  3. Change the value of the JAVA_HOME, as shown below:

    JAVA_HOME="/opt/java/jre8"

    or

    set "JAVA_HOME=C:\jre8"
  4. Start Squore Server

Configuring Timeouts

You can change the main timeout value for tasks on a Squore Server installation. . The default value is six hours and is generally fine: if an analysis runs for six hours, it is assumed that something went wrong or will go wrong for reasons regarding memory consumption.

If you decide that the timeout does not suit your workflow, you can change the default timeout value from the Administration pages:

  1. Log into Squore Server as a user with administrative privileges.

  2. Click Administration > System to view the advanced configuration options.

  3. Set the value of the timeout in seconds in the Timeout of queue tasks, in seconds field.

Note

The timeout period defines how long a project can stay in the project queue on the server. This means the timeout period for projects created using the web interface or from the command line using the DELEGATE_CREATION command is as defined by the parameter above. For projects created from the command line using the PROCESS_CREATION command, the part of the analysis carried out on the client machine is not taken into account in the timeout time. These projects only enter the server queue when the analysis is finished on the client and the results are sent to the server for processing, and there is no built-in timeout for the client part of the analysis.

Number of Concurrent Analyses

You can change the size of the project queue on a Squore Server installation. The default value is 8, which means that 8 projects can be analysed in parallel.

If your hardware can handle a higher number of concurrent analyses, you can increase the queue size by editing the file <SQUORE_HOME>/Server/server/default/deploy/squore-server.ear/squore-server.jar/META-INF/ejb-jar.xml, and set the maxSession key to the desired size. This involves repackaging and redeploying the application, as explained below:

  1. Extract the settings file:

    cd <SQUORE_HOME>/deploy
    jar xf squore-server.ear
    jar xf squore-ejb.jar
  2. Make the necessary modifications:

    • Open <SQUORE_HOME>/deploy/squore-ejb.jar/META-INF/ejb-jar.xml in a text editor

    • Modify the parameter maxSession (default: 8) to set it to the number of projects that can be created in parallel

  3. Repackage the application:

    cd <SQUORE_HOME>/deploy
    jar cf squore-ejb.jar
    jar cf squore-server.ear
  4. Deploy the patched application following the instructions on https://openwiki.squoring.com/index.php/Deploying_A_Patch#Since_Squore_16.1.2.

Tip

Instead of using the command line, you can use 7zip on Windows to open the .ear and .jar files and directly patch their contents.

Number of Concurrent Delete Tasks

You can change the number of delete tasks running concurrently by changing the setting on Administration > System. This is useful on systems where you run into errors when deleting multiple versions and projects at the same time causes errors.

Leaving the field empty uses the slots available as defined in the section called “Number of Concurrent Analyses” to launch several deletions in parallel. If you encounter errors when deleting projects, notably ORA-00060 errors when using an Oracle database, setting the parameter to 1 helps reducing the occurrences of these errors.

Theme Control

Squore's web interface allows users to choose between several UI themes: chocolate (brown), classico (green) , neroverdi (light green), rossoneri (red). When a user selects a theme, their preference is saved and this theme is applied each time they log into Squore. As an administrator, you can manage theme functionality in two ways:

  • Define what the default theme for all users is

  • Prevent users from using a theme other than the default one

You can access these options from Administration > System in the Theme Control section.

Tip

You can also configure these settings by specifying values for the options ui.theme.default and ui.theme.changeable in <SQUORE_HOME>/server/standalone/configuration/squore-server.properties. The default values are shown below:

ui.theme.default = classico
ui.theme.changeable = true

Updating the Squore Licence File

A Squore licence key file named squore-license.p7s should have been provided to you by Squoring Technologies under the applicable Squore licencing agreement.

Follow these steps to deploy the Squore licence file:

  1. Log into Squore Server as an administrator

  2. Click on ? > License

  3. On the License Management page, click Deploy a license file

  4. Upload your new licence file and click Deploy. If the new licence file is valid, you are automatically redirected to the home page.

Tip

You can access the License Management without logging in if you are accessing http://localhost:8180/SQuORE_Server from the machine running Squore Server itself.

Connecting to a Remote Licence Server

In this section, you will learn to configure Squore to rely on a remote licence server instead of using the licence server embedded into your local installation. This is useful when you run a production server and a development server, and you want the licence to be shared between both installations.

Note

Before you follow these steps, ensure that the two Squore servers are installed and start up correctly as described in Chapter 3, Installing Squore Server and Chapter 4, Starting Squore and that the remote licence server listens to requests from remote machines:

<interface name="public">
	<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>

Tip

If both servers are running on the same machine, then each server must be identified as a specific instance for this configuration to work. You can achieve this by editing the server element at the root of <SQUORE_HOME>/server/standalone/configuration/standalone.xml and adding a name attribute as shown below:

<?xml version='1.0' encoding='UTF-8'?>
<server name="production" xmlns="urn:jboss:domain:4.2">
...
</server>

Assign a different name for each server installation before you start following the procedure below.

Warning

This procedure involves modifying <SQUORE_HOME>/server/standalone/configuration/standalone.xml and removing one of the default applications deployed automatically by the installation or upgrade script. These changes therefore have to be applied again after upgrading Squore.

In order to point a local Squore server to a licence served by a remote Squore installation, carry out the following steps:

  1. On the remote license server (optional):

    By default, the password of the ejb user is changeme. If you want to change the password, then:

    1. Generate a new password with this command:

      echo -n "ejb:ApplicationRealm:new_password" | md5sum

      where new_password is the password to assign to the user.

    2. Edit <SQUORE_HOME>/server/standalone/configuration/application-users.properties to specify the new password as shown below:

      #
      # Properties declaration of users for the realm 'ApplicationRealm' which is the default realm
      # for application services on a new AS 7.1 installation.
      # (...)
      ejb=bc0deae7c29cd133a2de015f36ab6132
    3. Restart Squore Server.

  2. On the local server:

    1. Stop Squore Server.

    2. Edit <SQUORE_HOME>/server/standalone/configuration/squore-server.properties. Add the property:

      license.remote = true

    3. Edit <SQUORE_HOME>/server/standalone/configuration/standalone.xml

      .
    4. Find the remote-ejb outbound-socket-binding element and edit its remote-destination definition accordingly so that the host and port match the hostname and http port of the remote server (8080 plus the offset you defined during installation, so 8180 by default). Here is an example of the complete configuration block:

      <outbound-socket-binding name="remote-ejb">
      	<remote-destination host="remoteLicenceServer" port="8180"/>
      </outbound-socket-binding>

    5. Optionally, if you have changed the default password for the ejb user on the remote server, look for the ejb-security-realm security-realm element , and modify the secret value with the output of the command

      echo -n "new_password" | openssl base64

      . Here is an example of the complete block:

      <security-realm name="ejb-security-realm">
      	<server-identities>
      		<secret value="bmV3X3Bhc3N3b3Jk"/>
      	</server-identities>
      </security-realm>

    6. Restart Squore Server

    7. Run the following command, with port matching the controller port of the installation (9990 plus the offset defined at install time, so 10090 by default):

      <SQUORE_HOME>/server/bin/jboss-cli.sh -c \
       --controller=localhost:10090 \
       --command="undeploy squore-license.ear"

The local Squore Server is now using a remote licence server.

Managing Squore User Accounts

Deactivating and Deleting Users

User deletion in Squore permanently blocks an account and a login from being reused, and is therefore not recommended unless you know that the associated user will never need to access Squore again. Instead of deleting a user account, you can make it inactive. This section covers the difference between both operations.

When you delete an account:

  • The user cannot access Squore anymore to view or create projects

  • The comments made by the user are kept and are still displayed in the web UI.

  • You will not be able to reuse the account's login for another user.

  • A licence token is freed up for another user immediately.

When you deactivate an account:

  • The user cannot access Squore anymore to view or create projects

  • The comments made by the user are kept and are still displayed in the web UI.

  • You can set the account to active again at any time to allow the user to log in again.

  • A licence token is freed up when the account becomes inactive (usually 6 months after the last recorded activity of the user).

Deactivating an account is usually a safer operation, especially if you are integrating Squore with an LDAP directory.

Exporting Users

Squore lets you export your list of user accounts to a CSV file.

This feature makes use of a perl script that can be run from the command line, as long as you make sure that you have a valid Perl environment for Squore. Refer to the section called “Setting Perl Environment” for more information about verifying that your environment is correct before running the script.

In order to export user accounts, follow these steps:

  1. Move to <SQUORE_HOME>/addons/scripts/export-scripts, which the location of the sqexport.pl script.

  2. Run the perl script with the appropriate options to export users, groups and their members respectively:

    perl sqexport.pl -f users.csv users

    perl sqexport.pl -f groups.csv groups

    perl sqexport.pl -f members.csv groups -m

The format of the csv files is described below.

users.csv

login;fullname;email;password;department;
demo;demo;demo@domain.com;[encrypted-password];demo;

members.csv

group;login
Demo Mode;tobias

Setting Perl Environment

This section is useful if you want to manually execute Perl scripts that are usually internally used by Squore.

Windows

If you have installed the Portable Strawberry Perl with Squore, locate and execute this file (skip this step otherwise):

<SQUORE_HOME>\Tools\perl\portableshell.bat

Then type all commands in the new command prompt window.

SET SQUORE_HOME=<SQUORE_HOME>
SET PERL5LIB=%SQUORE_HOME%\share\perl

Linux

SQUORE_HOME=<SQUORE_HOME>
export SQUORE_HOME
PERL5LIB=$SQUORE_HOME/share/perl
export PERL5LIB

Usage Statistics

As a Squore administrator, you may need to keep track of the usage of the platform and report on its overall performance. This information is now available directly within Squore via Administration > Statistics. If you are also a model developer or a project manager and wish to fine-tune the layout of your dashboards, you will find more statistical data about how users consult analysis results via Models > Statistics and the Manage Project page. This section describes the information you can access from these pages. Note that statistics are collected locally, saved in the Squore database, and never sent anywhere. Statistics collection cannot be turned off. Viewing the statistics collected on the server is subject to licence.

Tip

Before you can view statistics on these pages, a date range must be selected in order to display information about the activity on the server during this period. You can also select whether the information is aggregated by day, week, month or year by adjusting the granularity setting.

Application Usage Statistics for Administrators

The application usage statistics are broken down into five sections where you can view information about users, projects, hardware resources, pages response time and dashboard usage.

Users

The Users tab displays the following information:

  • Global statistics about user accounts for this Squore Server installation

  • Information about current Web Users Web Users during the selected period

  • A series of charts containing information about the number of users, new users and overall connections to the server during the selected period

  • A table detailing session information per user

  • A table displaying session duration statistics

Projects

The Projects tab displays information about the number of projects viewed. You can get overall numbers of visits for all the projects on the server, or select specific projects to compare their number of views. The data is rendered as:

  • A chart showing a trend of the total number of projects viewed for the selected reporting period

  • A chart where you can consult detailed view statistics about the projects of your choice. You can click on a project name to show or hide it from the chart.

  • Information about the number of sessions per project during the selected period

Resources

The Resources tab helps administrators in monitoring the memory and disk consumption and the performance of the application.

Memory Consumption vs. Users: displays a history of the amount of memory used by the java process running the application and a line indicating the number of users who logged in during the selected period.

Database Size vs Average Load Time: displays a history of the size of the database on disk. Trend lines displaying the average page or tab load times can be displayed on the chart.

Pages

The Pages tab, shows statistics about page views and load times in tabular form and graphical form. The table automatically highlights the best result in green and the worst result in red.

Dashboard

The Dashboard tab allows analysing the usage of each tab on the dashboard. Each tab is represented in a treemap according to how many views it receives. This information can be used to adjust the default display status of each tab or their availability to end users.

Statistics for Model Developers

You can learn more about the usage of particular features of a model by clicking Models > Statistics. For each analysis model, find out how many users consult results, which projects are the most popular and which regions and charts of the dashboard are the most useful for users.

Users

The Users tab displays the information about the number of users and overall connections to the server for projects in this analysis model.

Projects

On the Projects tab, you can check how many projects had visitors over the selected period.

Dashboard

The Dashboard tab allows analysing the usage of each tab on the dashboard. Each tab is represented in a treemap according to how many views it receives. This information can be used to adjust the default display status of each tab or their availability to end users.

Charts

The Charts tab provides information about chart usage in your model: The number of views per chart (per artefact type or for all artefact types), the average loading time and the number of comments.

Statistics for Project Managers

As a project manager, you can use project statistics to investigate the popularity of your project by going to Manage > Statistics.

When you select a reporting period, the following information is displayed:

  • The trend of the number of views for this project uses the colours from the scale of the root indicator as background to help you correlate the project rating with the number of visits.

  • The treemap helps you understand which of the dashboard tabs is the most visited for this project.

  • A table summarises the breakdown of views per user, as well as the number of comments left by each user.

Chapter 6. Integrating Squore on Your Network

Accessing Squore via HTTPS

You can configure WildFly to allow https access to Squore Server instead of http by following the instructions below.

Note

These instructions are based on the standard WildFly instructions from https://docs.jboss.org/author/display/WFLY10/Security+Realms#SecurityRealms-DetailedConfiguration for securing the web server and use a self-signed certificate managed in the Java keystore, which may show a warning in users' browsers.

If your company supply their own certificate and you want to import it instead of generating one, refer to the instructions in the section called “Key and Certificate Management”.

Tip

It is also possible to use Apache as a reverse proxy on top of Squore Server to achieve the same result. For more information, consult the section called “Proxying Squore Server with Apache”.

  1. Generate a secret key/certificate and store it in a file called a "key store" (foo.keystore in the current directory). The certificate is valid for 30 years (10950 days). The password use for encryption is "secret". One important issue is the common name (CN) of the certificate. For some reason this is referred to as "first and last name". It should however match the name of the web server, or some browsers like IE will claim the certificate to be invalid although you may have accepted it already.

    $ keytool -genkey -alias foo -keyalg RSA -keystore foo.keystore -validity 10950
    Enter keystore password: secret
    Re-enter new password: secret
    What is your first and last name?
      [Unknown]:  foo.acme.com
    What is the name of your organizational unit?
      [Unknown]:  Foo
    What is the name of your organization?
      [Unknown]:  acme corp
    What is the name of your City or Locality?
      [Unknown]:  Duckburg
    What is the name of your State or Province?
      [Unknown]:  Duckburg
    What is the two-letter country code for this unit?
      [Unknown]:  WD
    Is CN=foo.acme.com, OU=Foo, O=acme corp, L=Duckburg, ST=Duckburg, C=WD correct?
      [no]:  yes
    
    Enter key password for <deva> secret
        (RETURN if same as keystore password):  
    Re-enter new password: secret
  2. Create a new security realm in WildFly's <SQUORE_HOME>/server/standalone/configuration/standalone.xml to configure an SSL Server identity:

    <management>
    	<security-realms>
    		<security-realm name="SslRealm">
    			<server-identities>
    				<ssl>
    					<keystore path="/path/to/foo.keystore" keystore-password="keystore_password" alias="foo" key-password="key_password" />
    				</ssl>
    			</server-identities>
    		</security-realm>
    		<security-realm name="ManagementRealm">
    		...
    		</security-realm>
    	</security-realms>
    </management>

    Tip

    You can use a relative path to the keystore file if you add a relative-to="jboss.server.config.dir" attribute to your keystore element.

  3. Add a HTTPS listener next to the default HTTP listener in <SQUORE_HOME>/server/standalone/configuration/standalone.xml:

    <http-listener [...] name="default" socket-binding="http" [...] />
    <https-listener name="default-ssl" socket-binding="https" max-post-size="0" security-realm="SslRealm"/>

    Note

    Alternatively, if you want to completely disable HTTP access, remove the http connector .

  4. Start Squore Server. The SSL port is 8443 + the offset selected at installation. By default you should therefore be able to access the web interface via https://localhost:8543 in your browser.

Redirecting from HTTP to HTTPS

After you enable HTTPS access to Squore Server following the steps described in the section called “Accessing Squore via HTTPS”, you can automatically redirect insecure traffic to HTTPS by modifying <SQUORE_HOME>/server/standalone/configuration/standalone.xml:

  1. Find the host section of the undertow subsystem and add a filter-ref element to match URLs using the server's HTTP port:

    <host name="default-host" alias="localhost">
    	<location name="/" handler="welcome-content"/>
    	<filter-ref name="server-header"/>
    	<filter-ref name="x-powered-by-header"/>
    	<filter-ref name="http-to-https" predicate="not(equals(%A,'127.0.0.1')) and equals(%p,8180)"/>
    </host>
  2. Find the filters section of the undertow subsystem and add a rewrite element to redirect insecure requests to HTTPS:

    <filters>
    	<response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
    	<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    	<rewrite name="http-to-https" target="https://localhost:8543%U" redirect="true"/>
    </filters>
  3. Start Squore Server and access http://localhost:8180 to verify that you are automatically redirected to https://localhost:8543.

Proxying Squore Server with Apache

It is possible to use Apache in a proxy/reverse proxy role on top of Squore Server. This approach makes use of the proxy and proxy_wstunnel modules to handle web and websocket traffic between client browsers and Squore Server and is compatible with Apache starting from version 2.4.

The following configuration can be used to proxy Squore Server traffic in your Apache configuration file:

<VirtualHost *:80>
  ServerName   squore.example.com
  ProxyPass / http://localhost:8180/
  ProxyPassReverse / http://localhost:8180/
  <Location />
    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
    RewriteRule .* ws://localhost:8180%{REQUEST_URI} [P]
  </Location>
</VirtualHost>

These lines of configuration are the minimum required to guarantee that the necessary traffic to and from Squore. For more complex scenarios, including SSL and certificate configuration, refer to official Apache documentation on http://httpd.apache.org/docs/2.4/.

Key and Certificate Management

For more details on keys and certificates management with the keytool utility, please refer to the keytool(1) man page, or online documentation.

The system-wide keystore with CA certificates is a cacert file, which is located in the java.home/lib/security directory, where java.home is the runtime environment's directory.

Note: the default password of the system-wide keystore is changeit.

Import a private key and a certificate

The Java keytool utility does not support importing a private key directly from a file. First convert the private key into PKCS12 format, then merge that file with the Java keystore:

openssl pkcs12 -export -in server.crt -inkey server.key -name company -out file.p12

keytool -importkeystore -srckeystore file.p12 -destkeystore file.keystore -srcstoretype PKCS12 -destalias company

Import a certificate

To import a certificate into a keystore:

keytool -importcert -keystore file.keystore -file file.crt -alias company

You can now use the keystore and certificate alias to configure HTTPS access to your Squore installation following the instructions in the section called “Accessing Squore via HTTPS”.

Using the LDAP Authentication Module

By default, Squore Server uses its own authentication mechanism, storing user information in the Squore database. An existing directory can be used in addition, so that all existing users your the directory can log into Squore without having to create accounts manually, and the user's full name, e-mail address and department can be imported automatically. The process described in this section explains how to configure a Squore administrator, set up the server to authenticate all new users as standard users when they log in via with their LDAP credentials and finally lists the configuration files that need to be modified to turn on LDAP authentication. After you integrate with LDAP, you will still be able to create and use users that are only known to Squore and do not exist in your directory.

Tip

Before you start, ensure that you know:

  • The address of the LDAP server you want to connect to Squore.

  • The section(s) of the directory that contain the users that should be allowed to log into Squore.

  • The login and password of a user account allowed to browse the section(s) of the directory mentioned above.

  • Basic knowledge of your directory structure. Note that Squore was tested with Microsoft Active Directory on Windows Server 2008 and OpenLDAP on Ubuntu 12.04.

In order to enable LDAP authentication, follow these steps:

  1. Decide which role will be associated to a user the first time they log into Squore. The default choices are:

    • STANDARD_USER: Standard users can view projects.

    • ADVANCED_USER: Advanced users can projects and create new ones.

    • ADMINISTRATOR: Administrators can view projects and administer the server. They cannot create projects.

    If none of these choices fit your needs, you can create a specific profile later by logging into Squore and going to Administration > Profiles. If no profile is specified, then the user will be assigned the STANDARD_USER profile by default.

  2. Decide which group new users will be part of the first time they log into Squore. The default choices are:

    • users: Users from this group can view and create projects.

    • admin: Users from this group can administer Squore and view projects but they cannot create projects.

    If none of these choices fit your needs, you can create a specific group later by logging into Squore and going to Administration > Groups. If no group is specified, then the user will not be added to any group.

  3. Configure WildFly: Edit <SQUORE_HOME>/server/standalone/configuration/standalone.xml, and locate the section providing the squore-policy security domain, which by default looks like this:

    <security-domain name="squore-policy" cache-type="default">
    	<authentication>
    		<login-module code="Database" flag="sufficient">
    		(...)
    		</login-module>
    	</authentication>
    </security-domain>
    
  4. Paste in the configuration for LDAP or Active Directory before the default login module. Here is a full security-domain with both login modules:

    <security-domain name="squore-policy" cache-type="default">
    	<authentication>
    	<!-- LDAP login module -->
    	<login-module code="com.squoring.squore.server.security.LdapLoginModule" flag="sufficient">
    		<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
    		<module-option name="java.naming.provider.url" value="ldaps://domain-controller:636/"/>
    		<module-option name="java.naming.security.authentication" value="simple"/>
    		<module-option name="baseCtxDN" value="ou=people,dc=example,dc=com"/>
    		<module-option name="bindDN" value="cn=admin,dc=domain,dc=com"/>
    		<module-option name="bindCredential" value="password"/>
    		<module-option name="baseFilter" value="(uid={0})"/>
    
    		<module-option name="rolesCtxDN" value="ou=groups,dc=example,dc=com"/>
    		<module-option name="roleFilter" value="(member={1})"/>
    		<module-option name="roleAttributeIsDN" value="false"/>
    		<module-option name="roleAttributeID" value="cn"/>
    
    		<module-option name="userCompositeName" value="cn"/>
    		<module-option name="userMail" value="mail"/>
    		<module-option name="userOrganizationUnit" value="ou"/>
    		<module-option name="userId" value="uid"/>
    	</login-module>
    	<!-- Active Directory login module -->
    	<login-module code="com.squoring.squore.server.security.LdapLoginModule" flag="sufficient">
    		<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
    		<module-option name="java.naming.provider.url" value="ldap://domain-controller:389/"/>
    		<module-option name="java.naming.security.authentication" value="simple"/>
    		<module-option name="baseCtxDN" value="OU=Users,DC=EXAMPLE,DC=COM"/>
    		<module-option name="bindDN" value="CN=Administrator,OU=Administrators,DC=EXAMPLE,DC=COM"/>
    		<module-option name="bindCredential" value="password"/>
    		<module-option name="baseFilter" value="(sAMAccountName={0})"/>
    
    		<module-option name="rolesCtxDN" value="OU=Users,DC=EXAMPLE,DC=COM"/>
    		<module-option name="roleFilter" value="(sAMAccountName={0})"/>
    		<module-option name="roleAttributeIsDN" value="true"/>
    		<module-option name="roleAttributeID" value="memberOf"/>
    		<module-option name="roleNameAttributeID" value="CN" />
    		<module-option name="searchScope" value="ONELEVEL_SCOPE"/>
    
    		<module-option name="userCompositeName" value="sAMAccountName"/>
    		<module-option name="userMail" value="mail"/>
    		<module-option name="userOrganizationUnit" value="department"/>
    		<module-option name="userId" value="sAMAccountName"/>
    	</login-module>
    	<login-module code="Database" flag="sufficient">
    		(...)
    	</login-module>
    	</authentication>
    </security-domain>
  5. Edit the security domain properties to reflect your setup (LDAP or Active Directory). The LDAP administrator shall provide the following information:

    • java.naming.provider.url: The URL of the directory server.

    • baseCtxDN: The fixed DN of the context to start the user search from.

    • bindDN: The DN used to bind against the ldap server for the user and roles queries. This is some DN with read/search permissions on the baseCtxDN and rolesCtxDN values.

    • bindCredential: The password for the bindDN

    • baseFilter: The search query sent by Squore to the LDAP server when authentificating. If the password is correct and the search returns true, the user is allowed to log into Squore. The default query checks that the login exists, but you can change it to check that the login is valid and that the user is part of a specific group for example, using the syntax &((condition1) (condition2)). For more information about LDAP query syntax, refer to https://technet.microsoft.com/en-us/library/aa996205(v=exchg.65).aspx. Note that the & characters must be written as an entity (&amp;) in the settings file.

    • rolesCtxDN: The fixed DN of the context to search for user roles. This is required to exist, even though it is not used by Squore at the moment.

    • userCompositeName (optional): the field in the LDAP account that Squore will import and user as the user's full name.

    • userMail (optional): the field in the LDAP account that Squore will import and user as the user's e-mail address.

    • userOrganizationUnit (optional): the field in the LDAP account that Squore will import and user as the user's department.

    • userId (optional): the field in the LDAP account that Squore will use as a the final user login to create the account or log into the application. When no value is specified for this field, Squore uses the login as typed by the user on the login page.

      Note

      Using this field helps avoiding confusion with mixed-case logins. Squore Server considers demo and Demo as two separate users by default. By specifying that the login is taken from a specific field from your directory, you ensure that the same account is used no matter what case was used in the login form.

    Note that for Active Directory, OU, DC and other keywords are all uppercase.

    For more details on the WildFly configuration of the LDAP module and the more details about the available options, please refer to http://community.jboss.org/wiki/LdapExtLoginModule.

  6. Start Squore Server.

  7. Log in as administrator and configure the default group and profile information for users who log in for the first time in the LDAP configuration section of Administration > System.

Note

Note: It is highly recommended to use LDAPS instead of LDAP. In the <SQUORE_HOME>/server/standalone/configuration/standalone.xml configuration file, configure the java.naming.provider.url property to use an LDAPS server. The URL of an LDAPS Server will look like the following: ldaps://host:port/.

The java instance used by WildFly shall be able to check the certificate of the LDAP server. If the LDAP certificate has not been signed by an "official" CA (self-signed certificate, or the company issued its own root CA), please refer to the section called “Import a certificate”.

Tip

User accounts created before you configured the connection to the directory still exist and can still log in.

Tip

If you need to authenticate users on more than one branch in your directory, duplicate the login-module block and change the baseCtxDN and rolesCtxDN accordingly.

Note

The login module used has changed in Squore 2014-A-SP1 to support the import of extra user information, but you can still revert to the legacy authentication module if you are experiencing compatibility issues. To do so, change the login module code attribute in <SQUORE_HOME>/server/standalone/configuration/standalone.xml from

<login-module code="com.squoring.squore.server.security.LdapLoginModule" flag="sufficient">

to

<login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="sufficient">

When using the legacy login module, you should set the following module option if you are using Active Directory:

<module-option name="allowEmptyPasswords" value="false"/>

This option prevents users from authenticating successfully when sending a blank password, as is the case when using some versions of Active Directory.

Configuring E-Mail Notifications

Squore allows users to configure automatic sending of e-mail notifications at the end of an analysis. In order to use this feature, Squore Server must be configured to communicate with an SMTP server.

Before you start, ensure that the following details are available:

  • The URL and port of your SMTP server

  • The username and password used to authenticate against the SMTP server

  • The e-mail address that you want to see used in the from field of the e-mails.

In order to configure the SMTP server integration:

  1. Edit <SQUORE_HOME>/server/standalone/configuration/standalone.xml, find the mail-session configuration, which by default looks like this:

    <smtp-server outbound-socket-binding-ref="mail-smtp"/>
  2. Complete the element to add in the username and password for the smtp server, and optionally turn on ssl:

    <mail-session name="default" jndi-name="java:jboss/mail/Default">
      <smtp-server outbound-socket-binding-ref="mail-smtp" ssl="false" username="login" password="password"/>
    </mail-session>
  3. Find the outbound-socket-binding element with the name attribute mail-smtp and edit the remote-destination sub-element as needed:

    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
  4. Start Squore Server.

  5. Log in as administrator and go to Administration > System.

  6. Set the value of the FROM e-mail address for notifications, as well as the Squore Server URL to be used in body of the e-mails, for example squore@domain.com and http://localhost:8180/SQuORE_Server/.

Notifying Users by E-Mail

The E-mail form to notify all users available to administrators.

Squore allows notifying all users by e-mail when planned maintenance is necessary. If you have already configured e-mail notification as explained in the section called “Configuring E-Mail Notifications”, follow these steps to send a maintenance e-mail:

  1. Log in as administrator.

  2. Click Administration > System

  3. Click on Notify users by e-mail.

  4. Type a message subject and content and click Send to e-mail users.

The e-mail notification will be sent to all enabled users that have an e-mail address.

Tip

Squore will actually limit the amount of recipients to 100 per e-mail, and send more than one e-mail if necessary. If this number of recipients is too high for your SMTP server, you can configure the maximum number of recipients to include in a single e-mail by setting the mail.recipients property in <SQUORE_HOME>/server/standalone/configuration/squore-server.properties:

mail.recipients = 100

Linking to Projects

There are two ways to build direct links to projects in Squore:

  • using IDs with the RestoreContext page
  • using names with the LoadDashboard page

Each method supports different parameters to build direct links to a tab of the Explorer for the specified project, as explained below.

http://localhost:8180/SQuORE_Server/XHTML/RestoreContext.xhtml

Links to the Squore Explorer using IDs. The URL accepts the following parameters:

  • modelId to link to a model node in the portfolio

  • projectId to link to the latest version of the specified project

  • versionId to link to a specific version of a project

  • artefactId to link to a specific artefact in a project (can be combined with projectId and versionId)

  • tabName to display a specific tab of the Explorer. This parameter can be combined with any of the ones above and must be one of:

    • dashboard (default)
    • action-items
    • highlights
    • findings
    • reports
    • attributes (Forms)
    • indicators
    • measures
    • annotations

Tip

Users can copy a RestoreContext link from the Home page, the Projects page, or generate one using the Share... dialog in an artefact's context menu, which is the only way to find an artefactId. Model IDs are not exposed anywhere in the web interface.

The sharing dialog from the web UI with a full RestoreContext URL

Project and version IDs are printed in the project's output XML file, making it easy to parse and build a URL dynamically when using continuous integration to launch analyses.

http://localhost:8180/SQuORE_Server/XHTML/MyDashboard/dashboard/LoadDashboard.xhtml

Links to the Squore Explorer using names instead of IDs. The URL accepts the following parameters:

  • application (mandatory) to specify the project to link to

  • version (optional) to specify which version of the project to display. When not specified, the latest version fo the project is displayed

  • artefactId (optional) to link to a specific artefact in the project

  • tabName to display a specific tab of the Explorer. This parameter can be combined with any of the ones above and must be one of:

    • dashboard (default)
    • action-items
    • highlights
    • findings
    • reports
    • attributes (Forms)
    • indicators
    • measures
    • annotations

    Tip

    The following is a URL that links to the version called V5 in the project called Earth. Since no artefactId and tabName are specified, the Dashboard tab will be displayed for the root node of the project: http://localhost:8180/SQuORE_Server/XHTML/MyDashboard/dashboard/LoadDashboard.xhtml?application=Earth&version=V5.

Embedding Dashboard Elements

All the charts displayed on the Squore Dashboard have a unique URL, so they can be embedded into other sites.

In order to find out what the URL of a chart is, follow these steps:

  1. Log into Squore and view the dashboard of the project you want to get information from.

  2. Click a chart to view it.

  3. Click the icon in the chart viewer to open the chart in a new browser window or tab.

  4. Copy the URL of the chart, as displayed by your browser location bar.

The URL http://localhost:8180/SQuORE_Server/squore/resource/chart/<CHART_UID>.png.xhtml (the ?s= parameter is a way to work around the browser cache) is a permalink to this chart for this project version.

Integration with Atlassian Confluence

It is possible to extract some elements from the Squore dashboard and integrate them into a Confluence page. This section details how to configure Squore Server and Confluence to trust each other and how to extract the URLs to display charts.

Squore Server Configuration

In order to allow Confluence to connect to Squore Server:

  1. Edit <SQUORE_HOME>/server/standalone/configuration/standalone.xml

  2. Find the security-domain element named squore-policy.

  3. Add a new login-module element, as shown below:

    <security-domain name="squore-policy" cache-type="default">
      <authentication>
      <login-module code="com.squoring.squore.server.security.TrustedLoginModule" flag="sufficient"/>
      (...)
      </authentication>
    </security-domain>
  4. Restart Squore Server to take the new configuration into account.

Tip

Because Confluence does not offer a single sign-on mechanism or authentication delegation, Confluence has to connect to Squore without using a password. This does not, however constitute a security risk, as the Squore user still has to exist and be allowed to view the target project in order for any information to be retrieved.

Confluence Admin Configuration

In order to allow Confluence users to add Squore elements, a Confluence administrator can create a macro to make it easier to include Squore elements into a page. You can find an example macro below.

## Macro title: Squore Dashboard Element Importer
## Macro category: External Content
## Macro has a body: N
## Body processing: No Body
##
## Developed by: Squoring Technologies
## Date created: 2013/07/28

## @param squrl:title=Squore Server URL|type=string|required=true|desc=The Squore Server URL
## @param sqport:title=Squore Server Port|type=string|required=true|desc=The Squore Server Port
## @param chart:title=Squore Element URL|type=string|required=true|desc=The URL of the Squore Dashboard Element
## @param sizex:title=Squore Element Width|type=string|required=true|desc= The Squore Element Width
## @param sizey:title=Squore Element Height|type=string|required=true|desc= The Squore Element Height
## @param version:title=Version|type=enum|enumValues=Current version,Last draft,Last baseline|default=Current version
#if ("Last draft"==$paramversion)
    #set($pversion="?version=last")
#elseif ("Last baseline"==$paramversion)
    #set($pversion="?version=last-baseline")
#else
    #set($pversion="")
#end
#set($login=$action.remoteUser.name)
<IFRAME frameborder="0" src="$paramsqurl:$paramsqport/SQuORE_Server/Export/ChartExport.xhtml?user=$login&width=$paramsizex&height=$paramsizey&chart=$paramchart$pversion" scrolling="no" width="$paramsizex" height="$paramsizey">
</IFRAME>

Adding Dashboard Elements

The macro you added in the previous section should be available to other Confluence users as the form show below from External Content.

The Confluence Squore form

Users need to fill in the following details:

  • the Squore Server URL

  • the Squore Server port

  • the chart permalink (as retrieved according to the instructions in the section called “Embedding Dashboard Elements”)

  • the desired width of the chart

  • the desired height of the chart

  • the version of the chart to display (exact, last or last baseline)

Note

You can either link to the chart URL ending in .png or .json. Using the link ending with .json allows you to embed a fully interactive chart with tooltips and zoom functionality in Confluence, while the link ending in .png only displays a static image of the chart.

Tip

You can add several charts on the same Confluence page.

Integration with CollabNet TeamForge

Squore for TeamForge Integration does not require any additional installation procedure.

Squore Configuration

The connection module must be configured in the file <SQUORE_HOME>/server/standalone/configuration/standalone.xml by adding to the security-domain (name="squore-policy") / authentication section (before the Database login-module):

<login-module code="com.squoring.squore.server.security.CollabNetLoginModule" flag="sufficient"/>

Restart Squore Server to apply the changes, and log in as administrator to finish configuring the integration via Administration > System. In the Configuration tab, fill in the information in the CollabNet section according to the values found in TeamForge.

  • TeamForge Server URL (without / at the end), for example http://localhost.

  • TeamForge Server Name (will appear in Squore export format list), for example TeamForge.

  • TeamForge artifact default status at export, for example Open.

  • TeamForge artifact default priority at export, for example 4.

  • SvnEdge Main Repository URL, for example http://localhost/svn.

  • SvnEdge Viewer (viewvc) URL, for example http://localhost/viewvc.

  • External System Id of SvnEdge (for ex: exsy1001), for example exsy1011.

TeamForge Configuration

Squore is integrated into TeamForge as a "linked application". Steps to add a Squore access to a TeamForge project are:

Tab Configuration

Project Admin > Project Toolbar > Linked Application > Create

  • Application Name: Squore

  • URL: http://localhost:8180/SQuORE_Server/Export/CollabNet.xhtml (+ parameters)

  • Single Sign On Enabled: yes

Possible parameters are:

  • squoreProjectId (the related Squore project Id)

  • squoreVersionId (the related Squore project version Id)

  • trackerId (The Id of the TeamForge project tracker)

If the squoreVersionId is not defined, the last version of the project will be automatically loaded.

Some Examples: (if Squore is running on localhost and on port 8180)

  • Squore project Id 13 (last version) and TeamForge tracker Id tracker1004

    http://localhost:8180/SQuORE_Server/Export/CollabNet.xhtml?squoreProjectId=13&trackerId=tracker1004

  • Squore project Id 13, Squore project version 14 and TeamForge tracker Id tracker1004

    http://localhost:8180/SQuORE_Server/Export/CollabNet.xhtml?squoreProjectId=13&squoreVersionId=14&trackerId=tracker1004

Tracker configuration

In order to see all fields of the Squore defect reports after export, the corresponding TeamForge tracker should have the following additional fields (individually optionals) with the "Text Entry" input type:

  • SQ_Status

  • SQ_Since

  • SQ_Reasons

  • SQ_Scope

  • SQ_Artefact

  • SQ_Path

  • SQ_Comment

Integration Characteristics

Accessing Squore through TeamForge

The access to Squore is done through a new URL: http://localhost:8180/SQuORE_Server/Export/CollabNet.xhtml

Automatic connexion

When clicking on the Squore tab in TeamForge, the TeamForge user is automatically identified into Squore. If he is not a Squore user, the connexion is forbidden (error message).

The dashboard is shown and points directly on the specified project with the specified version. (or last version if the corresponding parameter is not defined)

Defect Report exports

If the user is on the specified project, a new export format is available (name: see the section called “Squore Configuration”: cntf.server.name). The export button will directly export the selected defect reports under the form of new artifacts into the corresponding TeamForge tracker.

Source Code View

When visualising a source code, Squore retrieves the corresponding file using the viewvc application of the CollabNet SvnEdge server without asking the user a login and a password.

To use this functionality, the cntf.svn.url, cntf.viewvc.url and cntf.svn.exsy keys must be correctly set in the configuration file

If this functionality is not activated, the user has to use its own SVN login and password to access the source codes from Squore.

Squore Server Monitoring

Squore Server can be monitored with external tools on your network by connecting to administration URLs to retrieve information about the status of projects and users on the server.

The possible values of the status field are:

  • 0 Finished: the version has been successfully created.

  • 1 Warning: some warnings were raised during the last analysis.

  • 2 Error: the analysis finished with an error.

  • 3 Processing: the version is being created. When this status is returned, the current phase of the analysis will be specified in the step field and the time at which this step started will be specified in the step start.

  • 4 Offline: this project has no versions.

  • 5 Pending: this project is waiting for a free slot to start an analysis.

Note that in order to access these URLs you must be either:

  • A logged-in user with the Administrator profile, in which case you can access the URL from anywhere.

  • Requesting the URL from the computer that runs Squore Server, in which case the information is available without logging in.

Tip

By writing your own script that queries the monitoring URLs regularly and saving the output to a CSV file, you can feed the information into monitoring tools like Nagios and monitor the health of Squore Server.

Chapter 7. Sizing Squore Server and Database

This chapter provides information about the resource utilisation and impact of running a Squore server over time.

Project Size and Growth

The disk space necessary for analyses varies depending on your analysis model as well as the amount of information analysed.

As a result, it is difficult to predict accurately the amount of space that your Squore installation will use. After a few runs, you should be able to estimate disk space requirements by working out the space required to analyse an artefact with your analysis model. Keep in mind that the first version of a project is always more costly than subsequent analyses, and that an analysis with only a few changes will use a lot less space than an analysis where there are a lot of changes.

Here is an example based on the Risk Index model, one of the standard multi-language models shipped in Squore 16.1.

Table 7.1. Project Characteristics

First Code Snapshot

Second Code Snapshot

Language Distribution

C (13%), C++ (14%), Java (73%)

C (9%), C++ (11%), Java (80%)

Source Files

20000

30000

10% of previous code changed

Classes

28000

47000

Methods and Functions

181000

296000

Lines of Code

5.2M

7.6M

Effective Lines of Code

2.6M

3.6M

Findings

157000

234000

Action Items

7700

6300


Table 7.2. Model Characteristics

Average metrics per artefact

160

Average indicators per artefact

15


Table 7.3. Project Cost

Database Growth

Project Folder Growth

V1 (Snapshot 1)

+3.5GB

+839MB

V2 (Snapshot 1)

+100MB

+1MB

V3 (Snapshot 2)

+3GB

+1.1GB


Saving Space by Deleting Old Data Files

You can save disk space by keeping data files generated by Squore only for the last baseline version. This behaviour is enabled by default and can be overridden either by using a setting in your <SQUORE_HOME>/config.xml, or by changing the behaviour for each project. This can be useful when you want to debug the analysis data later.

  • In order to save all data files for all versions by default for every project, open <SQUORE_HOME>/config.xml and projects element as shown below:

    <projects directory="path/to/data/folder">
    	<data-providers keep-data-files="true"/>
    </projects>

    The behaviour is applied after a server restart, and the old files are deleted when a new version is created.

  • In order to override the behaviour for a particular project in the web interface, check or uncheck the Keep old versions data files box when creating a new version of the project or when managing the project.

  • In order to override the behaviour for a particular project from the command line, use the parameter keepDataFiles=true|false when creating a new version of the project.

Appendix A. Reference pages

Table of Contents

install — Squore install script
sqexport.pl — Squore export utility
— reset Squore data

Name

install — Squore install script

Synopsis

install [ options ...] data_dir

install -C [ options ...] data_dir

install -U inst_dir [ options ...]

Description

Installs and configures Squore.

The most useful options when installing Squore are -b to open Squore to the network (accesses are restricted to localhost by default, specify 0.0.0.0 to open the server to connections from all clients on the network), and -k to deploy a licence file.

Alternatively, when upgrading an existing installation, use -U to specify the directory to upgrade.

Squore data is stored in the data_dir directory.

Options

-C

Configure files only, does not create any database schema. This option may be used to reconfigure Squore after installation.

-U inst_dir

Upgrade the installation pointed to by inst_dir.

-v

Increase verbosity level.

-S

Use remote PostgreSQL server. This option may be used to point on an existing server (no cluster is created).

-P pg_dir

Location of PostgreSQL executables.

-D cluster_dir

PostgreSQL cluster directory to create (default: data_dir/cluster).

-s size

PostgreSQL shared buffers size, in MB. Defaults to 25% of the memory available on the server.

-r dbms

Supported DBMS vendor (default: postgresql).

Valid values: postgresql, oracle.

-h db_host

Database server's host name (default: localhost).

-p db_port

Database server's port number (default: DMBS dependent, 4561 for postgresql).

-A db_admin

Database administrator name (default: DMBS dependent, postgres for postgresql).

-d db_name

Squore database name (default: squore).

-u db_user

Squore database user (default: squore).

-e

Pick existing user and database (recommended for Oracle Database).

-J java_home

Specify the Java home to use. Defaults to JAVA_HOME, and, if this variable is not set, to an OS specific value.

-x size

Java memory allocation pool, in MB (Xmx option). Defaults to 25% of the memory available on the server, with a minimum of 512 MB.

-b bind_address

WildFly bind address (default: localhost). If you plan to use Squore from your local network, use 0.0.0.0 for the bind address. Otherwise access is restricted to connections from localhost only.

-o binding_offset

WildFly binding port offset (default: 100). This number is added to the default (8080 for http) to calculate the set of ports used for Squore Server. An offset of 100 means that Squore is accessible via http://localhost:8180/SQuORE_Server

-g PhantomJS port

PhantomJS port (default: 3003). The port to use for the embedded installation of PhantomJS.

-T tmp_dir

Squore temporary directory (default: /tmp/squore)

-k squore-license.p7s

Squore licensing key.

Arguments

data_dir

The Squore data directory, where Squore data is stored. That is, the database cluster (when managed by Squore), projects related files, and backups.

Name

sqexport.pl — Squore export utility

Synopsis

sqexport.pl [ option ...] users [ -r ]

sqexport.pl [ option ...] groups [ -m ]

sqexport.pl [ option ...] versions -m [ -l ] [ -u uid ] id_model

sqexport.pl [ option ...] versions -p [ -l ] [ -u uid ] id_project

sqexport.pl [ option ...] artefacts -m [ -R ] [ --add-measure measure ...] [ -T type ...] [ -L level ] [ -u uid ] id_model

sqexport.pl [ option ...] artefacts -p [ -R | -r id_rvers ] [ --add-measure measure ...] [ -T type ...] [ -L level ] [ -u uid ] id_project id_vers

Description

The sqexport.pl script connects to the Squore database and exports data into the CSV format.

This command extracts raw data from the database. That is, it does not read i18n files or model properties to translate strings.

Columns common to the versions and artefacts exports are:

  1. model_id - the database identifier of the model (verbose mode only).

  2. model - the model name.

  3. app_id - the database identifier of the project (verbose mode only).

  4. app_name - the project name.

  5. root_id - the database identifier of the root artefact (verbose mode only).

  6. v_id - the database identifier of the version (verbose mode only).

  7. v_name - the version name.

Users export

These columns are exported:

  1. uid - the database identifier of the user (verbose mode only).

  2. login - the login of the user.

sqexport.pl users [ -r ]

This command exports all user information for all Squore users. The output contains these additional columns:

  1. fullname - the full name of the user.

  2. email - the e-mail of the user.

  3. password - the SHA-1 of the user password, base 64 encoded.

  4. department - the department of the user.

When the -r option is specified, the user profiles are exported instead. The output contains these additional columns:

  1. role_id - the database identifier of the profile (verbose mode only).

  2. role - the profile name of the user.

Groups export

These columns are exported:

  1. gid - the database identifier of the group (verbose mode only).

  2. group - the name of the group.

sqexport.pl groups [ -m ]

This command exports all Squore groups.

When the -m option is used, group members are exported instead. Here are the additional columns in this mode:

  1. uid - the database identifier of the group member (verbose mode only).

  2. login - the login of the group member.

Versions export

These additional columns are exported:

  1. status - the project's version status.

  2. sl_rank - the (numeric) rank of the level of the project.

  3. level - the level of the project.

  4. app_name - The project name.

sqexport.pl versions -m [ -l ] [ -u uid ] id_model

This form exports all versions of projects that use the model identified by id_model. If -l is used, only the last version of each project is exported.

The uid is used to restrict output data, using access controls defined in Squore. If not supplied, versions and projects are exported regardless of access control lists.

sqexport.pl versions -p [ -l ] [ -u uid ] id_project

This form exports all versions of the project identified by id_project. If -l is used, only the last version of the project is exported.

The uid is used to restrict output data, using access controls defined in Squore. If not supplied, versions and projects are exported regardless of access control lists.

Artefacts export

These additional columns are exported:

  1. art_id - the database identifier of the artefact.

  2. art_path - the path of the artefact.

  3. art_name - the name of the artefact.

  4. type - the type of the artefact.

  5. sl_rank - the (numeric) rank of the level of the artefact.

  6. level - the level of the artefact.

  7. trend - the trend of the artefact, compared to the reference version (with -R or -r only). Values are 'N' for new artefacts, '^' for artefacts that improved, 'v' for artefacts that regressed, and '=' for others.

  8. * - the measure values, as specified with the --add-measure options.

sqexport.pl artefacts -m [ -R ] [ --add-measure measure ...] [ -T type ...] [ -L level ] [ -u uid ] id_model

Exports all artefacts of the id_model model, eventually filtered out by the -T and -L filters. Both parameters of these options are identifiers of the types and the level, as specified in the model. This is possible to specify types separated by a comma, or multiple -T options. Such types are then OR-ed.

Only artefacts that belong to the last version of projects are exported. If the -R option is set, the trend of levels of artefacts is computed against the last but one version of the projects. By default, there is no trend computation.

Use the --add-measure option to specify the list of measures to add to the output. Use with caution on large result sets.

The uid is used to restrict output data, using access controls defined in Squore. If not supplied, artefacts are exported, regardless of access control lists.

sqexport.pl artefacts -p [ -R | -r id_rvers ] [ --add-measure measure ...] [ -T type ...] [ -L level ] [ -u uid ] id_project id_vers

This form exports artefacts of the id_project project in its id_vers version. If id_vers is not specified, the last version if the project is used. Artefacts may be filtered out with the -T type and -L level options.

The reference version to compute trends of levels of artefacts is either set with -R (use the version right before id_vers), or with -r id_rvers to set an explicit version of the project.

Use the --add-measure option to specify the list of measures to add to the output. Use with caution on large result sets.

The uid is used to restrict output data, using access controls defined in Squore. If not supplied, artefacts are exported, regardless of access control lists.

Global options

These options are common to all export types.

-h host

Overrides the database host name.

-p port

Overrides the database port number.

-d dbname

Overrides the database name.

-u user

Overrides the database user name.

-f file

Set the CSV output file. If not specified, the output is written to the standard output.

-s sep

Set the CSV separator. Defaults to the ';' character.

-S slices

Specifies a subset of columns to write, starting from 0. The column numbering is computed against the verbose mode, not the standard mode. Separate column numbers with the ',' character.

-v

Turns on the verbose mode. Exports additional columns (mainly internal database ids), and displays some SQL and post processing timings.

Export options

-a

Turns on export at the artefact level.

-m

Turns on export at the model level.

-p

Turns on export at the project level.

-c

Counts entries only, do not list all of them.

-l

Exports the last version of each project only.

-R

Set the reference version for delta or trend computations to the last but one version of the project, from either its last version, or the user supplied version.

-r id_rvers

Set the reference version for delta or trend computations to the version pointed to by the id_rvers.

-T type ...

Filter artefacts of types type, which is the external id of the artefact type, as specified by the model, like APPLICATION, CLASS, FUNCTION, etc. Types may be coma separated.

-L level

Artefacts shall have the level level, which is the external id of the level of performance of a scale, as specified by the model, like LEVELA, LEVELB, etc.

Examples

sqexport.pl artefacts -m -T FILE -L LEVELG 1

This command lists all artefacts of type FILE, that are rated LEVELG. The scope of the search is limited to the artefacts that belong to the model 1, which is its database id. There is no trend computation.

Exit status

0

CSV successfully generated.

2

Syntax or usage error.

*

The script failed. See stderr for an error message.

Name

— reset Squore data

Synopsis

sqadm reset -P

Description

This command clears both the database content, and internal storage files used by Squore. So far, the -P and -D options are mandatory.

The shall be executed on a stopped Squore server, but a running database.

Options

-h, --help

Display help information and exit.

-P, --project-only

Reset project related data only.

Not supported for installations that use an Oracle database backend.

Use this option to keep management related settings, like roles, users, global settings, etc.

-y, --no-prompt

Do not prompt for confirmation.

--jdbc-url url

Database url of the form jdbc:subprotocol:subname.

--jdbc-user user

Database user.

-D dir, --data-dir dir

Squore projects directory.

Appendix B. Squore XML Schemas

Download input-data-2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  
  <xs:simpleType name="id">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z_][A-Z0-9_]+" />
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="relax-status">
	<xs:restriction base="id">
		<xs:enumeration value="RELAXED_DEROGATION"/>
		<xs:enumeration value="RELAXED_LEGACY"/>
		<xs:enumeration value="RELAXED_FALSE_POSITIVE"/>
	</xs:restriction>
</xs:simpleType>
	
  <xs:element name="bundle">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="artifact"/>
        <xs:element ref="finding"/>
        <xs:element ref="link"/>
        <xs:element ref="metric"/>
      </xs:choice>
      <xs:attribute name="version" use="required" type="xs:integer" fixed="2"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="artifact">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="artifact"/>
		  <xs:element ref="finding"/>
          <xs:element ref="metric"/>
          <xs:element ref="key"/>
		  <xs:element ref="info"/>
		  <xs:element ref="link"/>
		  <xs:element ref="milestone"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="alias"/>
      <xs:attribute name="art-location"/>
      <xs:attribute name="id"/>
      <xs:attribute name="local-art-location"/>
      <xs:attribute name="local-key"/>
      <xs:attribute name="local-parent"/>
      <xs:attribute name="location"/>
      <xs:attribute name="name"/>
      <xs:attribute name="parent"/>
      <xs:attribute name="path"/>
      <xs:attribute name="type" use="required" type="id"/>
      <xs:attribute name="view-path"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="info">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="id"/>
      <xs:attribute name="tool"/>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="key">
    <xs:complexType>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="metric">
    <xs:complexType>
      <xs:attribute name="local-ref"/>
      <xs:attribute name="name" use="required" type="id"/>
      <xs:attribute name="ref"/>
      <xs:attribute name="tool"/>
      <xs:attribute name="value" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="link">
    <xs:complexType>
      <xs:attribute name="dst"/>
      <xs:attribute name="local-dst" type="xs:integer"/>
      <xs:attribute name="local-src" type="xs:integer"/>
      <xs:attribute name="name" use="required" type="id"/>
      <xs:attribute name="src"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="finding">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="location"/>
        <xs:element minOccurs="0" maxOccurs="1" ref="relax"/>
      </xs:sequence>
      <xs:attribute name="descr"/>
      <xs:attribute name="local-ref"/>
      <xs:attribute name="location" use="required"/>
      <xs:attribute name="name" use="required" type="id"/>
      <xs:attribute name="p0"/>
      <xs:attribute name="p1"/>
      <xs:attribute name="p2"/>
      <xs:attribute name="p3"/>
      <xs:attribute name="p4"/>
      <xs:attribute name="p5"/>
      <xs:attribute name="p6"/>
      <xs:attribute name="p7"/>
      <xs:attribute name="p8"/>
      <xs:attribute name="p9"/>
      <xs:attribute name="ref"/>
      <xs:attribute name="tool"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="location">
    <xs:complexType>
      <xs:attribute name="local-ref"/>
      <xs:attribute name="location" use="required"/>
      <xs:attribute name="ref"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="relax">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="status" type="relax-status"/>
        </xs:extension>
      </xs:simpleContent>
      
    </xs:complexType>
  </xs:element>
  
  <xs:element name="milestone">
    <xs:complexType>
	  <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="goal"/>
      </xs:sequence>
      <xs:attribute name="date" type="xs:integer"/>
      <xs:attribute name="name" use="required" type="id"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="goal">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="id"/>
      <xs:attribute name="value" use="required" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
Download properties-1.2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">

	<xs:element name="Bundle" type="bundleType"/>

	<xs:complexType name="bundleType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="help" type="helpType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="hideObsoleteModels" type="obsoleteType" minOccurs="0" maxOccurs="1"/>
				<xs:element name="hideModel" type="hiddenType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="explorerTabs" type="tabsType" minOccurs="0" maxOccurs="1"/>
				<xs:element name="explorerTrees" type="treesType" minOccurs="0" maxOccurs="1"/>
				<xs:element name="option" type="optionType" minOccurs="0" maxOccurs="unbounded"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="version" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="helpType">
		<xs:attribute name="label" use="required" type="xs:string"/>
		<xs:attribute name="url" use="required" type="xs:anyURI"/>
		<xs:attribute name="profiles" use="optional" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="optionType">
		<xs:attribute name="name" use="required" type="xs:string"/>
		<xs:attribute name="value" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="obsoleteType">
		<xs:attribute name="value" use="optional" default="false" type="xs:boolean"/>
	</xs:complexType>

	<xs:complexType name="hiddenType">
		<xs:attribute name="name" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="tabsType">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="tab" type="tabType" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="hideSettings" use="optional" default="false" type="xs:boolean"/>
	</xs:complexType>

	<xs:complexType name="tabType">
		<xs:attribute name="name" use="required" type="xs:string"/>
		<xs:attribute name="default" use="optional" default="false" type="xs:boolean"/>
		<xs:attribute name="mandatory" use="optional" default="false" type="xs:boolean"/>
		<xs:attribute name="rendered" use="optional" default="true" type="xs:boolean"/>
	</xs:complexType>
	
	<xs:complexType name="treesType">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="tree" type="treeType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="treeType">
		<xs:attribute name="name" use="required" type="xs:string"/>
		<xs:attribute name="rendered" use="optional" default="true" type="xs:boolean"/>
	</xs:complexType>

</xs:schema>
Download config-1.2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">

	<xs:element name="squore" type="squoreType"/>

	<xs:complexType name="squoreType">
		<xs:sequence>
			<xs:element name="paths" type="pathsType"/>
			<xs:element name="database" type="databaseType" minOccurs="0"/>
			<xs:element name="phantomjs" type="phantomjsType" minOccurs="0"/>
			<xs:element name="configuration" type="directoriesType"/>
			<xs:element name="addons" type="directoriesType"/>
			<xs:element name="client" type="dataDirectoriesType" minOccurs="0"/>
			<xs:element name="tmp" type="directoryType" minOccurs="0"/>
			<xs:element name="projects" type="projectType" minOccurs="0"/>
			<xs:element name="sources" type="directoryType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="type" use="required" type="xs:string"/>
		<xs:attribute name="version" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="pathsType">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="path" type="pathType"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="pathType">
		<xs:attribute name="name" use="required" type="xs:string"/>
		<xs:attribute name="path" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="directoriesType">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="path" type="directoryType"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="directoryType">
		<xs:attribute name="directory" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="databaseType">
		<xs:sequence>
			<xs:element name="postgresql" type="directoryType" minOccurs="0"/>
			<xs:element name="cluster" type="directoryType" minOccurs="0"/>
			<xs:element name="backup" type="directoryType"/>
			<xs:element name="security" type="securityType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="phantomjsType">
		<xs:sequence>
			<xs:element name="socket-binding" type="socketBindingType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="socketBindingType">
		<xs:attribute name="address" type="xs:string" default="127.0.0.1"/>
		<xs:attribute name="port" type="xs:short" default="3003"/>
		<xs:attribute name="squore-url" type="xs:string" default=""/>
		<xs:attribute name="distant-url" type="xs:string" default=""/>
	</xs:complexType>

	<xs:complexType name="securityType">
		<xs:sequence>
			<xs:element name="user-name" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="dataDirectoriesType">
		<xs:sequence>
			<xs:element name="tmp" type="directoryType" minOccurs="0"/>
			<xs:element name="projects" type="projectType" minOccurs="0"/>
			<xs:element name="sources" type="directoryType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="projectType">
		<xs:sequence>
			<xs:element name="data-providers" type="dpType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="directory" use="required" type="xs:string"/>
	</xs:complexType>

	<xs:complexType name="dpType">
		<xs:attribute name="keep-data-files" use="required" type="xs:boolean"/>
	</xs:complexType>

</xs:schema>
Download analysis.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:simpleType name="id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="list-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="families">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="categories">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="measure-type">
		<xs:restriction base="id">
			<xs:enumeration value="METRIC"/>
			<xs:enumeration value="RULE"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="format">
		<xs:restriction base="id">
			<xs:enumeration value="NUMBER"/>
			<xs:enumeration value="PERCENT"/>
			<xs:enumeration value="INTEGER"/>
			<xs:enumeration value="DATE"/>
			<xs:enumeration value="DATETIME"/>
			<xs:enumeration value="TIME"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="datetime-style">
		<xs:restriction base="id">
			<xs:enumeration value="DEFAULT"/>
			<xs:enumeration value="SHORT"/>
			<xs:enumeration value="MEDIUM"/>
			<xs:enumeration value="LONG"/>
			<xs:enumeration value="FULL"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="rounding-mode">
		<xs:restriction base="id">
			<xs:enumeration value="UP"/>
			<xs:enumeration value="DOWN"/>
			<xs:enumeration value="CEILING"/>
			<xs:enumeration value="FLOOR"/>
			<xs:enumeration value="HALF_UP"/>
			<xs:enumeration value="HALF_DOWN"/>
			<xs:enumeration value="HALF_EVEN"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="bounds-type">
		<xs:restriction base="xs:string">
			<xs:pattern value='[\[\]]((-)*[0-9](\.[0-9]+)?)*;((-)*[0-9](.[0-9]+)?)*[\[\]]' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="path-scope">
		<xs:restriction base="id">
			<xs:enumeration value="CHILDREN"/>
			<xs:enumeration value="DESCENDANTS"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="elements">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="ArtefactType"/>
				<xs:element ref="Indicator"/>
				<xs:element ref="Measure"/>
				<xs:element ref="Package"/>
				<xs:element ref="package"/>
				<xs:element ref="Scale"/>
				<xs:element ref="ScaleMacro"/>
				<xs:element ref="Constant"/>
				<xs:element ref="RootIndicator"/>
				<xs:element ref="UpdateRules"/>
				<xs:element ref="UpdateRule"/>
				<xs:element ref="Link"/>
				<xs:element ref="ComputedLink"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="providedBy"/>
	</xs:complexType>
	
	<xs:element name="Bundle" type="elements" />
	
	<xs:element name="Package" type="elements"/>
	<xs:element name="package" type="elements"/>
	
	<xs:element name="Constant">
		<xs:complexType>
			<xs:attribute name="id" use="required" type="id"/>
			<xs:attribute name="value" use="required"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="RootIndicator">
		<xs:complexType>
			<xs:attribute name="artefactTypes" use="required" type="list-id"/>
			<xs:attribute name="indicatorId" use="required" type="id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="UpdateRules">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="UpdateRule"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="UpdateRule">
		<xs:complexType>
			<xs:attribute name="categories" type="categories"/>
			<xs:attribute name="disabled" type="xs:boolean"/>
			<xs:attribute name="measureId" use="required" type="id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Measure">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="Computation"/>
			</xs:sequence>
			<xs:attribute name="acceptMissingValue" type="xs:boolean"/>
			<xs:attribute name="categories" type="categories"/>
			<xs:attribute name="dataBounds" type="bounds-type"/>
			<xs:attribute name="dateStyle" type="datetime-style"/>
			<xs:attribute name="decimals" type="xs:integer"/>
			<xs:attribute name="defaultValue" type="xs:decimal"/>
			<xs:attribute name="excludingTypes" type="list-id"/>
			<xs:attribute name="invalidValue"/>
			<xs:attribute name="families" type="families"/>
			<xs:attribute name="format" type="format"/>
			<xs:attribute name="manual" type="xs:boolean"/>
			<xs:attribute name="measureId" use="required" type="id"/>
			<xs:attribute name="noValue"/>
			<xs:attribute name="pattern"/>
			<xs:attribute name="roundingMode" type="rounding-mode"/>
			<xs:attribute name="suffix"/>
			<xs:attribute name="targetArtefactTypes"/>
			<xs:attribute name="timeStyle" type="datetime-style"/>
			<xs:attribute name="toolName"/>
			<xs:attribute name="toolVersion"/>
			<xs:attribute name="type" type="measure-type"/>
			<xs:attribute name="usedForRelaxation" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Computation">
		<xs:complexType>
			<xs:attribute name="continueOnRelaxed" type="xs:boolean"/>
			<xs:attribute name="excludingTypes" type="list-id"/>
			<xs:attribute name="result" use="required"/>
			<xs:attribute name="stored" type="xs:boolean"/>
			<xs:attribute name="targetArtefactTypes" use="required" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Indicator">
		<xs:complexType>
			<xs:attribute name="displayedScale" type="id"/>
			<xs:attribute name="displayedValue" type="id"/>
			<xs:attribute name="displayTypes" type="list-id"/>
			<xs:attribute name="excludingTypes" type="list-id"/>
			<xs:attribute name="families" type="families"/>
			<xs:attribute name="indicatorId" use="required" type="id"/>
			<xs:attribute name="measureId" type="id"/>
			<xs:attribute name="scaleId" type="id"/>
			<xs:attribute name="targetArtefactTypes" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Scale">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="ScaleLevel"/>
			</xs:sequence>
			<xs:attribute name="isDynamic" type="xs:boolean"/>
			<xs:attribute name="macro" type="id"/>
			<xs:attribute name="scaleId" use="required" type="id"/>
			<xs:attribute name="targetArtefactTypes" type="list-id"/>
			<xs:attribute name="vars"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="ScaleMacro">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="ScaleLevel"/>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id"/>
			<xs:attribute name="isDynamic" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="ArtefactType">
		<xs:complexType>
			<xs:attribute name="heirs" type="list-id"/>
			<xs:attribute name="id" use="required" type="id"/>
			<xs:attribute name="manual" type="xs:boolean"/>
			<xs:attribute name="parents" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="ScaleLevel">
		<xs:complexType>
			<xs:attribute name="bounds" use="required"/>
			<xs:attribute name="levelId" use="required" type="id"/>
			<xs:attribute name="rank" use="required"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Link">
		<xs:complexType>
			<xs:attribute name="id" use="required" type="id"/>
			<xs:attribute name="inArtefactTypes" type="list-id"/>
			<xs:attribute name="outArtefactTypes" type="list-id"/>
			<xs:attribute name="srcArtefactTypes" type="list-id"/>
			<xs:attribute name="dstArtefactTypes" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="ComputedLink">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="1" maxOccurs="1" ref="StartPath"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="NextPath"/>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="StartPath">
		<xs:complexType>
			<xs:attribute name="link" type="id"/>
			<xs:attribute name="scope" type="path-scope"/>
			<xs:attribute name="srcArtefactTypes" type="list-id"/>
			<xs:attribute name="dstArtefactTypes" type="list-id"/>
			<xs:attribute name="srcCondition"/>
			<xs:attribute name="dstCondition"/>
			<xs:attribute name="recurse" type="xs:boolean"/>
			<xs:attribute name="keepIntermediateLinks" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="NextPath">
		<xs:complexType>
			<xs:attribute name="link" type="id"/>
			<xs:attribute name="scope" type="path-scope"/>
			<xs:attribute name="dstArtefactTypes" type="list-id"/>
			<xs:attribute name="dstCondition"/>
			<xs:attribute name="recurse" type="xs:boolean"/>
			<xs:attribute name="keepIntermediateLinks" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
Download decision.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:simpleType name="id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="list-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="categories">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="elements">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Package"/>
				<xs:element ref="package"/>
				<xs:element ref="DecisionCriteria"/>
				<xs:element ref="DecisionCriterion"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	
	<xs:element name="Bundle" type="elements"/>
	<xs:element name="Package" type="elements"/>
	<xs:element name="package" type="elements"/>
	<xs:element name="DecisionCriteria" type="elements"/>
	
	<xs:element name="DecisionCriterion">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Triggers"/>
			</xs:sequence>
			<xs:attribute name="categories" type="categories"/>
			<xs:attribute name="dcId" use="required" type="id"/>
			<xs:attribute name="excludingTypes" type="list-id"/>
			<xs:attribute name="families" type="list-id"/>
			<xs:attribute name="roles" type="list-id"/>
			<xs:attribute name="targetArtefactTypes" use="required" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Triggers">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="Trigger"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Trigger">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="Test"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Test">
		<xs:complexType>
			<xs:attribute name="bounds" use="required"/>
			<xs:attribute name="descrId" type="id"/>
			<xs:attribute name="expr" use="required"/>
			<xs:attribute name="p0"/>
			<xs:attribute name="p1"/>
			<xs:attribute name="p2"/>
			<xs:attribute name="p3"/>
			<xs:attribute name="p4"/>
			<xs:attribute name="p5"/>
			<xs:attribute name="p6"/>
			<xs:attribute name="p7"/>
			<xs:attribute name="p8"/>
			<xs:attribute name="p9"/>
			<xs:attribute name="suspect"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
Download description.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:complexType name="elements">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="Package"/>
				<xs:element ref="package"/>
				<xs:element ref="Properties"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	
	<xs:element name="Bundle">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="Package"/>
					<xs:element ref="package"/>
					<xs:element ref="Properties"/>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="available"/>
			<xs:attribute name="default"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="Package" type="elements"/>
	<xs:element name="package" type="elements"/>
	
	<xs:element name="Properties">
		<xs:complexType>
			<xs:attribute name="src" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
Download exports.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:simpleType name="type-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z0-9_]*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:element name="Bundle">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="Role" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="Role">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="Export" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>

	<xs:element name="Export">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="ExportScript" />
			</xs:sequence>
			<xs:attribute name="type" use="required" type="type-id" />
		</xs:complexType>
	</xs:element>

	<xs:element name="ExportScript">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="arg" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="script" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>

	<xs:element name="arg">
		<xs:complexType>
			<xs:attribute name="value" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>

</xs:schema>
Download highlights.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

	<xs:simpleType name="id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z0-9_]*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="measure-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='([BD].)?[A-Z0-9_]*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="info-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z0-9_]*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="indicator-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='([I].)?[A-Z0-9_]*' />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="bounds-type">
		<xs:restriction base="xs:string">
			<xs:pattern value='[\[\]]((-)*[0-9](\.[0-9]+)?)*;((-)*[0-9](.[0-9]+)?)*[\[\]]' />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="top-order">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ASC" />
			<xs:enumeration value="DESC" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="result-size">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:positiveInteger" />
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="*" />
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>

	<xs:simpleType name="header-display-type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="MNEMONIC" />
			<xs:enumeration value="NAME" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="display-type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="VALUE" />
			<xs:enumeration value="RANK" />
			<xs:enumeration value="ICON" />
			<xs:enumeration value="DATE" />
			<xs:enumeration value="DATETIME" />
			<xs:enumeration value="TIME" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="date-style">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SHORT" />
			<xs:enumeration value="MEDIUM" />
			<xs:enumeration value="DEFAULT" />
			<xs:enumeration value="LONG" />
			<xs:enumeration value="FULL" />
		</xs:restriction>
	</xs:simpleType>

	<xs:element name="Bundle">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="Role" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="Role">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="Filters" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="preSelectedType" use="optional" type="xs:string" />
		</xs:complexType>
	</xs:element>

	<xs:element name="Filters">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element ref="TopArtefacts" />
					<xs:element name="TopDeltaArtefacts" type="top-artefacts" />
					<xs:element ref="TopBorderlineArtefacts" />
					<xs:element name="TopNewArtefacts" type="top-artefacts" />
					<xs:element ref="TopModifiedArtefacts" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="type" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>

	<xs:element name="TopArtefacts">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id" />
			<xs:attribute name="name" use="optional" type="xs:string" />
			<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
			<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
			<xs:attribute name="measureId" use="optional" default="LEVEL" type="measure-id" />
			<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
			<xs:attribute name="altMeasureId" use="optional" type="measure-id" />
			<xs:attribute name="altOrder" use="optional" type="top-order" />
			<xs:attribute name="resultSize" use="required" type="result-size" />
		</xs:complexType>
	</xs:element>

	<xs:element name="TopBorderlineArtefacts">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id" />
			<xs:attribute name="name" use="optional" type="xs:string" />
			<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
			<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
			<xs:attribute name="indicatorId" use="optional" default="LEVEL" type="indicator-id" />
			<xs:attribute name="minLevel" use="optional" type="xs:string" />
			<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
			<xs:attribute name="resultSize" use="required" type="result-size" />
		</xs:complexType>
	</xs:element>

	<xs:element name="TopModifiedArtefacts">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id" />
			<xs:attribute name="name" use="optional" type="xs:string" />
			<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
			<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
			<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
			<xs:attribute name="resultSize" use="required" type="result-size" />
		</xs:complexType>
	</xs:element>

	<xs:element name="Column">
		<xs:complexType>
			<xs:attribute name="measureId" use="optional" type="measure-id" />
			<xs:attribute name="infoId" use="optional" type="info-id" />
			<xs:attribute name="indicatorId" use="optional" type="indicator-id" />
			<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
			<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
			<xs:attribute name="headerDisplayType" use="optional" default="NAME" type="header-display-type" />
			<xs:attribute name="displayType" use="optional" default="VALUE" type="display-type" />
			<xs:attribute name="decimals" use="optional" default="2" type="xs:integer" />
			<xs:attribute name="dateStyle" use="optional" default="DEFAULT" type="date-style" />
			<xs:attribute name="timeStyle" use="optional" default="DEFAULT" type="date-style" />
			<xs:attribute name="datePattern" use="optional" type="xs:string" />
			<xs:attribute name="suffix" use="optional" type="xs:string" />
		</xs:complexType>
	</xs:element>

	<xs:element name="Where">
		<xs:complexType>
			<xs:attribute name="measureId" use="optional" type="measure-id" />
			<xs:attribute name="infoId" use="optional" type="info-id" />
			<xs:attribute name="value" use="optional" type="xs:string" />
			<xs:attribute name="bounds" use="optional" type="bounds-type" />
		</xs:complexType>
	</xs:element>

	<xs:element name="OrderBy">
		<xs:complexType>
			<xs:attribute name="measureId" use="required" type="measure-id" />
			<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
		</xs:complexType>
	</xs:element>

	<xs:complexType name="top-artefacts">
		<xs:sequence maxOccurs="unbounded">
			<xs:choice>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="id" use="required" type="id" />
		<xs:attribute name="name" use="optional" type="xs:string" />
		<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
		<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
		<xs:attribute name="measureId" use="optional" default="LEVEL" type="measure-id" />
		<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
		<xs:attribute name="resultSize" use="required" type="result-size" />
	</xs:complexType>

</xs:schema>
Download properties.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:simpleType name="id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="list-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:complexType name="elements">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="package"/>
				<xs:element ref="hideMeasure"/>
				<xs:element ref="findingsTab"/>
				<xs:element ref="actionItemsTab"/>
				<xs:element ref="rulesEdition"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>

	<xs:element name="bundle" type="elements"/>
	<xs:element name="package" type="elements"/>
	
	<xs:element name="hideMeasure">
		<xs:complexType>
			<xs:attribute name="path" use="required"/>
			<xs:attribute name="targetArtefactTypes" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="findingsTab">
		<xs:complexType>
			<xs:attribute name="orderBy" type="list-id"/>
			<xs:attribute name="hideColumns" type="list-id"/>
			<xs:attribute name="artefactFilters"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="actionItemsTab">
		<xs:complexType>
			<xs:attribute name="orderBy" type="list-id"/>
			<xs:attribute name="hideColumns" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="rulesEdition">
		<xs:complexType>
			<xs:attribute name="scales" use="required" type="list-id"/>
		</xs:complexType>
	</xs:element>
</xs:schema>
Download tutorials.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	
	<xs:simpleType name="external-id">
		<xs:restriction base="xs:string">
			<xs:pattern value="[A-Z]{1}[A-Z0-9_]*" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="positive-integer">
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]+" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="opacity">
		<xs:restriction base="xs:string">
			<xs:pattern value='(0|1){1}\.?[0-9]{0,2}' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="actions">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EXPAND_PORTFOLIO_TREE" />
			<xs:enumeration value="EXPAND_ARTEFACT_TREE" />
			<xs:enumeration value="EXPAND_MEASURE_TREE" />
			<xs:enumeration value="COLLAPSE_PORTFOLIO_TREE" />
			<xs:enumeration value="COLLAPSE_ARTEFACT_TREE" />
			<xs:enumeration value="COLLAPSE_MEASURE_TREE" />
			<xs:enumeration value="SELECT_MODEL" />
			<xs:enumeration value="SELECT_PROJECT" />
			<xs:enumeration value="SELECT_ARTEFACT" />
			<xs:enumeration value="SELECT_ARTEFACT_LEAF" />
			<xs:enumeration value="CLOSE_MEASURE_POPUP" />
			<xs:enumeration value="SELECT_MEASURE" />
			<xs:enumeration value="SHOW_REVIEW_SET" />
			<xs:enumeration value="SHOW_PORTFOLIO_TREE" />
			<xs:enumeration value="SHOW_DASHBOARD_TAB" />
			<xs:enumeration value="SHOW_ACTION_ITEMS_TAB" />
			<xs:enumeration value="SHOW_HIGHLIGHTS_TAB" />
			<xs:enumeration value="SHOW_FINDINGS_TAB" />
			<xs:enumeration value="SHOW_REPORTS_TAB" />
			<xs:enumeration value="SHOW_FORMS_TAB" />
			<xs:enumeration value="SHOW_INDICATORS_TAB" />
			<xs:enumeration value="SHOW_MEASURES_TAB" />
			<xs:enumeration value="SHOW_COMMENTS_TAB" />
			<xs:enumeration value="SHOW_ACTION_ITEMS_ADVANCED_SEARCH" />
			<xs:enumeration value="EXPAND_ACTION_ITEM" />
			<xs:enumeration value="SHOW_FINDINGS_ADVANCED_SEARCH" />
			<xs:enumeration value="SELECT_FINDING" />
			<xs:enumeration value="SELECT_FINDING_ARTEFACT" />
			<xs:enumeration value="EXPAND_FINDING" />
			<xs:enumeration value="EXPAND_ATTRIBUTE" />
			<xs:enumeration value="SWITCH_INDICATORS_PAGE" />
			<xs:enumeration value="SWITCH_MEASURES_PAGE" />
			<xs:enumeration value="SWITCH_COMMENTS_PAGE" />
			<xs:enumeration value="CLOSE_CHART_POPUP" />
			<xs:enumeration value="OPEN_CHART_POPUP" />
			<xs:enumeration value="OPEN_MODEL_CHART_POPUP" />
			<xs:enumeration value="SELECT_DESCR_TAB" />
			<xs:enumeration value="SELECT_COMMENTS_TAB" />
			<xs:enumeration value="SELECT_FAVORITES_TAB" />
			<xs:enumeration value="COMPARE_CHART" />
			<xs:enumeration value="QUIT_COMPARATIVE_MODE" />
			<xs:enumeration value="QUIT_FULLDISPLAY_MODE" />
			<xs:enumeration value="CLOSE_ARTEFACT_TREE_FILTER" />
			<xs:enumeration value="SHOW_ARTEFACT_TREE_FILTER" />
			<xs:enumeration value="OPEN_TABLE" />
			<xs:enumeration value="CHANGE_PAGE" />
			<xs:enumeration value="CREATE_NEW_PROJECT" />
			<xs:enumeration value="SELECT_WIZARD" />
			<xs:enumeration value="VALIDATE_WIZARD" />
			<xs:enumeration value="VALIDATE_INFORMATION" />
			<xs:enumeration value="VALIDATE_DP_OPTIONS" />
			<xs:enumeration value="RUN_PROJECT_CREATION" />
			<xs:enumeration value="OPEN_SUB_MENU_HELP" />
			<xs:enumeration value="CLOSE_TUTORIAL_POPUP" />
			<xs:enumeration value="OPEN_TUTORIAL_POPUP" />
			<xs:enumeration value="NONE" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="alias">
		<xs:restriction base="xs:string">
			<xs:enumeration value="CUSTOM" />
			<xs:enumeration value="BODY" />
			<xs:enumeration value="BREADCRUMBS" />
			<xs:enumeration value="MENU_HELP" />
			<xs:enumeration value="SUB_MENU_HELP" />
			<xs:enumeration value="SUB_MENU_HELP_ROW" />
			<xs:enumeration value="SUB_MENU_HELP_ROW_FIRST" />
			<xs:enumeration value="TUTORIAL_POPUP" />
			<xs:enumeration value="TUTORIAL_POPUP_MODEL" />
			<xs:enumeration value="TUTORIAL_POPUP_MODEL_FIRST" />
			<xs:enumeration value="TUTORIAL_POPUP_TUTORIAL_NAME" />
			<xs:enumeration value="TUTORIAL_POPUP_TUTORIAL_NAME_FIRST" />
			<xs:enumeration value="TUTORIAL_POPUP_TUTORIAL_DESCR" />
			<xs:enumeration value="TUTORIAL_POPUP_TUTORIAL_DESCR_FIRST" />
			<xs:enumeration value="EXPLORER" />
			<xs:enumeration value="DRILLDOWN" />
			<xs:enumeration value="EXPLORER_TAB" />
			<xs:enumeration value="ARTEFACT_TREE" />
			<xs:enumeration value="MEASURE_TREE" />
			<xs:enumeration value="EXPLORER_HEADER" />
			<xs:enumeration value="PORTFOLIO_HEADER" />
			<xs:enumeration value="ARTEFACT_TREE_SEARCH" />
			<xs:enumeration value="ARTEFACT_TREE_FILTER" />
			<xs:enumeration value="REVIEW_SET" />
			<xs:enumeration value="PORTFOLIO_TREE" />
			<xs:enumeration value="PORTFOLIO_TREE_PROJECT" />
			<xs:enumeration value="PORTFOLIO_TREE_PROJECT_FIRST" />
			<xs:enumeration value="MODEL_DASHBOARD" />
			<xs:enumeration value="MODEL_CHARTS" />
			<xs:enumeration value="MODEL_CHART_FIRST" />
			<xs:enumeration value="MODEL_TABLE" />
			<xs:enumeration value="MODEL_TABLE_ROW_FIRST" />
			<xs:enumeration value="MODEL_CHART" />
			<xs:enumeration value="MODEL_TABLE_ROW" />
			<xs:enumeration value="MODEL_CHART_POPUP" />
			<xs:enumeration value="MODEL_CHART_POPUP_GRAPH" />
			<xs:enumeration value="MODEL_CHART_POPUP_PREVIOUS_ARROW" />
			<xs:enumeration value="MODEL_CHART_POPUP_NEXT_ARROW" />
			<xs:enumeration value="MODEL_CHART_POPUP_NAV_BAR" />
			<xs:enumeration value="MODEL_CHART_POPUP_ASIDE" />
			<xs:enumeration value="MODEL_CHART_POPUP_ASIDE_HEAD" />
			<xs:enumeration value="MODEL_CHART_POPUP_DESCR" />
			<xs:enumeration value="FILTER_POPUP" />
			<xs:enumeration value="FILTER_LEVEL" />
			<xs:enumeration value="FILTER_TYPE" />
			<xs:enumeration value="FILTER_EVOLUTION" />
			<xs:enumeration value="FILTER_STATUS" />
			<xs:enumeration value="ARTEFACT_TREE_LEAF" />
			<xs:enumeration value="MEASURE_TREE_LEAF" />
			<xs:enumeration value="MENU_INDICATOR_ARTEFACT" />
			<xs:enumeration value="DASHBOARD " />
			<xs:enumeration value="SCORECARD" />
			<xs:enumeration value="KPI" />
			<xs:enumeration value="CHARTS" />
			<xs:enumeration value="TABLES" />
			<xs:enumeration value="CHART_FIRST" />
			<xs:enumeration value="LINE" />
			<xs:enumeration value="CHART" />
			<xs:enumeration value="CHART_FIRST" />
			<xs:enumeration value="TABLE" />
			<xs:enumeration value="TABLE_FIRST" />
			<xs:enumeration value="MEASURE_POPUP" />
			<xs:enumeration value="MEASURE_POPUP_CONTENT" />
			<xs:enumeration value="MEASURE_POPUP_LEVELS" />
			<xs:enumeration value="MEASURE_POPUP_ROW_FIRST" />
			<xs:enumeration value="MEASURE_POPUP_ROW" />
			<xs:enumeration value="CHART_POPUP" />
			<xs:enumeration value="CHART_POPUP_GRAPH" />
			<xs:enumeration value="CHART_POPUP_COMPARE_OPTION" />
			<xs:enumeration value="CHART_POPUP_PREVIOUS_ARROW" />
			<xs:enumeration value="CHART_POPUP_NEXT_ARROW" />
			<xs:enumeration value="CHART_POPUP_NAV_BAR" />
			<xs:enumeration value="CHART_POPUP_ASIDE" />
			<xs:enumeration value="CHART_POPUP_ASIDE_HEAD" />
			<xs:enumeration value="CHART_POPUP_DESCR" />
			<xs:enumeration value="CHART_POPUP_COMMENTS" />
			<xs:enumeration value="CHART_POPUP_FAVORITES" />
			<xs:enumeration value="CHART_POPUP_COMPARATIVE_CHART" />
			<xs:enumeration value="ACTION_ITEMS" />
			<xs:enumeration value="ACTION_ITEMS_TABLE" />
			<xs:enumeration value="ACTION_ITEMS_TABLE_HEAD" />
			<xs:enumeration value="ACTION_ITEMS_TABLE_HEAD_CHECK" />
			<xs:enumeration value="ACTION_ITEMS_ADD_REVIEW_SET" />
			<xs:enumeration value="ACTION_ITEMS_EXPORT_LIST" />
			<xs:enumeration value="ACTION_ITEMS_EXPORT_BUTTON" />
			<xs:enumeration value="ACTION_ITEMS_SEARCH" />
			<xs:enumeration value="ACTION_ITEMS_ROW" />
			<xs:enumeration value="ACTION_ITEMS_REASON" />
			<xs:enumeration value="ACTION_ITEMS_ADVANCED_SEARCH" />
			<xs:enumeration value="ACTION_ITEMS_ADVANCED_SEARCH_SELECT_FIRST" />
			<xs:enumeration value="ACTION_ITEMS_ADVANCED_SEARCH_SELECT" />
			<xs:enumeration value="HIGHLIGHTS" />
			<xs:enumeration value="HIGHLIGHTS_TABLE" />
			<xs:enumeration value="HIGHLIGHTS_TABLE_HEAD" />
			<xs:enumeration value="HIGHLIGHTS_TABLE_HEAD_CHECK" />
			<xs:enumeration value="HIGHLIGHTS_SEARCH" />
			<xs:enumeration value="HIGHLIGHTS_SEARCH_FILTER" />
			<xs:enumeration value="HIGHLIGHTS_SEARCH_TYPE" />
			<xs:enumeration value="HIGHLIGHTS_EXPORT_BUTTON" />
			<xs:enumeration value="HIGHLIGHTS_ADD_REVIEW_SET" />
			<xs:enumeration value="HIGHLIGHTS_ROW_FIRST" />
			<xs:enumeration value="FINDINGS" />
			<xs:enumeration value="FINDINGS_TABLE" />
			<xs:enumeration value="FINDINGS_TABLE_HEAD" />
			<xs:enumeration value="FINDINGS_SEARCH" />
			<xs:enumeration value="FINDINGS_INFO" />
			<xs:enumeration value="FINDINGS_RULE" />
			<xs:enumeration value="FINDINGS_ARTEFACT" />
			<xs:enumeration value="FINDINGS_ROW_FIRST" />
			<xs:enumeration value="FINDINGS_ADVANCED_SEARCH" />
			<xs:enumeration value="FINDINGS_ADVANCED_SEARCH_SELECT_FIRST" />
			<xs:enumeration value="FINDINGS_ADVANCED_SEARCH_SELECT" />
			<xs:enumeration value="REPORTS" />
			<xs:enumeration value="REPORTS_REGION" />
			<xs:enumeration value="REPORTS_OPTIONS" />
			<xs:enumeration value="REPORTS_OPTION_TEMPLATE" />
			<xs:enumeration value="REPORTS_OPTION_FORMAT" />
			<xs:enumeration value="REPORTS_OPTION_SYNTHETIC_VIEW" />
			<xs:enumeration value="REPORTS_CREATE" />
			<xs:enumeration value="EXPORT_REGION" />
			<xs:enumeration value="EXPORT_OPTIONS" />
			<xs:enumeration value="EXPORT_CREATE" />
			<xs:enumeration value="FORMS" />
			<xs:enumeration value="FORMS_ATTRIBUTE" />
			<xs:enumeration value="FORMS_ATTRIBUTE_FIELD" />
			<xs:enumeration value="FORMS_ATTRIBUTE_COMMENT" />
			<xs:enumeration value="FORMS_HISTORY" />
			<xs:enumeration value="FORMS_BLOCK" />
			<xs:enumeration value="INDICATORS" />
			<xs:enumeration value="INDICATORS_TABLE" />
			<xs:enumeration value="INDICATORS_TABLE_HEAD" />
			<xs:enumeration value="INDICATORS_ROW" />
			<xs:enumeration value="MEASURES" />
			<xs:enumeration value="MEASURES_TABLE" />
			<xs:enumeration value="MEASURES_TABLE_HEAD" />
			<xs:enumeration value="MEASURES_ROW" />
			<xs:enumeration value="COMMENTS" />
			<xs:enumeration value="COMMENTS_TABLE" />
			<xs:enumeration value="COMMENTS_TABLE_HEAD" />
			<xs:enumeration value="COMMENTS_ROW" />
			<xs:enumeration value="CREATE_PROJECT_BUTTON" />
			<xs:enumeration value="WIZARD_PANEL" />
			<xs:enumeration value="WIZARD_ROW" />
			<xs:enumeration value="WIZARD_ROW_FIRST" />
			<xs:enumeration value="WIZARD_NEXT_BUTTON" />
			<xs:enumeration value="GENERAL_INFORMATION" />
			<xs:enumeration value="PROJECT_IDENTIFICATION_BLOCK	" />
			<xs:enumeration value="GENERAL_INFO_BLOCK" />
			<xs:enumeration value="GENERAL_INFO_ROW" />
			<xs:enumeration value="PROJECT_NEXT_BUTTON" />
			<xs:enumeration value="DP_PANEL" />
			<xs:enumeration value="DP_PANEL_BLOCK" />
			<xs:enumeration value="DP_PANEL_ROW" />
			<xs:enumeration value="DP_PANEL_NEXT_BUTTON" />
			<xs:enumeration value="CONFIRMATION_PANEL" />
			<xs:enumeration value="SUMMARY" />
			<xs:enumeration value="CONFIRMATION_PANEL_PARAMETERS" />
			<xs:enumeration value="RUN_NEW_PROJECT_BUTTON" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="colors">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:pattern value="#[A-Fa-f0-9]{6}" />
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:pattern value="(rgb|RGB)\([0-9]{3},[0-9]{3},[0-9]{3}\)" />
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="aqua" />
					<xs:enumeration value="black" />
					<xs:enumeration value="blue" />
					<xs:enumeration value="gray" />
					<xs:enumeration value="lime" />
					<xs:enumeration value="green" />
					<xs:enumeration value="maroon" />
					<xs:enumeration value="navy" />
					<xs:enumeration value="olive" />
					<xs:enumeration value="orange" />
					<xs:enumeration value="purple" />
					<xs:enumeration value="red" />
					<xs:enumeration value="silver" />
					<xs:enumeration value="teal" />
					<xs:enumeration value="white" />
					<xs:enumeration value="yellow" />
					<xs:enumeration value="transparent" />
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	
	<xs:simpleType name="text-positions">
		<xs:restriction base="xs:string">
			<xs:enumeration value="INTERNAL" />
			<xs:enumeration value="EXTERNAL" />
			<xs:enumeration value="LEFT" />
			<xs:enumeration value="RIGHT" />
			<xs:enumeration value="TOP" />
			<xs:enumeration value="BOTTOM" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="phase-type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="PARALLEL" />
			<xs:enumeration value="PROGRESSIVE" />
			<xs:enumeration value="SEQUENTIAL" />
			<xs:enumeration value="FREE" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:element name="item">
		<xs:complexType>
			<xs:attribute name="element" use="required" type="external-id" />
			<xs:attribute name="param" use="optional" default="" type="xs:string" />
			<xs:attribute name="descrId" use="required" type="xs:string" />
			<xs:attribute name="textPosition" use="optional" default="EXTERNAL" type="text-positions" />
			<xs:attribute name="maskColor" use="optional" default="#2aa0d5" type="colors" />
			<xs:attribute name="maskOpacity" use="optional" default="0.8" type="opacity" />
			<xs:attribute name="textSize" use="optional" default="25" type="positive-integer" />
			<xs:attribute name="textColor" use="optional" default="white" type="colors" />
		</xs:complexType>
	</xs:element>
	
	<xs:element name="preAction">
		<xs:complexType>
			<xs:attribute name="action" use="required" type="actions" />
			<xs:attribute name="param" use="optional" default="" type="xs:string" />
			<xs:attribute name="clickIndicator" use="optional" default="false" type="xs:boolean" />
		</xs:complexType>
	</xs:element>
	
	<xs:element name="phase">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="item" />
					<xs:element minOccurs="0" maxOccurs="unbounded" ref="preAction" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="element" use="required" type="external-id" />
			<xs:attribute name="param" use="optional" default="" type="xs:string" />
			<xs:attribute name="type" use="optional" default="PARALLEL" type="phase-type" />
			<xs:attribute name="textPosition" use="optional" default="EXTERNAL" type="text-positions" />
			<xs:attribute name="textSize" use="optional" default="25" type="positive-integer" />
			<xs:attribute name="textColor" use="optional" default="white" type="colors" />
			<xs:attribute name="maskColor" use="optional" default="#2aa0d5" type="colors" />
			<xs:attribute name="maskOpacity" use="optional" default="0.6" type="opacity" />
		</xs:complexType>
	</xs:element>
	
	<xs:element name="help">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="phase" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="external-id" />
			<xs:attribute name="descrId" use="required" type="external-id" />
			<xs:attribute name="opacity" use="optional" default="0.4" type="opacity" />
			<xs:attribute name="textPosition" use="optional" default="EXTERNAL" type="text-positions" />
			<xs:attribute name="textSize" use="optional" default="25" type="positive-integer" />
			<xs:attribute name="textColor" use="optional" default="white" type="colors" />
			<xs:attribute name="maskColor" use="optional" default="#2aa0d5" type="colors" />
			<xs:attribute name="maskOpacity" use="optional" default="0.6" type="opacity" />
			<xs:attribute name="firstConnexionGroup" use="optional" default="" type="xs:string" />
			<xs:attribute name="icon" use="optional" default="" type="xs:string" />
		</xs:complexType>
	</xs:element>
</xs:schema>
Download wizards.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

	<xs:simpleType name="id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="list-id">
		<xs:restriction base="xs:string">
			<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="alignment">
		<xs:restriction base="id">
			<xs:enumeration value="LEFT"/>
			<xs:enumeration value="RIGHT"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="project-status">
		<xs:restriction base="id">
			<xs:enumeration value="IGNORE"/>
			<xs:enumeration value="WARNING"/>
			<xs:enumeration value="ERROR"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:element name="Bundle">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="tags"/>
					<xs:element ref="wizard"/>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="tags">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="tag"/>
			</xs:sequence>
			<xs:attribute name="textAlign" type="alignment"/>
			<xs:attribute name="valueAlign" type="alignment"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="tag">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="value"/>
			</xs:sequence>
			<xs:attribute name="defaultValue"/>
			<xs:attribute name="displayType"/> <!-- Not display-type because it is case insensitive -->
			<xs:attribute name="group"/>
			<xs:attribute name="measureId" use="required" type="id"/>
			<xs:attribute name="name"/>
			<xs:attribute name="placeholder"/>
			<xs:attribute name="required" type="xs:boolean"/>
			<xs:attribute name="review" type="xs:boolean"/>
			<xs:attribute name="suffix"/>
			<xs:attribute name="targetArtefactTypes" type="list-id"/>
			<xs:attribute name="textAlign" type="alignment"/>
			<xs:attribute name="type" use="required"/> <!-- Not tag-type because it is case insensitive -->
			<xs:attribute name="valueAlign" type="alignment"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="value">
		<xs:complexType>
			<xs:attribute name="key" use="required"/>
			<xs:attribute name="value" use="required" type="xs:decimal"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="wizard">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="tags"/>
					<xs:element ref="milestones"/>
					<xs:element ref="repositories"/>
					<xs:element ref="tools"/>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="autoBaseline" type="xs:boolean"/>
			<xs:attribute name="group"/>
			<xs:attribute name="groups"/>
			<xs:attribute name="hideRulesEdition" type="xs:boolean"/>
			<xs:attribute name="img"/>
			<xs:attribute name="users"/>
			<xs:attribute name="versionPattern"/>
			<xs:attribute name="wizardId" use="required" type="id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="milestones">
		<xs:complexType>
			<xs:sequence minOccurs="0">
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="goals"/>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="milestone"/>
			</xs:sequence>
			<xs:attribute name="canCreateMilestone" type="xs:boolean"/>
			<xs:attribute name="canCreateGoal" type="xs:boolean"/>
			<xs:attribute name="hide" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="goals">
		<xs:complexType>
			<xs:sequence minOccurs="0">
				<xs:element ref="goal"/>
			</xs:sequence>
			<xs:attribute name="displayableFamilies" use="required" type="list-id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="goal">
		<xs:complexType>
			<xs:attribute name="mandatory" use="required" type="xs:boolean"/>
			<xs:attribute name="measureId" use="required" type="id"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="milestone">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="defaultGoal"/>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="id"/>
			<xs:attribute name="mandatory" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="defaultGoal">
		<xs:complexType>
			<xs:attribute name="measureId" use="required" type="id"/>
			<xs:attribute name="value" use="required" type="xs:integer"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="repositories">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" ref="repository"/>
			</xs:sequence>
			<xs:attribute name="all" use="required" type="xs:boolean"/>
			<xs:attribute name="hide" use="required" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="repository">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" ref="param"/>
			</xs:sequence>
			<xs:attribute name="checkedInUI" type="xs:boolean"/>
			<xs:attribute name="name" use="required"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="tools">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="tool"/>
			</xs:sequence>
			<xs:attribute name="all" type="xs:boolean"/>
			<xs:attribute name="expandedInUI" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="tool">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
			</xs:sequence>
			<xs:attribute name="checkedInUI" type="xs:boolean"/>
			<xs:attribute name="expandedInUI" type="xs:boolean"/>
			<xs:attribute name="name" use="required"/>
			<xs:attribute name="optional" type="xs:boolean"/>
			<xs:attribute name="projectStatusOnFailure" type="project-status"/>
			<xs:attribute name="projectStatusOnWarning" type="project-status"/>
		</xs:complexType>
	</xs:element>
	
	<xs:element name="param">
		<xs:complexType>
			<xs:attribute name="availableChoices"/>
			<xs:attribute name="name" use="required"/>
			<xs:attribute name="value" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>

Appendix C. Licences

Squoring Software

End-User License and Support Agreement

Please read this document carefully. This is a legal agreement by which Squoring Technologies SAS ("Squoring") permits use of its Software products ("Squoring Software").  The user ("Customer") accepts the terms of this Agreement by taking any or all of the following actions: (a) by signing an order form or purchase order referencing either this Agreement or a Technical and Financial proposal issued by Squoring (an "Order Form"), (b) by opening the package containing the Software, and/or (c) by installing the Software on a computer ("Target Hardware").  

CUSTOMER CONSENTS TO BE LEGALLY BOUND BY THESE TERMS. IF CUSTOMER DOES NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, CUSTOMER MUST NOT USE THE SOFTWARE AND MUST RETURN IT, INCLUDING ANY PRINTED ASSOCIATED DOCUMENTATION, TO SQUORING WITHIN FOURTEEN (14) DAYS TO RECEIVE A FULL REFUND OF THE PURCHASE PRICE.


1)	DEFINITION
(a) "Squoring Software" includes (i) the Software identified in an Order Form or delivered with this Agreement; (ii) any authorized copies thereof; (iii) all related documentation ("Documentation") delivered with or included in that software; and (iv) any update to that software that Customer may receive from Squoring.
(b) Squoring Software is based on a traditional 3-tier architecture consisting of:
. a database and a data folder for storing project and user management data
. an application server running the "Squore Server Software" and the "License Server Software"
. a client front-end accessible through a Web Browser and a Command Line Interface to interact with the application server from a client machine
(c) Target hardware ("Target Hardware") is uniquely identified by the hardware specification and the operating system running on it.


2)	LICENSE
Squoring grants to Customer, and Customer accepts from Squoring, a non-exclusive and non-transferable right and license to use the Squoring Software that is specified in the Order Form and/or that accompanies this Agreement, but only (i) in accordance with the related Documentation, (ii) subject to Customer's payment of applicable license fees and (iii) subject to the terms and conditions specified below.
Customer agrees that Customer does not have, and does not hereby acquire, any title or rights of ownership in any Squoring Software or, except for the license rights hereby granted, any right to use, copy, transfer or disclose all or any portion of any Squoring Software. The Squoring Software is protected by copyright laws and international treaties.  


3)	FEES
The fees for the license under this Agreement are set forth in the applicable Order Form or, if no Order Form exists, in the applicable Technical and Financial proposal  issued by Squoring, or, if no proposal exists, then in accordance with Squoring current list prices. 


4)	USE
(a)	Unless otherwise stated in a special agreement, all dissemination or commercial exploitation of Squoring Software results is strictly forbidden. 
(b)	The license granted by this Agreement is a license under which a maximum number of active users and projects specified in the Order Form may use the Squoring Software.  An "Active User" is a physical user registered in the Squoring Software database.  Active Users are not shared among several Squoring software databases. A user is active if any activity has been recorded by the Squore Server Software in the past 6 months.  Activities include remote project creation, viewing of analysis results, and e-mail notification.
(c)	The management and regulation of Active Users is managed by the License Server Software hosted on the Target hardware designated by the Customer. 
(d)	Except for continuous integration purpose, it is strictly forbidden to share the same Squoring Software login between different physical users.
(e)	Customer will ensure that at least one of its employees has completed the two days on-site training course "Administrating Squoring software" given by a Squoring Software certified trainer, and that such trained employee(s) are the people within Customer's organization who are responsible for interactions with Squoring on maintenance and support matters.
(f)	Customer may make a reasonable number of back-up or archival copies of the Software. Customer will reproduce all confidentiality and proprietary notices on each of these copies and maintain an accurate record of the location of each of these copies.
(g)	Customer will not:
. Reverse compile, disassemble, or otherwise reverse engineer any Squoring Software, or allow anyone else to do so (except only to the extent such prohibition is contrary to applicable law). 
. Remove or destroy any proprietary markings or legends or any encrypted license keys or similar security devices placed upon or contained in any Squoring Software.
. Modify or adapt the Squoring Software or create a derivative work based on or incorporate the Squoring Software into or with other software.
. Unless otherwise stated in a special agreement, distribute, sublicense, share, display, or in any manner make the Squoring Software available to any third party, with or without compensation.
. Use all or any part of the Squoring Software to create other software a principal purpose of which is to perform the same or similar functions as, or to replace any component of, the Squoring Software. 


5.  MAINTENANCE AND SUPPORT
(a) Depending on the type of licenses bought by the Customer, Squoring will provide support and maintenance services according to the following schedule:
i.	In case of perpetual licenses bought by Customer
. Maintenance fees will be charged in addition to the price of the purchase of the Squoring Software licenses. The annual initial amount of maintenance fees will be calculated on the basis of a 20% percentage of the net list price of the software licenses purchased by the Customer.
. After one year, Maintenance and Support services will be renewed by tacit agreement of the parties, for annual periods. Before the anniversary date of each license for which Support Services are in effect, Squoring shall advise the Customer of the applicable Maintenance and Support Service fees for the coming year.
. The termination of maintenance contract will be effective only by sending a registered letter with acknowledgement of receipt denouncing the contract at least 60 days before the end of the period of validity.
ii.	In case of software licenses subscription
If the license to use the software is subject to a periodic subscription, the maintenance cost for these licenses is included in the subscription price. The maintenance is so provided during all the duration of the subscription, and stops automatically at the end of the subscription validity.
(b) Conditions.  Maintenance and support services as defined hereafter in paragraph 5-(c) are applicable subject to the following conditions:
. Squoring Software is covered by a valid maintenance contract for all acquired Squoring software licenses.
. Squoring Software was not modified by the Customer.
. The version of the installed Squoring Software corresponds to one of the two latest annual major updates distributed by Squoring Technologies.
. Customer engages to comply with the normal use of the software, strictly comply with the instructions given by the Squoring Technologies and to respect all provisions in the present agreement.
. Customer shall nominate from among its staff a technical coordinator and an alternate coordinator at the Customer Site(s), with up to date knowledge of Squoring licensed products usage and sufficient technical knowledge to interact with Squoring support staff. In case of change of the coordinators, the Customer will provide written notification to Squoring Technologies.
(c) Maintenance and support services include:
. Assistance from support: the online support (hot line) is available during Squoring normal business hours from 9 am to 6 pm (Central European Time) to answer the questions of the technical coordinator when technical facts encountered in the use of the Squoring Software. Support will help to identify problems and provide, where appropriate, temporary fixing patches. Contact information for support is:
- support site: https://support.squoring.com 
- email: support@squoring.com
. Corrective maintenance: the corrective maintenance includes the development, to the extent commercially reasonable, of workarounds or program fixes for malfunctions submitted by Customer. Are considered as malfunctions recognized or reproducible defects resulting in distorted results compared to those defined in the software Manual and not coming from non-observance of the instructions of the said Manual. 
. Updates: updates include the delivery of successive versions of the software, being either due to bug fixes or to enhancements of performances or features (this delivery does not necessarily provide new additional features). Customer will destroy any prior version before installing a new update.
. Rehost: any change of "Target hardware" implies a change of license keys and shall be subject to the prior written authorization of Squoring and to the signature by the Customer of a letter of destruction of all the license files already installed.
d) Maintenance and support services do not include:
. Time spent, after request of the Customer by Squoring Technologies staff not directly attributable to maintenance services: search for non-reproducible anomalies, malfunction due to non-compliance with the Manual without the Software itself being an issue, unavailability of the system, operating activities prior to the intervention (such as preliminary backup ...).
. Installation of the Software by Squoring Technologies.
. Additional services which do not fall within the scope of maintenance services as defined above in paragraph 5-(c).
. On-site support: Squoring may offer on-site support to Customer at additional charges
e) Procedure for the submission of requests:
. To be taken into account, Customer requests shall be sent using the support site at https://support.squoring.com
. Customer agrees to give, in support of a request for correction due to an anomaly, any information likely to facilitate the search for the causes of this anomaly, and to give for free to Squoring Technologies an open access to its premises and development stations in the day and hours necessary to perform the contract, and to ensure the conservation, under the conditions of appropriate security and condition of the latest version, of the sources of programs in case of this is necessary to enable Squoring Technologies to perform its maintenance services.
. Regarding correction of anomalies, Squoring is committed to act as soon as possible to correct the anomalies detected. Squoring will transfer to the Customer either a technique to bypass the anomaly or a patch of necessary corrections or a new version of the software. 
. Any issues not resolved with the initial response will be investigated using the data provided. Below are the targeted response times for continued investigations.
-	Blocker: 1 day, daily update. A request is "blocking" when the incident has a significative impact with a risk of operating loss or when datas are corrupted. The significative impact is appreciated by Squoring Technologies.
-	Serious: 2 days, weekly update
-	Major: 3 days, monthly update
-	Minor: 1 week, monthly update
 (f) Limitations
. Squoring is expressly subject to an obligation of means.
. Squoring is not required to (i) develop and release any, or any particular type of enhancements or (ii) customize the enhancements to satisfy Customer's particular requirements. 
. The Updates will not include any upgrade or new version of the Products that Squoring decides, in its sole discretion, to make generally available as a separately priced item.
. Squoring will be released from any responsibility in case of breach by the Customer of any provision of this maintenance terms and conditions. 


6. WARRANTIES AND REMEDIES
(a) Limited Warranty. Squoring warrants that it has the right to (i) enter into this Agreement and (ii) grant the licenses hereunder. Squoring also warrants that the Squoring Software will perform substantially as described in the Documentation during a 90 days Warranty Period. Customer acknowledges that (i) the Products may not satisfy all of Customer's requirements and (ii) the use of the Products may not be uninterrupted or error-free.
(b) Remedies. Squoring or its representative will correct or replace any defective Software. Customer acknowledges that this paragraph sets forth Customer's exclusive remedy, and Squoring exclusive liability, for any breach of warranty or other duty related to the quality of the Products.
(c) Disclaimer. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR REQUIRED BY APPLICABLE LAW, ALL WARRANTIES, CONDITIONS, REPRESENTATIONS, INDEMNITIES AND GUARANTEES WITH RESPECT TO THE PRODUCTS, WHETHER EXPRESS OR IMPLIED, ARISING BY LAW, CUSTOM, PRIOR ORAL OR WRITTEN STATEMENTS BY SQUORING, ITS SQUORINGS OR REPRESENTATIVES OR OTHERWISE (INCLUDING, BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY, SATISFACTION AND FITNESS FOR A PARTICULAR PURPOSE) ARE HEREBY OVERRIDDEN, EXCLUDED AND DISCLAIMED.
IN NO EVENT SHALL THE AGGREGATE LIABILITY OF SQUORING TO CUSTOMER ON ACCOUNT OF ANY MATTER ARISING WITH RESPECT TO THE SQUORING SOFTWARE EXCEED THE LICENSE FEES PAID BY CUSTOMER UNDER THIS AGREEMENT.
(d)  Infringement Indemnity. If an action is brought against Customer claiming that the Product infringes a patent, trade secret or copyright, Squoring will defend Customer at Squoring expense and, subject to this Section, pay the damages and costs finally awarded against Customer in the infringement action, but only if (i) Customer notifies Squoring promptly upon learning that the claim might be asserted, (ii) Squoring has sole control over the defense of the claim and any negotiation for its settlement or compromise, and (iii) Customer takes no action that is contrary to Squoring interest. If a claim described above may be or has been asserted, Customer will permit Squoring, at Squoring option and expense, to (A) procure the right to continue using the Product, (B) replace or modify the Product to eliminate the infringement while providing functionally equivalent performance, or (C) accept the return of the Product and refund to Customer the License Fee actually paid to Squoring for such Product, less depreciation based on a 5-year straight-line-depreciation schedule.
Squoring shall have no indemnity obligation to Customer under this Section if the patent or copyright infringement claim results from (i) a correction or modification of the Product not provided by Squoring, (ii) the failure to promptly install an Update or Enhancement at Squoring direction with knowledge that installation thereof would have avoided the infringement or (iii) the combination of the Product with other non-Squoring software or (iv) any unauthorized use of the Squoring Software, or (v) any version of the Software other than the latest update offered by Squoring to Customer at no additional charge.


7. LIMITATION OF LIABILITY 
UNDER NO CIRCUMSTANCES WILL SQUORING OR ITS SQUORINGS BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, SPECIAL, PUNITIVE OR INCIDENTAL DAMAGES OR LOST PROFITS, WHETHER FORESEEABLE OR UNFORSEEABLE, BASED ON CUSTOMER'S CLAIMS OR THOSE OF ITS CUSTOMERS (INCLUDING, BUT NOT LIMITED TO, CLAIMS FOR LOSS OF DATA, GOODWILL, USE OF MONEY OR USE OF THE PRODUCTS, INTERRUPTION IN USE OR AVAILABILITY OF DATA, STOPPAGE OF OTHER WORK OR IMPAIRMENT OF OTHER ASSETS), ARISING OUT OF BREACH OR FAILURE OF EXPRESS OR IMPLIED WARRANTY, BREACH OF CONTRACT, MISREPRESENTATION, NEGLIGENCE, STRICT LIABILITY IN TORT OR OTHERWISE. IN NO EVENT WILL THE AGGREGATE LIABILITY WHICH SQUORING OR ITS SQUORINGS MAY INCUR IN ANY ACTION OR PROCEEDING EXCEED THE LICENSE FEES ACTUALLY PAID BY CUSTOMER FOR THE SPECIFIC PRODUCT THAT DIRECTLY CAUSED THE DAMAGE. THIS SECTION WILL NOT APPLY ONLY WHEN AND TO THE EXTENT THAT APPLICABLE LAW SPECIFICALLY REQUIRES LIABILITY, DESPITE THE FOREGOING EXCLUSION AND LIMITATION.


8. OWNERSHIP
All trademarks, service marks, patents, copyrights, trade secrets and other proprietary rights in or related to the Products are and will remain the exclusive property of Squoring, whether or not specifically recognized or perfected under local applicable law. Customer will not take any action that jeopardizes Squoring proprietary rights or acquire any right in the Products, except the limited use rights specified in Section 4. Squoring will own all rights in any copy, translation, modification, adaptation or derivation of the Products, including any improvement or development thereof.


9. CONFIDENTIALITY
(a) Confidentiality. Customer acknowledges that the Products constitute and incorporate confidential and proprietary information developed or acquired by or licensed to Squoring. Customer will take all reasonable precautions necessary to safeguard the confidentiality of the Products, including at a minimum those taken by Customer to protect Customer's own confidential information. Customer will not allow the removal or defacement of any confidentiality or proprietary notice placed on the Products. The placement of copyright notices on these items will not constitute publication or otherwise impair their confidential nature.
(b) Disclosure. Customer will not disclose, in whole or in part, the Products or any portion thereof or other information that has been designated as confidential to any individual, entity or other person, except to those of Customer's employees or consultants who require access for Customer's authorized use of the Products, provided such consultants agree in writing to comply with the use and non-disclosure restrictions applicable to the Products under this Agreement. Customer acknowledges that any unauthorized use or disclosure of the Products may cause irreparable damage to Squoring. If an unauthorized use or disclosure occurs, Customer will immediately notify Squoring and take, at Customer's expense, all steps which may be available to recover the Products and to prevent their subsequent unauthorized use or dissemination. Squoring agrees to take the same action regarding any information designated in writing as proprietary which it receives from Customer ("Customer Information"). 
(c) Limitation. Neither Squoring nor Customer will have any confidentiality obligation with respect to any portion of the Products or Customer Information that (i) the receiving party knew or independently developed before receiving such Products or Customer Information under this Agreement, (ii) the receiving party lawfully obtained from a third party under no confidentiality obligation, or (iii) became available to the public other than as a result of any act or omission by the receiving party or any of receiving party's employees or consultants.


10. TERMINATION
Customer may terminate this Agreement or any Order Form, without right to refund, by notifying Squoring of such termination and returning the Product and copies thereof to Squoring. Squoring may terminate this Agreement, upon reasonable notice and without judicial or administrative resolution, if Customer or any of Customer's employees or consultants breach any material term or condition hereof. This Agreement will terminate automatically if Customer becomes insolvent or enters into bankruptcy, suspension of payments, moratorium, or any other proceeding that relates to insolvency or protection or creditors' rights.
Upon the termination of this Agreement for any reason, all rights granted to Customer hereunder will cease, and Customer will stop using Squoring Software, return or destroy all copies and so certify to Squoring in writing. The provisions of Sections 6-8 will survive the termination of this Agreement.


11. INSPECTION
During the term of this Agreement, Squoring or its representative, if in receipt of credible evidence of non-compliance, may, upon prior notice to Customer, inspect the files, computer processors, equipment and facilities of Customer during normal working hours to verify Customer's compliance with this Agreement. While conducting such inspection, Squoring or its representative will be entitled to copy any item that Customer may possess in violation of this Agreement, without disruption of Squoring business and violation of Laws and Regulations.


12. ASSIGNMENT
Customer shall not assign, delegate or otherwise transfer this Agreement or any of its rights or obligations hereunder without Squoring prior approval which shall not he unreasonably withheld.


13. MISCELLANEOUS
. Any terms and conditions of any unilateral letter, memorandum, purchase order or other writing issued by Customer shall not be binding on Squoring. Any waiver or modification of this Agreement will not be effective unless executed in writing and signed by an authorized representative of Squoring and Customer. This Agreement will bind Customer's successors-in-interest.
. This Agreement will be governed by and interpreted in accordance with the laws of France. If any provision of this Agreement is held to be unenforceable, in whole or in part, such holding will not affect the validity of the other provisions of this Agreement, unless the Parties in good faith deem the unenforceable provision to be essential, in which case either Party may terminate this Agreement effective immediately upon notice to the other Party. This Agreement constitutes the complete and entire statement of all conditions and representations of the agreement between Squoring and Customer with respect to its subject matter and supersedes all prior writings or understandings. 
Redistributed Software						Version			License File
----------------------
Wildfly										10.1.0.Final	lgpl-2.1.txt
PostgreSQL									8.4				postgresql-bsd.txt
Perl										5.12.3			al.txt
TCL											8.5				tcltkl.txt,tcllib.txt
PhantomJS									2.1.1			bsd3.txt
			
Components				Sub component		Version			License File
----------
Richfaces									4.5.17			lgpl-2.1.txt
PostgreSQL JDBC Driver						42.0.0			bsd2.txt
Oracle JDBC driver							12.1.02			otn.txt
Omnifaces									2.6				apache-2.0.txt
ANTLR										3.1				antlr3.txt
JasperReports Library						4.8				lgpl-2.1.txt
Checkstyle									5.6				lgpl-2.1.txt
JTcl										2.8				jtcl.txt, amd.txt, itcl.txt, janino.txt, tcllib.txt, tcltk.txt, ucb.txt
log4j										1.2.17			apache-2.0.txt
Apache Commons			commons-lang3		3.1				apache-2.0.txt
Apache HttpComponents	httpclient			4.1.2			apache-2.0.txt
Apache HttpComponents	httpmime			4.1.2			apache-2.0.txt
Apache XML Graphics		batik-transcoder	1.7				apache-2.0.txt
Bouncy Castle			bcmail-jdk16		1.46			bouncy-castle.txt
com.beust				jcommander			1.48			apache-2.0.txt
com.google.collections	google-collections	1.0				apache-2.0.txt
com.googlecode.juniversalchardet	juniversalchardet	1.0.3	mpl1.1.txt
com.sun.mail			javax.mail			1.5.3			gf.txt
commons-cli				commons-cli			1.2				apache-2.0.txt
commons-collections		commons-collections	3.2.2			apache-2.0.txt
javax.enterprise		cdi-api				1.2				apache-2.0.txt
javax.validation		validation-api		1.1.0.Final		apache-2.0.txt
net.java.dev.jna		jna					4.1.0			lgpl-2.1.txt
net.sf.jsci				jsci				1.2				lgpl-2.1.txt
net.sf.saxon			saxon-xom			8.7				mpl1.0.txt
nux						nux					1.6				nux.txt
org.glassfish			javax.json			1.0.4			gf.txt
org.jdom				jdom2				2.0.5			jdom.txt
			
Resources									Version			License File
---------
CodeMirror									4.4.0			mit.txt
font-awesome								4.7.0			mit.txt, ofl-1.1.txt
JavaScript InfoVis Toolkit					2.0.1			mit.txt
jquery										1.12.3			jquery.txt
jquery-mobile								1.4.2			jquery-mobile.txt
jquery-ui-resizable							1.11.4			mit.txt, jquery.txt
notify.js									0.4.2			mit.txt
splitter.js									1.51			mit.txt
gridstack.js								1.0.0			mit.txt
spectrum.js									1.8.0			mit.txt

al

The "Artistic License"

				Preamble

The intent of this document is to state the conditions under which a
Package may be copied, such that the Copyright Holder maintains some
semblance of artistic control over the development of the package,
while giving the users of the package the right to use and distribute
the Package in a more-or-less customary fashion, plus the right to make
reasonable modifications.

Definitions:

	"Package" refers to the collection of files distributed by the
	Copyright Holder, and derivatives of that collection of files
	created through textual modification.

	"Standard Version" refers to such a Package if it has not been
	modified, or has been modified in accordance with the wishes
	of the Copyright Holder as specified below.

	"Copyright Holder" is whoever is named in the copyright or
	copyrights for the package.

	"You" is you, if you're thinking about copying or distributing
	this Package.

	"Reasonable copying fee" is whatever you can justify on the
	basis of media cost, duplication charges, time of people involved,
	and so on.  (You will not be required to justify it to the
	Copyright Holder, but only to the computing community at large
	as a market that must bear the fee.)

	"Freely Available" means that no fee is charged for the item
	itself, though there may be fees involved in handling the item.
	It also means that recipients of the item may redistribute it
	under the same conditions they received it.

1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.

2. You may apply bug fixes, portability fixes and other modifications
derived from the Public Domain or from the Copyright Holder.  A Package
modified in such a way shall still be considered the Standard Version.

3. You may otherwise modify your copy of this Package in any way, provided
that you insert a prominent notice in each changed file stating how and
when you changed that file, and provided that you do at least ONE of the
following:

    a) place your modifications in the Public Domain or otherwise make them
    Freely Available, such as by posting said modifications to Usenet or
    an equivalent medium, or placing the modifications on a major archive
    site such as uunet.uu.net, or by allowing the Copyright Holder to include
    your modifications in the Standard Version of the Package.

    b) use the modified Package only within your corporation or organization.

    c) rename any non-standard executables so the names do not conflict
    with standard executables, which must also be provided, and provide
    a separate manual page for each non-standard executable that clearly
    documents how it differs from the Standard Version.

    d) make other distribution arrangements with the Copyright Holder.

4. You may distribute the programs of this Package in object code or
executable form, provided that you do at least ONE of the following:

    a) distribute a Standard Version of the executables and library files,
    together with instructions (in the manual page or equivalent) on where
    to get the Standard Version.

    b) accompany the distribution with the machine-readable source of
    the Package with your modifications.

    c) give non-standard executables non-standard names, and clearly
    document the differences in manual pages (or equivalent), together
    with instructions on where to get the Standard Version.

    d) make other distribution arrangements with the Copyright Holder.

5. You may charge a reasonable copying fee for any distribution of this
Package.  You may charge any fee you choose for support of this
Package.  You may not charge a fee for this Package itself.  However,
you may distribute this Package in aggregate with other (possibly
commercial) programs as part of a larger (possibly commercial) software
distribution provided that you do not advertise this Package as a
product of your own.  You may embed this Package's interpreter within
an executable of yours (by linking); this shall be construed as a mere
form of aggregation, provided that the complete Standard Version of the
interpreter is so embedded.

6. The scripts and library files supplied as input to or produced as
output from the programs of this Package do not automatically fall
under the copyright of this Package, but belong to whoever generated
them, and may be sold commercially, and may be aggregated with this
Package.  If such scripts or library files are aggregated with this
Package via the so-called "undump" or "unexec" methods of producing a
binary executable image, then distribution of such an image shall
neither be construed as a distribution of this Package nor shall it
fall under the restrictions of Paragraphs 3 and 4, provided that you do
not represent such an executable image as a Standard Version of this
Package.

7. C subroutines (or comparably compiled subroutines in other
languages) supplied by you and linked into this Package in order to
emulate subroutines and variables of the language defined by this
Package shall not be considered part of this Package, but are the
equivalent of input as in Paragraph 6, provided these subroutines do
not change the language in any way that would cause it to fail the
regression tests for the language.

8. Aggregation of this Package with a commercial distribution is always
permitted provided that the use of this Package is embedded; that is,
when no overt attempt is made to make this Package's interfaces visible
to the end user of the commercial distribution.  Such use shall not be
construed as a distribution of this Package.

9. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.

10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

				The End

amd

license.amd

The following license terms apply to the TJC compiler source
and test files located in the src/tjc, src/tests/tjc, and
tests/tjc directories.

Copyright 2005 Advanced Micro Devices, Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that existing copyright notices
are retained in all copies, this notice is included verbatim in any
distributions, and the terms and conditions hererin are met.

Use of the this software manifests acceptance of the terms of this
license by performance.

The name of Advanced Micro Devices, Inc. may not be used to endorse or
promote products derived from this software without specific prior
written permission.

THIS SOFTWARE IS PROVIDED BY ADVANCED MICRO DEVICES, INC. "AS IS" AND ANY
EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NON-INFRINGEMENT, OR THOSE ARISING FROM CUSTOM OF TRADE OR
COURSE OF USAGE ARE DISCLAIMED.

IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. 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 ITS DOCUMENTATION OR ANY DERIVATIVES
THEREOF, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. BY USING THIS
SOFTWARE WITHOUT CHARGE, YOU ACCEPT THIS ALLOCATION OF RISK. THIS
DISCLAIMER OF LIABILITY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
ADVANCED MICRO DEVICES, INC. HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS OF THIS SOFTWARE.

In the redistribution and use of this software, each party shall at all
times comply with all applicable governmental laws, statutes, ordinances,
rules, regulations, orders, and other requirements, including without
limitation such governmental requirements applicable to environmental
protection, health, safety, wages, hours, equal employment opportunity,
nondiscrimination, working conditions, import or export control, and
transportation. Without limiting the foregoing, each party shall adhere
to the U.S. Export Administration Regulations (EAR), currently found at
15 C.F.R. Sections 730 through 744, and, unless properly authorized by
the U.S. Government, shall not (1) export, re-export or release restricted
technology, software, or source code to a national of a country in Country
Groups D:1 or E:1, or (2) export to Country Groups D:1 or E:1 the direct
product of such technology or software, if such foreign produced direct
product is subject to national security controls as identified on the
Commerce Control List (currently found in Supplement 1 to Section 774 of EAR).
These export requirements shall survive any expiration or termination
of this agreement.

antlr3

ANTLR 3 License

[The BSD License]
Copyright (c) 2010 Terence Parr
All rights reserved.

Redistribution and use 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 andor other materials provided with the distribution.
    Neither the name of the author nor the names of its contributors may be used to endorse or promote 
	products derived from this software without specific prior written permission. 

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. 

apache-2.0

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. 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.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor 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, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You 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 the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You 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 such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its 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. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

bouncy-castle

Copyright (c) 2000 - 2012 The Legion Of The Bouncy Castle 
(http://www.bouncycastle.org)

Permission is hereby granted, free of charge, to any person obtaining a copy of 
this software and associated documentation files (the "Software"), to deal in 
the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
of the Software, and to permit persons to whom the Software is furnished to do 
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE. 

bsd2

Copyright (c) 1997, PostgreSQL Global Development Group
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.

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.

bsd3

Redistribution and use 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 the <organization> nor the
    names of its contributors may be used to endorse or promote products
    derived from this software without specific prior written permission.

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 <COPYRIGHT HOLDER> 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.

gf

GlassFish

    COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1

|1. Definitions.
 
  1.1. "Contributor" means each individual or entity that creates or
  contributes to the creation of Modifications.

  1.2. "Contributor Version" means the combination of the Original
  Software, prior Modifications used by a Contributor (if any), and
  the Modifications made by that particular Contributor.

  1.3. "Covered Software" means (a) the Original Software, or (b)
  Modifications, or (c) the combination of files containing Original
  Software with files containing Modifications, in each case including
  portions thereof.

  1.4. "Executable" means the Covered Software in any form other than
  Source Code.

  1.5. "Initial Developer" means the individual or entity that first
  makes Original Software available under this License.

  1.6. "Larger Work" means a work which combines Covered Software or
  portions thereof with code not governed by the terms of this License.

  1.7. "License" means this document.

  1.8. "Licensable" means having the right to grant, to the maximum
  extent possible, whether at the time of the initial grant or
  subsequently acquired, any and all of the rights conveyed herein.

  1.9. "Modifications" means the Source Code and Executable form of
  any of the following:

  A. Any file that results from an addition to, deletion from or
  modification of the contents of a file containing Original Software
  or previous Modifications;

  B. Any new file that contains any part of the Original Software or
  previous Modification; or

  C. Any new file that is contributed or otherwise made available
  under the terms of this License.

  1.10. "Original Software" means the Source Code and Executable form
  of computer software code that is originally released under this
  License.

  1.11. "Patent Claims" means any patent claim(s), now owned or
  hereafter acquired, including without limitation, method, process,
  and apparatus claims, in any patent Licensable by grantor.

  1.12. "Source Code" means (a) the common form of computer software
  code in which modifications are made and (b) associated
  documentation included in or with such code.

  1.13. "You" (or "Your") means an individual or a legal entity
  exercising rights under, and complying with all of the terms of,
  this License. For legal entities, "You" includes any entity which
  controls, is controlled by, or is under common control with You. For
  purposes of this definition, "control" means (a) the power, direct
  or indirect, to cause the direction or management of such entity,
  whether by contract or otherwise, or (b) ownership of more than
  fifty percent (50%) of the outstanding shares or beneficial
  ownership of such entity.

2. License Grants.

  2.1. The Initial Developer Grant.

  Conditioned upon Your compliance with Section 3.1 below and subject
  to third party intellectual property claims, the Initial Developer
  hereby grants You a world-wide, royalty-free, non-exclusive license:

  (a) under intellectual property rights (other than patent or
  trademark) Licensable by Initial Developer, to use, reproduce,
  modify, display, perform, sublicense and distribute the Original
  Software (or portions thereof), with or without Modifications,
  and/or as part of a Larger Work; and

  (b) under Patent Claims infringed by the making, using or selling of
  Original Software, to make, have made, use, practice, sell, and
  offer for sale, and/or otherwise dispose of the Original Software
  (or portions thereof).

  (c) The licenses granted in Sections 2.1(a) and (b) are effective on
  the date Initial Developer first distributes or otherwise makes the
  Original Software available to a third party under the terms of this
  License.

  (d) Notwithstanding Section 2.1(b) above, no patent license is
  granted: (1) for code that You delete from the Original Software, or
  (2) for infringements caused by: (i) the modification of the
  Original Software, or (ii) the combination of the Original Software
  with other software or devices.

  2.2. Contributor Grant.

  Conditioned upon Your compliance with Section 3.1 below and subject
  to third party intellectual property claims, each Contributor hereby
  grants You a world-wide, royalty-free, non-exclusive license:

  (a) under intellectual property rights (other than patent or
  trademark) Licensable by Contributor to use, reproduce, modify,
  display, perform, sublicense and distribute the Modifications
  created by such Contributor (or portions thereof), either on an
  unmodified basis, with other Modifications, as Covered Software
  and/or as part of a Larger Work; and

  (b) under Patent Claims infringed by the making, using, or selling
  of Modifications made by that Contributor either alone and/or in
  combination with its Contributor Version (or portions of such
  combination), to make, use, sell, offer for sale, have made, and/or
  otherwise dispose of: (1) Modifications made by that Contributor (or
  portions thereof); and (2) the combination of Modifications made by
  that Contributor with its Contributor Version (or portions of such
  combination).

  (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective
  on the date Contributor first distributes or otherwise makes the
  Modifications available to a third party.

  (d) Notwithstanding Section 2.2(b) above, no patent license is
  granted: (1) for any code that Contributor has deleted from the
  Contributor Version; (2) for infringements caused by: (i) third
  party modifications of Contributor Version, or (ii) the combination
  of Modifications made by that Contributor with other software
  (except as part of the Contributor Version) or other devices; or (3)
  under Patent Claims infringed by Covered Software in the absence of
  Modifications made by that Contributor.

3. Distribution Obligations.

  3.1. Availability of Source Code.

  Any Covered Software that You distribute or otherwise make available
  in Executable form must also be made available in Source Code form
  and that Source Code form must be distributed only under the terms
  of this License. You must include a copy of this License with every
  copy of the Source Code form of the Covered Software You distribute
  or otherwise make available. You must inform recipients of any such
  Covered Software in Executable form as to how they can obtain such
  Covered Software in Source Code form in a reasonable manner on or
  through a medium customarily used for software exchange.

  3.2. Modifications.

  The Modifications that You create or to which You contribute are
  governed by the terms of this License. You represent that You
  believe Your Modifications are Your original creation(s) and/or You
  have sufficient rights to grant the rights conveyed by this License.

  3.3. Required Notices.

  You must include a notice in each of Your Modifications that
  identifies You as the Contributor of the Modification. You may not
  remove or alter any copyright, patent or trademark notices contained
  within the Covered Software, or any notices of licensing or any
  descriptive text giving attribution to any Contributor or the
  Initial Developer.

  3.4. Application of Additional Terms.

  You may not offer or impose any terms on any Covered Software in
  Source Code form that alters or restricts the applicable version of
  this License or the recipients' rights hereunder. You may choose to
  offer, and to charge a fee for, warranty, support, indemnity or
  liability obligations to one or more recipients of Covered Software.
  However, you may do so only on Your own behalf, and not on behalf of
  the Initial Developer or any Contributor. You must make it
  absolutely clear that any such warranty, support, indemnity or
  liability obligation is offered by You alone, and You hereby agree
  to indemnify the Initial Developer and every Contributor for any
  liability incurred by the Initial Developer or such Contributor as a
  result of warranty, support, indemnity or liability terms You offer.

  3.5. Distribution of Executable Versions.

  You may distribute the Executable form of the Covered Software under
  the terms of this License or under the terms of a license of Your
  choice, which may contain terms different from this License,
  provided that You are in compliance with the terms of this License
  and that the license for the Executable form does not attempt to
  limit or alter the recipient's rights in the Source Code form from
  the rights set forth in this License. If You distribute the Covered
  Software in Executable form under a different license, You must make
  it absolutely clear that any terms which differ from this License
  are offered by You alone, not by the Initial Developer or
  Contributor. You hereby agree to indemnify the Initial Developer and
  every Contributor for any liability incurred by the Initial
  Developer or such Contributor as a result of any such terms You offer.

  3.6. Larger Works.

  You may create a Larger Work by combining Covered Software with
  other code not governed by the terms of this License and distribute
  the Larger Work as a single product. In such a case, You must make
  sure the requirements of this License are fulfilled for the Covered
  Software.

4. Versions of the License.

  4.1. New Versions.

  Oracle is the initial license steward and may publish revised and/or
  new versions of this License from time to time. Each version will be
  given a distinguishing version number. Except as provided in Section
  4.3, no one other than the license steward has the right to modify
  this License.

  4.2. Effect of New Versions.

  You may always continue to use, distribute or otherwise make the
  Covered Software available under the terms of the version of the
  License under which You originally received the Covered Software. If
  the Initial Developer includes a notice in the Original Software
  prohibiting it from being distributed or otherwise made available
  under any subsequent version of the License, You must distribute and
  make the Covered Software available under the terms of the version
  of the License under which You originally received the Covered
  Software. Otherwise, You may also choose to use, distribute or
  otherwise make the Covered Software available under the terms of any
  subsequent version of the License published by the license steward.

  4.3. Modified Versions.

  When You are an Initial Developer and You want to create a new
  license for Your Original Software, You may create and use a
  modified version of this License if You: (a) rename the license and
  remove any references to the name of the license steward (except to
  note that the license differs from this License); and (b) otherwise
  make it clear that the license contains terms which differ from this
  License.

5. DISCLAIMER OF WARRANTY.

  COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
  INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE
  IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR
  NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
  THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
  DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
  OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
  REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
  ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS
  AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

6. TERMINATION.

  6.1. This License and the rights granted hereunder will terminate
  automatically if You fail to comply with terms herein and fail to
  cure such breach within 30 days of becoming aware of the breach.
  Provisions which, by their nature, must remain in effect beyond the
  termination of this License shall survive.

  6.2. If You assert a patent infringement claim (excluding
  declaratory judgment actions) against Initial Developer or a
  Contributor (the Initial Developer or Contributor against whom You
  assert such claim is referred to as "Participant") alleging that the
  Participant Software (meaning the Contributor Version where the
  Participant is a Contributor or the Original Software where the
  Participant is the Initial Developer) directly or indirectly
  infringes any patent, then any and all rights granted directly or
  indirectly to You by such Participant, the Initial Developer (if the
  Initial Developer is not the Participant) and all Contributors under
  Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice
  from Participant terminate prospectively and automatically at the
  expiration of such 60 day notice period, unless if within such 60
  day period You withdraw Your claim with respect to the Participant
  Software against such Participant either unilaterally or pursuant to
  a written agreement with Participant.

  6.3. If You assert a patent infringement claim against Participant
  alleging that the Participant Software directly or indirectly
  infringes any patent where such claim is resolved (such as by
  license or settlement) prior to the initiation of patent
  infringement litigation, then the reasonable value of the licenses
  granted by such Participant under Sections 2.1 or 2.2 shall be taken
  into account in determining the amount or value of any payment or
  license.

  6.4. In the event of termination under Sections 6.1 or 6.2 above,
  all end user licenses that have been validly granted by You or any
  distributor hereunder prior to termination (excluding licenses
  granted to You by any distributor) shall survive termination.

7. LIMITATION OF LIABILITY.

  UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
  (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
  INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
  COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE
  TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
  CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
  LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
  FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
  LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
  POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
  APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
  PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
  LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
  LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
  AND LIMITATION MAY NOT APPLY TO YOU.

8. U.S. GOVERNMENT END USERS.

  The Covered Software is a "commercial item," as that term is defined
  in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
  software" (as that term is defined at 48 C.F.R. §
  252.227-7014(a)(1)) and "commercial computer software documentation"
  as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent
  with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
  (June 1995), all U.S. Government End Users acquire Covered Software
  with only those rights set forth herein. This U.S. Government Rights
  clause is in lieu of, and supersedes, any other FAR, DFAR, or other
  clause or provision that addresses Government rights in computer
  software under this License.

9. MISCELLANEOUS.

  This License represents the complete agreement concerning subject
  matter hereof. If any provision of this License is held to be
  unenforceable, such provision shall be reformed only to the extent
  necessary to make it enforceable. This License shall be governed by
  the law of the jurisdiction specified in a notice contained within
  the Original Software (except to the extent applicable law, if any,
  provides otherwise), excluding such jurisdiction's conflict-of-law
  provisions. Any litigation relating to this License shall be subject
  to the jurisdiction of the courts located in the jurisdiction and
  venue specified in a notice contained within the Original Software,
  with the losing party responsible for costs, including, without
  limitation, court costs and reasonable attorneys' fees and expenses.
  The application of the United Nations Convention on Contracts for
  the International Sale of Goods is expressly excluded. Any law or
  regulation which provides that the language of a contract shall be
  construed against the drafter shall not apply to this License. You
  agree that You alone are responsible for compliance with the United
  States export administration regulations (and the export control
  laws and regulation of any other countries) when You use, distribute
  or otherwise make available any Covered Software.

10. RESPONSIBILITY FOR CLAIMS.

  As between Initial Developer and the Contributors, each party is
  responsible for claims and damages arising, directly or indirectly,
  out of its utilization of rights under this License and You agree to
  work with Initial Developer and Contributors to distribute such
  responsibility on an equitable basis. Nothing herein is intended or
  shall be deemed to constitute any admission of liability.

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


    NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
    DISTRIBUTION LICENSE (CDDL)

|The code released under the CDDL shall be governed by the laws of the
State of California (excluding conflict-of-law provisions). Any
litigation relating to this License shall be subject to the jurisdiction
of the Federal Courts of the Northern District of California and the
state courts of the State of California, with venue lying in Santa Clara
County, California.

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


    The GNU General Public License (GPL) Version 2, June 1991

|Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor
Boston, MA 02110-1335
USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free software--to
make sure the software is free for all its users. This General Public
License applies to most of the Free Software Foundation's software and
to any other program whose authors commit to using it. (Some other Free
Software Foundation software is covered by the GNU Library General
Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have the
freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you have.
You must make sure that they, too, receive or can get the source code.
And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

Finally, any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must
be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and
modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed under
the terms of this General Public License. The "Program", below, refers
to any such program or work, and a "work based on the Program" means
either the Program or any derivative work under copyright law: that is
to say, a work containing the Program or a portion of it, either
verbatim or with modifications and/or translated into another language.
(Hereinafter, translation is included without limitation in the term
"modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program
(independent of having been made by running the Program). Whether that
is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice
and disclaimer of warranty; keep intact all the notices that refer to
this License and to the absence of any warranty; and give any other
recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of
it, thus forming a work based on the Program, and copy and distribute
such modifications or work under the terms of Section 1 above, provided
that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any part
    thereof, to be licensed as a whole at no charge to all third parties
    under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a notice
    that there is no warranty (or else, saying that you provide a
    warranty) and that users may redistribute the program under these
    conditions, and telling the user how to view a copy of this License.
    (Exception: if the Program itself is interactive but does not
    normally print such an announcement, your work based on the Program
    is not required to print an announcement.)

These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, and
can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based on
the Program, the distribution of the whole must be on the terms of this
License, whose permissions for other licensees extend to the entire
whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of a
storage or distribution medium does not bring the other work under the
scope of this License.

3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections 1
    and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your cost
    of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer to
    distribute corresponding source code. (This alternative is allowed
    only for noncommercial distribution and only if you received the
    program in object code or executable form with such an offer, in
    accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source code
means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies the
executable.

If distribution of executable or object code is made by offering access
to copy from a designated place, then offering equivalent access to copy
the source code from the same place counts as distribution of the source
code, even though third parties are not compelled to copy the source
along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt otherwise
to copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However, parties
who have received copies, or rights, from you under this License will
not have their licenses terminated so long as such parties remain in
full compliance.

5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and all
its terms and conditions for copying, distributing or modifying the
Program or works based on it.

6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further restrictions
on the recipients' exercise of the rights granted herein. You are not
responsible for enforcing compliance by third parties to this License.

7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot distribute
so as to satisfy simultaneously your obligations under this License and
any other pertinent obligations, then as a consequence you may not
distribute the Program at all. For example, if a patent license would
not permit royalty-free redistribution of the Program by all those who
receive copies directly or indirectly through you, then the only way you
could satisfy both it and this License would be to refrain entirely from
distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is implemented
by public license practices. Many people have made generous
contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up to
the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be
a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License may
add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a version
number of this License, you may choose any version ever published by the
Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    One line to give the program's name and a brief idea of what it does.
    Copyright (C) <year> <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
    `show w'. This is free software, and you are welcome to redistribute
    it under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the commands
you use may be called something other than `show w' and `show c'; they
could even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:

    Yoyodyne, Inc., hereby disclaims all copyright interest in the
    program `Gnomovision' (which makes passes at compilers) written by
    James Hacker.

    signature of Ty Coon, 1 April 1989
    Ty Coon, President of Vice

This General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications
with the library. If this is what you want to do, use the GNU Library
General Public License instead of this License.
|

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

|Certain source files distributed by Oracle America, Inc. and/or its
affiliates are subject to the following clarification and special
exception to the GPLv2, based on the GNU Project exception for its
Classpath libraries, known as the GNU Classpath Exception, but only
where Oracle has expressly included in the particular source file's
header the words "Oracle designates this particular file as subject to
the "Classpath" exception as provided by Oracle in the LICENSE file
that accompanied this code."

You should also note that Oracle includes multiple, independent
programs in this software package. Some of those programs are provided
under licenses deemed incompatible with the GPLv2 by the Free Software
Foundation and others.  For example, the package includes programs
licensed under the Apache License, Version 2.0.  Such programs are
licensed to you under their original licenses.

Oracle facilitates your further distribution of this package by adding
the Classpath Exception to the necessary parts of its GPLv2 code, which
permits you to use that code in combination with other independent
modules not licensed under the GPLv2.  However, note that this would
not permit you to commingle code under an incompatible license with
Oracle's GPLv2 licensed code by, for example, cutting and pasting such
code into a file also containing Oracle's GPLv2 licensed code and then
distributing the result.  Additionally, if you were to remove the
Classpath Exception from any of the files to which it applies and
distribute the result, you would likely be required to license some or
all of the other code in that distribution under the GPLv2 as well, and
since the GPLv2 is incompatible with the license terms of some items
included in the distribution by Oracle, removing the Classpath
Exception could therefore effectively compromise your ability to
further distribute the package.

Proceed with caution and we recommend that you obtain the advice of a
lawyer skilled in open source matters before removing the Classpath
Exception or making modifications to this package which may
subsequently be redistributed and/or involve the use of third party
software.

CLASSPATH EXCEPTION
Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License version 2 cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from or
based on this library.  If you modify this library, you may extend this
exception to your version of the library, but you are not obligated to
do so.  If you do not wish to do so, delete this exception statement
from your version.

gpl-2.0

                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

gpl

    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

itcl

license.itcl

The following license terms apply to the Itcl source and
test files located in the src/itcl and tests/itcl directories.


This software is copyrighted by Cadence Design Systems, Inc., and other
parties.  The following terms apply to all files associated with the
software unless explicitly disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal 
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license. 

janino

license.janino

Janino - An embedded Java[TM] compiler

Copyright (c) 2001-2010, Arno Unkrig
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. The name of the author may not be used to endorse or promote
      products derived from this software without specific prior
      written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.

jdom

/*-- 

 Copyright (C) 2000-2012 Jason Hunter & Brett McLaughlin.
 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 disclaimer that follows 
    these conditions in the documentation and/or other materials 
    provided with the distribution.

 3. The name "JDOM" must not be used to endorse or promote products
    derived from this software without prior written permission.  For
    written permission, please contact <request_AT_jdom_DOT_org>.
 
 4. Products derived from this software may not be called "JDOM", nor
    may "JDOM" appear in their name, without prior written permission
    from the JDOM Project Management <request_AT_jdom_DOT_org>.
 
 In addition, we request (but do not require) that you include in the 
 end-user documentation provided with the redistribution and/or in the 
 software itself an acknowledgement equivalent to the following:
     "This product includes software developed by the
      JDOM Project (http://www.jdom.org/)."
 Alternatively, the acknowledgment may be graphical using the logos 
 available at http://www.jdom.org/images/logos.

 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JDOM AUTHORS OR THE PROJECT
 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.

 This software consists of voluntary contributions made by many 
 individuals on behalf of the JDOM Project and was originally 
 created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
 Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
 on the JDOM Project, please see <http://www.jdom.org/>. 

 */

jdom2

/*-- 

 Copyright (C) 2000-2012 Jason Hunter & Brett McLaughlin.
 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 disclaimer that follows 
    these conditions in the documentation and/or other materials 
    provided with the distribution.

 3. The name "JDOM" must not be used to endorse or promote products
    derived from this software without prior written permission.  For
    written permission, please contact <request_AT_jdom_DOT_org>.
 
 4. Products derived from this software may not be called "JDOM", nor
    may "JDOM" appear in their name, without prior written permission
    from the JDOM Project Management <request_AT_jdom_DOT_org>.
 
 In addition, we request (but do not require) that you include in the 
 end-user documentation provided with the redistribution and/or in the 
 software itself an acknowledgement equivalent to the following:
     "This product includes software developed by the
      JDOM Project (http://www.jdom.org/)."
 Alternatively, the acknowledgment may be graphical using the logos 
 available at http://www.jdom.org/images/logos.

 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JDOM AUTHORS OR THE PROJECT
 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.

 This software consists of voluntary contributions made by many 
 individuals on behalf of the JDOM Project and was originally 
 created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
 Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
 on the JDOM Project, please see <http://www.jdom.org/>. 

 */

jquery-mobile

Copyright jQuery Foundation and other contributors,
https://jquery.org/

This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery-mobile

The following license applies to all parts of this software except as
documented below:

====

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

====

Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code contained within the demos directory.

CC0: http://creativecommons.org/publicdomain/zero/1.0/

====

All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.

jquery

Copyright JS Foundation and other contributors, https://js.foundation/

This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery

The following license applies to all parts of this software except as
documented below:

====

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

====

All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.

jtcl

license.terms

SUN MICROSYSTEMS, INC. THROUGH ITS SUN MICROSYSTEMS LABORATORIES
DIVISION ("SUN") WILL LICENSE THIS SOFTWARE AND THE ACCOMPANYING
DOCUMENTATION TO YOU (a "Licensee") ONLY ON YOUR ACCEPTANCE OF ALL 
THE TERMS SET FORTH BELOW.

Sun grants Licensee a non-exclusive, royalty-free right to download,
install, compile, use, copy and distribute the Software, modify or
otherwise create derivative works from the Software (each, a
"Modification") and distribute any Modification in source code and/or
binary code form to its customers with a license agreement containing
these terms and noting that the Software has been modified. The
Software is copyrighted by Sun and other third parties and Licensee
shall retain and reproduce all copyright and other notices presently 
on the Software. As between Sun and Licensee, Sun is the sole owner of
all rights in and to the Software other than the limited rights
granted to Licensee herein; Licensee will own its Modifications,
expressly subject to Sun's continuing ownership of the
Software. Licensee will, at its expense, defend and indemnify Sun and
its licensors from and against any third party claims, including costs
and reasonable attorneys' fees, and be wholly responsible for any
liabilities arising out of or related to Licensee's development, use
or distribution of the Software or Modifications. Any distribution of
the Software and Modifications must comply with all applicable United
States export control laws.

THE SOFTWARE IS BEING PROVIDED TO LICENSEE "AS IS" AND ALL EXPRESS OR
IMPLIED CONDITIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT,
ARE DISCLAIMED. IN NO EVENT WILL SUN BE LIABLE HEREUNDER FOR ANY
DIRECT DAMAGES OR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND.

lgpl-2.1

                  GNU LESSER GENERAL PUBLIC LICENSE
                       Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

                  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                            NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

                     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!

mit

Copyright <YEAR> <COPYRIGHT HOLDER>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

mpl1.0

*MOZILLA PUBLIC LICENSE*
*Version 1.0*

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

*1. Definitions.*

    *1.1. ``Contributor''* means each entity that creates or contributes
    to the creation of Modifications.

    *1.2. ``Contributor Version''* means the combination of the Original
    Code, prior Modifications used by a Contributor, and the
    Modifications made by that particular Contributor.

    *1.3. ``Covered Code''* means the Original Code or Modifications or
    the combination of the Original Code and Modifications, in each case
    including portions thereof*.*

    *1.4. ``Electronic Distribution Mechanism''* means a mechanism
    generally accepted in the software development community for the
    electronic transfer of data.

    *1.5. ``Executable''* means Covered Code in any form other than
    Source Code.

    *1.6. ``Initial Developer''* means the individual or entity
    identified as the Initial Developer in the Source Code notice
    required by *Exhibit A*.

    *1.7. ``Larger Work''* means a work which combines Covered Code or
    portions thereof with code not governed by the terms of this License.

    *1.8. ``License''* means this document.

    *1.9. ``Modifications''* means any addition to or deletion from the
    substance or structure of either the Original Code or any previous
    Modifications. When Covered Code is released as a series of files, a
    Modification is:

        *A.* Any addition to or deletion from the contents of a file
        containing Original Code or previous Modifications.

        *B.* Any new file that contains any part of the Original Code or
        previous Modifications.

    *1.10. ``Original Code''* means Source Code of computer software
    code which is described in the Source Code notice required by
    *Exhibit A* as Original Code, and which, at the time of its release
    under this License is not already Covered Code governed by this
    License.

    *1.11. ``Source Code''* means the preferred form of the Covered Code
    for making modifications to it, including all modules it contains,
    plus any associated interface definition files, scripts used to
    control compilation and installation of an Executable, or a list of
    source code differential comparisons against either the Original
    Code or another well known, available Covered Code of the
    Contributor's choice. The Source Code can be in a compressed or
    archival form, provided the appropriate decompression or
    de-archiving software is widely available for no charge.

    *1.12. ``You''* means an individual or a legal entity exercising
    rights under, and complying with all of the terms of, this License
    or a future version of this License issued under Section 6.1. For
    legal entities, ``You'' includes any entity which controls, is
    controlled by, or is under common control with You. For purposes of
    this definition, ``control'' means (a) the power, direct or
    indirect, to cause the direction or management of such entity,
    whether by contract or otherwise, or (b) ownership of fifty percent
    (50%) or more of the outstanding shares or beneficial ownership of
    such entity.

*2. Source Code License.*

    *2.1. The Initial Developer Grant.*
    The Initial Developer hereby grants You a world-wide, royalty-free,
    non-exclusive license, subject to third party intellectual property
    claims:

        *(a)* to use, reproduce, modify, display, perform, sublicense
        and distribute the Original Code (or portions thereof) with or
        without Modifications, or as part of a Larger Work; and

        *(b)* under patents now or hereafter owned or controlled by
        Initial Developer, to make, have made, use and sell
        (``Utilize'') the Original Code (or portions thereof), but
        solely to the extent that any such patent is reasonably
        necessary to enable You to Utilize the Original Code (or
        portions thereof) and not to any greater extent that may be
        necessary to Utilize further Modifications or combinations.

    *2.2. Contributor Grant.*
    Each Contributor hereby grants You a world-wide, royalty-free,
    non-exclusive license, subject to third party intellectual property
    claims:

        *(a)* to use, reproduce, modify, display, perform, sublicense
        and distribute the Modifications created by such Contributor (or
        portions thereof) either on an unmodified basis, with other
        Modifications, as Covered Code or as part of a Larger Work; and

        *(b)* under patents now or hereafter owned or controlled by
        Contributor, to Utilize the Contributor Version (or portions
        thereof), but solely to the extent that any such patent is
        reasonably necessary to enable You to Utilize the Contributor
        Version (or portions thereof), and not to any greater extent
        that may be necessary to Utilize further Modifications or
        combinations.



*3. Distribution Obligations.*

    *3.1. Application of License.*
    The Modifications which You create or to which You contribute are
    governed by the terms of this License, including without limitation
    Section *2.2*. The Source Code version of Covered Code may be
    distributed only under the terms of this License or a future version
    of this License released under Section *6.1*, and You must include a
    copy of this License with every copy of the Source Code You
    distribute. You may not offer or impose any terms on any Source Code
    version that alters or restricts the applicable version of this
    License or the recipients' rights hereunder. However, You may
    include an additional document offering the additional rights
    described in Section *3.5*.

    *3.2. Availability of Source Code.*
    Any Modification which You create or to which You contribute must be
    made available in Source Code form under the terms of this License
    either on the same media as an Executable version or via an accepted
    Electronic Distribution Mechanism to anyone to whom you made an
    Executable version available; and if made available via Electronic
    Distribution Mechanism, must remain available for at least twelve
    (12) months after the date it initially became available, or at
    least six (6) months after a subsequent version of that particular
    Modification has been made available to such recipients. You are
    responsible for ensuring that the Source Code version remains
    available even if the Electronic Distribution Mechanism is
    maintained by a third party.

    *3.3. Description of Modifications.*
    You must cause all Covered Code to which you contribute to contain a
    file documenting the changes You made to create that Covered Code
    and the date of any change. You must include a prominent statement
    that the Modification is derived, directly or indirectly, from
    Original Code provided by the Initial Developer and including the
    name of the Initial Developer in (a) the Source Code, and (b) in any
    notice in an Executable version or related documentation in which
    You describe the origin or ownership of the Covered Code.

    *3.4. Intellectual Property Matters*

        *(a) Third Party Claims*.
        If You have knowledge that a party claims an intellectual
        property right in particular functionality or code (or its
        utilization under this License), you must include a text file
        with the source code distribution titled ``LEGAL'' which
        describes the claim and the party making the claim in sufficient
        detail that a recipient will know whom to contact. If you obtain
        such knowledge after You make Your Modification available as
        described in Section *3.2*, You shall promptly modify the LEGAL
        file in all copies You make available thereafter and shall take
        other steps (such as notifying appropriate mailing lists or
        newsgroups) reasonably calculated to inform those who received
        the Covered Code that new knowledge has been obtained.

        *(b) Contributor APIs*.
        If Your Modification is an application programming interface and
        You own or control patents which are reasonably necessary to
        implement that API, you must also include this information in
        the LEGAL file.


    *3.5. Required Notices.*
    You must duplicate the notice in *Exhibit A* in each file of the
    Source Code, and this License in any documentation for the Source
    Code, where You describe recipients' rights relating to Covered
    Code. If You created one or more Modification(s), You may add your
    name as a Contributor to the notice described in *Exhibit A*. If it
    is not possible to put such notice in a particular Source Code file
    due to its structure, then you must include such notice in a
    location (such as a relevant directory file) where a user would be
    likely to look for such a notice. You may choose to offer, and to
    charge a fee for, warranty, support, indemnity or liability
    obligations to one or more recipients of Covered Code. However, You
    may do so only on Your own behalf, and not on behalf of the Initial
    Developer or any Contributor. You must make it absolutely clear than
    any such warranty, support, indemnity or liability obligation is
    offered by You alone, and You hereby agree to indemnify the Initial
    Developer and every Contributor for any liability incurred by the
    Initial Developer or such Contributor as a result of warranty,
    support, indemnity or liability terms You offer.

    *3.6. Distribution of Executable Versions.*
    You may distribute Covered Code in Executable form only if the
    requirements of Section *3.1-3.5* have been met for that Covered
    Code, and if You include a notice stating that the Source Code
    version of the Covered Code is available under the terms of this
    License, including a description of how and where You have fulfilled
    the obligations of Section *3.2*. The notice must be conspicuously
    included in any notice in an Executable version, related
    documentation or collateral in which You describe recipients' rights
    relating to the Covered Code. You may distribute the Executable
    version of Covered Code under a license of Your choice, which may
    contain terms different from this License, provided that You are in
    compliance with the terms of this License and that the license for
    the Executable version does not attempt to limit or alter the
    recipient's rights in the Source Code version from the rights set
    forth in this License. If You distribute the Executable version
    under a different license You must make it absolutely clear that any
    terms which differ from this License are offered by You alone, not
    by the Initial Developer or any Contributor. You hereby agree to
    indemnify the Initial Developer and every Contributor for any
    liability incurred by the Initial Developer or such Contributor as a
    result of any such terms You offer.

    *3.7. Larger Works.*
    You may create a Larger Work by combining Covered Code with other
    code not governed by the terms of this License and distribute the
    Larger Work as a single product. In such a case, You must make sure
    the requirements of this License are fulfilled for the Covered Code.






*4. Inability to Comply Due to Statute or Regulation.*

    If it is impossible for You to comply with any of the terms of this
    License with respect to some or all of the Covered Code due to
    statute or regulation then You must: (a) comply with the terms of
    this License to the maximum extent possible; and (b) describe the
    limitations and the code they affect. Such description must be
    included in the LEGAL file described in Section *3.4* and must be
    included with all distributions of the Source Code. Except to the
    extent prohibited by statute or regulation, such description must be
    sufficiently detailed for a recipient of ordinary skill to be able
    to understand it.

*5. Application of this License.*

    This License applies to code to which the Initial Developer has
    attached the notice in *Exhibit A*, and to related Covered Code. 

*6. Versions of the License.*

    *6.1. New Versions*.
    Netscape Communications Corporation (``Netscape'') may publish
    revised and/or new versions of the License from time to time. Each
    version will be given a distinguishing version number.

    *6.2. Effect of New Versions*.
    Once Covered Code has been published under a particular version of
    the License, You may always continue to use it under the terms of
    that version. You may also choose to use such Covered Code under the
    terms of any subsequent version of the License published by
    Netscape. No one other than Netscape has the right to modify the
    terms applicable to Covered Code created under this License.

    *6.3. Derivative Works*.
    If you create or use a modified version of this License (which you
    may only do in order to apply it to code which is not already
    Covered Code governed by this License), you must (a) rename Your
    license so that the phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'',
    ``Netscape'', ``NPL'' or any confusingly similar phrase do not
    appear anywhere in your license and (b) otherwise make it clear that
    your version of the license contains terms which differ from the
    Mozilla Public License and Netscape Public License. (Filling in the
    name of the Initial Developer, Original Code or Contributor in the
    notice described in *Exhibit A* shall not of themselves be deemed to
    be modifications of this License.)



*7. DISCLAIMER OF WARRANTY.*

    COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS,
    WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
    INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS
    FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR
    NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
    THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE
    DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
    OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
    REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
    ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS
    AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 

*8. TERMINATION.*

    This License and the rights granted hereunder will terminate
    automatically if You fail to comply with terms herein and fail to
    cure such breach within 30 days of becoming aware of the breach. All
    sublicenses to the Covered Code which are properly granted shall
    survive any termination of this License. Provisions which, by their
    nature, must remain in effect beyond the termination of this License
    shall survive. 

*9. LIMITATION OF LIABILITY.*

    UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
    (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
    DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED
    CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR
    ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
    CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
    LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
    FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
    LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
    POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
    APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
    PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
    LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
    LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION
    AND LIMITATION MAY NOT APPLY TO YOU. 

*10. U.S. GOVERNMENT END USERS.*

    The Covered Code is a ``commercial item,'' as that term is defined
    in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer
    software'' and ``commercial computer software documentation,'' as
    such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent
    with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
    (June 1995), all U.S. Government End Users acquire Covered Code with
    only those rights set forth herein. 

*11. MISCELLANEOUS.*

    This License represents the complete agreement concerning subject
    matter hereof. If any provision of this License is held to be
    unenforceable, such provision shall be reformed only to the extent
    necessary to make it enforceable. This License shall be governed by
    California law provisions (except to the extent applicable law, if
    any, provides otherwise), excluding its conflict-of-law provisions.
    With respect to disputes in which at least one party is a citizen
    of, or an entity chartered or registered to do business in, the
    United States of America: (a) unless otherwise agreed in writing,
    all disputes relating to this License (excepting any dispute
    relating to intellectual property rights) shall be subject to final
    and binding arbitration, with the losing party paying all costs of
    arbitration; (b) any arbitration relating to this Agreement shall be
    held in Santa Clara County, California, under the auspices of
    JAMS/EndDispute; and (c) any litigation relating to this Agreement
    shall be subject to the jurisdiction of the Federal Courts of the
    Northern District of California, with venue lying in Santa Clara
    County, California, with the losing party responsible for costs,
    including without limitation, court costs and reasonable attorneys
    fees and expenses. The application of the United Nations Convention
    on Contracts for the International Sale of Goods is expressly
    excluded. Any law or regulation which provides that the language of
    a contract shall be construed against the drafter shall not apply to
    this License. 

*12. RESPONSIBILITY FOR CLAIMS.*

    Except in cases where another Contributor has failed to comply with
    Section *3.4*, You are responsible for damages arising, directly or
    indirectly, out of Your utilization of rights under this License,
    based on the number of copies of Covered Code you made available,
    the revenues you received from utilizing such rights, and other
    relevant factors. You agree to work with affected parties to
    distribute responsibility on an equitable basis. 

*EXHIBIT A.*

    ``The contents of this file are subject to the Mozilla Public
    License Version 1.0 (the "License"); you may not use this file
    except in compliance with the License. You may obtain a copy of the
    License at http://www.mozilla.org/MPL/

    Software distributed under the License is distributed on an "AS IS"
    basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
    the License for the specific language governing rights and
    limitations under the License.

    The Original Code is ______________________________________.

    The Initial Developer of the Original Code is
    ________________________. Portions created by ______________________
    are Copyright (C) ______ _______________________. All Rights Reserved.

    Contributor(s): ______________________________________.''

mpl1.1

MOZILLA PUBLIC LICENSE
                                Version 1.1

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

1. Definitions.

     1.0.1. "Commercial Use" means distribution or otherwise making the
     Covered Code available to a third party.

     1.1. "Contributor" means each entity that creates or contributes to
     the creation of Modifications.

     1.2. "Contributor Version" means the combination of the Original
     Code, prior Modifications used by a Contributor, and the Modifications
     made by that particular Contributor.

     1.3. "Covered Code" means the Original Code or Modifications or the
     combination of the Original Code and Modifications, in each case
     including portions thereof.

     1.4. "Electronic Distribution Mechanism" means a mechanism generally
     accepted in the software development community for the electronic
     transfer of data.

     1.5. "Executable" means Covered Code in any form other than Source
     Code.

     1.6. "Initial Developer" means the individual or entity identified
     as the Initial Developer in the Source Code notice required by Exhibit
     A.

     1.7. "Larger Work" means a work which combines Covered Code or
     portions thereof with code not governed by the terms of this License.

     1.8. "License" means this document.

     1.8.1. "Licensable" means having the right to grant, to the maximum
     extent possible, whether at the time of the initial grant or
     subsequently acquired, any and all of the rights conveyed herein.

     1.9. "Modifications" means any addition to or deletion from the
     substance or structure of either the Original Code or any previous
     Modifications. When Covered Code is released as a series of files, a
     Modification is:
          A. Any addition to or deletion from the contents of a file
          containing Original Code or previous Modifications.

          B. Any new file that contains any part of the Original Code or
          previous Modifications.

     1.10. "Original Code" means Source Code of computer software code
     which is described in the Source Code notice required by Exhibit A as
     Original Code, and which, at the time of its release under this
     License is not already Covered Code governed by this License.

     1.10.1. "Patent Claims" means any patent claim(s), now owned or
     hereafter acquired, including without limitation,  method, process,
     and apparatus claims, in any patent Licensable by grantor.

     1.11. "Source Code" means the preferred form of the Covered Code for
     making modifications to it, including all modules it contains, plus
     any associated interface definition files, scripts used to control
     compilation and installation of an Executable, or source code
     differential comparisons against either the Original Code or another
     well known, available Covered Code of the Contributor's choice. The
     Source Code can be in a compressed or archival form, provided the
     appropriate decompression or de-archiving software is widely available
     for no charge.

     1.12. "You" (or "Your")  means an individual or a legal entity
     exercising rights under, and complying with all of the terms of, this
     License or a future version of this License issued under Section 6.1.
     For legal entities, "You" includes any entity which controls, is
     controlled by, or is under common control with You. For purposes of
     this definition, "control" means (a) the power, direct or indirect,
     to cause the direction or management of such entity, whether by
     contract or otherwise, or (b) ownership of more than fifty percent
     (50%) of the outstanding shares or beneficial ownership of such
     entity.

2. Source Code License.

     2.1. The Initial Developer Grant.
     The Initial Developer hereby grants You a world-wide, royalty-free,
     non-exclusive license, subject to third party intellectual property
     claims:
          (a)  under intellectual property rights (other than patent or
          trademark) Licensable by Initial Developer to use, reproduce,
          modify, display, perform, sublicense and distribute the Original
          Code (or portions thereof) with or without Modifications, and/or
          as part of a Larger Work; and

          (b) under Patents Claims infringed by the making, using or
          selling of Original Code, to make, have made, use, practice,
          sell, and offer for sale, and/or otherwise dispose of the
          Original Code (or portions thereof).

          (c) the licenses granted in this Section 2.1(a) and (b) are
          effective on the date Initial Developer first distributes
          Original Code under the terms of this License.

          (d) Notwithstanding Section 2.1(b) above, no patent license is
          granted: 1) for code that You delete from the Original Code; 2)
          separate from the Original Code;  or 3) for infringements caused
          by: i) the modification of the Original Code or ii) the
          combination of the Original Code with other software or devices.

     2.2. Contributor Grant.
     Subject to third party intellectual property claims, each Contributor
     hereby grants You a world-wide, royalty-free, non-exclusive license

          (a)  under intellectual property rights (other than patent or
          trademark) Licensable by Contributor, to use, reproduce, modify,
          display, perform, sublicense and distribute the Modifications
          created by such Contributor (or portions thereof) either on an
          unmodified basis, with other Modifications, as Covered Code
          and/or as part of a Larger Work; and

          (b) under Patent Claims infringed by the making, using, or
          selling of  Modifications made by that Contributor either alone
          and/or in combination with its Contributor Version (or portions
          of such combination), to make, use, sell, offer for sale, have
          made, and/or otherwise dispose of: 1) Modifications made by that
          Contributor (or portions thereof); and 2) the combination of
          Modifications made by that Contributor with its Contributor
          Version (or portions of such combination).

          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
          effective on the date Contributor first makes Commercial Use of
          the Covered Code.

          (d)    Notwithstanding Section 2.2(b) above, no patent license is
          granted: 1) for any code that Contributor has deleted from the
          Contributor Version; 2)  separate from the Contributor Version;
          3)  for infringements caused by: i) third party modifications of
          Contributor Version or ii)  the combination of Modifications made
          by that Contributor with other software  (except as part of the
          Contributor Version) or other devices; or 4) under Patent Claims
          infringed by Covered Code in the absence of Modifications made by
          that Contributor.

3. Distribution Obligations.

     3.1. Application of License.
     The Modifications which You create or to which You contribute are
     governed by the terms of this License, including without limitation
     Section 2.2. The Source Code version of Covered Code may be
     distributed only under the terms of this License or a future version
     of this License released under Section 6.1, and You must include a
     copy of this License with every copy of the Source Code You
     distribute. You may not offer or impose any terms on any Source Code
     version that alters or restricts the applicable version of this
     License or the recipients' rights hereunder. However, You may include
     an additional document offering the additional rights described in
     Section 3.5.

     3.2. Availability of Source Code.
     Any Modification which You create or to which You contribute must be
     made available in Source Code form under the terms of this License
     either on the same media as an Executable version or via an accepted
     Electronic Distribution Mechanism to anyone to whom you made an
     Executable version available; and if made available via Electronic
     Distribution Mechanism, must remain available for at least twelve (12)
     months after the date it initially became available, or at least six
     (6) months after a subsequent version of that particular Modification
     has been made available to such recipients. You are responsible for
     ensuring that the Source Code version remains available even if the
     Electronic Distribution Mechanism is maintained by a third party.

     3.3. Description of Modifications.
     You must cause all Covered Code to which You contribute to contain a
     file documenting the changes You made to create that Covered Code and
     the date of any change. You must include a prominent statement that
     the Modification is derived, directly or indirectly, from Original
     Code provided by the Initial Developer and including the name of the
     Initial Developer in (a) the Source Code, and (b) in any notice in an
     Executable version or related documentation in which You describe the
     origin or ownership of the Covered Code.

     3.4. Intellectual Property Matters
          (a) Third Party Claims.
          If Contributor has knowledge that a license under a third party's
          intellectual property rights is required to exercise the rights
          granted by such Contributor under Sections 2.1 or 2.2,
          Contributor must include a text file with the Source Code
          distribution titled "LEGAL" which describes the claim and the
          party making the claim in sufficient detail that a recipient will
          know whom to contact. If Contributor obtains such knowledge after
          the Modification is made available as described in Section 3.2,
          Contributor shall promptly modify the LEGAL file in all copies
          Contributor makes available thereafter and shall take other steps
          (such as notifying appropriate mailing lists or newsgroups)
          reasonably calculated to inform those who received the Covered
          Code that new knowledge has been obtained.

          (b) Contributor APIs.
          If Contributor's Modifications include an application programming
          interface and Contributor has knowledge of patent licenses which
          are reasonably necessary to implement that API, Contributor must
          also include this information in the LEGAL file.

               (c)    Representations.
          Contributor represents that, except as disclosed pursuant to
          Section 3.4(a) above, Contributor believes that Contributor's
          Modifications are Contributor's original creation(s) and/or
          Contributor has sufficient rights to grant the rights conveyed by
          this License.

     3.5. Required Notices.
     You must duplicate the notice in Exhibit A in each file of the Source
     Code.  If it is not possible to put such notice in a particular Source
     Code file due to its structure, then You must include such notice in a
     location (such as a relevant directory) where a user would be likely
     to look for such a notice.  If You created one or more Modification(s)
     You may add your name as a Contributor to the notice described in
     Exhibit A.  You must also duplicate this License in any documentation
     for the Source Code where You describe recipients' rights or ownership
     rights relating to Covered Code.  You may choose to offer, and to
     charge a fee for, warranty, support, indemnity or liability
     obligations to one or more recipients of Covered Code. However, You
     may do so only on Your own behalf, and not on behalf of the Initial
     Developer or any Contributor. You must make it absolutely clear than
     any such warranty, support, indemnity or liability obligation is
     offered by You alone, and You hereby agree to indemnify the Initial
     Developer and every Contributor for any liability incurred by the
     Initial Developer or such Contributor as a result of warranty,
     support, indemnity or liability terms You offer.

     3.6. Distribution of Executable Versions.
     You may distribute Covered Code in Executable form only if the
     requirements of Section 3.1-3.5 have been met for that Covered Code,
     and if You include a notice stating that the Source Code version of
     the Covered Code is available under the terms of this License,
     including a description of how and where You have fulfilled the
     obligations of Section 3.2. The notice must be conspicuously included
     in any notice in an Executable version, related documentation or
     collateral in which You describe recipients' rights relating to the
     Covered Code. You may distribute the Executable version of Covered
     Code or ownership rights under a license of Your choice, which may
     contain terms different from this License, provided that You are in
     compliance with the terms of this License and that the license for the
     Executable version does not attempt to limit or alter the recipient's
     rights in the Source Code version from the rights set forth in this
     License. If You distribute the Executable version under a different
     license You must make it absolutely clear that any terms which differ
     from this License are offered by You alone, not by the Initial
     Developer or any Contributor. You hereby agree to indemnify the
     Initial Developer and every Contributor for any liability incurred by
     the Initial Developer or such Contributor as a result of any such
     terms You offer.

     3.7. Larger Works.
     You may create a Larger Work by combining Covered Code with other code
     not governed by the terms of this License and distribute the Larger
     Work as a single product. In such a case, You must make sure the
     requirements of this License are fulfilled for the Covered Code.

4. Inability to Comply Due to Statute or Regulation.

     If it is impossible for You to comply with any of the terms of this
     License with respect to some or all of the Covered Code due to
     statute, judicial order, or regulation then You must: (a) comply with
     the terms of this License to the maximum extent possible; and (b)
     describe the limitations and the code they affect. Such description
     must be included in the LEGAL file described in Section 3.4 and must
     be included with all distributions of the Source Code. Except to the
     extent prohibited by statute or regulation, such description must be
     sufficiently detailed for a recipient of ordinary skill to be able to
     understand it.

5. Application of this License.

     This License applies to code to which the Initial Developer has
     attached the notice in Exhibit A and to related Covered Code.

6. Versions of the License.

     6.1. New Versions.
     Netscape Communications Corporation ("Netscape") may publish revised
     and/or new versions of the License from time to time. Each version
     will be given a distinguishing version number.

     6.2. Effect of New Versions.
     Once Covered Code has been published under a particular version of the
     License, You may always continue to use it under the terms of that
     version. You may also choose to use such Covered Code under the terms
     of any subsequent version of the License published by Netscape. No one
     other than Netscape has the right to modify the terms applicable to
     Covered Code created under this License.

     6.3. Derivative Works.
     If You create or use a modified version of this License (which you may
     only do in order to apply it to code which is not already Covered Code
     governed by this License), You must (a) rename Your license so that
     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
     "MPL", "NPL" or any confusingly similar phrase do not appear in your
     license (except to note that your license differs from this License)
     and (b) otherwise make it clear that Your version of the license
     contains terms which differ from the Mozilla Public License and
     Netscape Public License. (Filling in the name of the Initial
     Developer, Original Code or Contributor in the notice described in
     Exhibit A shall not of themselves be deemed to be modifications of
     this License.)

7. DISCLAIMER OF WARRANTY.

     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

8. TERMINATION.

     8.1.  This License and the rights granted hereunder will terminate
     automatically if You fail to comply with terms herein and fail to cure
     such breach within 30 days of becoming aware of the breach. All
     sublicenses to the Covered Code which are properly granted shall
     survive any termination of this License. Provisions which, by their
     nature, must remain in effect beyond the termination of this License
     shall survive.

     8.2.  If You initiate litigation by asserting a patent infringement
     claim (excluding declatory judgment actions) against Initial Developer
     or a Contributor (the Initial Developer or Contributor against whom
     You file such action is referred to as "Participant")  alleging that:

     (a)  such Participant's Contributor Version directly or indirectly
     infringes any patent, then any and all rights granted by such
     Participant to You under Sections 2.1 and/or 2.2 of this License
     shall, upon 60 days notice from Participant terminate prospectively,
     unless if within 60 days after receipt of notice You either: (i)
     agree in writing to pay Participant a mutually agreeable reasonable
     royalty for Your past and future use of Modifications made by such
     Participant, or (ii) withdraw Your litigation claim with respect to
     the Contributor Version against such Participant.  If within 60 days
     of notice, a reasonable royalty and payment arrangement are not
     mutually agreed upon in writing by the parties or the litigation claim
     is not withdrawn, the rights granted by Participant to You under
     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
     the 60 day notice period specified above.

     (b)  any software, hardware, or device, other than such Participant's
     Contributor Version, directly or indirectly infringes any patent, then
     any rights granted to You by such Participant under Sections 2.1(b)
     and 2.2(b) are revoked effective as of the date You first made, used,
     sold, distributed, or had made, Modifications made by that
     Participant.

     8.3.  If You assert a patent infringement claim against Participant
     alleging that such Participant's Contributor Version directly or
     indirectly infringes any patent where such claim is resolved (such as
     by license or settlement) prior to the initiation of patent
     infringement litigation, then the reasonable value of the licenses
     granted by such Participant under Sections 2.1 or 2.2 shall be taken
     into account in determining the amount or value of any payment or
     license.

     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
     all end user license agreements (excluding distributors and resellers)
     which have been validly granted by You or any distributor hereunder
     prior to termination shall survive termination.

9. LIMITATION OF LIABILITY.

     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

10. U.S. GOVERNMENT END USERS.

     The Covered Code is a "commercial item," as that term is defined in
     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
     software" and "commercial computer software documentation," as such
     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
     all U.S. Government End Users acquire Covered Code with only those
     rights set forth herein.

11. MISCELLANEOUS.

     This License represents the complete agreement concerning subject
     matter hereof. If any provision of this License is held to be
     unenforceable, such provision shall be reformed only to the extent
     necessary to make it enforceable. This License shall be governed by
     California law provisions (except to the extent applicable law, if
     any, provides otherwise), excluding its conflict-of-law provisions.
     With respect to disputes in which at least one party is a citizen of,
     or an entity chartered or registered to do business in the United
     States of America, any litigation relating to this License shall be
     subject to the jurisdiction of the Federal Courts of the Northern
     District of California, with venue lying in Santa Clara County,
     California, with the losing party responsible for costs, including
     without limitation, court costs and reasonable attorneys' fees and
     expenses. The application of the United Nations Convention on
     Contracts for the International Sale of Goods is expressly excluded.
     Any law or regulation which provides that the language of a contract
     shall be construed against the drafter shall not apply to this
     License.

12. RESPONSIBILITY FOR CLAIMS.

     As between Initial Developer and the Contributors, each party is
     responsible for claims and damages arising, directly or indirectly,
     out of its utilization of rights under this License and You agree to
     work with Initial Developer and Contributors to distribute such
     responsibility on an equitable basis. Nothing herein is intended or
     shall be deemed to constitute any admission of liability.

13. MULTIPLE-LICENSED CODE.

     Initial Developer may designate portions of the Covered Code as
     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
     Developer permits you to utilize portions of the Covered Code under
     Your choice of the MPL or the alternative licenses, if any, specified
     by the Initial Developer in the file described in Exhibit A.

EXHIBIT A -Mozilla Public License.

     ``The contents of this file are subject to the Mozilla Public License
     Version 1.1 (the "License"); you may not use this file except in
     compliance with the License. You may obtain a copy of the License at
     https://www.mozilla.org/MPL/

     Software distributed under the License is distributed on an "AS IS"
     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
     License for the specific language governing rights and limitations
     under the License.

     The Original Code is ______________________________________.

     The Initial Developer of the Original Code is ________________________.
     Portions created by ______________________ are Copyright (C) ______
     _______________________. All Rights Reserved.

     Contributor(s): ______________________________________.

     Alternatively, the contents of this file may be used under the terms
     of the _____ license (the  "[___] License"), in which case the
     provisions of [______] License are applicable instead of those
     above.  If you wish to allow use of your version of this file only
     under the terms of the [____] License and not to allow others to use
     your version of this file under the MPL, indicate your decision by
     deleting  the provisions above and replace  them with the notice and
     other provisions required by the [___] License.  If you do not delete
     the provisions above, a recipient may use your version of this file
     under either the MPL or the [___] License."

     [NOTE: The text of this Exhibit A may differ slightly from the text of
     the notices in the Source Code files of the Original Code. You should
     use the text of this Exhibit A rather than the text found in the
     Original Code Source Code for Your Modifications.]

nux

Nux License Agreement

    Copyright (c) 2005, The Regents of the University of California, through Lawrence Berkeley National Laboratory 
	(subject to receipt of any required approvals from the U.S. Dept. of Energy). 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) Neither the name of the University of California, Lawrence Berkeley National Laboratory, U.S. Dept. of Energy nor the names of its 
	contributors may be used to endorse or promote products derived from this software without specific prior written permission.

    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.

    You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of 
	the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to 
	Lawrence Berkeley National Laboratory, without imposing a separate written license agreement for such Enhancements, then you hereby grant 
	the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into 
	other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form.

ofl-1.1

Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
with Reserved Font Name <Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
with Reserved Font Name <additional Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded, 
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

otn

Oracle Technology Network Development and Distribution License Terms

 
Export Controls on the Programs
Selecting the "Accept License Agreement" button is a confirmation of your 
agreement that you comply, now and during the trial term, with each of the 
following statements:

 
-You are not a citizen, national, or resident of, and are not under control of, 
the government of Cuba, Iran, Sudan, Libya, North Korea, Syria, nor any country 
to which the United States has prohibited export.
-You will not download or otherwise export or re-export the Programs, directly 
or indirectly, to the above mentioned countries nor to citizens, nationals or 
residents of those countries.
-You are not listed on the United States Department of Treasury lists of 
Specially Designated Nationals, Specially Designated Terrorists, and Specially 
Designated Narcotic Traffickers, nor are you listed on the United States 
Department of Commerce Table of Denial Orders.

 
You will not download or otherwise export or re-export the Programs, directly 
or indirectly, to persons on the above mentioned lists.

 
You will not use the Programs for, and will not allow the Programs to be used 
for, any purposes prohibited by United States law, including, without 
limitation, for the development, design, manufacture or production of nuclear, 
chemical or biological weapons of mass destruction.

 
EXPORT RESTRICTIONS
You agree that U.S. export control laws and other applicable export and import 
laws govern your use of the programs, including technical data; additional 
information can be found on Oracle®'s Global Trade Compliance web site 
(http://www.oracle.com/products/export).

 
You agree that neither the programs nor any direct product thereof will be 
exported, directly, or indirectly, in violation of these laws, or will be used 
for any purpose prohibited by these laws including, without limitation, 
nuclear, chemical, or biological weapons proliferation.

 
Oracle Employees: Under no circumstances are Oracle Employees authorized to 
download software for the purpose of distributing it to customers. Oracle 
products are available to employees for internal use or demonstration purposes 
only. In keeping with Oracle's trade compliance obligations under U.S. and 
applicable multilateral law, failure to comply with this policy could result in 
disciplinary action up to and including termination.

 
Note: You are bound by the Oracle Technology Network ("OTN") License Agreement 
terms. The OTN License Agreement terms also apply to all updates you receive 
under your Technology Track subscription.

 
The OTN License Agreement terms below supercede any shrinkwrap license on the 
OTN Technology Track software CDs and previous OTN License terms (including the 
Oracle Program License as modified by the OTN Program Use Certificate).

 
Oracle Technology Network Development and Distribution License Agreement


"We," "us," and "our" refers to Oracle America, Inc., for and on behalf of 
itself and its subsidiaries and affiliates under common control. "You" and 
"your" refers to the individual or entity that wishes to use the programs from 
Oracle. "Programs" refers to the software product you wish to download and use 
and program documentation. "License" refers to your right to use the programs 
under the terms of this agreement. This agreement is governed by the 
substantive and procedural laws of California. You and Oracle agree to submit 
to the exclusive jurisdiction of, and venue in, the courts of San Francisco, 
San Mateo, or Santa Clara counties in California in any dispute arising out of 
or relating to this agreement.

We are willing to license the programs to you only upon the condition that you 
accept all of the terms contained in this agreement. Read the terms carefully 
and select the "Accept" button at the bottom of the page to confirm your 
acceptance. If you are not willing to be bound by these terms, select the "Do 
Not Accept" button and the registration process will not continue.

License Rights
We grant you a nonexclusive, nontransferable limited license to use the 
programs: (a) for purposes of developing, testing, prototyping and running 
applications you have developed for your own internal data processing 
operations; (b) to distribute the programs with applications you have developed 
to your customers provided that each such licensee agrees to license terms 
consistent with the terms of this Agreement, you do not charge your end users 
any additional fees for the use of the programs, and your end users may only 
use the programs to run your applications for their own business operations; 
and (c) to use the programs to provide third party demonstrations and training. 
You are not permitted to use the programs for any purpose other than as 
permitted under this Agreement. If you want to use the programs for any purpose 
other than as expressly permitted under this agreement you must contact us, or 
an Oracle reseller, to obtain the appropriate license. We may audit your use 
and distribution of the programs. Program documentation is either shipped with 
the programs, or documentation may accessed online at 
http://www.oracle.com/technetwork/indexes/documentation/index.html.

Ownership and Restrictions
We retain all ownership and intellectual property rights in the programs. You 
may make a sufficient number of copies of the programs for the licensed use and 
one copy of the programs for backup purposes.

You may not:
- use the programs for any purpose other than as provided above;
- distribute the programs unless accompanied with your applications;
- charge your end users for use of the programs;
- remove or modify any program markings or any notice of our proprietary rights;
- use the programs to provide third party training on the content and/or 
functionality of the programs, except for training your licensed users;
- assign this agreement or give the programs, program access or an interest in 
the programs to any individual or entity except as provided under this 
agreement;
- cause or permit reverse engineering (unless required by law for 
interoperability), disassembly or decompilation of the programs;
- disclose results of any program benchmark tests without our prior consent.

Program Distribution
We grant you a nonexclusive, nontransferable right to copy and distribute the 
programs to your end users provided that you do not charge your end users for 
use of the programs and provided your end users may only use the programs to 
run your applications for their business operations. Prior to distributing the 
programs you shall require your end users to execute an agreement binding them 
to terms consistent with those contained in this section and the sections of 
this agreement entitled "License Rights," "Ownership and Restrictions," 
"Export," "Disclaimer of Warranties and Exclusive Remedies," "No Technical 
Support," "End of Agreement," "Relationship Between the Parties," and "Open 
Source." You must also include a provision stating that your end users shall 
have no right to distribute the programs, and a provision specifying us as a 
third party beneficiary of the agreement. You are responsible for obtaining 
these agreements with your end users.

You agree to: (a) defend and indemnify us against all claims and damages caused 
by your distribution of the programs in breach of this agreements and/or 
failure to include the required contractual provisions in your end user 
agreement as stated above; (b) keep executed end user agreements and records of 
end user information including name, address, date of distribution and identity 
of programs distributed; (c) allow us to inspect your end user agreements and 
records upon request; and, (d) enforce the terms of your end user agreements so 
as to effect a timely cure of any end user breach, and to notify us of any 
breach of the terms.

Export
You agree that U.S. export control laws and other applicable export and import 
laws govern your use of the programs, including technical data; additional 
information can be found on Oracle's Global Trade Compliance web site located 
at http://www.oracle.com/products/export/index.html?content.html. You agree 
that neither the programs nor any direct product thereof will be exported, 
directly, or indirectly, in violation of these laws, or will be used for any 
purpose prohibited by these laws including, without limitation, nuclear, 
chemical, or biological weapons proliferation.

Disclaimer of Warranty and Exclusive Remedies

THE PROGRAMS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. WE FURTHER 
DISCLAIM ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY 
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
NONINFRINGEMENT.

IN NO EVENT SHALL WE BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE 
OR CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR DATA 
USE, INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR 
TORT, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR 
ENTIRE LIABILITY FOR DAMAGES HEREUNDER SHALL IN NO EVENT EXCEED ONE THOUSAND 
DOLLARS (U.S. $1,000).

No Technical Support
Our technical support organization will not provide technical support, phone 
support, or updates to you for the programs licensed under this agreement.

Restricted Rights
If you distribute a license to the United States government, the programs, 
including documentation, shall be considered commercial computer software and 
you will place a legend, in addition to applicable copyright notices, on the 
documentation, and on the media label, substantially similar to the following:

NOTICE OF RESTRICTED RIGHTS

"Programs delivered subject to the DOD FAR Supplement are 'commercial computer 
software' and use, duplication, and disclosure of the programs, including 
documentation, shall be subject to the licensing restrictions set forth in the 
applicable Oracle license agreement. Otherwise, programs delivered subject to 
the Federal Acquisition Regulations are 'restricted computer software' and use, 
duplication, and disclosure of the programs, including documentation, shall be 
subject to the restrictions in FAR 52.227-19, Commercial Computer 
Software-Restricted Rights (June 1987). Oracle America, Inc., 500 Oracle 
Parkway, Redwood City, CA 94065."

End of Agreement
You may terminate this agreement by destroying all copies of the programs. We 
have the right to terminate your right to use the programs if you fail to 
comply with any of the terms of this agreement, in which case you shall destroy 
all copies of the programs.

Relationship Between the Parties
The relationship between you and us is that of licensee/licensor. Neither party 
will represent that it has any authority to assume or create any obligation, 
express or implied, on behalf of the other party, nor to represent the other 
party as agent, employee, franchisee, or in any other capacity. Nothing in this 
agreement shall be construed to limit either party's right to independently 
develop or distribute software that is functionally similar to the other 
party's products, so long as proprietary information of the other party is not 
included in such software.

Open Source
"Open Source" software - software available without charge for use, 
modification and distribution - is often licensed under terms that require the 
user to make the user's modifications to the Open Source software or any 
software that the user 'combines' with the Open Source software freely 
available in source code form. If you use Open Source software in conjunction 
with the programs, you must ensure that your use does not: (i) create, or 
purport to create, obligations of us with respect to the Oracle programs; or 
(ii) grant, or purport to grant, to any third party any rights to or immunities 
under our intellectual property or proprietary rights in the Oracle programs. 
For example, you may not develop a software program using an Oracle program and 
an Open Source program where such use results in a program file(s) that 
contains code from both the Oracle program and the Open Source program 
(including without limitation libraries) if the Open Source program is licensed 
under a license that requires any "modifications" be made freely available. You 
also may not combine the Oracle program with programs licensed under the GNU 
General Public License ("GPL") in any manner that could cause, or could be 
interpreted or asserted to cause, the Oracle program or any modifications 
thereto to become subject to the terms of the GPL.

Entire Agreement
You agree that this agreement is the complete agreement for the programs and 
licenses, and this agreement supersedes all prior or contemporaneous agreements 
or representations. If any term of this agreement is found to be invalid or 
unenforceable, the remaining provisions will remain effective.

Last updated: 01/24/09

 
Should you have any questions concerning this License Agreement, or if you 
desire to contact Oracle for any reason, please write:
Oracle America, Inc.
500 Oracle Parkway,
Redwood City, CA 94065

 
Oracle may contact you to ask if you had a satisfactory experience installing 
and using this OTN software download.

postgresql-bsd

Copyright (c) 1997-2011, PostgreSQL Global Development Group
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. Neither the name of the PostgreSQL Global Development Group nor the names
   of its contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

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.

tcllib

license.tcllib

This software is copyrighted by Ajuba Solutions and other parties.
The following terms apply to all files associated with the software unless
explicitly disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal 
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license. 

tcltk

-----------------------------------------------------------------------
 Following is the original agreement for the Tcl/Tk software from
 Sun Microsystems.
-----------------------------------------------------------------------

This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., and other parties.  The following
terms apply to all files associated with the software unless explicitly
disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal 
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license. 

ucb

license.ucb

Portions of Jacl and Tcl Blend are
Copyright (c) 1997-1999 The Regents of the University of California.
All rights reserved.

Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that the above
copyright notice and the following two paragraphs appear in all copies
of this software.

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
ENHANCEMENTS, OR MODIFICATIONS.

Index

Symbols

* What's New in Squore 17.1?
New suggested http to https redirect method avoids having to patch and redeploy ear file, Redirecting from HTTP to HTTPS
RestoreContext supports passing only a versionId parameter to load a project's dashboard, Linking to Projects

A

Architecture, The Squore Ecosystem

C

Certificates, Key and Certificate Management
client, Giving Each User Their Own Temporary Folder
code, Using the LDAP Authentication Module
Collaboration
Allow users to contact project owners to gain access to a project, Managing Project Visibility
Command Line Interface, Squore CLI
Concurrent Analyses, Number of Concurrent Analyses
Concurrent Deletions, Number of Concurrent Delete Tasks
Confluence, Integrating Squore on Your Network
connector, Accessing Squore via HTTPS
Continuous Integration, Squore CLI, Using Squore in Continuous Integration

E

ejb-security-realm, Connecting to a Remote Licence Server
E-mail Notification, Notifying Users by E-Mail
E-Mail Notifications, Configuring E-Mail Notifications
Embedding Squore charts into other applications, Embedding Dashboard Elements
End Users, The Squore Web Interface

X

XML Schema
analysis.xsd, analysis.xsd
config-1.2.xsd, config-1.2.xsd
decision.xsd, decision.xsd
description.xsd, description.xsd
exports.xsd, exports.xsd
highlights.xsd, highlights.xsd
input-data-2.xsd, input-data-2.xsd
properties.xsd, properties.xsd
properties-1.2.xsd, properties-1.2.xsd
tutorials.xsd, tutorials.xsd
wizards.xsd, wizards.xsd