ÿØÿà JFIF ÿþ >CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
ÿÛ C
Server IP : 104.21.29.46 / Your IP : 216.73.216.123 Web Server : Apache System : Linux server1.morocco-tours.com 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : zagoradraa ( 1005) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/softaculous/testlink/ |
Upload File : |
| Current File : /var/softaculous/testlink/config.inc.php |
<?php
/**
* TestLink Open Source Project - http://testlink.sourceforge.net/
* This script is distributed under the GNU General Public License 2 or later.
*
* Constants and configuration parameters used throughout TestLink
*
* There are included extra files:
* - your customized settings - custom_config.inc.php
* - DB access - config_db.inc.php
* - constants - const.inc.php
* - basic checking - configCheck.php
*
* IMPORTANT:
* To adapt values to your needs DO NOT EDIT THIS FILE but use custom_config.inc.php and
* replace values of TestLink configuration variables.
* It saves your changes for the next upgrade in one extra file.
*
* @filesource config.inc.php
* @package TestLink
* @copyright 2005-2018, TestLink community
* @link http://www.testlink.org
*
*
**/
// ----------------------------------------------------------------------------
/* [INITIALIZATION] - DO NOT CHANGE THE SECTION */
/** @global array Global configuration class */
$tlCfg = new stdClass();
$tlCfg->api = new stdClass();
$tlCfg->cookie = new stdClass();
$tlCfg->document_generator = new stdClass();
$tlCfg->spec_cfg = new stdClass();
$tlCfg->exec_cfg = new stdClass();
$tlCfg->exec_cfg->view_mode = new stdClass();
$tlCfg->exec_cfg->exec_mode = new stdClass();
$tlCfg->UDFStripHTMLTags = true;
// allow to define additional execution types other than
// defined in testcase.class.php
// array(code => lblkey)
// code int value > latest standard execution code defined.
// lblkey => key to be used on lang_get() call.
//
$tlCfg->custom_execution_types = null;
$tlCfg->gui = new stdClass();
$tlCfg->gui->custom_fields = new stdClass();
$tlCfg->testcase_cfg = new stdClass();
$tlCfg->req_cfg = new stdClass();
$tlCfg->validation_cfg = new stdClass();
$tlCfg->custom_fields = new stdClass();
$tlCfg->req_spec_cfg = new stdClass();
$tlCfg->diffEngine = new stdClass();
$tlCfg->tplanDesign = new stdClass();
$tlCfg->notifications = new stdClass();
$tlCfg->proxy = new stdClass();
$tlCfg->reqTCLinks = new stdClass();
$tlCfg->keywords = new stdClass();
$tlCfg->keywords->onDeleteCheckFrozenTCVersions = TRUE;
$tlCfg->keywords->onDeleteCheckExecutedTCVersions = TRUE;
// main key testproject PREFIX
// element array
// 'addTCLinkIntoITS' true => add note to Issue Tracker to issue with
// ISSUE ID similar to the KEYWORD (see kwPrefix below)
//
// 'kwPrefix' to remove from keyword to create the ISSUE ID
//
$tlCfg->keywords->byTestProject = array();
$tlCfg->keywords->headsUpTSuiteOnExec = 'CMD_OPEN_ON_EXEC';
$tlCfg->accessWithoutLogin = array();
/** @uses database access definition (generated automatically by TL installer) */
@include_once('config_db.inc.php');
if( !defined('DB_TABLE_PREFIX') ) {
define('DB_TABLE_PREFIX','' );
}
/** The root dir for the testlink installation with trailing slash */
define('TL_ABS_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
/** Just for documentation */
$tlCfg->testlinkdotorg = 'http://www.testlink.org';
/** GUI themes (base for CSS and images)- modify if you create own one */
$tlCfg->theme_dir = 'gui/themes/default/';
/** Dir for compiled templates */
$tlCfg->temp_dir = TL_ABS_PATH . 'gui' . DIRECTORY_SEPARATOR .
'templates_c' . DIRECTORY_SEPARATOR;
if (($tpltmp = getenv('TESTLINK_TEMPLATES_C'))) {
$tlCfg->temp_dir = trim($tpltmp);
}
/** default filenames of CSS files of current GUI theme */
define('TL_CSS_MAIN', 'testlink.css');
define('TL_CSS_PRINT', 'tl_print.css');
define('TL_CSS_DOCUMENTS', 'tl_documents.css');
define('TL_THEME_BASE_DIR', $tlCfg->theme_dir);
define('TL_THEME_IMG_DIR', $tlCfg->theme_dir . 'images/');
define('TL_THEME_CSS_DIR', $tlCfg->theme_dir . 'css/');
define('TL_TESTLINK_CSS', TL_THEME_CSS_DIR . TL_CSS_MAIN);
define('TL_PRINT_CSS', TL_THEME_CSS_DIR . TL_CSS_PRINT);
// name of your custom.css, place it in same folder that standard TL css
// null or '' => do not use
$tlCfg->custom_css = null;
/** Include constants and magic numbers (users should not change it)*/
require_once(TL_ABS_PATH . 'cfg' . DIRECTORY_SEPARATOR . 'const.inc.php');
// ----------------------------------------------------------------------------
/** @var string used to have (when needed) a possibility to identify different TL instances
@since 1.9.4 used on mail subject when mail logger is used
*/
$tlCfg->instance_name = 'Main TestLink Instance';
// do not use blanks or special characters, use a short string
$tlCfg->instance_id = 'TLM';
$tlCfg->gui->ux = 'tl-classic';
/**
* Copied from MantisBT
*
* Prefix for all TestLink cookies
* This should be an identifier which does not include spaces or periods,
* and should be unique per TestLink installation, especially if
* $tlCfg->cookie_path is not restricting the cookies' scope to the actual
* TestLink directory.
* @see $tlCfg->cookie->path
* @global string $tlCfg->cookie->prefix
*/
$tlCfg->cookie->prefix = 'TESTLINK1920';
/**
* @link http://php.net/function.setcookie
*
*/
$tlCfg->cookie->expire = (time()+60*60*24*30); // 30 days;
$tlCfg->cookie->domain = '';
$tlCfg->cookie->secure = false;
$tlCfg->cookie->httponly = false;
$tlCfg->cookie->testProjectMemory = $tlCfg->cookie->prefix .
'_PROJ_ID_USER_ID_';
/**
* Copied from MantisBT
*
* Specifies the path under which a cookie is visible
* All scripts in this directory and its sub-directories will be able
* to access TestLink cookies.
* It is recommended to set this to the actual TestLink path.
* @link http://php.net/function.setcookie
* @global string $tlCfg->cookie->path
*/
$tlCfg->cookie->path = '/';
/* [ROLE INHERITANCE] */
/**
* possible values
*
* 'testproject'
* 'global'
*
* 'testproject'
* till a role is specifically assigned to test plan, test plan role
* will be inherited from test project role.
*
* IMPORTANT NOTICE
* test project role can be specifically assigned or inherited from
* user's global role.
*
* if test project specifically assigned role changes, and test plan role was inherited, then it will also changes, due to inheritance.
*
*
* 'global'
* till a role is specifically assigned to test plan, test plan role
* will be inherited from user's global role, and NOT from test project
* specifically assigned role.
*
* if test project specifically assigned role changes, will not be changed.
*
*/
$tlCfg->testplan_role_inheritance_mode = 'testproject';
/* [LOCALIZATION] */
/** @var string Default localization for users */
// The value must be available in $$tlCfg->locales (see cfg/const.inc.php).
// Note: An attempt will be done to establish the default locale
// automatically using $_SERVER['HTTP_ACCEPT_LANGUAGE']
$tlCfg->default_language = 'en_GB';
/**
* @var string Charset 'UTF-8' is only officially supported charset (Require
* MySQL version >= 4.1) 'ISO-8859-1' or another Charset could be set for
* backward compatability by experienced users. However we have not resources
* to support such patches.
**/
$tlCfg->charset = 'UTF-8';
/**
* @var string characters used to surround a description in the user interface
* (for example role)
**/
$tlCfg->gui_separator_open = '[';
$tlCfg->gui_separator_close = ']';
$tlCfg->gui_room = '[ %s ]';
/** @var string Title separators are used when componing an title using several strings */
$tlCfg->gui_title_separator_1 = ' : '; // object : name (Test Specification : My best product)
$tlCfg->gui_title_separator_2 = ' - '; // parent - child
/**
* @var string delimiter used to create DOC ID in this way:
* <test_project_Prefix> . g_testcase_cfg->glue_character . <doc_id>
* Could not be empty
*/
$tlCfg->testcase_cfg->glue_character = '-';
/**
* fonts set used to draw charts
**/
$tlCfg->charts_font_path = TL_ABS_PATH . "third_party/pchart/Fonts/tahoma.ttf";
/**
* font size used to draw charts
**/
$tlCfg->charts_font_size = 8;
// ----------------------------------------------------------------------------
/* [SERVER ENVIRONMENT] */
/**
* TICKET 4969: Add Setting to Force HTTPS
*/
$tlCfg->force_https = false;
/**
* @var integer Set the session timeout for inactivity [minutes].
* Default high value disables this feature.
*/
$tlCfg->sessionInactivityTimeout = 9900;
/**
* Set the session timeout value (in minutes).
* This will prevent sessions timing out after very short periods of time
* Warning: your server could block this settings
**/
//ini_set('session.cache_expire',900);
/**
* Set the session garbage collection timeout value (in seconds)
* The default session garbage collection in php is set to 1440 seconds (24 minutes)
* If you want sessions to last longer this must be set to a higher value.
* You may need to set this in your global php.ini if the settings don't take effect.
*/
//ini_set('session.gc_maxlifetime', 60*90);
$tlCfg->notifications->userSignUp = new stdClass();
$tlCfg->notifications->userSignUp->enabled = TRUE; // @see notifyGlobalAdmins()
$tlCfg->notifications->userSignUp->to = new stdClass();
$tlCfg->notifications->userSignUp->to->roles = array(TL_ROLES_ADMIN);
$tlCfg->notifications->userSignUp->to->users = null; // i.e. array('login01','login02');
// ----------------------------------------------------------------------------
/* [LOGGING] */
/** Error reporting - do we want php errors to show up for users */
/** configure on custom_config.inc.php */
/** error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_WARNING); */
/** error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING); */
error_reporting(E_ALL);
/** @var string Default level of logging (NONE, ERROR, INFO, DEBUG, EXTENDED)
* is not used by tlLogger, we need to change this in future.
*/
$tlCfg->log_level = 'ERROR';
/** @var boolean show smarty debug window */
$tlCfg->smarty_debug = false;
/**
* @var string Path to store logs -
* for security reasons (see http://itsecuritysolutions.org/2012-08-13-TestLink-1.9.3-multiple-vulnerabilities/)
* put it out of reach via web or configure access denied.
*/
$tlCfg->log_path = '[[softpath]]/logs/'; /* unix example */
if (($lp = getenv('TESTLINK_LOG_PATH'))) {
$tlCfg->log_path = trim($lp);
}
/**
* @var string How to warning user when security weak points exists.
*
* 'SCREEN': messages will displayed on login screen, and tl desktop
* 'FILE': a file with a list is created but users are not notified via GUI
* user will receive a message on screen. (default)
* 'SILENT': same that FILE, but user will not receive message on screen.
*/
$tlCfg->config_check_warning_mode = 'SILENT';
/**
* ONCE_FOR_SESSION
* ALWAYS
*/
$tlCfg->config_check_warning_frequence = 'ONCE_FOR_SESSION';
/**
*
*/
$tlCfg->userDocOnDesktop = OFF;
/**
* Configure if individual logging data stores are enabled of disabled
* Possibile values to identify loggers: 'db','file'
* $g_loggerCfg=null; all loggers enabled
* $g_loggerCfg['db']['enable']=true/false;
* $g_loggerCfg['file']['enable']=true/false;
* $g_loggerCfg['mail']['enable']=true/false;
*/
$g_loggerCfg = array('mail' => array('enable' => false));
/** @var integer All events older this value [days] are removed from the db, during login */
$g_removeEventsOlderThan = 30;
/** @var map keys: 'all' + values present on proprety of logger class $loggerTypeDomain
* values can be only these defined on logger.class.php
* @since 1.9.4
* example array('all' => array('INFO','AUDIT'),
* 'mail' => array('ERROR'))
*
* $tlCfg->loggerFilter = array('db' => array('DEBUG','AUDIT','WARNING','ERROR'),
* 'file' => array('NONE'));
*
*/
$tlCfg->loggerFilter = null; // default defined on logger.class.php ;
// ----------------------------------------------------------------------------
/* [SMTP] */
/**
* @var string SMTP server name or IP address ("localhost" should work in the most cases)
* Configure using custom_config.inc.php
* @uses lib/functions/email_api.php
*/
$g_smtp_host = '[smtp_host_not_configured]'; # SMTP server MUST BE configured
# Configure using custom_config.inc.php
$g_tl_admin_email = '[testlink_sysadmin_email_not_configured]'; # for problem/error notification
$g_from_email = '[from_email_not_configured]'; # email sender
$g_return_path_email = '[return_path_email_not_configured]';
/**
* Email notification priority (low by default)
* Urgent = 1, Not Urgent = 5, Disable = 0
**/
$g_mail_priority = 5;
/**
* Taken from mantis for phpmailer config
* select the method to mail by:
* PHPMAILER_METHOD_MAIL - mail()
* PHPMAILER_METHOD_SENDMAIL - sendmail
* PHPMAILER_METHOD_SMTP - SMTP
*/
$g_phpMailer_method = PHPMAILER_METHOD_SMTP;
/** Configure only if SMTP server requires authentication */
$g_smtp_username = ''; # user
$g_smtp_password = ''; # password
/**
* This control the connection mode to SMTP server.
* Can be '', 'ssl','tls'
* @global string $g_smtp_connection_mode
*/
$g_smtp_connection_mode = '';
/**
* The smtp port to use. The typical SMTP ports are 25 and 587. The port to use
* will depend on the SMTP server configuration and hence others may be used.
* @global int $g_smtp_port
*/
$g_smtp_port = 25;
/**
* @see https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
* Opportunistic TLS
*/
$g_SMTPAutoTLS = false;
// ----------------------------------------------------------------------------
/* [User Authentication] */
/**
* Login authentication method:
* 'MD5' => use password stored on db => will be deprecated and DB used.
* 'DB' => Same as MD5 use password stored on db
* 'LDAP' => use password from LDAP Server
*/
$tlCfg->authentication['domain'] = array('DB' => array('description' => 'DB', 'allowPasswordManagement' => true) ,
'LDAP' => array('description' => 'LDAP', 'allowPasswordManagement' => false) );
/* Default Authentication method */
$tlCfg->authentication['method'] = 'DB';
// Applies only if authentication methos is DB.
// Used when:
// 1. user sign up
//
// null => only check password IS NOT EMPTY
//
// $tlCfg->passwordChecks = array('minlen' => 8,'maxlen' => 20,'number' => true,'letter' => true,
// 'capital' => true, 'symbol' => true);
$tlCfg->passwordChecks = null;
// Applies ONLY to the HTML input.
// If auth method is DB, password will be stored as MD5 HASH that requires 32 chars (128 bits)
$tlCfg->loginPagePasswordMaxLenght = 40;
/**
* Standard logout url, used also when SSO is used and hint to skip SSO is used.
* '' => use standard TestLink page
*/
$tlCfg->logoutUrl = '';
// users that will not allow expiration date management on GUI
$tlCfg->noExpDateUsers = array('admin');
/**
* OAUTH auth
* Configure this on custom_config.inc.php
*/
$tlCfg->OAuthServers = array();
// Google
// $tlCfg->OAuthServers = array();
// $tlCfg->OAuthServers[1]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[1]['oauth_name'] = 'google';
// Get from /gui/themes/default/images
// $tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';
// Can be authorization_code (by default), client_credentials or password
// $tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';
// $tlCfg->OAuthServers[1]['oauth_url'] = 'https://accounts.google.com/o/oauth2/auth';
// $tlCfg->OAuthServers[1]['token_url'] = 'https://accounts.google.com/o/oauth2/token';
// false => then the only user will be selected automatically (applied for google)
// $tlCfg->OAuthServers[1]['oauth_force_single'] = false;
// the domain you want to whitelist
// $tlCfg->OAuthServers[1]['oauth_domain'] = 'google.com';
// $tlCfg->OAuthServers[1]['oauth_profile'] = 'https://www.googleapis.com/oauth2/v1/userinfo';
// $tlCfg->OAuthServers[1]['oauth_scope'] = 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile';
// Github
// $tlCfg->OAuthServers[2]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[2]['oauth_name'] = 'github';
// $tlCfg->OAuthServers[2]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[2]['oauth_client_secret'] = 'CLIENT_SECRET';
// Can be authorization_code (by default), client_credentials or password
// $tlCfg->OAuthServers[2]['oauth_grant_type'] = 'authorization_code';
// $tlCfg->OAuthServers[2]['oauth_url'] = 'https://github.com/login/oauth/authorize';
// $tlCfg->OAuthServers[2]['token_url'] = 'https://github.com/login/oauth/access_token';
// false => then the only user will be selected automatically (applied for google)
// $tlCfg->OAuthServers[2]['oauth_force_single'] = false;
// $tlCfg->OAuthServers[2]['oauth_profile'] = 'https://api.github.com/user';
// $tlCfg->OAuthServers[2]['oauth_scope'] = 'user:email';
//Microsoft
//$tlCfg->OAuthServers[1]['oauth_enabled'] = true;
//$tlCfg->OAuthServers[1]['oauth_name'] = 'microsoft';
//$tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
//$tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';
// Can be authorization_code (by default), client_credentials or password
//$tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';
//$tlCfg->OAuthServers[1]['oauth_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';
//$tlCfg->OAuthServers[1]['token_url'] = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
//$tlCfg->OAuthServers[1]['oauth_force_single'] = true;
//$tlCfg->OAuthServers[1]['oauth_profile'] = 'https://graph.microsoft.com/v1.0/me';
//$tlCfg->OAuthServers[1]['oauth_scope'] = 'User.Read';
//$tlCfg->OAuthServers[1]['redirect_uri'] = 'TESTLINKURL/microsoftoauth.php';
// Azure AD
// Fill in CLIENT_ID,CLIENT_SECRET,YOURTESTLINKSERVER and TENANTID with your information
// See this article for registering an application: https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code
// Make sure, you grant admint consent for it: https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/configure-user-consent
// $tlCfg->OAuthServers[1]['oauth_enabled'] = true;
// $tlCfg->OAuthServers[1]['oauth_name'] = 'azuread'; //do not change this
// $tlCfg->OAuthServers[1]['oauth_client_id'] = 'CLIENT_ID';
// $tlCfg->OAuthServers[1]['oauth_client_secret'] = 'CLIENT_SECRET';
// $tlCfg->OAuthServers[1]['redirect_uri'] = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . '/login.php';
// $tlCfg->OAuthServers[1]['oauth_force_single'] = true;
// $tlCfg->OAuthServers[1]['oauth_grant_type'] = 'authorization_code';
// $tlCfg->OAuthServers[1]['oauth_url'] = 'https://login.microsoftonline.com/TENANTID/oauth2/authorize';
// $tlCfg->OAuthServers[1]['token_url'] = 'https://login.microsoftonline.com/TENANTID/oauth2/token';
// the domain you want to whitelist (email domains)
// $tlCfg->OAuthServers[1]['oauth_domain'] = 'autsoft.hu';
// $tlCfg->OAuthServers[1]['oauth_profile'] = 'https://login.microsoftonline.com/TENANTID/openid/userinfo';
// $tlCfg->OAuthServers[1]['oauth_scope'] = 'https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read openid profile email';
/**
* Single Sign On authentication
*
* SSO_method: CLIENT_CERTIFICATE, tested with Apache Webserver
* SSP_method: WEBSERVER_VAR, tested with Apache and Shibboleth Service Provider.
*/
$tlCfg->authentication['SSO_enabled'] = false;
$tlCfg->authentication['SSO_logout_destination'] = 'YOUR LOGOUT DESTINATION';
// Tested with Apache Webserver
//$tlCfg->authentication['SSO_method'] = 'CLIENT_CERTIFICATE';
//$tlCfg->authentication['SSO_uid_field'] = 'SSL_CLIENT_S_DN_Email';
// Tested with Apache and Shibboleth Service Provider
//$tlCfg->authentication['SSO_method'] = 'WEBSERVER_VAR';
//$tlCfg->authentication['SSO_uid_field'] = 'REMOTE_USER';
//$tlCfg->authentication['SSO_user_target_dbfield'] = 'email';
/**
* LDAP authentication credentials, Multiple LDAP Servers can be used.
* User will be authenticaded against each server (one after other using array index order)
* till authentication succeed or all servers have been used.
*/
$tlCfg->authentication['ldap'] = array();
$tlCfg->authentication['ldap'][1]['ldap_server'] = 'localhost';
$tlCfg->authentication['ldap'][1]['ldap_port'] = '389';
$tlCfg->authentication['ldap'][1]['ldap_version'] = '3'; // could be '2' in some cases
$tlCfg->authentication['ldap'][1]['ldap_root_dn'] = 'dc=mycompany,dc=com';
$tlCfg->authentication['ldap'][1]['ldap_bind_dn'] = ''; // Left empty for anonymous LDAP binding
$tlCfg->authentication['ldap'][1]['ldap_bind_passwd'] = ''; // Left empty for anonymous LDAP binding
$tlCfg->authentication['ldap'][1]['ldap_tls'] = false; // true -> use tls
// Following configuration parameters are used to build
// ldap filter and ldap attributes used by ldap_search()
//
// filter => "(&$t_ldap_organization($t_ldap_uid_field=$t_username))";
// attributess => array( $t_ldap_uid_field, 'dn' );
//
// This can be used to manage situation like explained on post on forum:
// ActiveDirectory + users in AD group
//
$tlCfg->authentication['ldap'][1]['ldap_organization'] = ''; // e.g. '(organizationname=*Traffic)'
$tlCfg->authentication['ldap'][1]['ldap_uid_field'] = 'uid'; // Use 'sAMAccountName' for Active Directory
// Configure following fields in custom_config.inc.php according your configuration
$tlCfg->authentication['ldap'][1]['ldap_email_field'] = 'mail';
$tlCfg->authentication['ldap'][1]['ldap_firstname_field'] = 'givenname';
$tlCfg->authentication['ldap'][1]['ldap_surname_field'] = 'sn';
// Follows Mantisbt idea.
// True if user does not exist on DB, but can be get from LDAP,
// the user will be created AUTOMATICALLY with default user role.
// Create user with following data from LDAP
// mail
// name
// surname
$tlCfg->authentication['ldap_automatic_user_creation'] = false;
/** Enable/disable Users to create accounts on login page */
$tlCfg->user_self_signup = TRUE;
/** What happens when Administrator push the Reset Password Button
'send_password_by_mail'
'display_on_screen'
*/
$tlCfg->password_reset_send_method = 'send_password_by_mail';
/**
* Validating new user login names
* Taken mantisbt version 1.2.5 - www.mantisbt.org and adapted
*
* The regular expression to use when validating new user login names
* The default regular expression allows a-z, A-Z, 0-9, +, -, dot, @ and underscore.
* For testing regular expressions, use http://rubular.com/.
* For regular expression to englihs, use http://xenon.stanford.edu/~xusch/regexp/analyzer.html
*/
$tlCfg->validation_cfg->user_login_valid_regex='/^([a-z\d\-.+_@]+(@[a-z\d\-.]+\.[a-z]{2,4})?)$/i';
/**
* Validating user email addresses
* Example of other possibilities:
* <code>
* $regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*" .
* "@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i";
* $regex = "/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/";
* </code>
**/
//
// This expression does not allow Top Level Domian (last part of domain name) longer than 4
// If you need to change this
// Configure this on custom_config.inc.php
$tlCfg->validation_cfg->user_email_valid_regex_js = "/^(\w+)([-+.][\w]+)*@(\w[-\w]*\.){1,5}([A-Za-z]){2,4}$/";
$tlCfg->validation_cfg->user_email_valid_regex_php = "/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/U";
// --------------------------------------------------------------------------------------
/* [API] */
/** XML-RPC API availability - do less than promised ;)
FALSE => user are not able to generate and set his/her API key.
XML-RPC server do not check this config in order to answer or not a call.
*/
$tlCfg->api->enabled = TRUE;
// used to display API ID info in the *View pages
$tlCfg->api->id_format = "[ID: %s ]";
// ---------------------------------------------------------------------------------
/* [GUI LAYOUT] */
/** Company logo (used by navigation bar and login page page) */
$tlCfg->logo_login = 'tl-logo-transparent-25.png';
$tlCfg->logo_navbar = 'tl-logo-transparent-12.5.png';
/** Height of the navbar always displayed */
$tlCfg->navbar_height = 70;
/** Login page could show an informational text */
$tlCfg->login_info = ''; // Empty by default
/**
* controls if pagination (via Javascript) will be enabled
*/
$tlCfg->gui->projectView = new stdClass();
$tlCfg->gui->projectView->pagination = new stdClass();
$tlCfg->gui->projectView->pagination->enabled = true;
$tlCfg->gui->projectView->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';
$tlCfg->gui->usersAssign = new stdClass();
$tlCfg->gui->usersAssign->pagination = new stdClass();
$tlCfg->gui->usersAssign->pagination->enabled = true;
$tlCfg->gui->usersAssign->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';
$tlCfg->gui->planView = new stdClass();
$tlCfg->gui->planView->pagination = new stdClass();
$tlCfg->gui->planView->pagination->enabled = true;
$tlCfg->gui->planView->pagination->length = '[20, 40, 60, -1], [20, 40, 60, "All"]';
$tlCfg->gui->planView->itemQtyForTopButton = 10;
$tlCfg->gui->buildView = new stdClass();
$tlCfg->gui->buildView->itemQtyForTopButton = 10;
/**
* controls if operation area (buttons) starts open ('' or 'inline') or closed ('none') on:
* - test suite management
* - test case management
* - req. spec management
* - req. management
*/
$tlCfg->gui->op_area_display = new stdClass();
// test_spec_container => test project, test suite
$tlCfg->gui->op_area_display->test_spec_container = 'none'; // ''
$tlCfg->gui->op_area_display->test_case = 'none'; // 'inline'
$tlCfg->gui->op_area_display->req_spec_container = 'none'; // 'inline'
$tlCfg->gui->op_area_display->req = 'none'; // 'inline'
/**
* @var string Availability of Test Project specific background colour
* 'background' -> standard behaviour for 1.6.x you can have a different
* background colour for every test project.
* 'none' -> new behaviour no background color change
*/
$tlCfg->gui->testproject_coloring = 'none'; // I'm sorry default is not coloring using coloring is a pain
// and useless
/** @TODO havlatm4francisco Ok, then merge these two attributes into one */
/** default background color */
$tlCfg->gui->background_color = '#9BD';
// ENABLED: on features that assign user role to test projects and test plan, colour user name
// according GLOBAL role
// DISABLED: do not color [STANDARD BEHAVIOUR]
$tlCfg->gui->usersAssignGlobalRoleColoring = DISABLED;
// Enable/disable rounded corners via javascript
$tlCfg->gui->round_corners = new stdClass();
$tlCfg->gui->round_corners->exec_history = ENABLED;
$tlCfg->gui->round_corners->tc_title = ENABLED;
$tlCfg->gui->round_corners->tc_spec = ENABLED;
/**
* Display name definition (used to build a human readable display name for users)
* Example of values:
* '%first% %last%' -> John Cook
* '%last%, %first%' -> Cook John
* '%first% %last% %login%' -> John Cook [ux555]
**/
$tlCfg->username_format = '%login%';
/** Configure the frame frmWorkArea navigator width */
$tlCfg->frame_workarea_default_width = "30%";
/** true => icon edit will be added into <a href> as indication an edit features */
$tlCfg->gui->show_icon_edit = false;
/**
* '' => test project name
* 'prefix' => prefix : test project name
*
* ATTENTION : * is used to indicate test project is INACTIVE
* see also $tlCfg->gui->tprojects_combo_order_by
*/
$tlCfg->gui->tprojects_combo_format = 'prefix';
/**
* Order to use when building a testproject combobox (value must be SQL compliant)
* For example:
* 'ORDER BY name'
* 'ORDER_BY nodes_hierarchy.id DESC' -> similar effect to order last created firts
**/
// $tlCfg->gui->tprojects_combo_order_by = 'ORDER BY nodes_hierarchy.id DESC';
$tlCfg->gui->tprojects_combo_order_by = 'ORDER BY TPROJ.prefix ASC';
/** Configure the input size of test case search by id on navigation bar.
* This value will be added to the length of the prefix to dynamically set input size.
* Example: prefix is "projectA-" -> length of prefix is 9
* Now the here defined value (default: 6) will be added to the prefix length
* -> Input field will have an input size of 15
**/
$tlCfg->gui->dynamic_quick_tcase_search_input_size = 6;
// used to round percentages on metricsDashboard.php
$tlCfg->dashboard_precision = 2;
/**
* Choose what kind of webeditor you want to use in every TL area. This configuration
* will be used if no element with search key (area) is found on this structure.
* Every element is a mp with this configuration keys:
*
* 'type':
* 'ckeditor'
* 'tinymce' ==> will be deprecated in future versions
* 'none' -> use plain text area input field
* 'toolbar': only applicable for type = 'fckeditor', 'ckeditor'
* name of ToolbarSet (See: http://docs.fckeditor.net/ for more information about ToolbarSets)
* TestLink stores own definitions in <testlink_dir>/cfg/tl_ckeditor_config.js
*
*
* The next keys/areas are supported:
* 'all' (default setting),
* 'design', 'steps_design', 'testplan', 'build', 'testproject', 'role', 'requirement', 'requirement_spec'.
*
* Examples:
* <code>
* // Copy this to custom_config.inc.php if you want use 'tinymce' as default.
* $tlCfg->gui->text_editor['all'] = array( 'type' => 'tinymce');
* // Copy this to custom_config.inc.php if you want use 'nome' as default.
* $tlCfg->gui->text_editor['all'] = array( 'type' => 'none');
* //This configuration is useful only if default type is set to 'fckeditor'
* $tlCfg->gui->text_editor['design'] = array('toolbar' => 'tl_mini');
*
* $tlCfg->gui->text_editor['testplan'] = array( 'type' => 'none');
* $tlCfg->gui->text_editor['build'] = array( 'type' => 'fckeditor','toolbar' => 'tl_mini');
* $tlCfg->gui->text_editor['testproject'] = array( 'type' => 'tinymce');
* $tlCfg->gui->text_editor['role'] = array( 'type' => 'tinymce');
* $tlCfg->gui->text_editor['requirement'] = array( 'type' => 'none');
* $tlCfg->gui->text_editor['requirement_spec'] = array( 'type' => 'none');
* </code>
*
* Hint: After doing configuration changes, clean you Browser's cookies and cache
*/
/*
$tlCfg->gui->text_editor = array();
$tlCfg->gui->text_editor['all'] = array('type' => 'fckeditor',
'toolbar' => 'tl_default',
'configFile' => 'cfg/tl_ckeditor_config.js',);
$tlCfg->gui->text_editor['execution'] = array( 'type' => 'none');
*/
$tlCfg->gui->text_editor = array();
$tlCfg->gui->text_editor['all'] = array('type' => 'ckeditor','toolbar' => 'Testlink',
'configFile' => 'cfg/tl_ckeditor_config.js',
'height' => 150);
// mini toolbar for test case steps edit
$tlCfg->gui->text_editor['steps_design'] = array('type' => 'ckeditor','toolbar' => 'TestlinkMini',
'configFile' => 'cfg/tl_ckeditor_config.js',
'height' => 100);
$tlCfg->gui->text_editor['execution'] = array( 'type' => 'none');
$tlCfg->gui->text_editor['edit_execution'] = array( 'type' => 'none', 'cols' => 80, 'rows' => 20);
$tlCfg->gui->text_editor['display_execution_notes'] = array('type' => 'none', 'cols' => 80, 'rows' => 20);
/** User can choose order of menu areas */
$tlCfg->gui->layoutMainPageLeft = array( 'testProject' => 1, 'userAdministration' => 2 ,
'requirements' => 3, 'testSpecification' => 4,
'general' => 5);
$tlCfg->gui->layoutMainPageRight = array( 'testPlan' => 1, 'testExecution' => 2 ,
'testPlanContents' => 3);
/**
* Enable warning on a changed content before an user leave a page.
*
* Tested in:
* - IE8 OK
* - Firefox 3 OK
* - Chrome FAIL
*
* Does not work in Webkit browsers (Chrome, Safari) when using frames.
* Bug in webkit: https://bugs.webkit.org/show_bug.cgi?id=19418
*/
// seems that with config options that will be used on javascript via smarty template variables
// we are having problems using FALSE/TRUE => use 0/1 (or our CONSTANT DISABLED/ENABLED)
$tlCfg->gui->checkNotSaved = ENABLED;
// ----------------------------------------------------------------------------
/* [GUI: TREE] */
/** Default ordering value for new Test Suites and Test Cases to separate them */
$tlCfg->treemenu_default_testsuite_order = 1;
$tlCfg->treemenu_default_testcase_order = 1000;
/** show/hide testcase id on tree menu */
$tlCfg->treemenu_show_testcase_id = TRUE;
/** Reorder test cases based on TC Name or External ID in tree on
* test suite level using reorder button
*/
// 'EXTERNAL_ID' -> Sort on Test Case External ID field displayed on tree.(Default)
// 'NAME' -> Sort on Test Case Name field
$tlCfg->testcase_reorder_by = 'EXTERNAL_ID';
// $tlCfg->testcase_reorder_by = 'NAME';
// ----------------------------------------------------------------------------
/* [GUI: Javascript libraries] */
// May be in future another table sort engine will be better
// kryogenix.org -> Stuart Langridge sortTable
// '' (empty string) -> disable table sorting feature
$g_sort_table_engine='kryogenix.org';
// --------------------------------------------------------------------------------------
/* [Reports] */
$tlCfg->reportsCfg=new stdClass();
//Displayed execution statuses to use on reports (ordered). */
$tlCfg->reportsCfg->exec_status = $tlCfg->results['status_label_for_exec_ui'];
/**
* Default Offset in seconds for reporting start date (reports with date range)
* @uses lib/results/resultsMoreBuilds.php
*/
$tlCfg->reportsCfg->start_date_offset = (7*24*60*60); // one week
// minutes part is ignored but must be configured.
// Hint: set always to :00
$tlCfg->reportsCfg->start_time = '00:00';
// Result matrix (resultsTC.php)
$tlCfg->resultMatrixReport = new stdClass();
// Shows an extra column with the result of the latest execution on
// the lastest CREATED build
$tlCfg->resultMatrixReport->buildColumns['showExecutionResultLatestCreatedBuild'] = true;
// Result matrix (resultsTC.php)
// Shows an extra column with the note of latest execution on
// the lastest CREATED build
$tlCfg->resultMatrixReport->buildColumns['showExecutionNoteLatestCreatedBuild'] = true;
// Show build columns in revers order. The latest build is to the left
$tlCfg->resultMatrixReport->buildColumns['latestBuildOnLeft'] = false;
// After having got performance and usability issue, a limit on max qty of builds
// allowed on data extration has been set.
// Is absolutely arbitrary
//
$tlCfg->resultMatrixReport->buildQtyLimit = 6;
// ORDER BY sql clause, refers to builds table columns
$tlCfg->resultMatrixReport->buildOrderByClause = " ORDER BY name ASC";
// Show all available status details for test plans on metrics dashboard
$tlCfg->metrics_dashboard = new stdClass();
$tlCfg->metrics_dashboard->show_test_plan_status = false;
// ----------------------------------------------------------------------------
/* [GENERATED DOCUMENTATION] */
/**
* Texts and settings for printed documents
* Image is expected in directory <testlink_root>/gui/themes/<your_theme>/images/
* Leave text values empty if you would like to hide parameters.
*/
$tlCfg->document_generator->company_name = 'TestLink Community [configure $tlCfg->document_generator->company_name]';
$tlCfg->document_generator->company_copyright = '2012 © TestLink Community';
$tlCfg->document_generator->confidential_msg = '';
// Logo for generated documents
$tlCfg->document_generator->company_logo = $tlCfg->logo_login;
$tlCfg->document_generator->company_logo_height = '53';
/** CSS used in printed html documents */
$tlCfg->document_generator->css_template = 'css/tl_documents.css';
// CSS file for Requirement Specification Document, Requirement and Requirement Spec Print View
$tlCfg->document_generator->requirement_css_template = 'css/tl_documents.css';
/** Misc settings */
// Display test case version when creating:
// - test spec document
// - test reports
$tlCfg->document_generator->tc_version_enabled = TRUE;
// ----------------------------------------------------------------------------
/* [Test Executions] */
// $tlCfg->exec_cfg->enable_test_automation = DISABLED;
// ENABLED -> enable XML-RPC calls to external test automation server
// new buttons will be displayed on execution pages
// DISABLED -> disable
$tlCfg->exec_cfg->enable_test_automation = DISABLED;
// ASCending -> last execution at bottom
// DESCending -> last execution on top [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->history_order = 'DESC';
// TRUE -> the whole execution history for the choosen build will be showed
// FALSE -> just last execution for the choosen build will be showed [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->history_on = FALSE;
// TRUE -> test case VERY LAST (i.e. in any build) execution status will be displayed [STANDARD BEHAVIOUR]
// FALSE -> only last result on current build.
$tlCfg->exec_cfg->show_last_exec_any_build = TRUE;
// TRUE -> History for all builds will be shown
// FALSE -> Only history of the current build will be shown [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->show_history_all_builds = FALSE;
// TRUE -> History for all platforms (if any exists for test plan) will be shown
// FALSE -> Only history of the current platform will be shown [STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->show_history_all_platforms = FALSE;
// different models for the attachments management on execution page
// $att_model_m1 -> shows upload button and title
// $att_model_m2 -> hides upload button and title
$tlCfg->exec_cfg->att_model = $att_model_m2; //defined in const.inc.php
// IVU
// Default Value
// USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS
// USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS
// USE_LATEST_EXEC_ON_TESTPLAN_PLAT_FOR_COUNTERS
$tlCfg->exec_cfg->tcases_counters_mode = array();
$tlCfg->exec_cfg->tcases_counters_mode['with_platforms'] =
USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS;
$tlCfg->exec_cfg->tcases_counters_mode['without_platforms'] =
USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS;
$tlCfg->exec_cfg->tcases_counters_mode_domain = array();
$tlCfg->exec_cfg->tcases_counters_mode_domain['with_platforms'] =
array('USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS',
'USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS',
'USE_LATEST_EXEC_ON_TESTPLAN_PLAT_FOR_COUNTERS');
$tlCfg->exec_cfg->tcases_counters_mode_domain['without_platforms'] =
array('USE_LATEST_EXEC_ON_CONTEX_FOR_COUNTERS',
'USE_LATEST_EXEC_ON_TESTPLAN_FOR_COUNTERS');
// ENABLED -> test cases will be coloured according to test case status
$tlCfg->exec_cfg->enable_tree_testcases_colouring = ENABLED;
// ENABLED -> test cases will be coloured according to execution status on build selected for execution
// DISABLED -> test cases will be coloured according status on latest execution regardless of selected build
// see http://mantis.testlink.org/view.php?id=3450 for more details
$tlCfg->exec_cfg->testcases_colouring_by_selected_build = ENABLED;
// ENABLED -> test case counters will be coloured according to test case status
$tlCfg->exec_cfg->enable_tree_counters_colouring = ENABLED;
// This can help to avoid performance problems.
// Controls what happens on right frame when user clicks on a testsuite on tree.
// ENABLED -> show all test cases
// see $tlCfg->exec_cfg->show_testsuite_contents_deep
//
// DISABLED -> nothing happens, to execute a test case you need to click on test case
$tlCfg->exec_cfg->show_testsuite_contents = DISABLED;
// @since 1.9.13
// works in 'team' with $tlCfg->exec_cfg->show_testsuite_contents
// children: only direct children.
// deep: all test cases present in test suite and test suites in any level below
// selected test suite.
// IMPORTANT NOTICE:
// selecting deep can create performance issues.
//
$tlCfg->exec_cfg->show_testsuite_contents_deep = 'children';
// ENABLED -> enable testcase counters by status on tree
$tlCfg->exec_cfg->enable_tree_testcase_counters = ENABLED;
// Define list of roles that are affected by:
// $tlCfg->exec_cfg->view_mode and $tlCfg->exec_cfg->exec_mode
// User must reconfigure if define other simple tester roles
//
// In addition (till code changes) also roles that verify this condition:
// $effective_role->hasRight('testplan_execute') and !$effective_role->hasRight('testplan_planning')
// Will be affected by:
// $tlCfg->exec_cfg->view_mode and $tlCfg->exec_cfg->exec_mode
//
$tlCfg->exec_cfg->simple_tester_roles=array(TL_ROLES_TESTER);
// Filter Test cases a user with tester role can VIEW depending on
// test execution assignment.
// all: all test cases.
// assigned_to_me: test cases assigned to logged user.
// assigned_to_me_or_free: test cases assigned to logged user or not assigned
$tlCfg->exec_cfg->view_mode->tester='assigned_to_me';
// Filter Test cases a user with tester role can EXECUTE depending on
// test execution assignment.
// all: all test cases.
// assigned_to_me: test cases assigned to logged user.
// assigned_to_me_or_free: test cases assigned to logged user or not assigned
$tlCfg->exec_cfg->exec_mode->tester='assigned_to_me';
// How to set defaut values for execution fields (standard & custom)
// clean => all clean
// latest => get as much as possible values from latest execution on
// same context => test plan,platform, build
$tlCfg->exec_cfg->exec_mode->new_exec='clean';
// @since 1.9.15
// Before 1.9.15 save & move to next worked JUST inside
// a test suite => save_and_move = 'limited'
// 1.9.15 will move on whole test project
// save_and_move = 'unlimited'
$tlCfg->exec_cfg->exec_mode->save_and_move='unlimited';
$tlCfg->exec_cfg->exec_mode->addLinkToTLChecked = false;
$tlCfg->exec_cfg->exec_mode->addLinkToTLPrintViewChecked = false;
$tlCfg->exec_cfg->exec_mode->assignTaskChecked = false;
/** User filter in Test Execution navigator - default value */
// logged_user -> combo will be set to logged user
// none -> no filter applied by default
$tlCfg->exec_cfg->user_filter_default='none';
// 'horizontal' -> step and results on the same row
// 'vertical' -> steps on one row, results in the row bellow
$tlCfg->exec_cfg->steps_results_layout = 'horizontal';
// true => on single test case execution feature, notes and result
// can be provided for each step
// false => pre 1.9.10 behaviour
//
$tlCfg->exec_cfg->steps_exec = true;
// this setting will work on AND mode with:
// $tlCfg->exec_cfg->steps_exec
$tlCfg->exec_cfg->steps_exec_attachments = true;
// When textarea is displayed to allow user to write execution notes
// at step level, choose what to display:
// 'empty'
// 'latest' => latest execution notes.
$tlCfg->exec_cfg->steps_exec_notes_default = 'empty';
// 'empty'
// 'latest' => latest execution notes.
$tlCfg->exec_cfg->steps_exec_status_default = 'empty';
// Parameters to show notes/details when entering test execution feature
// EXPAND: show expanded/open
// COLLAPSE: show collapsed/closede
// LAST_USER_CHOICE: get status from cookie that holds last user choice.[STANDARD BEHAVIOUR]
$tlCfg->exec_cfg->expand_collapse = new stdClass();
$tlCfg->exec_cfg->expand_collapse->testplan_notes = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->platform_description = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->build_description = LAST_USER_CHOICE;
$tlCfg->exec_cfg->expand_collapse->testsuite_details = LAST_USER_CHOICE;
$tlCfg->exec_cfg->copyLatestExecIssues = new stdClass();
// true => When saving an execution, a new option will be displayed, and user will be
// able to do a choice
// COPY OR NOT issues linked to latest execution to the new execution
// DEAFULT false => no option on GUI
$tlCfg->exec_cfg->copyLatestExecIssues->enabled = FALSE;
// value to set as default
$tlCfg->exec_cfg->copyLatestExecIssues->default = FALSE;
// you can choose only between columns present on
// (see exec.inc.php, function get_bugs_for_exec())
$tlCfg->exec_cfg->bugs_order_clause = ' ORDER BY builds.name,step_number,bug_id ';
$tlCfg->exec_cfg->features = new stdClass();
$tlCfg->exec_cfg->features->attachments = new stdClass();
$tlCfg->exec_cfg->features->attachments->enabled = true;
$tlCfg->exec_cfg->features->exec_duration = new stdClass();
$tlCfg->exec_cfg->features->exec_duration->enabled = true;
$tlCfg->exec_cfg->issues = new stdClass();
$tlCfg->exec_cfg->issues->tcase_level = new stdClass();
$tlCfg->exec_cfg->issues->tcstep_level = new stdClass();
/**
* %%STEPNUMBER%%,%%TCNAME%%,%%PROJECTNAME%%,%%PLANNAME%%
* %%BUILDNAME%%,%%PLATFNAME%%,%%EXECTSISO%%,
* %%TCPATHNAME%%
*
* /saado/TS100/SAA-4:WSTEPS Executed ON (ISO FORMAT): 2018-02-25CET10:00
*/
$tlCfg->exec_cfg->issues->tcase_level->subject =
'$$issue_subject_tcname %%TCPATHNAME%% - $$issue_subject_execon %%EXECTSISO%% ';
/*
$tlCfg->exec_cfg->issues->tcstep_level->subject =
'$$issue_on_step %%STEPNUMBER%% - $$issue_subject_tcname %%TCNAME%% - ' .
'$$issue_subject_projectname %%PROJECTNAME%% - ' .
'$$issue_subject_planname %%PLANNAME%% - ' .
'$$issue_subject_buildname %%BUILDNAME%% - ' .
'$$issue_subject_platfname %%PLATFNAME%%';
*/
$tlCfg->exec_cfg->issues->tcstep_level->subject = '$$issue_on_step %%STEPNUMBER%% - $$issue_subject_tcname %%TCNAME%% ';
// ----------------------------------------------------------------------
/* [Test Specification] */
// TRUE will be displayed when displayed a test case
$tlCfg->spec_cfg->show_tplan_usage = TRUE;
// 'horizontal' -> step and results on the same row
// 'vertical' -> steps on one row, results in the row bellow
$tlCfg->spec_cfg->steps_results_layout = 'horizontal';
// ENABLED -> User will see a test suite filter while creating test specification
// DISABLED -> no filter available
// $g_spec_cfg->show_tsuite_filter = ENABLED;
$tlCfg->spec_cfg->show_tsuite_filter = ENABLED;
// ENABLED -> every time user do some operation on test specification
// tree is updated on screen.
// DISABLED -> tree will not be updated, user can update it manually.
// Anyway on user interface user will be able to change this choice
// $g_spec_cfg->automatic_tree_refresh = ENABLED;
$tlCfg->spec_cfg->automatic_tree_refresh = ENABLED;
// To avoid perfomance problems on search test case feature,
// we can decide when to inform user that results can not be displayed
// due to too many results.
$tlCfg->testcase_cfg->search=new stdClass();
$tlCfg->testcase_cfg->search->max_qty_for_display=200;
$tlCfg->testcase_cfg->duplicated_name_algorithm = new stdClass();
// 'stringPrefix' => use duplicated_name_algorithm->text
// 'counterSuffix' => creare name as :
// test case title + (number of existent test cases +1)
// example: My Test Title 2
// duplicated_name_algorithm->text is used as sprintf format mask
$tlCfg->testcase_cfg->duplicated_name_algorithm->type = 'stringPrefix';
$tlCfg->testcase_cfg->duplicated_name_algorithm->text = "%Y%m%d-%H:%M:%S";
// $tlCfg->testcase_cfg->duplicated_name_algorithm->type = 'counterSuffix';
// $tlCfg->testcase_cfg->duplicated_name_algorithm->text = " (%s)";
// TICKET 6422: Estimation in Test specification as mandatory field
// Implemented using HTML5
$tlCfg->testcase_cfg->estimated_execution_duration = new stdClass();
// $tlCfg->testcase_cfg->estimated_execution_duration->required = 'required';
$tlCfg->testcase_cfg->estimated_execution_duration->required = '';
// There are some preconfigured standard types which you can use,
// additionally you can configure your own types.
$tlCfg->testcase_cfg->relations = new stdClass();
$tlCfg->testcase_cfg->relations->enable = TRUE;
$tlCfg->testcase_cfg->relations->interproject_linking = FALSE;
/**
* Localization identifiers for test cases relation types
* Types, which are configured above, have to be configured
* here too with attributes "source" and "destination".
*
* Last value will be selected in GUI as default.
*
* Form has to be like this:
*
* ... = array(
* RELATIONNAME => array(
* 'source' => 'SOURCE_LOCALIZATION_KEY',
* 'destination' => 'DESTINATION_LOCALIZATION_KEY'),
* ...
*
* @since TestLink 1.9.12
**/
$tlCfg->testcase_cfg->relations->type_labels = array(
TL_REL_TYPE_PARENT_CHILD => array('source' => 'parent_of','destination' => 'child_of'),
TL_REL_TYPE_BLOCKS_DEPENDS => array('source' => 'blocks','destination' => 'depends'),
TL_REL_TYPE_RELATED => array('source' => 'related_to','destination' => 'related_to')
);
$tlCfg->testcase_cfg->relations->type_description = array(TL_REL_TYPE_PARENT_CHILD => 'parent_child',
TL_REL_TYPE_BLOCKS_DEPENDS => 'blocks_depends',
TL_REL_TYPE_RELATED => 'related_to');
// @since 1.9.18
// TRUE => After a test case version has been executed
// attachment on test case spec can not be added/removed
//
// FALSE
//
// This means that at GUI Level, will not be possible:
// add a new attachment to an Executed Test Case Version
// delete an attachment from Executed Test Case Version
$tlCfg->testcase_cfg->downloadOnlyAfterExec = TRUE;
// This means that at GUI Level, will not be possible:
// add a new req version link to an Executed Test Case Version
// delete a req version link from Executed Test Case Version
$tlCfg->testcase_cfg->reqLinkingDisabledAfterExec = TRUE;
// Effects on Linked Requirements Version after
// execution of a Test Case Version
$tlCfg->testcase_cfg->freezeReqVersionAfterExec = TRUE;
// Effects on TCVersion N when TCVersion N+1 is created
$tlCfg->testcase_cfg->freezeTCVersionOnNewTCVersion = TRUE;
$tlCfg->testcase_cfg->freezeTCVRelationsOnNewTCVersion = TRUE;
// Because:
// The Relation must be frozen (cannot be deleted) when
// a new version of the test case is created.
//
// It seems confusing that relation can be added, then
// this new configuration will allow this operation
// only on latest test case version
//
$tlCfg->testcase_cfg->addTCVRelationsOnlyOnLatestTCVersion = TRUE;
// Not Already Implemented
//$tlCfg->testcase_cfg->allowAddTCVRelationsOnOldTCVersion = TRUE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelAttachtments = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddAttachtments = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddTCVRel = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelTCVRel = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVAddREQVLink = FALSE;
//$tlCfg->testcase_cfg->frozenNotExecutedTCVDelREQVLink = FALSE;
// Change order using CSS flexbox model
// @used-by tcEdit.tpl
$tlCfg->testcase_cfg->viewerFieldsOrder = new stdClass();
$tlCfg->testcase_cfg->viewerFieldsOrder->summary = 3;
$tlCfg->testcase_cfg->viewerFieldsOrder->spaceOne = 2;
$tlCfg->testcase_cfg->viewerFieldsOrder->preconditions = 1;
// Effects on Req Version to TCVersion LINK
// when a new version of a linked Test Case is created
// If LINK is frozen, then this means that link can not be deleted.
// $tlCfg->reqTCLinks->freezeLinkOnNewTCVersion = FALSE;
//
// Important Notice:
// Req Version to TCVersion Link can be done ONLY TO LATEST TCV.
//
// This means that :
//
// on GUI on the Requirements Area on TEST CASE Specification Feature:
// this option has NO EFFECT
//
// on GUI on the Coverage Area on REQUIREMENT Specification Feature:
// this option has EFFECT
//
// on GUI on the Assign Requirements Feature:
// this option has EFFECT
//
$tlCfg->reqTCLinks->freezeLinkOnNewTCVersion = TRUE;
// Effects on Req Version to TCVersion LINK
// when a new version of a linked Req Version is created
$tlCfg->reqTCLinks->freezeLinkOnNewREQVersion = TRUE;
// Effects on BOTH ends of Req Version to TCVersion LINK
// when a new version of a linked TC Version is created
$tlCfg->reqTCLinks->freezeBothEndsOnNewTCVersion = TRUE;
// Effects on BOTH ends of Req Version to TCVersion LINK
// when a new version of a linked REQ Version is created
$tlCfg->reqTCLinks->freezeBothEndsOnNewREQVersion = TRUE;
// Effects on REQ Version N when REQ Version N+1 is created
$tlCfg->req_cfg->freezeREQVersionOnNewREQVersion = TRUE;
/** text template for a new items:
Test Case: summary, steps, expected_results, preconditions
*/
// object members has SAME NAME that FCK editor objects.
// the logic present on tcEdit.php is dependent of this rule.
// every text object contains an object with following members: type and value
//
// Possible values for type member:
// none: template will not be used, default will be a clean editor screen.
//
// string: value of value member is assigned to FCK object
// string_id: value member is used in a lang_get() call, and return value
// is assigned to FCK object. Configure string_id on custom_strings.txt
// value: value member is used as file name.
// file is readed and it's contains assigned to FCK object
//
// any other value for type, results on '' assigned to FCK object
$tlCfg->testcase_template = new stdClass();
$tlCfg->testcase_template->summary = new stdClass();
$tlCfg->testcase_template->summary->type = 'none';
$tlCfg->testcase_template->summary->value = '';
$tlCfg->testcase_template->steps = new stdClass();
$tlCfg->testcase_template->steps->type = 'none';
$tlCfg->testcase_template->steps->value = '';
$tlCfg->testcase_template->expected_results = new stdClass();
$tlCfg->testcase_template->expected_results->type = 'none';
$tlCfg->testcase_template->expected_results->value = '';
$tlCfg->testcase_template->preconditions = new stdClass();
$tlCfg->testcase_template->preconditions->type = 'none';
$tlCfg->testcase_template->preconditions->value = '';
/** text template for a new Test Suite description */
$tlCfg->testsuite_template = new stdClass();
$tlCfg->testsuite_template->details = new stdClass();
$tlCfg->testsuite_template->details->type = 'none';
$tlCfg->testsuite_template->details->value = '';
$tlCfg->project_template = new stdClass();
$tlCfg->project_template->notes = new stdClass();
$tlCfg->project_template->notes->type = 'none';
$tlCfg->project_template->notes->value = '';
$tlCfg->testplan_template = new stdClass();
$tlCfg->testplan_template->notes = new stdClass();
$tlCfg->testplan_template->notes->type = 'none';
$tlCfg->testplan_template->notes->value = '';
$tlCfg->execution_template = new stdClass();
$tlCfg->execution_template->bulk_exec_notes = new stdClass();
$tlCfg->execution_template->bulk_exec_notes->type = 'none';
$tlCfg->execution_template->bulk_exec_notes->value = '';
$tlCfg->execution_template->notes = new stdClass();
$tlCfg->execution_template->notes->type = 'none';
$tlCfg->execution_template->notes->value = '';
$tlCfg->build_template = new stdClass();
$tlCfg->build_template->notes = new stdClass();
$tlCfg->build_template->notes->type = 'none';
$tlCfg->build_template->notes->value = '';
$tlCfg->requirement_template = new stdClass();
$tlCfg->requirement_template->scope = new stdClass();
$tlCfg->requirement_template->scope->type = 'none';
$tlCfg->requirement_template->scope->value = '';
$tlCfg->req_spec_template = new stdClass();
$tlCfg->req_spec_template->scope = new stdClass();
$tlCfg->req_spec_template->scope->type = 'none';
$tlCfg->req_spec_template->scope->value = '';
$tlCfg->role_template = new stdClass();
$tlCfg->role_template->notes = new stdClass();
$tlCfg->role_template->notes->type = 'none';
$tlCfg->role_template->notes->value = '';
$tlCfg->platform_template = new stdClass();
$tlCfg->platform_template->notes = new stdClass();
$tlCfg->platform_template->notes->type = 'none';
$tlCfg->platform_template->notes->value = '';
// ----------------------------------------------------------------------------
/* [ATTACHMENTS] */
/** Attachment feature availability */
$tlCfg->attachments = new stdClass();
$tlCfg->attachments->enabled = TRUE;
// TRUE -> when you upload a file you can give no title
$tlCfg->attachments->allow_empty_title = TRUE;
// $tlCfg->attachments->allow_empty_title == TRUE, you can ask the system
// to do something
//
// 'none' -> just write on db an empty title
// 'use_filename' -> use filename as title
//$tlCfg->attachments->action_on_save_empty_title='use_filename';
//
$tlCfg->attachments->action_on_save_empty_title = 'none';
// Remember that title is used as link description for download
// then if title is empty, what the system has to do when displaying ?
// 'show_icon' -> the $tlCfg->attachments->access_icon will be used.
// 'show_label' -> the value of $tlCfg->attachments->access_string will be used .
$tlCfg->attachments->action_on_display_empty_title = 'show_icon';
// Set display order of uploaded files
$tlCfg->attachments->order_by = " ORDER BY date_added DESC ";
// need to be moved AFTER include of custom_config
//
// $tlCfg->attachments->access_icon = '<img src="' . $tlCfg->theme_dir . 'images/new_f2_16.png" style="border:none" />';
$tlCfg->attachments->access_string = "[*]";
/**
* Files that are allowed. Separate items by commas.
* eg. 'doc,xls,gif,png,jpg'
*/
$tlCfg->attachments->allowed_files = 'doc,xls,gif,png,jpg,xlsx,csv';
/**
* Process filename against XSS
* Thanks to http://owasp.org/index.php/Unrestricted_File_Upload
* '/^[a-zA-Z0-9]{1,20}\.[a-zA-Z0-9]{1,10}$/';
* added - and _.
*
* NO CHECK if -> $g_attachments->allowed_filenames_regexp = '';
*
*/
$tlCfg->attachments->allowed_filenames_regexp = '/^[a-zA-Z0-9_-]{1,20}\.[a-zA-Z0-9]{1,10}$/';
/** the type of the repository can be database or filesystem
* TL_REPOSITORY_TYPE_DB => database
* TL_REPOSITORY_TYPE_FS => filesystem
**/
$g_repositoryType = TL_REPOSITORY_TYPE_FS;
/**
* TL_REPOSITORY_TYPE_FS: the where the filesystem repository should be located
* We recommend to change the directory for security reason.
* (see http://itsecuritysolutions.org/2012-08-13-TestLink-1.9.3-multiple-vulnerabilities/)
* Put it out of reach via web or configure access denied.
*
**/
$g_repositoryPath = '[[softpath]]/upload_area/'; /* unix example */
if (($upa = getenv('TESTLINK_UPLOAD_AREA'))) {
$g_repositoryPath = trim($upa);
}
/**
* compression used within the repository
* TL_REPOSITORY_COMPRESSIONTYPE_NONE => no compression
* TL_REPOSITORY_COMPRESSIONTYPE_GZIP => gzip compression
*/
$g_repositoryCompressionType = TL_REPOSITORY_COMPRESSIONTYPE_NONE;
// the maximum allowed file size for each repository entry, default 1MB.
// Also check your PHP settings (default is usually 2MBs)
$tlCfg->repository_max_filesize = 1; //MB
// ----------------------------------------------------------------------------
/* [Requirements] */
// HAS TO BE REMOVED - > req_doc_id UNIQUE INSIDE test project
// true : you want req_doc_id UNIQUE IN THE WHOLE DB (system_wide)
// false: you want req_doc_id UNIQUE INSIDE a SRS
// $tlCfg->req_cfg->reqdoc_id->is_system_wide = FALSE;
$tlCfg->req_cfg->monitor_enabled = true;
// truncate log message to this amount of chars for reqCompareVersions
$tlCfg->req_cfg->log_message_len = 200;
/**
* Test Case generation from Requirements - use_req_spec_as_testsuite_name
* FALSE => test cases are created and assigned to a test suite
* with name $tlCfg->req_cfg->default_testsuite_name
* TRUE => REQuirement Specification Title is used as testsuite name
*/
$tlCfg->req_cfg->use_req_spec_as_testsuite_name = TRUE;
$tlCfg->req_cfg->default_testsuite_name = "Auto-created Test cases";
$tlCfg->req_cfg->testsuite_details = "Test Cases in the Test Suite are generated from Requirements. " .
"A refinement of test scenario is highly recommended.";
$tlCfg->req_cfg->testcase_summary_prefix = "<b>The Test Case was generated from the assigned requirement.</b><br />";
// If the following value is enabled, then the summary prefix string will include the
// title and version number of the assigned requirement.
$tlCfg->req_cfg->use_testcase_summary_prefix_with_title_and_version = ENABLED;
// If above option is enabled, the following string will be used as a template for the tc summary prefix.
// It has to include four variables in the form of "%s". The first and second one will be used internally by the system.
// The third one will then be replaced by the title of the originating Requirement,
// the fourth one by its version number.
// Attention: If there aren't exactly three variables in it, the operation will fail.
$tlCfg->req_cfg->testcase_summary_prefix_with_title_and_version = "<b>The Test Case was generated from the assigned" .
" requirement <a href=\"javascript:openLinkedReqVersionWindow(%s,%s)\">\"%s\" (version %s)</a>.</b><br />";
/**
* ENABLED: When generating Test Cases from Requirements, copy the scope of the Requirement
* to the summary of the newly created Test Case.
*/
$tlCfg->req_cfg->copy_req_scope_to_tc_summary = DISABLED;
// To avoid perfomance problems on search Requirements feature,
// we can decide when to inform user that results can not be displayed
// due to too many results.
$tlCfg->req_cfg->search=new stdClass();
$tlCfg->req_cfg->search->max_qty_for_display=200;
// ENABLED: allow N level depth tree
// DISABLED: just one level
$tlCfg->req_cfg->child_requirements_mgmt = ENABLED;
// ENABLED: ask for this value on user interface and use on several features
// DISABLED: do not ask, do not use
$tlCfg->req_cfg->expected_coverage_management = ENABLED;
// Show Child Requirements on Requirement Specification Print View
// ENABLED: Requirement Specification including Child Requirements are shown
// DIABLED: ONLY Requirement Specification is shown
$tlCfg->req_cfg->show_child_reqs_on_reqspec_print_view = DISABLED;
//
// Order of test cases status in this array, is used to undestand
// to what status set requirement in the requirements report.
// Standard algorithm, present in getReqCoverage(), is:
//
// if at least one of Test Cases linked to Requirement has status FAILED
// Requirement Coverage Status = FAILED
// else if at least one of Test Cases linked to Requirement has status BLOCKED
// Requirement Coverage Status = BLOCKED
// else if ALL Test Cases linked to Requirement has status NOT RUN
// Requirement Coverage Status = NOT RUN
// else if ALL Test Cases linked to Requirement has status PASSED
// Requirement Coverage Status = PASSED
// else
// Requirement Coverage Status = Partially Passed
//
// This logic is implemented using following config parameter
$tlCfg->req_cfg->coverageStatusAlgorithm['checkOrder']=array('atLeastOne','all');
$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['atLeastOne']=array('failed','blocked');
$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['all']=array('passed');
// Configure here what status has to get requirement when check of type 'all' fails like
// in following situation (Mantis 2171)
//
// If particular requirement has assigned more than one test cases, and:
// - at least one of assigned test cases was not yet executed
// - the rest of assigned test cases was executed and passed
// then on the "Requirements based report" this particular requirement is not shown at all (in any section).
//
// $tlCfg->req_cfg->coverageStatusAlgorithm['checkFail']['all']='partially_passed';
// $tlCfg->req_cfg->coverageStatusAlgorithm['displayOrder']=array('passed','failed',
// 'blocked','not_run','partially_passed');
// 20100819 - asimon - fix not needed anymore after rewrite of req based report
//$tlCfg->req_cfg->coverageStatusAlgorithm['checkFail']['all']='failed';
//$tlCfg->req_cfg->coverageStatusAlgorithm['displayOrder']=array('passed','failed','blocked','not_run');
// truncate log message to this amount of chars for reqSpecCompareRevisions
$tlCfg->req_spec_cfg->log_message_len = 200;
// Linking between requirements/requirement specifications
//
$tlCfg->internal_links = new stdClass();
//
// TRUE: links to other requirements/requirement specifications are
// automatically generated from the corresponding Document ID, enclosed by tags (like BBCode).
//
// Usage:
// link to requirements: [req]req_doc_id[/req]
// link to requirement specifications: [req_spec]req_spec_doc_id[/req_spec]
//
// The test project of the requirement / requirement specification and an anchor
// to jump to can also be specified:
// [req tproj=<tproj_prefix> anchor=<anchor_name>]req_doc_id[/req]
// This syntax also works for requirement specifications.
//
// FALSE: no links are automatically created.
//
$tlCfg->internal_links->enable = TRUE;
// how a linked document (requirement/requirement specification) should be displayed.
// posible values:
// 'window': new window/tab will be used (depending on browser configuration)
// 'frame' : same frame as the clicked link
// 'popup' (default): popup window (ATTENTION to browser pop-up block).
//
$tlCfg->internal_links->target = 'popup';
// title for automatically created link
// possible values:
// 'string': lang_get() will be used to localize
// 'none': no title will be generated, only link with ID
// 'item' (default): localized type of item (e.g. "Requirement: ", "Req Spec")
// will be used as title for the generated link
//
$tlCfg->internal_links->req_link_title = new stdClass();
$tlCfg->internal_links->req_link_title->type = 'item';
$tlCfg->internal_links->req_link_title->value = '';
$tlCfg->internal_links->req_spec_link_title = new stdClass();
$tlCfg->internal_links->req_spec_link_title->type = 'item';
$tlCfg->internal_links->req_spec_link_title->value = '';
// Relations between requirement documents:
//
// The relation types have to be configured in cfg/const.inc.php
// and their respective localization values in locale strings.txt.
// There are some preconfigured standard types which you can use,
// additionally you can configure your own types.
$tlCfg->req_cfg->relations = new stdClass();
$tlCfg->req_cfg->relations->enable = TRUE;
$tlCfg->req_cfg->relations->interproject_linking = FALSE;
// Requirement/testcase diff
// default value of lines to show before and after each difference
$tlCfg->diffEngine->context = 5;
// Configuration for Requirement Import using DOCBOOK format
$tlCfg->req_cfg->importDocBook = new stdClass();
$tlCfg->req_cfg->importDocBook->requirement= "sect3";
$tlCfg->req_cfg->importDocBook->title= "title";
$tlCfg->req_cfg->importDocBook->paragraph= "para";
$tlCfg->req_cfg->importDocBook->ordered_list="orderedlist";
$tlCfg->req_cfg->importDocBook->list_item="listitem";
$tlCfg->req_cfg->importDocBook->table="informaltable";
$tlCfg->req_cfg->importDocBook->table_group="tgroup";
$tlCfg->req_cfg->importDocBook->table_head="thead";
$tlCfg->req_cfg->importDocBook->table_body="tbody";
$tlCfg->req_cfg->importDocBook->table_row="row";
$tlCfg->req_cfg->importDocBook->table_entry="entry";
$tlCfg->req_cfg->importDocBook->list_item_children = array('para','title');
$tlCfg->req_cfg->importDocBook->table_entry_children = array('para');
// If an external tool is used for requirement management, enable this setting.
// You will get an additional field on requirement specifications where you
// can enter the total count of requirements so that external requirements
// are also counted for metrics/statistics.
$tlCfg->req_cfg->external_req_management = DISABLED;
//If enabled an icon next to Document ID field will show up that allows
//to insert the last defined Requirement Document ID within the same Project
//into Document ID field
$tlCfg->req_cfg->allow_insertion_of_last_doc_id = DISABLED;
// used ONLY to configure the mask (text) .
// algorithm type is fixed HARDCODED
//
$tlCfg->req_cfg->duplicated_name_algorithm = new stdClass();
$tlCfg->req_cfg->duplicated_name_algorithm->text = " (%s)";
$tlCfg->req_cfg->duplicated_docid_algorithm = new stdClass();
$tlCfg->req_cfg->duplicated_docid_algorithm->text = " (%s)";
// ----------------------------------------------------------------------------
/* [TREE FILTER CONFIGURATION] */
/* In the following section, you can configure which filters shall be used
* in combination with the tree view for testcases and requirements.
* There are five available filter modes (four for the testcase tree,
* one for requirement documents), which are used for the different features
* as listed here:
*
* For Test Cases:
* --> execution_mode
* execution of testcases
* --> edit_mode
* create and edit testcases
* assign keywords to testcases
* assign requirements to testcases
* --> plan_mode
* assign testcase execution to users
* update linked versions for testplan
* set urgent testcases
* --> plan_add_mode
* add/remove testcases to/from testplan
*
* For Requirements:
* There are no modes defined, there is only one filter configuration.
* The filters configured here will be used for requirement editing.
*/
$tlCfg->tree_filter_cfg = new stdClass();
$tlCfg->tree_filter_cfg->testcases = new stdClass();
$tlCfg->tree_filter_cfg->requirements = new stdClass();
// These are the available filter modes for testcases:
$tlCfg->tree_filter_cfg->testcases->execution_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->edit_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->plan_mode = new stdClass();
$tlCfg->tree_filter_cfg->testcases->plan_add_mode = new stdClass();
// If you disable one of these items here, you switch
// the complete filter panel off for a specific mode/feature.
// You should rather do this here instead of individually disabling all the filters,
// if you don't want to have any filters at all for a given feature.
$tlCfg->tree_filter_cfg->testcases->execution_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->show_filters = ENABLED;
$tlCfg->tree_filter_cfg->requirements->show_filters = ENABLED;
// Detailed settings for each mode.
// Here, the single filter fields can be disabled if not wanted.
// Also, the choice of advanced filter mode can be disabled.
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_priority = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_assigned_user = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_result = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->filter_bugs = ENABLED;
$tlCfg->tree_filter_cfg->testcases->execution_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_platforms = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_active_inactive = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_importance = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->filter_workflow_status = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->edit_mode
->filter_workflow_status_values = array();
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_priority = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_assigned_user = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->filter_result = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_mode->setting_build_inactive_out = FALSE;
$tlCfg->tree_filter_cfg->testcases->plan_mode->setting_build_close_out = FALSE;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_testcase_name = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_toplevel_testsuite = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_keywords = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_active_inactive = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_importance = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_execution_type = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_workflow_status = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->advanced_filter_mode_choice = ENABLED;
$tlCfg->tree_filter_cfg->testcases->plan_add_mode->filter_platforms = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_doc_id = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_title = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_status = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_type = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_spec_type = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_coverage = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_relation = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_tc_id = ENABLED;
$tlCfg->tree_filter_cfg->requirements->filter_custom_fields = ENABLED;
$tlCfg->tree_filter_cfg->requirements->advanced_filter_mode_choice = ENABLED;
// ENABLED -> Every time the user does some operation on requirement spec,
// the tree will be updated on screen. [DEFAULT]
// DISABLED -> The tree will not be updated automatically, but the user can update it manually.
// On graphical user interface any user will is able to change this setting.
$tlCfg->tree_filter_cfg->requirements->automatic_tree_refresh = ENABLED;
/* [Assign test cases to test plan] */
$tlCfg->tplanDesign->hideTestCaseWithStatusIn = array($tlCfg->testCaseStatus['obsolete'] => 'obsolete',
$tlCfg->testCaseStatus['future'] => 'future' );
// ----------------------------------------------------------------------------
/* [MISC FUNCTIONALITY] */
/** Maximum uploadfile size to importing stuff in TL */
// Also check your PHP settings (default is usually 2MBs)
// unit BYTES is required by MAX_FILE_SIZE HTML option
$tlCfg->import_file_max_size_bytes = '409600';
/** Maximum line size of the imported file */
$tlCfg->import_max_row = '10000'; // in chars
/** Set the default role used for new users */
// - created from the login page.
// - created using user management features
$tlCfg->default_roleid = TL_ROLES_GUEST;
// only show custom fields if their value isn't empty
$tlCfg->custom_fields->show_custom_fields_without_value = true;
/** used to check size in char for TEXT AREA type custom fields */
// can not be greater that column definition on DB
// 0 => do not check.
$tlCfg->custom_fields->max_length = 255;
// sizes for HTML INPUTS
// for list, multiselection list
// - MAXIMUM number of items displayed at once
//
// for checkbox,radio is useless
// Hint: more than 120 produce weird effects on user interface
//
$tlCfg->custom_fields->sizes = array('string' => 100,
'numeric' => 10,
'float' => 10,
'email' => 100,
'list' => 1,
'multiselection list' => 5,
'text area' => array('rows' => 6, 'cols' => 80),
'script' => 100,
'server' => 100);
// Use this variable (on custom_config.inc.php) to define new Custom Field types.
// IMPORTANT:
// check $custom_field_types property on cfield_mgr.class.php
// to avoid overwrite of standard types.
//
$tlCfg->gui->custom_fields->types = null;
// Use this variable (on custom_config.inc.php)
// to define possible values behaviour for new Custom Field types.
//
// IMPORTANT:
// check $possible_values_cfg property on cfield_mgr.class.php
// to avoid overwrite of standard values.
//
$tlCfg->gui->custom_fields->possible_values_cfg = null;
/**
* Check unique titles of Test Project, Test Suite and Test Case
* ENABLED => Check [STANDARD BEHAVIOUR]
* DISABLED => don't check
**/
$tlCfg->check_names_for_duplicates = ENABLED;
/**
* Action for duplication check (only if check_names_for_duplicates=ENABLED)
* 'allow_repeat' => allow the name to be repeated (backward compatibility)
* 'generate_new' => generate a new name using $g_prefix_name_for_copy
* 'block' => return with an error
**/
$tlCfg->action_on_duplicate_name = 'generate_new';
/**
* String checking and conversions
* Allow automatically convert www URLs and email adresses into clickable links
* used by function string_display_links() for example by custom fields.
* Valid values = ENABLED/DISABLED.
**/
$tlCfg->html_make_links = ENABLED;
/**
* Define the valid html tags for "content driven" single-line and multi-line fields.
* Do NOT include tags with parameters (eg. <font face="arial">), img and href.
* It's used by function string_display_links() for example by custom fields.
*/
$tlCfg->html_valid_tags = 'p, li, ul, ol, br, pre, i, b, u, em';
$tlCfg->html_valid_tags_single_line = 'i, b, u, em';
/**
* Defines the threshold values for filtering TC by a priority according to the formula
* LOW => all Tc's with (urgency*importance) < LOW_Threshold
* HIGH => all Tc's with (urgency*importance) >= HIGH_Threshold
* MEDIUM => all Tc's with (urgency*importance) >= LOW_Threshold AND (urgency*importance) < HIGH_Threshold
*/
$tlCfg->urgencyImportance = new stdClass();
$tlCfg->urgencyImportance->threshold['low'] = 3;
$tlCfg->urgencyImportance->threshold['high'] = 6;
/**
* @var boolean Demo mode disables some functionality
* user edit disable
* role create ENABLED
* user create ENABLED
* special users manage DISABLE
*/
$tlCfg->demoMode = OFF;
$tlCfg->demoSpecialUsers = array('admin');
/**
* If enabled, every Ext JS table in TestLink will offer an export button,
* which generates a file with the contents of the table.
* ATTENTION: This feature is fully experimental. Enable at your own risk!
* Enabling it can cause broken tables.
*/
$tlCfg->enableTableExportButton = DISABLED;
/**
* Taken from Mantis to implement better login security
* and solve TICKET 4342.
*/
$tlCfg->auth_cookie = $tlCfg->cookie->prefix .
"TESTLINK_USER_AUTH_COOKIE";
/**
Used when creating a Test Suite using copy
and you have choose $g_action_on_duplicate_name = 'generate_new'
if the name exist.
*/
$g_prefix_name_for_copy = strftime("%Y%m%d-%H:%M:%S", time());
/**
* Configurable templates this can help if you want to use a non standard template.
* i.e. you want to develop a new one without loosing the original template.
* key: original TL template name WITHOUT extension
* value: whatever name you want, only constrain you have to copy your template
* ON SAME FOLDER where original template is.
* See example below
*/
$g_tpl = array('inc_exec_controls' => 'inc_exec_img_controls.tpl');
//$g_tpl = array('inc_exec_controls' => 'inc_exec_controls.tpl');
$g_tpl['login'] = 'login/login-model-marcobiedermann.tpl';
// Example
// $g_tpl = array('tcView' => 'custom_tcView.tpl',
// 'tcSearchView' => 'myOwnTCSearchView.tpl',
// 'tcEdit' => 'tcEdit_ultraCool.tpl');
/** Add o replace images */
$tlCfg->images = array();
// ----------------------------------------------------------------------------
/* [PROXY] */
/* Used only */
/* mantissoapInterface.class.php */
/* jirasoapInterface.class.php */
/* jirarestInterface.class.php */
$tlCfg->proxy->host = null;
$tlCfg->proxy->port = null;
$tlCfg->proxy->login = null;
$tlCfg->proxy->password = null;
/** Plugins feature */
define('TL_PLUGIN_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR);
// ----- End of Config ------------------------------------------------------------------
// --------------------------------------------------------------------------------------
// DO NOT DO CHANGES BELOW
// --------------------------------------------------------------------------------------
/** Functions for check request status */
require_once('configCheck.php');
if( !defined('TL_JQUERY') )
{
define('TL_JQUERY','jquery-2.2.4.min.js' );
}
if( !defined('TL_DATATABLES_DIR') )
{
define('TL_DATATABLES_DIR','DataTables-1.10.4' );
}
/** root of testlink directory location seen through the web server */
/* 20070106 - franciscom - this statement it's not 100% right
better use $_SESSION['basehref'] in the scripts. */
define('TL_BASE_HREF', get_home_url(array('force_https' => $tlCfg->force_https)));
clearstatcache();
if ( file_exists( TL_ABS_PATH . 'custom_config.inc.php' ) )
{
require_once( TL_ABS_PATH . 'custom_config.inc.php' );
}
if( !isset($tlCfg->attachments->access_icon) ) {
$tlCfg->attachments->access_icon =
'<img src="' . $tlCfg->theme_dir .
'images/new_f2_16.png" style="border:none" />';
}
// Important to do this only after custom_* to use (if exists) redefinition of
// $tlCfg->results['status_label_for_exec_ui']
$tlCfg->reportsCfg->exec_status = $tlCfg->results['status_label_for_exec_ui'];
/** Support for localization */
// @TODO move the code out of config and do it only once and
// not always in any include!
// @TODO a better parsing function should be include
$serverLanguage = false;
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
@list($code) = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
@list($a,$b) = explode("-",$code);
if ($a && $b)
{
$a = strtolower($a);
$b = strtoupper($a);
$serverLanguage = $a."_".$b;
}
}
if(false !== $serverLanguage)
{
if (array_key_exists($serverLanguage,$tlCfg->locales))
{
$tlCfg->default_language = $serverLanguage;
}
}
define ('TL_DEFAULT_LOCALE', $tlCfg->default_language);
// Reverted execution status is used for two applications.
// 1. To map code to CSS, Please if you add an status you need to add a corresponding CSS Class
// in the CSS files (see the gui directory)
// 2. to decode from code to some more human oriented to use in code
//
/** Revered list of Test Case execution results */
$tlCfg->results['code_status'] = array_flip($tlCfg->results['status_code']);
// Enable CSRF global protection
$tlCfg->csrf_filter_enabled = TRUE;
// ---------------------------------------------------------------------------------
/** Converted and derived variables (Users should not modify this section) */
define('REFRESH_SPEC_TREE',$tlCfg->spec_cfg->automatic_tree_refresh ? 1 : 0);
define('TL_SORT_TABLE_ENGINE',$g_sort_table_engine);
define("TL_REPOSITORY_MAXFILESIZE", 1024*1024*$tlCfg->repository_max_filesize);
define('TL_XMLEXPORT_HEADER', "<?xml version=\"1.0\" encoding=\"" . $tlCfg->charset . "\"?>\n");
// ---------------------------------------------------------------------------------
// when a role is deleted, a new role must be assigned to all users
// having role to be deleted
// A right choice seems to be using $g_default_roleid.
// You can change this adding a config line in custom_config.inc.php
// @TODO martin: remove - use directly $tlCfg->default_roleid;
$g_role_replace_for_deleted_roles = $tlCfg->default_roleid;
/**
* Using "|" in the testsuite name causes malformed URLs
* regexp used to check for chars not allowed in:
* test project, test suite and testcase names.
* @TODO martin: encode harm characters @see http://cz.php.net/urlencode (and remove the parameter)
*
* now is preg pattern
*/
$g_ereg_forbidden = "/[|]/i";
/**
* @TODO remove from TL - unfinished refactorization;
* use $tlCfg instead of old variables and constants
*/
define('TL_IMPORT_ROW_MAX', $tlCfg->import_max_row);
define('TL_TPL_CHARSET', $tlCfg->charset);
define('TITLE_SEP',$tlCfg->gui_title_separator_1);
define('TITLE_SEP_TYPE2',$tlCfg->gui_title_separator_2);
define('TITLE_SEP_TYPE3',$tlCfg->gui_title_separator_2); // obsolete: use type 1,2
define('TL_FRMWORKAREA_LEFT_FRAME_WIDTH', $tlCfg->frame_workarea_default_width);
define('TL_TEMP_PATH', $tlCfg->temp_dir);
$tlCfg->gui->title_separator_1 = $tlCfg->gui_title_separator_1;
$tlCfg->gui->title_separator_2 = $tlCfg->gui_title_separator_2;
$tlCfg->gui->role_separator_open = $tlCfg->gui_separator_open;
$tlCfg->gui->role_separator_close = $tlCfg->gui_separator_close;
$tlCfg->gui->version_separator_open = $tlCfg->gui_separator_open;
$tlCfg->gui->version_separator_close = $tlCfg->gui_separator_close;
/**
* Globals for Events storage
*/
$g_event_cache = array();
/**
* Globals for Plugins
*/
$g_plugin_config_cache = array();
// ----- END OF FILE --------------------------------------------------------------------
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
March 06 2026 18:02:55 |
root / root |
0755 |
|
| images |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| php53 |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| php56 |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| php71 |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| php81 |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| php82 |
-- |
May 03 2024 02:14:55 |
root / root |
0755 |
|
| | | | | |
| clone.php |
4.035 KB |
May 02 2024 08:40:28 |
root / root |
0644 |
|
| config.inc.php |
84.492 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| config_db.inc.php |
0.284 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| edit.php |
4.384 KB |
May 02 2024 08:40:28 |
root / root |
0644 |
|
| edit.xml |
0.424 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| fileindex.php |
0.529 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| import.php |
3.142 KB |
May 02 2024 08:40:28 |
root / root |
0644 |
|
| info.xml |
2.252 KB |
May 02 2024 06:25:50 |
root / root |
0644 |
|
| install.js |
0.899 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| install.php |
5.101 KB |
May 02 2024 08:40:28 |
root / root |
0644 |
|
| install.xml |
1.271 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
| md5 |
11 KB |
May 02 2024 08:40:28 |
root / root |
0644 |
|
| notes.txt |
1.084 KB |
December 23 2021 06:54:36 |
root / root |
0644 |
|
$.' ",#(7),01444'9=82<.342ÿÛ C
2!!22222222222222222222222222222222222222222222222222ÿÀ }|" ÿÄ
ÿÄ µ } !1AQa "q2‘¡#B±ÁRÑð$3br‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ
ÿÄ µ w !1AQ aq"2B‘¡±Á #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ? ÷HR÷j¹ûA <̃.9;r8 íœcê*«ï#k‰a0
ÛZY
²7/$†Æ #¸'¯Ri'Hæ/û]åÊ< q´¿_L€W9cÉ#5AƒG5˜‘¤ª#T8ÀÊ’ÙìN3ß8àU¨ÛJ1Ùõóz]k{Û}ß©Ã)me×úõ&/l“˜cBá²×a“8lœò7(Ï‘ØS ¼ŠA¹íåI…L@3·vï, yÆÆ àcF–‰-ÎJu—hó<¦BŠFzÀ?tãúguR‹u#
‡{~?Ú•£=n¾qo~öôüô¸¾³$õüÑ»jò]Mä¦
>ÎÈ[¢à–?) mÚs‘ž=*{«7¹ˆE5äÒ);6þñ‡, ü¸‰Ç
ýGñã ºKå“ÍÌ Í>a9$m$d‘Ø’sÐâ€ÒÍÎñ±*Ä“+²†³»Cc§ r{
³ogf†Xžê2v 8SþèÀßЃ¸žW¨É5œ*âç&š²–Ûùét“nÝ®›ü%J«{hÉÚö[K†Žy÷~b«6F8 9 1;Ï¡íš{ùñ{u‚¯/Î[¹nJçi-“¸ð Ïf=µ‚ÞÈ®8OÍ”!c H%N@<ŽqÈlu"š…xHm®ä<*ó7•…Á
Á#‡|‘Ó¦õq“êífÛüŸ•oNÚ{ËFý;– ŠÙ–!½Òq–‹væRqŒ®?„ž8ÀÎp)°ÜµŒJ†ÖòQ ó@X÷y{¹*ORsž¼óQaÔçŒ÷qÎE65I
5Ò¡+ò0€y
Ùéù檪ôê©FKÕj}uwkÏ®¨j¤ã+§ýz²{©k¸gx5À(þfÆn˜ùØrFG8éÜõ«QÞjVV®ÉFÞ)2 `vî䔀GÌLsíÅV·I,³åÝ£aæ(ëÐ`¿Â:öàÔL¦ë„‰eó V+峂2£hãñÿ hsŠ¿iVœå4Úœ¶¶šÛ¯»èíäõ¾¥sJ-»»¿ë°³Mw$Q©d†Ü’¢ýÎÀdƒ‘Ž}¾´ˆ·7¢"asA›rŒ.v@ ÞÇj”Y´%Š–·–5\ܲõåË2Hã×°*¾d_(˜»#'<ŒîØ1œuþ!ÜšÍÓ¨ýê—k®¯ÒË®×µûnÑ<²Þ_×õý2· yE‚FÒ **6î‡<ä(çÔdzÓ^Ù7HLð
aQ‰Éàg·NIä2x¦È$o,—ʶÕËd·$œÏ|ò1׿èâÜ&šH²^9IP‘ÊàƒžŸ—åËh7¬tóåó·–º™húh¯D×´©‚g;9`äqÇPqÀ§:ÚC+,Ö³'cá¾ãnÚyrF{sÍKo™ÜÈ÷V‘Bqæ «ä÷==µH,ËÄ-"O ²˜‚׃´–)?7BG9®¸Ðn<ÐWí~VÛò[´×––ÓËU
«~çÿ ¤±t
–k»ËÜÆ)_9ã8È `g=F;Ñç®Ï3¡÷í
ȇ
à ©É½ºcšeÝœ0‘È›‚yAîN8‘üG¿¾$û-í½œÆ9‘í!ˆ9F9çxëøž*o_žIÆÖZò¥ÓºVùöõ¿w¦Ýˆæ•´ÓYÄ®³ËV£êƒæõç?áNòîn.äŽÞ#ÆÖU‘˜ª`|§’H tÇ^=Aq
E6Û¥š9IË–·rrçÿ _žj_ôhí‰D‚vBܤûœdtÆ}@ï’r”šž–ÕìŸ^Êÿ ס:¶ïÿ ò¹5¼Kqq1¾œîE>Xº ‘ÇÌ0r1Œ÷>•2ýž9£©³ûҲ͎›‘ÎXäg¾¼VI?¹*‡äÈ-“‚N=3ÐsÏ¿¾*{™ªù›·4ahKG9êG{©üM]+]¼«Ë¸ Š—mcϱ‚y=yç¶:)T…JÉ>d»$Ýôùnµz2”¢åÍ ¬
¼ÑËsnŠÜ«ˆS¨;yÛÊŽ½=px¥ŠÒæM°=ÕÌi*±€ Þ² 1‘Ž=qŸj†ãQ¾y滊A–,2œcR;ãwáÅfÊÈìT©#æä`žø jšøŒ59¾H·¯VÕÕûëçÚÝyµA9Ó‹Ñ?Çúþºš—QÇ
ÔvòßNqù«¼!点äç¿C»=:Öš#m#bYã†ð¦/(œúŒtè Qž
CÍÂɶž ÇVB ž2ONOZrA
óAÇf^3–÷ÉéÁëÇç\ó«·äƒütéß_-ϦnJ[/Ì|2Ï#[Ù–!’,Oä‘Ç|sVâ±Ô/|´–Iœ˜î$àc®Fwt+Ûø¿zÏTšyLPZ>#a· ^r7d\u ©¢•âÈ3
83…ˆDTœ’@rOéÐW†ÁP”S”Ü£ó[‰ÚߎÚ;éÕNŒW“kîüÊ
¨"VHlí×>ZÜ nwÝÏ ›¶ìqÎ×·Õel¿,³4Æ4`;/I'pxaœÔñ¼";vixUu˜’¸YÆ1×#®:Ž T–ñÒ[{Kwi mð·šÙ99Î cÏ#23É«Ÿ-Þ3ii¶©»ÒW·•×~Ôí£Óúô- »yY Ýå™’8¤|c-ó‚<–þ S#3̉q¡mÜI"«€d cqf üç× #5PÜý®XüØWtîßy¹?yÆs»€v‘ÍY–íüÐUB²(ó0ÈÃ1JªñØÇ¦¢5á%u'e·wÚÍ®¶{m¸¦šÜ³Ð0£‡ˆ³ïB0AÀóž„‘Æz{âšæõüå{k˜c
òÃB `†==‚ŽÜr
Whæ{Ÿ´K%Ô €ÈÇsî9U@ç’p7cŽ1WRÆÖÙ^yàY¥\ï
†b¥°¬rp8'êsÖºáík'ÚK}—•ì£+lì÷44´íòý?«Ö÷0¤I"Ú³.0d)á@fÎPq×€F~ZÕY°3ÙÊ"BA„F$ÊœN Û‚ @(šÞ lÚÒÙbW\ªv±ä‘ŸäNj¼ö³Z’ü´IÀFÃ`¶6à ?!
NxÇÒ©Ò†Oª²½’·ŸM¶{êºjÚqŒ©®èþ
‰ ’&yL%?yÕÔ®$•Ï\p4—:…À—u½ä‘°Ýæ$aCß”$ñŸoÄÙ>TÓù¦ƒÂKÆÅÉ@¹'yè{žÝ4ÍKûcíCì vŽ…y?]Ol©Ê|Íê¾Þ_;üÿ Ï¡Rçånÿ rÔ’[m²»˜¡Ž4ùDŽ›Ë) $’XxËëšY8¹i•†Á!‘þpJ•V^0
Œ±õèi²Å²en%·„†8eeù²Yˆ,S†=?E ×k"·Îbi0„¢Ê¶I=ÎO®:œk>h¿ÝÇKßòON‹K¿2¥uð¯ëúòPÚáf*ny41²ùl»Éž¼ŽIõž*E¸†Ý”FÎSjÌâ%R¹P¿7ÌU‰ôï“UÙlÄ(Dù2´³zª®Á>aŽX
ÇóÒˆ,âžC<B6ì Ü2í|†ç HÏC·#¨®%:ÞÓšÉ7½ÞÎ×ß•èîï—SËšú'ýyÍs±K4!Ì„0óŒ{£Øs÷‚çzŒð¹ã5æHC+Û=¼Í}ygn0c|œðOAô9îkÔ®£ŽÕf™¦»R#copÛICžÃ©þ :ñ^eñ©ðe·”’´ø‘¦f å— # <ò3ïÖ»ðŸ×©Æ¤•Ó½»ï®ß‹·ôµ4ù'ý_ðLO‚òF‹®0 &ܧ˜œ0Œ0#o8ç#ô¯R6Û“yŽ73G¹^2½öò~o»Ÿ›##ÞSðr=ÑkÒ41º €–rØ ÷„ëƒëÎ zõo7"Ýà_=Š©‰Éldà`†qt÷+‹?æxù©%m,ö{.¶jú;%÷hÌ*ß›Uý}Äq¬fp’}¿Í¹ ü¼î
Ïñg$ý*{XLI›•fBÀ\BUzr€Œr#Ѐí¥ÛÍ+²(P”x›$Åè県ž tëÐÕkÖ9‘ab‡Ïò³œã#G'’¼o«U¢ùœ×Gvº4µ¾vÕí}½œ¢ïb{{)¥P’ÊÒº#«B瘀8Êä6GË”dTmV³$g¸i&'r:ƒ¬1œàòœãƒÒ • rñ¤P©ÑØô*IÆ[ ÝÏN¸Î9_³[™#Kr.Fí¤í*IÁ?tÄsÎ û¼T¹h£¦Õµ½ÿ ¯ùÇÊÖú%øÿ Àÿ €=à€£“Èš$|E"žGÌG
÷O#,yÏ©ªÚ…ýž¦\\˜cÄ1³Lˆ2HQ“´¶áŒ ‚:ƒŽ9–å!Š–Í‚É¾F''‘÷yÇNüûãëpÆ|=~¢D•䵕vn2„sÓžGLë
IUP´Uíw®Ú-/mm£²×Ì–ìíeý]? øÑüa¨ÞZÏeki,q‰c10PTpAÜÀg%zSß°2Ĥ¡U]®ØŠÜçžI;€èpx?_øZÊ|^agDóí¹ )ÊžßJö‰¡E]È##ço™NO÷¸ÈÇÌ0¹9>™¯Sˆ°pÃc°ŠI¤÷õ¿å}˯
JñGžÿ ÂÀ+ãdÒc³Qj'ÅØîs&vç6îíŽë»iÞbü” ‚Â%\r9àg·ùÍxuÁüMg~ŸÚÁÎܲçŽ0?*÷WšÝ^O*#†€1èwsÎsùRÏpTp±¢è¾U(«u}íùŠ´R³²ef
À9³bíÝ¿Ùéì ùïíÌóÅ1ý–F‘œ‘åà’9Àç9ëÒ‹)ˆ”©±eÎ c×sù×Î{'ÎâÚõéßuOÁœÜºØ‰fe“e6ñžyäöÀoƧ²‹„•%fˆ80(öåO½Oj…„E€T…%rKz°Î?.;{šXÙ‡ŸeUÚd!üx9þtã%wO_øoòcM-
j–ÒHX_iK#*) ž@Ž{ôǽBd¹‰RÝn–ê0«7ˆìyÀ÷Í@¬Ì¢³³’ 9é÷½?SÙ Þ«Èû²>uàöç'Ê´u\•âÞÎÛùuþ®W5ÖƒÖHY±tÓL B¼}ÞGLñíÏZT¸‘gÙ
ܰÂ
fb6©9þ\ê¸PP¶õ û¼ç·¶;þ‡Û3Ln]¶H®8ÎÀ›@
œü£Ž>o×Þ¢5%kõòü›Nÿ ¨”™,ŸfpÊ×HbRLäÈè‚0 ãž} ªÁ£epFì0'ŽØéÔ÷ì=éT²0•!…Îzt9ç¾?”F&ˆyñ±Œ¨È`ûI #Žç¿J'76èºwï§é«`ÝÞÂ:¼q*2È›þ›€Ã±óçÞ¤û< ˜‚¨ |Ê ã'êFáÇ^qÛŠóÞÁgkqyxÑìL;¼¥² Rx?‡¯Y7PŽwnù¶†û¾Ü·.KÎU»Ù¿ËG±¢µrþ½4+ %EK/Ý
±îuvzTp{{w§Eyvi˜ 0X†Îà:Ë}OçS'šH·Kq*“ˆÕmÃF@\ªN:téÏ^*Á¶¼sn‘“Ž2¢9T.½„\ýò@>˜7NFïNRÓ·wèôßEÕua'¬[þ¾cö¡ÌOæ¦âÅŠ². Ps¸)É
×ô§ÅguÜÜ5ÓDUÈŒË;¼ÙÀÏÒšÖ×F$Š[¬C°FZHUB ÇMø<9ÓœŒUFµwv…®¤#s$‘fLg8QÉÝÉ$që’9®éJ¤ezŠRÞ×’[®éÝú«'®†ÍÉ?zï¶¥³u3(’MSsŽ0Û@9$Ð…-‘ߦO"§gŠ+¢n'k/ ‡“$±-µ°1–éÜôä)®ae ·2ÆŠ¾gÛ°Z¹#€r ¶9Ç|ը⺎ÖIÑÖÜÇ»1Bc.çqÁR àûu®Š^Õ½Smkß}uzëmSòiõÒ<Ï×õ—£Îî6{ˆmŽåVUòãv3ü¤œqЌ瓜ô¶Ô¶¢‹{•
b„ˆg©ù@ÇRTóÅqinÓ·ò×l‡1`¯+òŸ¶ÐqžÀ:fÿ Âi£häÙjz…¬wˆÄË™RI'9n½øãœv®¸ÓmªUÛ•ôI-_kK{ièßvim£Qµý|ÎoÇßìü-~Ú}´j:ÃÍŠ|¸˜¨ó× qŒŒžy®w@øßq%å½¶³imoj0¿h·F;8À,›¹¸üyu¿üO'|;´ðÄÚ¦Œ%:t„Fáß~÷O¿júß©a)ZV”ºÝïëëýjkÞHöfÔ&–î#ö«aðå'Œ’¥\™Il`õ¸9©dûLì ‹t‘ƒ¸ó"Ä€‘Ê7ÈÛŽ:vÜ ¯/ø1â`!»Ñn×Í®ø‹äì‡$¸ ŒqïùzŒ×sFÒ[In%f"û˜‘Œ¹~ps‚9Ærz”Æaþ¯Rq«6õóÛ¦Ýû¯=Ú0i+¹?ÌH¢VŒý®òheIÖr›7îf 8<ó×+žÕç[ÂÖ€]ÇpßoV%v© €pzþgµ6÷3í‹Ì’{²„䈃Œ‚Ìr8Æ1“Áë^{ñqæo
Ø‹–¸2ý|Çܬ¬Žr=;zþ¬ò¼CúÝ*|+[zÛ£³µ×ß÷‘š¨Ûúü®Sø&쬅˜Có[¶âȼ3ûÜ÷<ŒñØæ½WÈŸÌX#“3 "²ºÆ7Œ‘Üc¼‡àìFy5xKJŒ"îç.r@ï×Þ½Ä-ÿ þ“}ª}’*Þ!,Fm¸Î@†9b?1W{Yæ3„`Ú¼VõŠÚÛ_kùöG.mhÎñ ôíhí§Ô$.ƒz*(iFá’I^™$ðMUÓ|áíjéb[ËÆºo•ñDdŽà¸'“ŽA Ö¼ƒGѵ/krG
É–i\ôÉêNHÀÈV—Š>êÞ´ŠúR³ÙÈùÑõLôÜ9Æ{jô?°°Kýš¥WíZ¿V—m6·E}{X~Æ?
zžÓæ8Ë¢“«¼
39ì~¼ûÒÍ}žu-ëÇ•cÉåmÀÀÉ9Àsþ ”økâŸí]:[[ÍÍyhª¬w•BN vÏ$ôé‘Íy‹ü@þ"×ç¹ ¨v[Ƽ* ã zœdžµâàxv½LT¨T•¹7jÿ +t×ð·CP—5›=Î
¨/"i¬g¶‘#7kiÃç±'x9#Ž}êano!òKD‘ílï”('¿SÔð?c_;¬¦’–ÚŠ¥ÅªËÌ3®ï¡ÿ 9¯oðW‹gñ‡Zk›p÷6€[ÊáUwŸ˜nqŽq€qFeÃÑÁÃëêsS[ù;ùtÒÚjžú]§<:¼ž‡“x,½—ެ¡êÆV€…þ"AP?ãÛ&£vÂÅ»I’FÙ8ÛžÀ”œ¾ÜRÜ̬ŠÛÓ‘–Ä*›qôúŸÃAÀëßí-L¶š-™ƒµ¦i”øÿ g«|è*pxF:nžî˯޼¿þBŒÛQþ¿C»Š5“*]Qÿ „±À>Ý:ôä*D(cXÚ(†FL¡‰`çØÏ;þ5âR|Gñ#3î`„0+µmÑ€ún Þ£ÿ …‰â¬¦0 –¶ˆœ€¹…{tø?ʯ(_çþ_Š5XY[¡Ù|Q¿ú
µŠ2︛sO* Бÿ ×â°<+à›MkÂ÷š…ij
·Ü–ˆ«ò‚?ˆœúäc½øåunû]¹Iïåè› ç ¯[ð&©¥Ýxn;6>}²’'`IË0ÁèN}zö5éâ©âr\¢0¥ñs^Ml¿«%®ýM$¥F•–ç‘Øj÷Ze¦£k
2¥ô"FqÀ`„~5Ùü+Ò¤—QºÕ†GÙ—Ë‹ çqä°=¶ÏûÔÍcá¶¡/ˆ¤[ý†iK ™°"ó•Æp;`t¯MÑt}+@²¶Óí·Ídy’3mÕË‘’zc€0 íyÎq„ž ¬4×5[_]Rë{]ì¬UZ±p÷^åØÞÈ[©&OúÝÛ‚‚s÷zžIïßó btÎΪ\ya¾U;C¤t*IÎFF3Џ™c
1žYD…U° êÄàõë\oŒ¼a ‡c[[GŽãP‘7 â znÈ>Ãü3ñ˜,=lUENŒäô¾ÚÀÓ[_ð9 œ´JçMy©E¢Àí}x,bpAó¦üdcûŒW9?Å[Há$¿¹pÄ™#^9O88©zO=«Ë!µÖüY¨³ªÍy9ûÒ1 úôÚ»M?àô÷«ÞëÖ–ÙMÌ#C&ßnJ“Üp#Ђ~²†G–àíekϵío»_žŸuΨQ„t“ÔÛ²øáû›´W6»Øoy FQÎr $Óõìk¬„‹ïÞÚ¼sÆíòÉ67\míÎyF¯ð¯TÓã’K;ë[ð·ld«7üyíšÉ𯊵 êáeYžÏq[«&vMÀðßFà}p3ÅgW‡°8ØßVín›þšõ³¹/ ü,÷ií|’‘´R,®ŠÉ‡W“Ž1ØöëÓ¾xžÖÞ¹xÞݬXZGù\’vŒž˜ÆsØúÓïí&ÒÒ{]Qž9£Ê¡ù·ÄÀ»¶áHäž™5—ìö« -&ù¤U<±ÉÆA>½ý+æg
jžö륢þNÛ=÷JÖÛfdÔ õýËúû‹ÓØB²¬fInZ8wÌÉЮ~aƒÎ=3ìx‚+/¶äÁlŠ‚?™Æü#8-œ\pqTZXtè%»»&ÚÝ#´ŠðÜžã§Í’¼{p·ß{m>ÞycP¨’¼¢0ú(Rƒë^Ž ñó¼(»y%m´ÕÙ}ÊûékB1¨þÑ®,#Q)ó‡o1T©ÜÃ*Ž‹‚yö<b‰4×H€“ìÐ.
¤²9ÌŠ>„Žãøgšñ
¯Š~)¸ßå\ÛÛoBŒa·L²œg$‚Iã¯ZÈ—Æ~%”äë—È8â)Œcƒ‘Âàu9¯b%)ÞS²¿Ïïÿ 4Öºù}Z/[H%¤vÉ#Ì’x§†b
© ³´tÜ{gn=iï%õªÇç]ܧ—!åw„SÓp ·VÈÏ¡?5Âcâb¥_ĤŠz¬—nàþÖΟñKÄöJé=ÌWèêT‹¸÷qÎჟ•q’zWUN«N/ØO^Ÿe|í¾©k{üõ4öV^ïù~G¹êzÂèº|·÷×[’Þ31†rpjg·n
Æ0Ý}kåË‹‰nîe¹ËÍ+™ÏVbrOç]'‰¼o®xÎh`¹Ç*±ÙÚ!T$d/$žN>¼WqᯅZ9ÑÒO\ÜÛê1o&,-z ~^NCgNÕéá)ÒÊ©7‰¨¯'Õþ¯þ_¿Ehîþóâ €ï¬uÛûý*ÎK9ä.â-öv<²‘×h$àãúW%ö¯~«g-ÕõÀàG~>Zú¾Iš+(šM³ Û#9äl%ðc¬ ûÝ xÖKG´x®|¸¤Ï™O:Ê8Ã’qÉcÔä‚yÇNJyËŒTj¥&µOmztjÿ ?KëaµÔù¯áýóXøãLeb¾tžAÇû`¨êGBAõ¾•:g˜’ù·,þhÀ`¬qÜ` e·~+å[±ý“âYÄjWì—µHé±ø?Nõô>½âX<5 Ç©ÏѼM¶8cܪXŽÉ^r?¼IróÈS•ZmÇ›™5»òÚÚ7ïu«&|·÷•Ά
>[©ÞXHeS$Œyà€ ÷ù²:ò2|óãDf? Z¼PD¶ÓßC(xÆ0|©ßR;ôMsÿ µ´ÔVi¬,͹›Ìxâi˜`¹,GAéÇlV§ÄýF×Yø§ê–‘:Ã=ò2³9n±ÉžØÏ@yÎWžæ±Ãàe„ÄÒN ]ïòêìú_Go'¦ŽÑ’_×õЯðR66þ!›ÑÄ gFMÙ— äžäqôÈ;ÿ eX<#%»Aö‰ãR¤ Í”Ž¹È G&¹Ÿƒ&á?¶Zˆ±keRè Kãnz·ãŠÕøÄÒÂ9j%@®×q±ÜŒý[õ-É$uíè&¤¶9zÇï·Oøï®ÄJKšÖìdü"µˆ[jײÎc;ã…B(g<9nàȯG½µŸPÓ.´Éfâ¼FŽP
31 ‘ÏR}<3šä~
Ã2xVöî Dr
Ç\›}Ý#S÷ÈÀëŽHÆI®à\OçKuäI¹†ó(”—GWî ñ³¹¸æ2¨›‹ºÚû%¾ýÖ_3ºNú¯ëúì|ÕÅÖ‰}ylM’ZËîTÿ á[ðÐñ/ˆ9Àû
¸ón3 Mòd‘÷ döª^.Êñް›BâîNp>cëÏçÍzïÃôÏ
YÍ%ª¬·ãÏ-*9ÜÂãhéŒc¾dÈêú¼Ë,. VŠ÷çeÿ n/¡¼äãõâ=‹xGQKx”|¹bÌŠD@2Œ 8'Ž àúƒŽ+áDÒ&¡¨"Œ§–Žr22 Ç·s]ŸÄ‹«ð%ÚÄ<¹ä’(×{e›HÀqÁç©Ç½`üŽÚõK饚9ƒÄ±€<–úƒú~ çðñO#Í%iKKlµ¦¾F)'Iê¬Î+Ç(`ñ¾£œdÈ’`™ºcßéé^ÿ i¸”Û\ý¡æhÔB«aq¸}ãÀÆ:ÜWƒ|FÛÿ BŒÇÀeaŸ-sÊ€:úW½ÜÝÜ<%$µ†%CóDªÀí%IÈÏʤ…ôäñÞŒ÷‘a0“ôŽÚë¤nŸoW÷0«e¶y'Å»aΗ2r’# Û°A^ý9ÉQÔõ=ù5¬£Öü.(Þ’M$~V«=éSÄFN½®©ÔWô»ÿ þHžkR‹ìÏ+µµžöê;khÚI¤m¨‹Ôš–âÖçJ¾_Z•’6a”Èô> ÕÉaÕ<%®£2n bQŠå\tÈõUÿ ø»þ‹k15‚ÃuCL$ݹp P1=Oøýs¯^u éEJ”–éêŸê½5ýzy›jÛ³á›Ûkÿ ÚOcn±ÛÏîW;boºz{ãžüVÆ¡a£a5½äÎÂks¸J@?1è¿{$ä‘=k”øsÖ^nŒ¦)ÝåXÃíùN1ØõÚOJë–xF÷h¸ Œ"Ž?x䜚ü³ì¨c*Fœ¯i;7~ñí׫Ðó¥Ë»3Ãü púw ‰°<Á%»ñž ÿ P+Û^ ¾Ye£ŽCÄŒ„/>˜>•á¶Ìm~&&À>M[hÈÈÿ [Ž•íd…RO@3^Ç(ʽ*¶ÖQZyßþ
1Vº}Ñç?¼O4Rh6R€ª£í¡ûÙ
a‚3ß·Õ
ü=mRÍ/µ9¤‚0ÑC¼Iè:cŽsÛ¾™x£ÆÐ¬ªÍöˢ샒W$•€Å{¨ÀPG
ÀÀàŸZìÍ1RÉ0´ðxEË9+Éÿ ^rEÕ—±Š„70l¼áË@û.' ¼¹Žz€N3úUÉ<3á×*?²¬‚ä†"Ùc=p íÛ'¡ª1ñ"økJ†HÒ'»Ÿ+
oÏN¬Ã9 dÙãÜדÏâÍ~æc+j·Jzâ7(£ðW]•æ™?nê´º6åwéåç÷N•ZŠíž›¬|?Ðõ?Ñ-E…®³ÇV$~X¯/…õ x‘LˆÑÜÚÈ7¦pzãÜüë½ðÄ^õtÝYËÍ7ÉÖÕ8ÏUe# #€r=sU¾/é’E§jRC4mxNÝ´9†íuá»›V‘
ZI€×cr1Ÿpzsøf»¨åV‹ìû`qËLÊIã?\~¼³áËC©êhªOîO»‘ÃmçÛçút×¢x“Z}?Üê#b-¤X7õÄò gž zzbº3œm*qvs·M=íúéw}¿&Úª°^Ö×µÏ(ø‡â†Öµƒenñý†×åQáYûœ÷ÇLœôÎNk¡ð‡¼/µ¸n0æÉ0¬ƒ‚üîÉÆvŒw®Sáö”š¯‹-üÕVŠØÙ[$`(9cqƒÔ_@BëqûÙ`Ýæ0;79È?w<ó |ÙÜkßÌ1±Ëã¿ìÒ»ðlìï«ÓnªèèrP´NÏš&ŽéöÙ¸÷æ°~-_O'‰`°!RÚÚÝ%]Ø%þbß1'¿ÿ XÕáOöÎŒ·‹¬+Åæ*ÛÛ™0¤ƒOÍÔ`u¯¦ÂaèÐÃÓ«‹¨Ô¥µœ¿¯ÉyÅÙ.oÔôŸ Úx&(STðݽ¦õ] ’ÒNóÁäÈùr3í·žÚ[™ƒ¼veÈ÷ÞIõÎGlqÎ=M|«gsªxÅI6
]Z·Îªä,¨zŒŽÄ~#ØŠúFñiÉqc©éÐD>S딑 GñŽ1éÐ^+
Ëi;Ô„µVÕú»i¯ÈÒ-ZÍ]òܘ®ì`bÛÙ¥_/y(@÷qÐúg Ô÷W0.Ø›
6Ò© r>QƒŒ0+Èîzb¨É+I0TbNñ"$~)ÕÒ6Þ‹{0VÆ27œWWñcÄcX×íôûyKZéðªc'iQ¿¯LaWŠŸS\·Š“źʸ…ôÙÂí|öÀÇåV|!¤ÂGâÛ[[’ï
3OrÙËPY¹=Î1õ5öåTžÑè Ú64/üö?Zëžk}¬¶éàoá¾á}3“ü]8Éæ¿´n²Žš_6¾pœ)2?úWÓÚ¥¾¨iWúdŽq{*ª1rXŒd…m»‰äcô¯–dâ•ã‘Jº¬§¨#¨®§,df«8ÉÅßN¾hˆ;îÓ=7áùpën®É 6ûJžO2^œÐò JÖø¥²ã›Ò6Ü·‰!wbÍ‚¬O©»õ¬ÿ ƒP=Ä:â¤-&ÙŽ
`È9 r9íϧzë> XÅ7ƒ5X–krÑ¢L7€ìw}ÑŸNHëŒüþ:2†á¼+u·á÷N/Û'Ðç~ߘô«ëh!ónRéeQ´6QÛÿ èEwëÅÒ|¸Yqó1uêyùzð8 ƒŠù¦Ò;¹ä6öi<'ü³„[ÃZhu½ ùÍ¡g‚>r¯×ŠîÌx}bñ2“k꣧oø~›hTèóËWò4|ki"xßQ˜Ï6øÀLnß‚0 ¹Æ{±–¶Öe#¨27È@^Ìß.1N¾œyç€õ†ñeé·Õã†çQ°€=Ì©ºB€Ø8<‚ÃSõ®ùcc>×Ú .Fr:žÝGæ=kÁâ,^!Fž
¬,àµ}%¶«îõ¹†"r²ƒGœüYÕd?aÑÃY®49PyU ÷þ!žxÅm|/‚ãNð˜¼PcûTÒ,¹/Ý=FkÏ|u¨¶«âë…{¤m¢]Û¾ïP>®XãÞ½iÓÁ¾
‰'¬–6ß¼(„ï— í!úÙäzôë^–:œ¨å|,_¿&š×]uÓѵÛô4’j”bž§x‘Æ©ã›á,‚[Ô
ÎÞ= ŒËæ ÀùYÁ?ŽïÚ¼?ÁªxºÕÛ,°1¸‘¿ÝäãØ¯v…@¤åq½ºã œàûââ·z8Xýˆþz~—û»™âµj=Ž
â~ãáh@'h¼F#·Üp?ŸëQü-løvépx»cŸø…lxâÃûG·‰¶ø”L£©%y?¦úõÆü-Õ¶¥y`Òl7>q’2üA?•F}c‡jB:¸Jÿ +§¹¿¸Q÷°ív=VÑìu[Qml%R7a×IèTõéŽx¬
?†š7
1†îã-ˆã’L¡lŽ0OÓ=ÅuˆpÇ•¼3ÛùÒ¶W/!|’wŽw^qÔ×ÏaóM8Q¨ãÑ?ëï0IEhÄa¸X•`a
?!ÐñùQ!Rä žqŽžÝO`I0ÿ J“y|ñ!Îã@99>þ8–+éáu…!ù—ä
ʰ<÷6’I®z
ÅS„¾)Zþ_Öýµ×ËPåOwø÷þ*üïænÖùmØÝûþ¹=>¦½öî×Jh]¼ç&@§nTŒ6ITÀõ^Fxð7Å3!Ö·aÛ$þÿ ¹ã5îIo:ȪmËY[’8ÇӾlj*òû¢¥xõ¾¼ú•åk+\ð¯ HÚoŽl•Ûk,¯ ç²²cõÅ{²Z\
´ìQ åpzŽ3Ôð}ÿ Jð¯XO¡øÎé€hÙ¥ûLdŒ`““ù6Gá^ÃáÝ^Ë[Ñb¾YåŒÊ»dŽ4†2§,;ÿ CQÄ´¾°¨c–±”mºV{«ßÕýÄW\ÖŸ‘çŸ,çMRÆí“l-ƒn~ë©ÉÈê Ü?#Ž•¹ðãSÒ¥ÐWNíà½;ãž)™ÎSÈ9cóLj뵿ūiÍk¨ió¶X‚7÷ƒ€yãnyÏŽëÞ Öt`×À×V's$È9Ú:ä{wÆEk€«†Çàc—â$éÎ.éí~Ýëk}ÅAÆpörÑ¢‡Šl¡ÑüSs‹¨‰IÄóÀ×wñ&eºðf™pŒÆ9gŽTø£lñëÀçŽ NkÊUK0U’p ï^¡ãÈ¥´ø{£ÙHp`’ØåbqÏ©äó^Æ:
Ž' ÊóM«õz+ß×ó5Ÿ»('¹ð¦C„$˜Å¢_ºÈI?»^äã'ñêzž+ë€ñ-½»´}¡Ë*õ?.xÇ^1ŽMyǸ&“—L–îëöâ7…' bqéÎGé]˪â1$o²¸R8Ã`.q€}sÖ¾C98cêÆÞíïóòvÓòùœÕfÔÚéýuèÖ·Ú
Å‚_¤³ÜۺƑß”àרý:׃xPþÅÕî-/üØmnQìïGΊÙRqê=>¢½õnæ·r!—h`+’;ò3È<“Û©éšóŸx*÷V¹¸×tÈiˆßwiÔÿ |cŒñÏ®3ֽ̰‰Ë Qr©ö½®¼ÛoÑÙZÅÑ«O൯ýw8;k›ÿ x†;ˆJa;‘º9÷÷R+¡ñgŽí|Iáë{ôáo2ʲ9 029ÉÏLí\‰¿¸Ÿb˜ "Bv$£ßiê>=ªª©f
’N ëí>¡NXW~5×úíø\‰»½Ï^ø(—wÖú¥¤2íŽÞXæÁ$°eÈ888^nÝë²ñÝÔ^ ÖÚ9Q~Ëå7ï
DC¶ÑµƒsËÇè9®Wáþƒ6‡£´·°2\Ý:ÈÑ?(#¨'$õèGJ¥ñW\ÿ ‰E¶—¸™g˜ÌÀ¹;Pv ú±ÎNs·ëŸ’–"Ž/:té+ûË]öJöÓM»ëø˜*‘•^Uý—êd|‰åñMæÔÝ‹23å™6æHùÛ‚ëüñ^…ñ1¢oêûÑEØ.õ7*ÅHtÎp{g<·Á«+¸c¿¿pÓ¾Æby=8É_ÄsÆk¬ñB\jÞÔì••Ë[9Píb‹Bヅ =93§ð§LšÛáÖšÆæXÌÞdÛP.0\ãïÛ0?™úJ¸™Ë
”•œº+=<µI£¦í¯õêt¬d‹T¬P=ËFêT>ÍØØ@Ï9<÷AQÌ×»Õ¡xùk",JÎæù±Éç$œŽŸZWH®¯"·UÌQ ’ÙÈ]ÅXg<ã
ߨg3-Üqe€0¢¨*Œ$܃
’Sû 8㎼_/e'+Ï–-èÓ¶¶Õíß[·ÙÙ½îì—¼sk%§µxä‰â-pÒeÆCrú
ôσžû=”šÅô(QW‚Õd\ƒæ. \àö¹¯F½°³½0M>‘gr÷q+œ¶NïºHO— ¤ ܥݔn·J|ÆP6Kµc=Isó}Ò çGš)a=—#vK›åoK§ßóÙ¤¶¿õú…ÄRÚ[ËsöÙ¼Ë•Ë ópw®qœŒ·Ø
ùÇâ‹ý‡ãKèS&ÞvûDAù‘É9ŒîqÅ}
$SnIV[]Ñ´Ó}ØÜ¾A Ü|½kÅþÓ|EMuR¼.I¼¶däò‚ÃkÆ}ðy¹vciUœZ…Õõ»z¾÷¿n¦*j-É/àœHã\y5 Û ß™ó0—äŸnzôã#Ô¯,†¥ÚeÔ÷ÜÅ´„“'c…<íÝ€<·SŠ¥k§Ã¢éÆÆÙna‚8–=«Êª[Ÿ™°pNî02z“ÔÙ–K8.È’Þî(vƒ2®@ äÈûãçžxäÇf¯ˆu¹yUÕîýWšÙ|›ëÒ%Q^í[æ|éo5ZY•^{96ˆY‚§v*x>âº_|U¹Ö´©tûMÒÂ9PÇ#«£#€ éÉñ‘ƒÍz/‰´-į¹°dd,Б›p03ƒœ{ç9=+
Ûᧇ¬¦[‡‚ê婺¸#±ß=³ý¿•Õµjñ½HÙh›Û[§ÚýÊöô÷{˜?ô÷·Ô.u©–_%còcAÀ˜’
}0x9Î>žñÇáÍ9,ahï¦Ì2òÓ ñÛAäry$V²Nð
]=$Ž
‚#Ù‚1ƒƒødõMax‡ÂÖ^!±KkÛ‘
«“Çó²FN8+ëÎ{Ò¼oí§[«ÕMRoËeç×[_m/¦¦k.kôgŽxsSÓ´ý`êzªÜÜKo‰cPC9ÎY‰#§^üý9¹âïÞx£Ë·Ú`±‰‹¤;³–=ÏaôÕAð‚÷kêÁNBéÎælcõö®£Fð†ô2Ò¬]ßÂK$ÓÜ®•”/ÊHàã$ä¸÷ëf¹Oµúâ“”’²øè´µþöjçNü÷üÌ¿ xNïFÒd»¼·h®îT9ŽAµÖ>qÁçÔœtïÒ»\ȶÎîcÞäîó3¶@#ÉIÎ ÔñW.<´’¥–ÑÑ€ÕšA‚ ;†qÓë‚2q
ÒÂó$# Çí‡
!Ë}Õ9ÈÎÑÉã=;ŒÇÎuñ+ÉûÏ¥öíeÙ+$úíÜ娯'+êZH4ƒq¶FV‹gïŒ208ÆÌ)íб>M|÷âÍã¾"iì‹¥£Jd´™OÝç;sÈúr+ÜäˆË)DŒ¥šF°*3Õ”d{zÔwºQ¿·UžÉf†~>I+ŒqÔ`ð3œ“Ü×f]œTÁÔn4“ƒø’Ýßõ_«*5šzGCÊ,þ+ê1ò÷O¶¸cœºb2yÇ;cùÕ£ñh¬›áÑŠr¤ÝäNBk¥—á—†gxšX/쑘hŸ*Tçn =ûã¦2|(ð¿e·ºÖ$
ýìŸ!'åΰyîî+×öœ=Y:²¦ÓÞ×iü’—ü
-BK™£˜›âÆ¡&véðõ-ûÉY¹=Onj¹ø¯¯yf4·±T Pó`çœ7={×mÃ/¢˜ZÚòK…G½¥b„’G AãÜœ*í¯Ã¿ IoæI¦NU8‘RwÈã;·€ Û×ëÒ”1Y
•£E»ÿ Oyto¢<£Áö·šï,䉧ûA¼sû»Nò}¹üE{ÜÖªò1’õÞr0â}ÎØ#>à/8ïéÎ~—áÍ#ñÎlí§³2f'h”?C÷YËdð:qëõÓ·‚ïeÄ©
ÔÈØÜRL+žAÎ3¼g=åšó³Œt3
ÑQ¦ùRÙßE®¼±w_;þhš’Sirÿ ^ˆã¼iੇ|RòO„m°J/“$·l“ ÇÓ¿ÿ [ÑŠÆ“„†Õø>cFÆ6Ø1ƒ– àz7Ldòxäüwá‹ÝAXùO•Úý’é®ähm •NÀ±ÌTÈç
ƒ‘I$pGž:‚ÄbêW¢®œ´|¦nÍ>¶ÖÏ¢§ÎÜ¢ºö¹•%ÄqL^öÛKpNA<ã¡ …î==ª¸óffËF‡yÌcÉ ©ç$ð=ñÏYþÊ’Ú]—¥‚¬‚eDïÎH>Ÿ_ÌTP™a‰ch['çÆÜò7a‡?w°Ïn§âÎ5”’¨¹uÚÛ|´ÓÓc§{O—ü1•ªxsÃZ…ÊÏy¡Ã3¸Ë2Èé» ‘ƒÎ äžÜðA§cáOéúÛ4ý5-fŒï„ù¬ûô.Ç Üsž•Ò¾•wo<¶Ÿ"¬¡º|£
î2sÇ¡éE²ÉFѱrU°dÜ6œ¨ mc†Îxë׺Þ'0²¡Rr„{j¾í·è›µ÷)º·å–‹î2|I®Y¼ºÍË·–ÃÆàã£'óÆxƒOÆÞ&>\lóÌxP Xc¸ì Sþ5§qà/ê>#žÞW¸if$\3 ® ûÄ“ùŽÕê¾ð<Ó‹H¶óÏ" å·( á‘€:ã†8Ï=+ꨬUA×ÃËÚT’ÑÞöù¥¢]{»ms¥F0\ÑÕ—ô}&ÛB´ƒOŽÚ+›xíÄÀ1
,v± žIëíZ0ǧ™3í2®0ทp9öÝÔž)ÓZËoq/Ú“‘L ²ŒmùŽï‘Ó9§[Û#Ä‘\ÞB¬Çs [;à à«g‚2ôòªœÝV§»·¯/[uó½õÛï¾
/šÍ}öüÿ «=x»HŸÂÞ.™ ÌQùŸh´‘#a$‚'¡u<Š›Æ>2>+ƒLSiöwµFó1!eg`£åœ ÷ëÛö}Á¿ÛVÙêv $¬ƒ|,s÷z€ð΃¨x÷ÅD\ÜŒÞmåÔ„ ˆ o| :{ÇÓ¶–òÁn!´0Ål€, ƒ ( ÛŒŒc¶rsšæ,4‹MÛOH!@¢ ÇŽ„`å²9ÝÃw;AÍt0®¤¡…¯ØÄ.Àìí´ƒ‘ßñ5Í,Óëu-ÈÔc¢KÃÓ£òÖ̺U.õL¯0…%2È—"~x
‚[`có±nHàŽyàö™¥keˆìŒÛFç{(Ø©†`Jã#Žwg<“:ÚÉ;M
^\yhûX‡vB·÷zrF?§BÊÔ/s<ÐÈB)Û± ·ÍÔwç5Âã:så§e{mѤï«Òíh—]Wm4âí¿ùþW4bC3¶ª¾Ùr$pw`àädzt!yŠI„hÂîàM)!edŒm'æ>Ç?wzºKìcŒ´¯Ìq6fp$)ãw¡éUl`µ»ARAˆÝÕgr:äŒgƒéé[Ôö±”iYs5Ýï«ÙG—K=þF’æMG«óÿ `ŠKɦuOQ!ÕåŒ/ÎGÞ`@ËqÕzdõâ«Ê/Ö(ƒK´%ŽbMüåÜŸö—>¤óŒŒV‘°„I¢Yž#™¥ùÏÊ@8
œgqöö5ª4vד[¬(q cò¨À!FGaÁõõ¯?§†¥ÏU½í¿WªZ$úyú½Žz×§Éþ?>Ã×È•6°{™™ŽÙ.$`ÎUœ…çè ' ¤r$1Ø(y7 ðV<ž:È ÁÎMw¾Â'Øb§øxb7gãО½óÉÊë²,i„Fȹ£§8ãä½k¹¥¦ê/ç{ïê驪2œ/«ü?¯Ô›ìñÜ$þeýœRIåŒg9Ác’zrrNO bÚi¢
ѺË/$,“ª¯Ýä;Œ× ´<ÛÑn³IvŸb™¥ nm–ÄŸ—nÝÀãŽ3ëÍG,.öó³˜Ù£¹uÊÌrŠ[<±!@Æ:c9ÅZh
ì’M5ÄìÌ-‚¼ëÉùqŽGì9¬á ;¨A-ž—évþÖ–^ON·Ô”ŸEý}ú×PO&e[]ÒG¸˜Ûp ƒÃà/Ë·8ûÀ€1ž@¿ÚB*²¼ñì8@p™8Q“žÆH'8«I-%¸‚
F»“åó6°Uù|¶Ú¸ã ò^Äw¥ŠÖK–1ÜÝK,Žddlí²0PÀü“×ükG…¯U«·¶–´w¶ŽÍ¾©yÞú[Zös•¯Á[™6°
¨¼ÉVæq·,#
ìãï‘×8îry®A››¨,ãc66»Ë´ã'æÉù?t}¢æH--Òá"›|ˆ¬[í 7¶ö#¸9«––‹$,+Ëqœ\Êøc€yê^ݸÄa°«™B-9%«×®‹V´w~vÜTéꢷþ¼ˆ%·¹• ’[xç•÷2gØS?6åÀÚ õ9É#š@÷bT¸º²C*3Bá¤òÎA9 =úU§Ó"2Ãlá0iÝIc‚2Î@%öç94ùô»'»HÄ¥Ô¾@à Tp£šíx:úÊ:5eºßMý×wµ›Ó_+šº3Ýyvÿ "ºÇ<ÂI>Õ1G·Ë«È«É# àÈÇ øp Jv·šæDûE¿›†Ë’NFr2qŸ½ÇAÜšu•´éí#Ħ8£2”Ú2Ã/€[ÎTr;qŠz*ý’Îþ(≠;¡TÆâ›;ºÿ àçœk‘Þ8¾Uª¾íé{^×IZéwÓkXÉûÑZo¯_øo×È¡¬ â–ÞR§2„‚Àœü½ùç® SVa†Âüª¼±D‘ŒísŸàä|ä2 æ[‹z”¯s{wn„ÆmáóCO+†GO8Ïeçåº`¯^¼ðG5f{Xžä,k‰<á y™¥voÆ éÛõëI=œ1‹éíÔÀÑ)R#;AÂncäŽ:tÏ#¶TkB.0Œ-ÖÞZÛgumß}fÎJÉ+#2êÔP£žùÈÅi¢%œ3P*Yƒò‚A쓎2r:ƒÐúñiRUQq‰H9!”={~¼“JŽV¥»×²m.ÛߺiYl¾òk˜gL³·rT•
’…wHÁ6ä`–Î3ùÌ4Øe³†&òL‘•%clyîAÂäà0 žüç$[3uŘpNOÀÉ=† cï{rYK
ååä~FÁ
•a»"Lär1Ó¯2Äõæ<™C•.fÕ»è¥~½-¿g½Â4¡{[ør¨¶·Žõäx¥’l®qpwÇ»8ärF \cޏܯÓ-g‚yciÏÀ¾rÎwèØÈ#o°Á9ã5¢šfÔxÞæfGusÏÌJÿ µ×œ/LtãÅT7²¶w,l
ɳ;”eúà·¨çîŒsÜgTÃS¦^ '~‹®›¯+k÷ZÖd©Æ*Ó[Ü«%Œk0ŽXƒ”$k#Ȩ P2bv‘ƒŸáÇ™ÆÕb)m$É*8óLE‘8'–ÜN Úyàúô+{uº±I'wvš4fÜr íì½=úuú
sFlìV$‘ö†HÑù€$§ õ=½¸«Ž]
:Ž+•¦ïmRþ½l´îÊT#nkiøÿ _ðÆT¶7Ò½ºÒ£Î¸d\ã8=yãŽÜäR{x]ZâÚé#¸r²#»ÎHÆ6õ ç® ÎFkr;sºÄ.&;só±Ç9êH÷ýSšÕtÐU¢-n Ì| vqœ„{gŒt§S.P‹’މ_[;m¥ÞZýRûÂX{+¥úü¼ú•-àÓ7!„G"“´‹žƒnrYXã¸îp éœ!ÓoPÌtÑ (‰Þ¹é€sÓ#GLçÕšÑnJý¡!‘Tä#“ß?îýp}xÇ‚I¥Õn#·¸–y'qó@r[ Êô÷<ÔWÃÓ¢áN¥4Ô’I&ݼ¬¬¼ÞºvéÆ
FQV~_ÒüJÖÚt¥¦Xá3BÄP^%ÈÎW-×c¡ú©¤·Iþèk¥š?–UQåIR[’O 5x\ÉhÆI¶K4«2ùªŠŒ<¼óœçØ`u«‚Í.VHä€ Ëgfx''9ÆI#±®Z8
sISºku¢ßÞ]úk»Jößl¡B.Ü»ÿ MWe
°·Ž%šêɆ¼»Âù³´œ O¿cÐÓÄh©"ÛÜÏ.ÖV’3nüÄmnq[ŒòznšÖ>J¬òˆæ…qýØP Ž:ä7^0yëWšÍ_79äoaÈ °#q0{ää×mœy”R{vÒÞ¶ÚÏe¥“ÚÆÐ¥Ì®—õýjR •íç›Ìb„+JyÜØÙ•Ç]¿Ôd þËOL²”9-Œ—õÃc'æÝלçÚ²ìejP“½
âù°¨†ðqòädЃÉäÖÜj÷PÇp“ÍšŠå«‘î
<iWNsmª»¶vÓz5»ûì:Rs\Ðßôû×uÔÿÙ